From f0eb6957d269ee217ccddc62e109343c5b1d0dda Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Wed, 20 Apr 2022 01:57:03 -0400 Subject: [PATCH] admin: updated dist files --- packages/ethers/dist/ethers.js | 120 +++--------------- packages/ethers/dist/ethers.js.map | 2 +- packages/ethers/dist/ethers.min.js | 8 +- packages/ethers/dist/ethers.min.js.map | 2 +- packages/ethers/dist/ethers.umd.min.js | 8 +- packages/ethers/dist/ethers.umd.min.js.map | 2 +- packages/ethers/lib/_version.d.ts | 2 +- packages/ethers/lib/_version.js | 2 +- packages/ethers/package.json | 14 +- packages/ethers/src.ts/_version.ts | 2 +- packages/hash/lib/_version.d.ts | 2 +- packages/hash/lib/_version.js | 2 +- packages/hash/package.json | 2 +- packages/hash/src.ts/_version.ts | 2 +- packages/logger/lib/_version.d.ts | 2 +- packages/logger/lib/_version.js | 2 +- packages/logger/package.json | 2 +- packages/logger/src.ts/_version.ts | 2 +- packages/properties/lib/_version.d.ts | 2 +- packages/properties/lib/_version.js | 2 +- packages/properties/package.json | 2 +- packages/properties/src.ts/_version.ts | 2 +- packages/providers/lib/_version.d.ts | 2 +- packages/providers/lib/_version.js | 2 +- packages/providers/lib/common-networks.d.ts | 8 +- .../providers/lib/common-networks.d.ts.map | 2 +- packages/providers/lib/common-networks.js | 11 +- packages/providers/lib/common-networks.js.map | 2 +- packages/providers/package.json | 2 +- packages/providers/src.ts/_version.ts | 2 +- packages/wallet/lib/_version.d.ts | 2 +- packages/wallet/lib/_version.js | 2 +- packages/wallet/package.json | 2 +- packages/wallet/src.ts/_version.ts | 2 +- packages/web/lib/_version.d.ts | 2 +- packages/web/lib/_version.js | 2 +- packages/web/package.json | 2 +- packages/web/src.ts/_version.ts | 2 +- 38 files changed, 80 insertions(+), 153 deletions(-) diff --git a/packages/ethers/dist/ethers.js b/packages/ethers/dist/ethers.js index eb1f763b6..c9a23042e 100644 --- a/packages/ethers/dist/ethers.js +++ b/packages/ethers/dist/ethers.js @@ -255,7 +255,7 @@ function isCallException(error) { return isError(error, "CALL_EXCEPTION"); } -const version$g = "@ethersproject/logger@6.0.0-beta.3"; +const version$g = "@ethersproject/logger@6.0.0-beta.4"; var __classPrivateFieldGet$y = (window && window.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); @@ -5267,7 +5267,7 @@ function id(value) { return keccak256(toUtf8Bytes(value)); } -const version$8 = "@ethersproject/hash@6.0.0-beta.3"; +const version$8 = "@ethersproject/hash@6.0.0-beta.4"; const logger$7 = new Logger(version$8); @@ -6604,7 +6604,7 @@ _Interface_errors = new WeakMap(), _Interface_events = new WeakMap(), _Interface return logger$e.throwArgumentError("no matching event", "signature", key); }; -const version$7 = "@ethersproject/web@6.0.0-beta.2"; +const version$7 = "@ethersproject/web@6.0.0-beta.3"; const logger$6 = new Logger(version$7); @@ -7144,7 +7144,7 @@ fetchData.setArGateway = function (gateway) { } }; -const version$6 = "@ethersproject/providers@6.0.0-beta.4"; +const version$6 = "@ethersproject/providers@6.0.0-beta.5"; const logger$5 = new Logger(version$6); @@ -10514,7 +10514,7 @@ export class CcipPreflightPlugin extends NetworkPlugin { */ const Networks = new Map(); const defaultFormatter = new Formatter(); -class Network$1 { +class Network { constructor(name, _chainId, formatter) { _Network_props.set(this, void 0); const chainId = logger$5.getBigInt(_chainId); @@ -10554,7 +10554,7 @@ class Network$1 { return (this.plugins.filter((p) => (p.name.split("#")[0] === basename))); } clone() { - const clone = new Network$1(this.name, this.chainId, this.formatter); + const clone = new Network(this.name, this.chainId, this.formatter); this.plugins.forEach((plugin) => { clone.attachPlugin(plugin.clone()); }); @@ -10594,7 +10594,7 @@ class Network$1 { static from(network) { // Default network if (network == null) { - return Network$1.from("homestead"); + return Network.from("homestead"); } // Canonical name or chain ID if (typeof (network) === "number") { @@ -10606,7 +10606,7 @@ class Network$1 { return networkFunc(); } if (typeof (network) === "bigint") { - return new Network$1("unknown", network); + return new Network("unknown", network); } logger$5.throwArgumentError("unknown network", "network", network); } @@ -10622,7 +10622,7 @@ class Network$1 { if (typeof (network.name) !== "string" || typeof (network.chainId) !== "number") { logger$5.throwArgumentError("invalid network object name or chainId", "network", network); } - const custom = new Network$1((network.name), (network.chainId)); + const custom = new Network((network.name), (network.chainId)); if (network.ensAddress || network.ensNetwork != null) { custom.attachPlugin(new EnsPlugin(network.ensAddress, network.ensNetwork)); } @@ -10977,7 +10977,7 @@ class AbstractProvider { __classPrivateFieldSet$g(this, _AbstractProvider_networkPromise, null, "f"); } else if (_network) { - const network = Network$1.from(_network); + const network = Network.from(_network); __classPrivateFieldSet$g(this, _AbstractProvider_anyNetwork, false, "f"); __classPrivateFieldSet$g(this, _AbstractProvider_networkPromise, Promise.resolve(network), "f"); setTimeout(() => { this.emit("network", network, null); }, 0); @@ -12402,7 +12402,7 @@ class JsonRpcApiProvider extends AbstractProvider { // Sub-classes can override this; it detects the *actual* network we // are connected to async _detectNetwork() { - return Network$1.from(logger$5.getBigInt(await this._perform({ method: "chainId" }))); + return Network.from(logger$5.getBigInt(await this._perform({ method: "chainId" }))); } _getSubscriber(sub) { // Pending Filters aren't availble via polling @@ -12739,7 +12739,7 @@ function getHost$3(name) { } class AnkrProvider extends StaticJsonRpcProvider { constructor(_network = "homestead", apiKey) { - const network = Network$1.from(_network); + const network = Network.from(_network); if (apiKey == null) { apiKey = defaultApiKey$2; } @@ -12805,7 +12805,7 @@ function getHost$2(name) { } class AlchemyProvider extends StaticJsonRpcProvider { constructor(_network = "homestead", apiKey) { - const network = Network$1.from(_network); + const network = Network.from(_network); if (apiKey == null) { apiKey = defaultApiKey$1; } @@ -12840,7 +12840,7 @@ class AlchemyProvider extends StaticJsonRpcProvider { class CloudflareProvider extends StaticJsonRpcProvider { constructor(_network = "homestead") { - const network = Network$1.from(_network); + const network = Network.from(_network); if (network.name !== "homestead") { return logger$5.throwArgumentError("unsupported network", "network", _network); } @@ -12850,20 +12850,10 @@ class CloudflareProvider extends StaticJsonRpcProvider { const defaultApiKey = "9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB"; const EtherscanPluginId = "org.ethers.plugins.etherscan"; -class EtherscanPlugin extends NetworkPlugin { - constructor(baseUrl, communityApiKey) { - super(EtherscanPluginId); - //if (communityApiKey == null) { communityApiKey = null; } - defineProperties(this, { baseUrl, communityApiKey }); - } - clone() { - return new EtherscanPlugin(this.baseUrl, this.communityApiKey); - } -} class EtherscanProvider extends AbstractProvider { constructor(_network, apiKey) { super(); - const network = Network$1.from(_network); + const network = Network.from(_network); if (apiKey == null) { const plugin = network.getPlugin(EtherscanPluginId); if (plugin) { @@ -13270,7 +13260,7 @@ function getHost$1(name) { } class InfuraProvider extends StaticJsonRpcProvider { constructor(_network = "homestead", projectId, projectSecret) { - const network = Network$1.from(_network); + const network = Network.from(_network); if (projectId == null) { projectId = defaultProjectId; } @@ -13356,7 +13346,7 @@ function normalizeApiKey(network, _appId, applicationSecretKey, loadBalancer) { } class PocketProvider extends StaticJsonRpcProvider { constructor(_network = "homestead", _appId, _secretKey, _loadBalancer) { - const network = Network$1.from(_network); + const network = Network.from(_network); const { applicationId, applicationSecretKey, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer); const connection = PocketProvider.getConnection(network, applicationId, applicationSecretKey, loadBalancer); super(connection, network); @@ -13569,7 +13559,7 @@ class FallbackProvider extends AbstractProvider { return __classPrivateFieldGet$c(this, _FallbackProvider_configs, "f").slice(); } async _detectNetwork() { - return Network$1.from(logger$5.getBigInt(await this._perform({ method: "chainId" }))).freeze(); + return Network.from(logger$5.getBigInt(await this._perform({ method: "chainId" }))).freeze(); } async _perform(req) { await __classPrivateFieldGet$c(this, _FallbackProvider_instances, "m", _FallbackProvider_initialSync).call(this); @@ -14158,76 +14148,6 @@ function getDefaultProvider(network, options) { return new FallbackProvider(providers); } -// See: https://chainlist.org -function injectCommonNetworks(Network) { - /// Register popular Ethereum networks - function registerEth(name, chainId, options) { - const func = function () { - const network = new Network(name, chainId); - // We use 0 to disable ENS - if (options.ensNetwork != null) { - network.attachPlugin(new EnsPlugin(null, options.ensNetwork)); - } - if (options.priorityFee) { - network.attachPlugin(new MaxPriorityFeePlugin(options.priorityFee)); - } - if (options.etherscan) { - const { url, apiKey } = options.etherscan; - network.attachPlugin(new EtherscanPlugin(url, apiKey)); - } - network.attachPlugin(new GasCostPlugin()); - return network; - }; - // Register the network by name and chain ID - Network.register(name, func); - Network.register(chainId, func); - if (options.altNames) { - options.altNames.forEach((name) => { - Network.register(name, func); - }); - } - } - registerEth("homestead", 1, { ensNetwork: 1, altNames: ["mainnet"] }); - registerEth("ropsten", 3, { ensNetwork: 3 }); - registerEth("rinkeby", 4, { ensNetwork: 4 }); - registerEth("goerli", 5, { ensNetwork: 5 }); - registerEth("kovan", 42, { ensNetwork: 42 }); - registerEth("classic", 61, {}); - registerEth("classicKotti", 6, {}); - registerEth("xdai", 100, { ensNetwork: 1 }); - // Polygon has a 35 gwei maxPriorityFee requirement - registerEth("matic", 137, { - ensNetwork: 1, - priorityFee: 35000000000, - etherscan: { - apiKey: "W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7", - url: "https:/\/api.polygonscan.com/" - } - }); - registerEth("maticMumbai", 80001, { - priorityFee: 35000000000, - etherscan: { - apiKey: "W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7", - url: "https:/\/api-testnet.polygonscan.com/" - } - }); - registerEth("bnb", 56, { - ensNetwork: 1, - etherscan: { - apiKey: "EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9", - url: "http:/\/api.bscscan.com" - } - }); - registerEth("bnbt", 97, { - etherscan: { - apiKey: "EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9", - url: "http:/\/api-testnet.bscscan.com" - } - }); - return Network; -} -const Network = injectCommonNetworks(Network$1); - const IpcSocketProvider = undefined; var __classPrivateFieldSet$9 = (window && window.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { @@ -15078,7 +14998,7 @@ class LangEn extends WordlistOwl { } const langEn = new LangEn(); -const version$1 = "@ethersproject/wallet@6.0.0-beta.4"; +const version$1 = "@ethersproject/wallet@6.0.0-beta.5"; const logger = new Logger(version$1); @@ -16447,7 +16367,7 @@ class Wallet extends BaseWallet { } _Wallet_mnemonic = new WeakMap(); -const version = "ethers@6.0.0-beta.5"; +const version = "ethers@6.0.0-beta.6"; var ethers = /*#__PURE__*/Object.freeze({ __proto__: null, diff --git a/packages/ethers/dist/ethers.js.map b/packages/ethers/dist/ethers.js.map index 3530f9054..e5fad2760 100644 --- a/packages/ethers/dist/ethers.js.map +++ b/packages/ethers/dist/ethers.js.map @@ -1 +1 @@ -{"version":3,"file":"ethers.js","sources":["../../properties/lib/properties.js","../../properties/lib/events.js","../../properties/lib/storage.js","../../logger/lib/errors.js","../../logger/lib/_version.js","../../logger/lib/logger.js","../../abi/lib/_version.js","../../abi/lib/logger.js","../../abi/lib/fragments.js","../../math/lib/_version.js","../../math/lib/logger.js","../../math/lib/convert.js","../../math/lib/maths.js","../../math/lib/fixednumber.js","../../math/lib/base58.js","../../math/lib/units.js","../../bytes/lib/check.js","../../bytes/lib/_version.js","../../bytes/lib/logger.js","../../bytes/lib/array.js","../../bytes/lib/base64.js","../../bytes/lib/hex.js","../../bytes/lib/data.js","../../bytes/lib/pad.js","../../abi/lib/coders/abstract-coder.js","../../../node_modules/@noble/hashes/esm/utils.js","../../../node_modules/@noble/hashes/esm/hmac.js","../../../node_modules/@noble/hashes/esm/pbkdf2.js","../../../node_modules/@noble/hashes/esm/_sha2.js","../../../node_modules/@noble/hashes/esm/sha256.js","../../../node_modules/@noble/hashes/esm/_u64.js","../../../node_modules/@noble/hashes/esm/sha512.js","../../crypto/lib/_version.js","../../crypto/lib/logger.js","../../crypto/lib/crypto-browser.js","../../crypto/lib/hmac.js","../../../node_modules/@noble/hashes/esm/sha3.js","../../crypto/lib/keccak.js","../../../node_modules/@noble/hashes/esm/ripemd160.js","../../crypto/lib/ripemd160.js","../../crypto/lib/pbkdf2.js","../../crypto/lib/random.js","../../../node_modules/@noble/hashes/esm/scrypt.js","../../crypto/lib/scrypt.js","../../crypto/lib/sha2.js","../../crypto/lib/index.js","../../address/lib/_version.js","../../address/lib/logger.js","../../address/lib/address.js","../../rlp/lib/_version.js","../../rlp/lib/logger.js","../../rlp/lib/encode.js","../../rlp/lib/decode.js","../../address/lib/contract-address.js","../../address/lib/checks.js","../../abi/lib/typed.js","../../abi/lib/coders/address.js","../../abi/lib/coders/anonymous.js","../../abi/lib/coders/array.js","../../abi/lib/coders/boolean.js","../../abi/lib/coders/bytes.js","../../abi/lib/coders/fixed-bytes.js","../../abi/lib/coders/null.js","../../abi/lib/coders/number.js","../../strings/lib/_version.js","../../strings/lib/logger.js","../../strings/lib/utf8.js","../../strings/lib/bytes32.js","../../strings/lib/idna.js","../../abi/lib/coders/string.js","../../abi/lib/coders/tuple.js","../../abi/lib/abi-coder.js","../../hash/lib/id.js","../../hash/lib/_version.js","../../hash/lib/logger.js","../../hash/lib/namehash.js","../../hash/lib/message.js","../../hash/lib/solidity.js","../../hash/lib/typed-data.js","../../abi/lib/interface.js","../../web/lib/_version.js","../../web/lib/logger.js","../../web/lib/response.js","../../web/lib/get-url-browser.js","../../web/lib/request.js","../../web/lib/fetch-data.js","../../providers/lib/_version.js","../../providers/lib/logger.js","../../providers/lib/ens-resolver.js","../../signing-key/lib/_version.js","../../signing-key/lib/logger.js","../../signing-key/lib/signature.js","../../../node_modules/@noble/secp256k1/lib/esm/index.js","../../signing-key/lib/signing-key.js","../../transaction/lib/accesslist.js","../../transaction/lib/address.js","../../transaction/lib/_version.js","../../transaction/lib/logger.js","../../transaction/lib/transaction.js","../../providers/lib/provider.js","../../providers/lib/formatter.js","../../providers/lib/plugins-network.js","../../providers/lib/network.js","../../providers/lib/subscriber-polling.js","../../providers/lib/abstract-provider.js","../../providers/lib/abstract-signer.js","../../providers/lib/community.js","../../providers/lib/subscriber-filterid.js","../../providers/lib/provider-jsonrpc.js","../../providers/lib/provider-ankr.js","../../providers/lib/provider-alchemy.js","../../providers/lib/provider-cloudflare.js","../../providers/lib/provider-etherscan.js","../../providers/lib/provider-infura.js","../../providers/lib/provider-pocket.js","../../providers/lib/shuffle.js","../../providers/lib/provider-fallback.js","../../providers/lib/ws-browser.js","../../providers/lib/provider-socket.js","../../providers/lib/provider-websocket.js","../../providers/lib/default-provider.js","../../providers/lib/common-networks.js","../../providers/lib/provider-ipcsocket-browser.js","../../contract/lib/wrappers.js","../../contract/lib/_version.js","../../contract/lib/logger.js","../../contract/lib/contract.js","../../wordlists/lib/decode-owl.js","../../wordlists/lib/_version.js","../../wordlists/lib/logger.js","../../wordlists/lib/wordlist.js","../../wordlists/lib/wordlist-owl.js","../../wordlists/lib/lang-en.js","../../wallet/lib/_version.js","../../wallet/lib/logger.js","../../wordlists/lib/wordlists-en.js","../../wordlists/lib/bit-reader.js","../../wordlists/lib/decode-owla.js","../../wordlists/lib/wordlist-owla.js","../../wallet/lib/mnemonic.js","../../wallet/lib/base-wallet.js","../../wallet/lib/hdwallet.js","../../../node_modules/aes-js/lib/aes.js","../../../node_modules/aes-js/lib/mode.js","../../../node_modules/aes-js/lib/mode-cbc.js","../../../node_modules/aes-js/lib/mode-cfb.js","../../../node_modules/aes-js/lib/mode-ctr.js","../../../node_modules/aes-js/lib/mode-ofb.js","../../../node_modules/aes-js/lib/padding.js","../../wallet/lib/utils.js","../../wallet/lib/json-crowdsale.js","../../wallet/lib/json-keystore.js","../../wallet/lib/wallet.js","../lib/_version.js"],"sourcesContent":["//import type { BigNumber, BigNumberish } from \"./big-number\";\n//import type { Bytes, BytesLike } from \"./bytes\";\n//import type { Signature, SignatureLike } from \"./signature\";\n/*\nexport type Loose = T extends BigNumber ? BigNumberish:\n T extends number ? BigNumberish:\n T extends Bytes ? BytesLike:\n T extends Signature ? SignatureLike:\n T;\nexport type LooseObject = { [P in keyof T]?: Loose; };\n*/\n//export type Deferrable = T | Promise;\n/*\nexport type DeferrableObject = {\n [ P in keyof T ]: Deferrable\n};\n*/\n/*\nexport type Frozen = Readonly<{\n [ P in keyof T ]: T[P] extends Freezable ? Frozen: T[P];\n}>;\n\nexport interface Freezable {\n clone(): T;\n freeze(): Frozen;\n isFrozen(): boolean;\n}\n*/\n/*\nconst _data: WeakMap = new WeakMap();\n\nexport class Data implements Freezable {\n #props: {\n data: Uint8Array\n };\n\n [ index: number ]: number;\n\n constructor(lengthOrData: number | Uint8Array) {\n if (typeof(lengthOrData) === \"number\") {\n _data[this] = new Uint8Array(lengthOrData);\n } else {\n _data[this] = lengthOrData;\n }\n\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return Reflect.get(target, prop, receiver); }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n throw new Error(\"\");\n }\n return data[index];\n },\n\n set: (target, prop, value, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return false; }\n\n if (value < 0 || value > 255 || value % 1) { return false; }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n return false;\n }\n\n data[index] = value;\n\n return true;\n },\n });\n }\n\n toString(): string {\n return this.slice().toString();\n }\n\n slice(): Uint8Array {\n return _data.get(this).slice();\n }\n\n clone(): Data {\n return new Data(this.slice());\n }\n\n freeze(): Frozen {\n //Object.freeze(this.#props);\n return this;\n }\n\n isFrozen(): boolean {\n return Object.isFrozen(this.#props);\n }\n}\nconst d = new Data(4);\nconsole.log(d.toString());\nd[0] = 45;\nconsole.log(d.toString());\n*/\n/*\nexport type DeferrableObject = {\n [ P in keyof T ]: Deferrable\n};\n*/\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n/*\nexport type IsCancelled = () => Promise;\n\nexport function createPromise(resolve: (isCancelled: IsCancelled, (result: T) => void) => void, reject: (error: Error) => void, isCancelled: IsCancelled): CancellablePromise {\n let cancelled = false;\n\n const promise = new Promise((resolve, reject) => {\n \n });\n\n (>promise).cancel = function() {\n cancelled = true;\n };\n\n return (>promise);\n}\n*/\n/*\nexport class A implements Freezable {\n foo: number;\n constructor(foo: number) {\n this.foo = foo;\n }\n freeze(): Frozen {\n Object.freeze(this);\n return this;\n }\n clone(): A {\n return new A(this.foo);\n }\n}\n\nexport class B implements Freezable {\n a: A;\n constructor(a: A) {\n this.a = a;\n }\n freeze(): Frozen {\n this.a.freeze();\n Object.freeze(this);\n return this;\n }\n clone(): B {\n return new B(this.a);\n }\n}\n\nexport function test() {\n const a = new A(123);\n const b = new B(a);\n b.a = new A(234);\n const b2 = b.freeze();\n b2.a.foo = 123; // = a;\n}\n*/\nfunction checkType(value, type) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n throw new Error(\"invalid value for type\");\n}\nexport function defineProperties(target, values, types, defaults) {\n for (let key in values) {\n let value = values[key];\n const fallback = (defaults ? defaults[key] : undefined);\n if (fallback !== undefined) {\n value = fallback;\n }\n else {\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type);\n }\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _EventPayload_listener;\nimport { defineProperties } from \"./properties.js\";\nexport class EventPayload {\n constructor(emitter, listener, filter) {\n _EventPayload_listener.set(this, void 0);\n __classPrivateFieldSet(this, _EventPayload_listener, listener, \"f\");\n defineProperties(this, { emitter, filter });\n }\n async removeListener() {\n if (__classPrivateFieldGet(this, _EventPayload_listener, \"f\") == null) {\n return;\n }\n await this.emitter.off(this.filter, __classPrivateFieldGet(this, _EventPayload_listener, \"f\"));\n }\n}\n_EventPayload_listener = new WeakMap();\n//# sourceMappingURL=events.js.map","export function getStore(store, key) {\n return store[key];\n}\nexport function setStore(store, key, value) {\n if (Object.isFrozen(store)) {\n throw new Error(\"frozen object is immuatable; cannot set \" + key);\n }\n store[key] = value;\n}\n//# sourceMappingURL=storage.js.map","//export type TransactionReceipt {\n//}\n/**\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, errors.CALL_EXCEPTION)) {\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n//# sourceMappingURL=errors.js.map","export const version = \"@ethersproject/logger@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Logger_instances, _Logger_getBytes, _Logger_log;\nimport { version } from \"./_version.js\";\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\n;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nlet _globalLogger = null;\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\nfunction defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true, writable: false, value,\n });\n}\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\n// The type of error to use for various error codes\nconst ErrorConstructors = {};\nErrorConstructors.INVALID_ARGUMENT = TypeError;\nErrorConstructors.NUMERIC_FAULT = RangeError;\nErrorConstructors.BUFFER_OVERRUN = RangeError;\nexport class Logger {\n constructor(version) {\n _Logger_instances.add(this);\n defineReadOnly(this, \"version\", version || \"_\");\n }\n makeError(message, code, info) {\n {\n const details = [];\n if (info) {\n for (const key in info) {\n const value = (info[key]);\n try {\n details.push(key + \"=\" + JSON.stringify(value));\n }\n catch (error) {\n details.push(key + \"=[could not serialize object]\");\n }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${this.version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n const create = ErrorConstructors[code] || Error;\n const error = (new create(message));\n defineReadOnly(error, \"code\", code);\n if (info) {\n for (const key in info) {\n defineReadOnly(error, key, (info[key]));\n }\n }\n return error;\n }\n throwError(message, code, info) {\n throw this.makeError(message, code, info);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, \"INVALID_ARGUMENT\", {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, info) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code || \"UNKNOWN_ERROR\", info);\n }\n assertArgument(condition, message, name, value) {\n return this.assert(condition, message, \"INVALID_ARGUMENT\", {\n argument: name,\n value\n });\n }\n assertIntegerArgument(name, value, lower, upper) {\n let message = null;\n if (typeof (value) !== \"number\") {\n message = \"expected a number\";\n }\n else if (!Number.isInteger(value)) {\n message = \"invalid integer\";\n }\n else if ((lower != null && value < lower) || (upper != null && value > upper)) {\n message = \"value is out of range\";\n }\n if (message) {\n this.throwArgumentError(message, name, value);\n }\n }\n assertSafeUint53(value, message) {\n this.assertArgument((typeof (value) === \"number\"), \"invalid number\", \"value\", value);\n if (message == null) {\n message = \"value not safe\";\n }\n const operation = \"assertSafeInteger\";\n this.assert((value >= 0 && value < 0x1fffffffffffff), message, \"NUMERIC_FAULT\", {\n operation, fault: \"out-of-safe-range\", value\n });\n this.assert((value % 1) === 0, message, \"NUMERIC_FAULT\", {\n operation, fault: \"non-integer\", value\n });\n }\n assertNormalize(form) {\n if (_normalizeForms.indexOf(form) === -1) {\n this.throwError(\"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n }\n }\n assertPrivate(givenGuard, guard, className = \"\") {\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n this.throwError(`private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n }\n assertArgumentCount(count, expectedCount, message = \"\") {\n if (message) {\n message = \": \" + message;\n }\n this.assert((count >= expectedCount), \"missing arguemnt\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n this.assert((count >= expectedCount), \"too many arguemnts\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n }\n getBytes(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, false);\n }\n getBytesCopy(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, true);\n }\n getNumber(value, name) {\n switch (typeof (value)) {\n case \"bigint\":\n if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return Number(value);\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return value;\n case \"string\":\n try {\n return this.getNumber(BigInt(value), name);\n }\n catch (e) {\n this.throwArgumentError(`invalid numeric string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid numeric value\", name || \"value\", value);\n }\n getBigInt(value, name) {\n switch (typeof (value)) {\n case \"bigint\": return value;\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return BigInt(value);\n case \"string\":\n try {\n return BigInt(value);\n }\n catch (e) {\n this.throwArgumentError(`invalid BigNumberish string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid BigNumberish value\", name || \"value\", value);\n }\n debug(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.DEBUG, args);\n }\n info(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.INFO, args);\n }\n warn(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.WARNING, args);\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setLogLevel(logLevel) {\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_Logger_instances = new WeakSet(), _Logger_getBytes = function _Logger_getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x([0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n return this.throwArgumentError(\"invalid BytesLike value\", name || \"value\", value);\n}, _Logger_log = function _Logger_log(logLevel, args) {\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]) {\n return;\n }\n console.log.apply(console, args);\n};\nLogger.LogLevels = LogLevel;\n//# sourceMappingURL=logger.js.map","export const version = \"@ethersproject/abi@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TokenString_instances, _TokenString_offset, _TokenString_tokens, _TokenString_subTokenString, _ParamType_instances, _ParamType_walkAsync;\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n;\nexport var FormatType;\n(function (FormatType) {\n // Bare formatting, as is needed for computing a sighash of an event or function\n FormatType[\"sighash\"] = \"sighash\";\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n FormatType[\"minimal\"] = \"minimal\";\n // Human-Readable with nice spacing, including all names\n FormatType[\"full\"] = \"full\";\n // JSON-format a la Solidity\n FormatType[\"json\"] = \"json\";\n})(FormatType || (FormatType = {}));\n;\n// [ \"a\", \"b\" ] => { \"a\": 1, \"b\": 1 }\nfunction setify(items) {\n const result = new Set();\n items.forEach((k) => result.add(k));\n return Object.freeze(result);\n}\n// Visibility Keywords\nconst _kwVisib = \"constant external internal payable private public pure view\";\nconst KwVisib = setify(_kwVisib.split(\" \"));\nconst _kwTypes = \"constructor error event function struct\";\nconst KwTypes = setify(_kwTypes.split(\" \"));\nconst _kwModifiers = \"calldata memory storage payable indexed\";\nconst KwModifiers = setify(_kwModifiers.split(\" \"));\nconst _kwOther = \"tuple returns\";\n// All Keywords\nconst _keywords = [_kwTypes, _kwModifiers, _kwOther, _kwVisib].join(\" \");\nconst Keywords = setify(_keywords.split(\" \"));\n// Single character tokens\nconst SimpleTokens = {\n \"(\": \"OPEN_PAREN\", \")\": \"CLOSE_PAREN\",\n \"[\": \"OPEN_BRACKET\", \"]\": \"CLOSE_BRACKET\",\n \",\": \"COMMA\", \"@\": \"AT\"\n};\n// Parser regexes to consume the next token\nconst regexWhitespace = new RegExp(\"^(\\\\s*)\");\nconst regexNumber = new RegExp(\"^([0-9]+)\");\nconst regexIdentifier = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)\");\nconst regexType = new RegExp(\"^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))\");\nexport class TokenString {\n constructor(tokens) {\n _TokenString_instances.add(this);\n _TokenString_offset.set(this, void 0);\n _TokenString_tokens.set(this, void 0);\n __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\");\n __classPrivateFieldSet(this, _TokenString_tokens, tokens.slice(), \"f\");\n }\n get offset() { return __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n get length() { return __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length - __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n clone() { return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\")); }\n reset() { __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\"); }\n // Pops and returns the value of the next token, if it is a keyword in allowed; throws if out of tokens\n popKeyword(allowed) {\n const top = this.peek();\n if (top.type !== \"KEYWORD\" || !allowed.has(top.text)) {\n throw new Error(`expected keyword ${top.text}`);\n }\n return this.pop().text;\n }\n // Pops and returns the value of the next token if it is `type`; throws if out of tokens\n popType(type) {\n if (this.peek().type !== type) {\n throw new Error(`expected ${type}; got ${JSON.stringify(this.peek())}`);\n }\n return this.pop().text;\n }\n // Pops and returns a \"(\" TOKENS \")\"\n popParen() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = __classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, top.match + 1);\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Pops and returns the items within \"(\" ITEM1 \",\" ITEM2 \",\" ... \")\"\n popParams() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = [];\n while (__classPrivateFieldGet(this, _TokenString_offset, \"f\") < top.match - 1) {\n const link = this.peek().linkNext;\n result.push(__classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, link));\n __classPrivateFieldSet(this, _TokenString_offset, link, \"f\");\n }\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Returns the top Token, throwing if out of tokens\n peek() {\n if (__classPrivateFieldGet(this, _TokenString_offset, \"f\") >= __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length) {\n throw new Error(\"out-of-bounds\");\n }\n return __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[__classPrivateFieldGet(this, _TokenString_offset, \"f\")];\n }\n // Returns the next value, if it is a keyword in `allowed`\n peekKeyword(allowed) {\n const top = this.peekType(\"KEYWORD\");\n return (top != null && allowed.has(top)) ? top : null;\n }\n // Returns the value of the next token if it is `type`\n peekType(type) {\n if (this.length === 0) {\n return null;\n }\n const top = this.peek();\n return (top.type === type) ? top.text : null;\n }\n // Returns the next token; throws if out of tokens\n pop() {\n var _a;\n const result = this.peek();\n __classPrivateFieldSet(this, _TokenString_offset, (_a = __classPrivateFieldGet(this, _TokenString_offset, \"f\"), _a++, _a), \"f\");\n return result;\n }\n toString() {\n const tokens = [];\n for (let i = __classPrivateFieldGet(this, _TokenString_offset, \"f\"); i < __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length; i++) {\n const token = __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[i];\n tokens.push(`${token.type}:${token.text}`);\n }\n return ``;\n }\n}\n_TokenString_offset = new WeakMap(), _TokenString_tokens = new WeakMap(), _TokenString_instances = new WeakSet(), _TokenString_subTokenString = function _TokenString_subTokenString(from = 0, to = 0) {\n return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\").slice(from, to).map((t) => {\n return Object.freeze(Object.assign({}, t, {\n match: (t.match - from),\n linkBack: (t.linkBack - from),\n linkNext: (t.linkNext - from),\n }));\n return t;\n }));\n};\nexport function lex(text) {\n const tokens = [];\n const throwError = (message) => {\n const token = (offset < text.length) ? JSON.stringify(text[offset]) : \"$EOI\";\n throw new Error(`invalid token ${token} at ${offset}: ${message}`);\n };\n let brackets = [];\n let commas = [];\n let offset = 0;\n while (offset < text.length) {\n // Strip off any leading whitespace\n let cur = text.substring(offset);\n let match = cur.match(regexWhitespace);\n if (match) {\n offset += match[1].length;\n cur = text.substring(offset);\n }\n const token = { depth: brackets.length, linkBack: -1, linkNext: -1, match: -1, type: \"\", text: \"\", offset, value: -1 };\n tokens.push(token);\n let type = (SimpleTokens[cur[0]] || \"\");\n if (type) {\n token.type = type;\n token.text = cur[0];\n offset++;\n if (type === \"OPEN_PAREN\") {\n brackets.push(tokens.length - 1);\n commas.push(tokens.length - 1);\n }\n else if (type == \"CLOSE_PAREN\") {\n if (brackets.length === 0) {\n throwError(\"no matching open bracket\");\n }\n token.match = brackets.pop();\n (tokens[token.match]).match = tokens.length - 1;\n token.depth--;\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n }\n else if (type === \"COMMA\") {\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n commas.push(tokens.length - 1);\n }\n else if (type === \"OPEN_BRACKET\") {\n token.type = \"BRACKET\";\n }\n else if (type === \"CLOSE_BRACKET\") {\n // Remove the CLOSE_BRACKET\n let suffix = tokens.pop().text;\n if (tokens.length > 0 && tokens[tokens.length - 1].type === \"NUMBER\") {\n const value = tokens.pop().text;\n suffix = value + suffix;\n (tokens[tokens.length - 1]).value = logger.getNumber(value);\n }\n if (tokens.length === 0 || tokens[tokens.length - 1].type !== \"BRACKET\") {\n throw new Error(\"missing opening bracket\");\n }\n (tokens[tokens.length - 1]).text += suffix;\n }\n continue;\n }\n match = cur.match(regexIdentifier);\n if (match) {\n token.text = match[1];\n offset += token.text.length;\n if (Keywords.has(token.text)) {\n token.type = \"KEYWORD\";\n continue;\n }\n if (token.text.match(regexType)) {\n token.type = \"TYPE\";\n continue;\n }\n token.type = \"ID\";\n continue;\n }\n match = cur.match(regexNumber);\n if (match) {\n token.text = match[1];\n token.type = \"NUMBER\";\n offset += token.text.length;\n continue;\n }\n throw new Error(`unexpected token ${JSON.stringify(cur[0])} at position ${offset}`);\n }\n return new TokenString(tokens.map((t) => Object.freeze(t)));\n}\n// Check only one of `allowed` is in `set`\nfunction allowSingle(set, allowed) {\n let included = [];\n for (const key in allowed.keys()) {\n if (set.has(key)) {\n included.push(key);\n }\n }\n if (included.length > 1) {\n throw new Error(`conflicting types: ${included.join(\", \")}`);\n }\n}\n// Functions to process a Solidity Signature TokenString from left-to-right for...\n// ...the name with an optional type, returning the name\nfunction consumeName(type, tokens) {\n if (tokens.peekKeyword(KwTypes)) {\n const keyword = tokens.pop().text;\n if (keyword !== type) {\n throw new Error(`expected ${type}, got ${keyword}`);\n }\n }\n return tokens.popType(\"ID\");\n}\n// ...all keywords matching allowed, returning the keywords\nfunction consumeKeywords(tokens, allowed) {\n const keywords = new Set();\n while (true) {\n const keyword = tokens.peekType(\"KEYWORD\");\n if (keyword == null || (allowed && !allowed.has(keyword))) {\n break;\n }\n tokens.pop();\n if (keywords.has(keyword)) {\n throw new Error(`duplicate keywords: ${JSON.stringify(keyword)}`);\n }\n keywords.add(keyword);\n }\n return Object.freeze(keywords);\n}\n// ...all visibility keywords, returning the coalesced mutability\nfunction consumeMutability(tokens) {\n let modifiers = consumeKeywords(tokens, KwVisib);\n // Detect conflicting modifiers\n allowSingle(modifiers, setify(\"constant payable nonpayable\".split(\" \")));\n allowSingle(modifiers, setify(\"pure view payable nonpayable\".split(\" \")));\n // Process mutability states\n if (modifiers.has(\"view\")) {\n return \"view\";\n }\n if (modifiers.has(\"pure\")) {\n return \"pure\";\n }\n if (modifiers.has(\"payable\")) {\n return \"payable\";\n }\n if (modifiers.has(\"nonpayable\")) {\n return \"nonpayable\";\n }\n // Process legacy `constant` last\n if (modifiers.has(\"constant\")) {\n return \"view\";\n }\n return \"nonpayable\";\n}\n// ...a parameter list, returning the ParamType list\nfunction consumeParams(tokens, allowIndexed) {\n return tokens.popParams().map((t) => ParamType.fromTokens(t, allowIndexed));\n}\n// ...a gas limit, returning a BigNumber or null if none\nfunction consumeGas(tokens) {\n if (tokens.peekType(\"AT\")) {\n tokens.pop();\n if (tokens.peekType(\"NUMBER\")) {\n return logger.getBigInt(tokens.pop().text);\n }\n throw new Error(\"invalid gas\");\n }\n return null;\n}\nfunction consumeEoi(tokens) {\n if (tokens.length) {\n throw new Error(`unexpected tokens: ${tokens.toString()}`);\n }\n}\nconst regexArrayType = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nfunction verifyBasicType(type) {\n const match = type.match(regexType);\n if (!match) {\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n }\n if (type === \"uint\") {\n return \"uint256\";\n }\n if (type === \"int\") {\n return \"int256\";\n }\n if (match[2]) {\n // bytesXX\n const length = parseInt(match[2]);\n if (length === 0 || length > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"type\", type);\n }\n }\n else if (match[3]) {\n // intXX or uintXX\n const size = parseInt(match[3]);\n if (size === 0 || size > 256 || size % 8) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n }\n return type;\n}\n// Make the Fragment constructors effectively private\nconst _guard = {};\nconst internal = Symbol.for(\"_ethers_internal\");\nconst ParamTypeInternal = \"_ParamTypeInternal\";\nexport class ParamType {\n constructor(guard, name, type, baseType, indexed, components, arrayLength, arrayChildren) {\n _ParamType_instances.add(this);\n logger.assertPrivate(guard, _guard, \"ParamType\");\n Object.defineProperty(this, internal, { value: ParamTypeInternal });\n if (components) {\n components = Object.freeze(components.slice());\n }\n if (baseType === \"array\") {\n if (arrayLength == null || arrayChildren == null) {\n throw new Error(\"\");\n }\n }\n else if (arrayLength != null || arrayChildren != null) {\n throw new Error(\"\");\n }\n if (baseType === \"tuple\") {\n if (components == null) {\n throw new Error(\"\");\n }\n }\n else if (components != null) {\n throw new Error(\"\");\n }\n defineProperties(this, {\n name, type, baseType, indexed, components, arrayLength, arrayChildren\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 = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n let result = {\n type: ((this.baseType === \"tuple\") ? \"tuple\" : this.type),\n name: (this.name || undefined)\n };\n if (typeof (this.indexed) === \"boolean\") {\n result.indexed = this.indexed;\n }\n if (this.isTuple()) {\n result.components = this.components.map((c) => JSON.parse(c.format(format)));\n }\n return JSON.stringify(result);\n }\n let result = \"\";\n // Array\n if (this.isArray()) {\n result += this.arrayChildren.format(format);\n result += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n }\n else {\n if (this.isTuple()) {\n if (format !== FormatType.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map((comp) => comp.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n }\n else {\n result += this.type;\n }\n }\n if (format !== FormatType.sighash) {\n if (this.indexed === true) {\n result += \" indexed\";\n }\n if (format === FormatType.full && this.name) {\n result += \" \" + this.name;\n }\n }\n return result;\n }\n static isArray(value) {\n return value && (value.baseType === \"array\");\n }\n isArray() {\n return (this.baseType === \"array\");\n }\n isTuple() {\n return (this.baseType === \"tuple\");\n }\n isIndexable() {\n return (this.indexed != null);\n }\n walk(value, process) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v) => (this.arrayChildren.walk(v, process)));\n }\n if (this.isTuple()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid tuple value\");\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v, i) => (this.components[i].walk(v, process)));\n }\n return process(this.type, value);\n }\n async walkAsync(value, process) {\n const promises = [];\n const result = [value];\n __classPrivateFieldGet(this, _ParamType_instances, \"m\", _ParamType_walkAsync).call(this, promises, value, process, (value) => {\n result[0] = value;\n });\n if (promises.length) {\n await Promise.all(promises);\n }\n return result[0];\n }\n static from(obj, allowIndexed) {\n if (ParamType.isParamType(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n return ParamType.fromTokens(lex(obj), allowIndexed);\n }\n if (obj instanceof TokenString) {\n return ParamType.fromTokens(obj, allowIndexed);\n }\n const name = obj.name;\n if (name && (typeof (name) !== \"string\" || !name.match(regexIdentifier))) {\n logger.throwArgumentError(\"invalid name\", \"obj.name\", name);\n }\n let indexed = obj.indexed;\n if (indexed != null) {\n if (!allowIndexed) {\n logger.throwArgumentError(\"parameter cannot be indexed\", \"obj.indexed\", obj.indexed);\n }\n indexed = !!indexed;\n }\n let type = obj.type;\n let arrayMatch = type.match(regexArrayType);\n if (arrayMatch) {\n const arrayLength = arrayMatch[2];\n const arrayChildren = ParamType.from({\n type: arrayMatch[1],\n components: obj.components\n });\n return new ParamType(_guard, name, type, \"array\", indexed, null, arrayLength, arrayChildren);\n }\n if (type.substring(0, 5) === \"tuple(\" || type[0] === \"(\") {\n const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;\n const tuple = new ParamType(_guard, name, type, \"tuple\", indexed, comps, null, null);\n // @TODO: use lexer to validate and normalize type\n return tuple;\n }\n type = verifyBasicType(obj.type);\n return new ParamType(_guard, name, type, type, indexed, null, null, null);\n }\n static fromObject(obj, allowIndexed) {\n throw new Error(\"@TODO\");\n }\n static fromTokens(tokens, allowIndexed) {\n let type = \"\", baseType = \"\";\n let comps = null;\n if (consumeKeywords(tokens, setify([\"tuple\"])).has(\"tuple\") || tokens.peekType(\"OPEN_PAREN\")) {\n // Tuple\n baseType = \"tuple\";\n comps = tokens.popParams().map((t) => ParamType.from(t));\n type = `tuple(${comps.map((c) => c.format()).join(\",\")})`;\n }\n else {\n // Normal\n type = verifyBasicType(tokens.popType(\"TYPE\"));\n baseType = type;\n }\n // Check for Array\n let arrayChildren = null;\n let arrayLength = null;\n while (tokens.length && tokens.peekType(\"BRACKET\")) {\n const bracket = tokens.pop(); //arrays[i];\n arrayChildren = new ParamType(_guard, \"\", type, baseType, null, comps, arrayLength, arrayChildren);\n arrayLength = bracket.value;\n type += bracket.text;\n baseType = \"array\";\n comps = null;\n }\n let indexed = null;\n const keywords = consumeKeywords(tokens, KwModifiers);\n if (keywords.has(\"indexed\")) {\n if (!allowIndexed) {\n throw new Error(\"\");\n }\n indexed = true;\n }\n const name = (tokens.peekType(\"ID\") ? tokens.pop().text : \"\");\n if (tokens.length) {\n throw new Error(\"leftover tokens\");\n }\n return new ParamType(_guard, name, type, baseType, indexed, comps, arrayLength, arrayChildren);\n }\n static isParamType(value) {\n return (value && value[internal] === ParamTypeInternal);\n }\n}\n_ParamType_instances = new WeakSet(), _ParamType_walkAsync = function _ParamType_walkAsync(promises, value, process, setValue) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const childType = this.arrayChildren;\n const result = value.slice();\n result.forEach((value, index) => {\n __classPrivateFieldGet(childType, _ParamType_instances, \"m\", _ParamType_walkAsync).call(childType, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n if (this.isTuple()) {\n const components = this.components;\n // Convert the object into an array\n let result;\n if (Array.isArray(value)) {\n result = value.slice();\n }\n else {\n if (value == null || typeof (value) !== \"object\") {\n throw new Error(\"invlaid tuple value\");\n }\n result = components.map((param) => {\n if (!param.name) {\n throw new Error(\"cannot use object value with unnamed components\");\n }\n if (!(param.name in value)) {\n throw new Error(`missing value for component ${param.name}`);\n }\n return value[param.name];\n });\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n result.forEach((value, index) => {\n var _a;\n __classPrivateFieldGet((_a = components[index]), _ParamType_instances, \"m\", _ParamType_walkAsync).call(_a, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n const result = process(this.type, value);\n if (result.then) {\n promises.push((async function () { setValue(await result); })());\n }\n else {\n setValue(result);\n }\n};\nexport var FragmentType;\n(function (FragmentType) {\n FragmentType[\"constructor\"] = \"constructor\";\n FragmentType[\"error\"] = \"error\";\n FragmentType[\"event\"] = \"event\";\n FragmentType[\"function\"] = \"function\";\n FragmentType[\"struct\"] = \"struct\";\n})(FragmentType || (FragmentType = {}));\n;\nexport class Fragment {\n constructor(guard, type, inputs) {\n logger.assertPrivate(guard, _guard, \"Fragment\");\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { type, inputs });\n }\n static from(obj) {\n if (typeof (obj) === \"string\") {\n return this.fromString(obj);\n }\n if (obj instanceof TokenString) {\n return this.fromTokens(obj);\n }\n if (typeof (obj) === \"object\") {\n return this.fromObject(obj);\n }\n throw new Error(`unsupported type: ${obj}`);\n }\n static fromObject(obj) {\n switch (obj.type) {\n case \"constructor\": return ConstructorFragment.fromObject(obj);\n case \"error\": return ErrorFragment.fromObject(obj);\n case \"event\": return EventFragment.fromObject(obj);\n case \"function\": return FunctionFragment.fromObject(obj);\n case \"struct\": return StructFragment.fromObject(obj);\n }\n throw new Error(\"not implemented yet\");\n }\n static fromString(text) {\n try {\n Fragment.from(JSON.parse(text));\n }\n catch (e) { }\n return Fragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const type = tokens.popKeyword(KwTypes);\n switch (type) {\n case \"constructor\": return ConstructorFragment.fromTokens(tokens);\n case \"error\": return ErrorFragment.fromTokens(tokens);\n case \"event\": return EventFragment.fromTokens(tokens);\n case \"function\": return FunctionFragment.fromTokens(tokens);\n case \"struct\": return StructFragment.fromTokens(tokens);\n }\n throw new Error(`unsupported type: ${type}`);\n }\n /*\n static fromTokens(tokens: TokenString): Fragment {\n const assertDone = () => {\n if (tokens.length) { throw new Error(`unexpected tokens: ${ tokens.toString() }`); }\n });\n\n const type = (tokens.length && tokens.peek().type === \"KEYWORD\") ? tokens.peek().text: \"unknown\";\n\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens, type === \"event\");\n\n switch (type) {\n case \"event\": case \"struct\":\n assertDone();\n }\n\n }\n */\n static isConstructor(value) {\n return (value && value.type === \"constructor\");\n }\n static isError(value) {\n return (value && value.type === \"error\");\n }\n static isEvent(value) {\n return (value && value.type === \"event\");\n }\n static isFunction(value) {\n return (value && value.type === \"function\");\n }\n static isStruct(value) {\n return (value && value.type === \"struct\");\n }\n}\nexport class NamedFragment extends Fragment {\n constructor(guard, type, name, inputs) {\n super(guard, type, inputs);\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { name });\n }\n}\nfunction joinParams(format, params) {\n return \"(\" + params.map((p) => p.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n}\nexport class ErrorFragment extends NamedFragment {\n constructor(guard, name, inputs) {\n super(guard, FragmentType.error, name, inputs);\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"error\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n return result.join(\" \");\n }\n static fromString(text) {\n return ErrorFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new ErrorFragment(_guard, name, inputs);\n }\n}\nexport class EventFragment extends NamedFragment {\n constructor(guard, name, inputs, anonymous) {\n super(guard, FragmentType.event, name, inputs);\n defineProperties(this, { anonymous });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"event\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash && this.anonymous) {\n result.push(\"anonymous\");\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return EventFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"event\", tokens);\n const inputs = consumeParams(tokens, true);\n const anonymous = !!consumeKeywords(tokens, setify([\"anonymous\"])).has(\"anonymous\");\n consumeEoi(tokens);\n return new EventFragment(_guard, name, inputs, anonymous);\n }\n}\nexport class ConstructorFragment extends Fragment {\n constructor(guard, type, inputs, payable, gas) {\n super(guard, type, inputs);\n defineProperties(this, { payable, gas });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", \"UNSUPPORTED_OPERATION\", {\n operation: \"format(sighash)\"\n });\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: (this.payable ? \"payable\" : \"undefined\"),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [`constructor${joinParams(format, this.inputs)}`];\n result.push((this.payable) ? \"payable\" : \"nonpayable\");\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return ConstructorFragment.fromTokens(lex(text));\n }\n static fromObject(obj) {\n throw new Error(\"TODO\");\n }\n static fromTokens(tokens) {\n consumeKeywords(tokens, setify([\"constructor\"]));\n const inputs = consumeParams(tokens);\n const payable = !!consumeKeywords(tokens, setify([\"payable\"])).has(\"payable\");\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new ConstructorFragment(_guard, FragmentType.constructor, inputs, payable, gas);\n }\n}\nexport class FunctionFragment extends NamedFragment {\n constructor(guard, name, stateMutability, inputs, outputs, gas) {\n super(guard, FragmentType.function, name, inputs);\n outputs = Object.freeze(outputs.slice());\n const constant = (stateMutability === \"view\" || stateMutability === \"pure\");\n const payable = (stateMutability === \"payable\");\n defineProperties(this, { constant, gas, outputs, payable, stateMutability });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format))),\n outputs: this.outputs.map((o) => JSON.parse(o.format(format))),\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"function\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash) {\n if (this.stateMutability !== \"nonpayable\") {\n result.push(this.stateMutability);\n }\n if (this.outputs && this.outputs.length) {\n result.push(\"returns\");\n result.push(joinParams(format, this.outputs));\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return FunctionFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"function\", tokens);\n const inputs = consumeParams(tokens);\n const mutability = consumeMutability(tokens);\n let outputs = [];\n if (consumeKeywords(tokens, setify([\"returns\"])).has(\"returns\")) {\n outputs = consumeParams(tokens);\n }\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new FunctionFragment(_guard, name, mutability, inputs, outputs, gas);\n }\n}\nexport class StructFragment extends NamedFragment {\n format() {\n throw new Error(\"@TODO\");\n }\n static fromString(text) {\n return StructFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"struct\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new StructFragment(_guard, FragmentType.struct, name, inputs);\n }\n}\n//# sourceMappingURL=fragments.js.map","export const version = \"@ethersproject/math@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\nconst nibbles = \"0123456789abcdef\";\nconst BN_0 = BigInt(0);\n// Converts a value to a BigInt, including big endian data\nexport function toBigInt(_value) {\n if (_value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of _value) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return logger.getBigInt(_value, \"value\");\n}\nexport function toNumber(_value) {\n const value = toBigInt(_value);\n if (value < -maxValue || value > maxValue) {\n logger.throwArgumentError(\"overflow\", \"value\", _value);\n }\n return Number(value);\n}\n// Converts value to hex, optionally padding on the left to width bytes\nexport function toHex(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n let result = value.toString(16);\n if (_width == null) {\n // Ensure the value is of even length\n if (result.length % 2) {\n result = \"0\" + result;\n }\n }\n else {\n const width = logger.getNumber(_width, \"width\");\n if (width * 2 < result.length) {\n throw new Error(`value ${value} exceeds width ${width}`);\n }\n // Pad the value to the required width\n while (result.length < (width * 2)) {\n result = \"0\" + result;\n }\n }\n return \"0x\" + result;\n}\nexport function toArray(_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n//# sourceMappingURL=convert.js.map","import { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\n// Convert a value from a twos-compliment value\nexport function fromTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n // Top bit set; treat as a negative value\n if (value >> (width - BN_1)) {\n const mask = (BN_1 << width) - BN_1;\n return -(((~value) & mask) + BN_1);\n }\n return value;\n}\n// Convert value to a twos-compliment value\nexport function toTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n if (value < BN_0) {\n const mask = (BN_1 << width) - BN_1;\n return ((~(-value)) & mask) + BN_1;\n }\n return value;\n}\nexport function mask(_value, _bits) {\n const value = logger.getBigInt(_value, \"value\");\n const bits = logger.getBigInt(_bits, \"bits\");\n return value & ((BN_1 << bits) - BN_1);\n}\n//# sourceMappingURL=maths.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FixedNumber_instances, _FixedNumber_value, _FixedNumber_checkFormat;\nimport { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nimport { fromTwos, toTwos } from \"./maths.js\";\nconst _constructorGuard = {};\n//const Zero = BigInt(0);\nconst NegativeOne = BigInt(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, \"NUMERIC_FAULT\", params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\" || decimals < 0 || decimals > 256 || decimals % 1) {\n logger.throwArgumentError(\"invalid decimal length\", \"decimals\", decimals);\n }\n return BigInt(\"1\" + zeros.substring(0, decimals));\n}\nexport function formatFixed(_value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n let value = logger.getBigInt(_value, \"value\");\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n const multiplierStr = String(multiplier);\n const negative = (value < 0);\n if (negative) {\n value *= NegativeOne;\n }\n let fraction = String(value % multiplier);\n // Make sure there are enough place-holders\n while (fraction.length < multiplierStr.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n while (fraction.length > 1 && fraction.substring(fraction.length - 1) === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n let result = String(value / multiplier);\n if (multiplierStr.length !== 1) {\n result += \".\" + fraction;\n }\n if (negative) {\n result = \"-\" + result;\n }\n return result;\n}\nexport function parseFixed(value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\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 let whole = (comps[0] || \"0\"), fraction = (comps[1] || \"0\");\n // Trim trialing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > String(multiplier).length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < String(multiplier).length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigInt(whole);\n const fractionValue = BigInt(fraction);\n let wei = (wholeValue * multiplier) + fractionValue;\n if (negative) {\n wei *= NegativeOne;\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n return logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\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 if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n _FixedNumber_instances.add(this);\n //#hex: string;\n _FixedNumber_value.set(this, void 0);\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.format = FixedFormat.from(format);\n //this.#hex = hex;\n __classPrivateFieldSet(this, _FixedNumber_value, value, \"f\");\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n addUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a + b, this.format.decimals, this.format);\n }\n subUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a - b, this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * b) / this.format._multiplier, this.format.decimals, this.format);\n }\n divUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * this.format._multiplier) / b, this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0.0\" || __classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0\");\n }\n isNegative() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\")[0] === \"-\");\n }\n toString() { return __classPrivateFieldGet(this, _FixedNumber_value, \"f\"); }\n toHexString(_width) {\n throw new Error(\"TODO\");\n /*\n return toHex();\n if (width == null) { return this.#hex; }\n\n const width = logger.getNumeric(_width);\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n\n const hex = BigNumber.from(this.#hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return zeroPadLeft(hex, width / 8);\n */\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), format);\n }\n static fromValue(value, decimals = 0, format = \"fixed\") {\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format = \"fixed\") {\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric < 0) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n const hex = (function () {\n if (fixedFormat.signed) {\n return toHex(toTwos(numeric, fixedFormat.width));\n }\n return toHex(numeric, fixedFormat.width / 8);\n })();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(_value, format = \"fixed\") {\n const value = logger.getBytes(_value, \"value\");\n const fixedFormat = FixedFormat.from(format);\n if (value.length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = toBigInt(value);\n if (fixedFormat.signed) {\n numeric = fromTwos(numeric, fixedFormat.width);\n }\n const hex = toHex(toTwos(numeric, (fixedFormat.signed ? 0 : 1) + fixedFormat.width));\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (value instanceof Uint8Array) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== \"INVALID_ARGUMENT\") {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\n_FixedNumber_value = new WeakMap(), _FixedNumber_instances = new WeakSet(), _FixedNumber_checkFormat = function _FixedNumber_checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n};\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","import { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nconst Alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nlet Lookup = null;\nfunction getAlpha(letter) {\n if (Lookup == null) {\n Lookup = {};\n for (let i = 0; i < Alphabet.length; i++) {\n Lookup[Alphabet[i]] = BigInt(i);\n }\n }\n const result = Lookup[letter];\n if (result == null) {\n logger.throwArgumentError(`invalid base58 value`, \"letter\", letter);\n }\n return result;\n}\nconst BN_0 = BigInt(0);\nconst BN_58 = BigInt(58);\nexport function encodeBase58(_value) {\n let value = toBigInt(logger.getBytes(_value));\n let result = \"\";\n while (value) {\n result = Alphabet[Number(value % BN_58)] + result;\n value /= BN_58;\n }\n return result;\n}\nexport function decodeBase58(value) {\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result *= BN_58;\n result += getAlpha(value[i]);\n }\n return toHex(result);\n}\n//# sourceMappingURL=base58.js.map","import { formatFixed, parseFixed } from \"./fixednumber.js\";\nimport { logger } from \"./logger.js\";\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\nexport function formatUnits(value, unit) {\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return formatFixed(value, (unit != null) ? unit : 18);\n}\nexport function parseUnits(value, unit) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return parseFixed(value, (unit != null) ? unit : 18);\n}\nexport function formatEther(wei) {\n return formatUnits(wei, 18);\n}\nexport function parseEther(ether) {\n return parseUnits(ether, 18);\n}\n//# sourceMappingURL=units.js.map","export function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\n//# sourceMappingURL=check.js.map","export const version = \"@ethersproject/bytes@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { isBytesLike } from \"./check.js\";\nimport { logger } from \"./logger.js\";\nlet BN_8 = null;\nlet BN_255 = null;\ntry {\n BN_8 = BigInt(\"8\");\n BN_255 = BigInt(\"255\");\n}\ncatch (error) {\n console.log(\"Unsupported bigint\", error);\n}\nfunction isHexable(value) {\n return (value && typeof (value.toHexString) === \"function\");\n}\nexport function arrayify(data) {\n if (data == null) {\n logger.throwArgumentError(\"cannot arrayify nullish\", \"data\", data);\n }\n if (typeof (data) === \"number\") {\n let v = logger.getNumber(data, \"data\");\n const result = [];\n while (v) {\n result.unshift(v & 0xff);\n v = parseInt(String(v / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (BN_8 && typeof (data) === \"bigint\") {\n const result = [];\n while (data) {\n result.unshift(Number(data & BN_255));\n data >>= BN_8;\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (isHexable(data)) {\n return arrayify(data.toHexString());\n }\n if (typeof (data) === \"string\") {\n let hex = data;\n //if (options.allowMissingPrefix && hex.substring(0, 2) !== \"0x\") {\n // hex = \"0x\" + hex;\n //}\n if (!hex.match(/^0x[0-9a-f]*$/i)) {\n throw new RangeError(`invalid hex data string (${JSON.stringify(data)})`);\n }\n const result = [];\n for (let i = 2; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return new Uint8Array(result);\n }\n if (data instanceof Uint8Array) {\n return new Uint8Array(data);\n }\n throw new TypeError(`cannot arrayify ${JSON.stringify(data)}`);\n}\nexport function _noCopyArrayify(data) {\n if (!isBytesLike(data)) {\n logger.throwArgumentError(\"invalid BytesLike value\", \"data\", data);\n } // @TODO: ArgumentE>\n if (data instanceof Uint8Array) {\n return data;\n }\n return arrayify(data);\n}\n//# sourceMappingURL=array.js.map","import { logger } from \"./logger.js\";\nexport function decodeBase64(textData) {\n return new Uint8Array(Buffer.from(textData, \"base64\"));\n}\n;\nexport function encodeBase64(data) {\n return Buffer.from(logger.getBytes(data, \"data\")).toString(\"base64\");\n}\n//# sourceMappingURL=base64.js.map","import { arrayify, _noCopyArrayify } from \"./array.js\";\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(data) {\n const bytes = _noCopyArrayify(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\nexport function quantity(value) {\n let result = hexlify(arrayify(value)).substring(2);\n while (result.substring(0, 1) === \"0\") {\n result = result.substring(1);\n }\n if (result === \"\") {\n result = \"0\";\n }\n return \"0x\" + result;\n}\n//# sourceMappingURL=hex.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { isHexString } from \"./check.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return _noCopyArrayify(data).length;\n}\nexport function dataSlice(data, start, end) {\n const bytes = _noCopyArrayify(data);\n if (end != null && end > bytes.length) {\n logger.throwError(\"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.substring(0, 2) == \"00\") {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\n//# sourceMappingURL=data.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nfunction zeroPad(data, length, left) {\n const bytes = _noCopyArrayify(data);\n if (length < bytes.length) {\n logger.throwError(\"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n }\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=pad.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Result_instances, _Result_indices, _Result_throwError, _Writer_instances, _Writer_data, _Writer_dataLength, _Writer_writeData, _Reader_instances, _Reader_data, _Reader_offset, _Reader_peekBytes;\nimport { toArray, toBigInt, toNumber } from \"@ethersproject/math\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nexport const WordSize = 32;\nconst Padding = new Uint8Array(WordSize);\n// Properties used to immediate pass through to the underlying object\n// - `then` is used to detect if an object is a Promise for await\nconst passProperties = [\"then\"];\nconst _guard = {};\nexport class Result extends Array {\n constructor(guard, items, keys) {\n logger.assertPrivate(guard, _guard, \"Result\");\n super(...items);\n _Result_instances.add(this);\n _Result_indices.set(this, void 0);\n // Name lookup table\n __classPrivateFieldSet(this, _Result_indices, new Map(), \"f\");\n if (keys) {\n keys.forEach((key, index) => {\n if (key == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _Result_indices, \"f\").has(key)) {\n (__classPrivateFieldGet(this, _Result_indices, \"f\").get(key)).push(index);\n }\n else {\n __classPrivateFieldGet(this, _Result_indices, \"f\").set(key, [index]);\n }\n });\n }\n Object.freeze(this);\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"string\") {\n if (prop.match(/^[0-9]+$/)) {\n const index = logger.getNumber(prop, \"%index\");\n if (index < 0 || index >= this.length) {\n throw new RangeError(\"out of result range\");\n }\n const item = target[index];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `index ${index}`, item);\n }\n return item;\n }\n // Pass important checks (like `then` for Promise) through\n if (prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n // Something that could be a result keyword value\n if (!(prop in target)) {\n return target.getValue(prop);\n }\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n }\n slice(start, end) {\n if (start == null) {\n start = 0;\n }\n if (end == null) {\n end = this.length;\n }\n const result = [];\n for (let i = start; i < end; i++) {\n let value;\n try {\n value = this[i];\n }\n catch (error) {\n value = error.error;\n }\n result.push(value);\n }\n return result;\n }\n getValue(name) {\n const index = __classPrivateFieldGet(this, _Result_indices, \"f\").get(name);\n if (index != null && index.length === 1) {\n const item = this[index[0]];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `property ${JSON.stringify(name)}`, item);\n }\n return item;\n }\n throw new Error(`no named parameter: ${JSON.stringify(name)}`);\n }\n static fromItems(items, keys) {\n return new Result(_guard, items, keys);\n }\n}\n_Result_indices = new WeakMap(), _Result_instances = new WeakSet(), _Result_throwError = function _Result_throwError(name, error) {\n const wrapped = new Error(`deferred error during ABI decoding triggered accessing ${name}`);\n wrapped.error = error;\n throw wrapped;\n};\nexport function checkResultErrors(result) {\n // Find the first error (if any)\n const errors = [];\n const checkErrors = function (path, object) {\n if (!Array.isArray(object)) {\n return;\n }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n try {\n checkErrors(childPath, object[key]);\n }\n catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n };\n checkErrors([], result);\n return errors;\n}\nfunction getValue(value) {\n let bytes = toArray(value);\n if (bytes.length > WordSize) {\n logger.throwError(\"value out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes,\n length: WordSize,\n offset: bytes.length\n });\n }\n if (bytes.length !== WordSize) {\n bytes = arrayify(concat([Padding.slice(bytes.length % WordSize), bytes]));\n }\n return bytes;\n}\nexport class Coder {\n constructor(name, type, localName, dynamic) {\n defineProperties(this, { name, type, localName, dynamic }, {\n name: \"string\", type: \"string\", localName: \"string\", dynamic: \"boolean\"\n });\n }\n _throwError(message, value) {\n return logger.throwArgumentError(message, this.localName, value);\n }\n}\nexport class Writer {\n constructor() {\n _Writer_instances.add(this);\n // An array of WordSize lengthed objects to concatenation\n _Writer_data.set(this, void 0);\n _Writer_dataLength.set(this, void 0);\n __classPrivateFieldSet(this, _Writer_data, [], \"f\");\n __classPrivateFieldSet(this, _Writer_dataLength, 0, \"f\");\n }\n get data() {\n return concat(__classPrivateFieldGet(this, _Writer_data, \"f\"));\n }\n get length() { return __classPrivateFieldGet(this, _Writer_dataLength, \"f\"); }\n appendWriter(writer) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, arrayify(writer.data));\n }\n // Arrayish item; pad on the right to *nearest* WordSize\n writeBytes(value) {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % WordSize;\n if (paddingOffset) {\n bytes = arrayify(concat([bytes, Padding.slice(paddingOffset)]));\n }\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, bytes);\n }\n // Numeric item; pad on the left *to* WordSize\n writeValue(value) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, getValue(value));\n }\n // Inserts a numeric place-holder, returning a callback that can\n // be used to asjust the value later\n writeUpdatableValue() {\n const offset = __classPrivateFieldGet(this, _Writer_data, \"f\").length;\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(Padding);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + WordSize, \"f\");\n return (value) => {\n __classPrivateFieldGet(this, _Writer_data, \"f\")[offset] = getValue(value);\n };\n }\n}\n_Writer_data = new WeakMap(), _Writer_dataLength = new WeakMap(), _Writer_instances = new WeakSet(), _Writer_writeData = function _Writer_writeData(data) {\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(data);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + data.length, \"f\");\n return data.length;\n};\nexport class Reader {\n constructor(data, allowLoose) {\n _Reader_instances.add(this);\n _Reader_data.set(this, void 0);\n _Reader_offset.set(this, void 0);\n defineProperties(this, { allowLoose: !!allowLoose });\n __classPrivateFieldSet(this, _Reader_data, arrayify(data), \"f\");\n __classPrivateFieldSet(this, _Reader_offset, 0, \"f\");\n }\n get data() { return hexlify(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n get dataLength() { return __classPrivateFieldGet(this, _Reader_data, \"f\").length; }\n get consumed() { return __classPrivateFieldGet(this, _Reader_offset, \"f\"); }\n get bytes() { return new Uint8Array(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n // Create a sub-reader with the same underlying data, but offset\n subReader(offset) {\n return new Reader(__classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\") + offset), this.allowLoose);\n }\n // Read bytes\n readBytes(length, loose) {\n let bytes = __classPrivateFieldGet(this, _Reader_instances, \"m\", _Reader_peekBytes).call(this, 0, length, !!loose);\n __classPrivateFieldSet(this, _Reader_offset, __classPrivateFieldGet(this, _Reader_offset, \"f\") + bytes.length, \"f\");\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n // Read a numeric values\n readValue() {\n return toBigInt(this.readBytes(WordSize));\n }\n readIndex() {\n return toNumber(this.readBytes(WordSize));\n }\n}\n_Reader_data = new WeakMap(), _Reader_offset = new WeakMap(), _Reader_instances = new WeakSet(), _Reader_peekBytes = function _Reader_peekBytes(offset, length, loose) {\n let alignedLength = Math.ceil(length / WordSize) * WordSize;\n if (__classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength > __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n if (this.allowLoose && loose && __classPrivateFieldGet(this, _Reader_offset, \"f\") + length <= __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n alignedLength = length;\n }\n else {\n logger.throwError(\"data out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: arrayify(__classPrivateFieldGet(this, _Reader_data, \"f\")),\n length: __classPrivateFieldGet(this, _Reader_data, \"f\").length,\n offset: __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength\n });\n }\n }\n return __classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\"), __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength);\n};\n//# sourceMappingURL=abstract-coder.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianess.\n// So, just to be sure not to corrupt anything.\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nexport function bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('deadbeef')\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte))\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// Currently avoid insertion of polyfills with packers (browserify/webpack/etc)\n// But setTimeout is pretty slow, maybe worth to investigate howto do minimal polyfill here\nexport const nextTick = (() => {\n const nodeRequire = typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n try {\n if (nodeRequire) {\n const { setImmediate } = nodeRequire('timers');\n return () => new Promise((resolve) => setImmediate(resolve));\n }\n }\n catch (e) { }\n return () => new Promise((resolve) => setTimeout(resolve, 0));\n})();\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\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)\n continue;\n await nextTick();\n ts += diff;\n }\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nexport function assertNumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexport function assertBool(b) {\n if (typeof b !== 'boolean') {\n throw new Error(`Expected boolean, not ${b}`);\n }\n}\nexport function assertBytes(bytes, ...lengths) {\n if (bytes instanceof Uint8Array && (!lengths.length || lengths.includes(bytes.length))) {\n return;\n }\n throw new TypeError(`Expected ${lengths} bytes, not ${typeof bytes} with length=${bytes.length}`);\n}\nexport function assertHash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n assertNumber(hash.outputLen);\n assertNumber(hash.blockLen);\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(def, _opts) {\n if (_opts !== undefined && (typeof _opts !== 'object' || !isPlainObject(_opts)))\n throw new TypeError('Options should be object or undefined');\n const opts = Object.assign(def, _opts);\n return opts;\n}\nexport function wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n return new Uint8Array(crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\n","import { assertHash, Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nclass HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (!(this.iHash instanceof Hash))\n throw new TypeError('Expected instance of class which extends utils.Hash');\n const blockLen = (this.blockLen = this.iHash.blockLen);\n this.outputLen = this.iHash.outputLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > this.iHash.blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length !== this.outputLen)\n throw new Error('HMAC: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n","import { hmac } from './hmac.js';\n// prettier-ignore\nimport { createView, toBytes, assertNumber, assertHash, checkOpts, asyncLoop } from './utils.js';\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n assertHash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n assertNumber(c);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n if (c < 1)\n throw new Error('PBKDF2: iterations (c) should be >= 1');\n const password = toBytes(_password);\n const salt = toBytes(_salt);\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n u.fill(0);\n return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n */\nexport function pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexport async function pbkdf2Async(hash, password, salt, opts) {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await asyncLoop(c - 1, asyncTick, (i) => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n","import { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n const { view, buffer, blockLen, finished } = this;\n if (finished)\n throw new Error('digest() was already called');\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 // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length < this.outputLen)\n throw new Error('_Sha2: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // NOTE: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64bit of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n this.get().forEach((v, i) => oview.setUint32(4 * i, v, isLE));\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = wrapConstructor(() => new SHA256());\n","const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\nexport function fromBig(n, le = false) {\n if (le)\n 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}\nexport function split(lst, 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}\nexport const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nexport const shrSH = (h, l, s) => h >>> s;\nexport const shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nexport const rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexport const rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexport const rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nexport const rotr32H = (h, l) => l;\nexport const rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nexport const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexport const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexport const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\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.\nexport function add(Ah, Al, Bh, Bl) {\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\nexport const add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexport const add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexport const add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexport const add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexport const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexport const add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n","import { SHA2 } from './_sha2.js';\nimport * as u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = wrapConstructor(() => new SHA512());\nexport const sha512_256 = wrapConstructor(() => new SHA512_256());\nexport const sha384 = wrapConstructor(() => new SHA384());\n","export const version = \"@ethersproject/crypto@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","/* Browser Crypto Shims */\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { pbkdf2 } from \"@noble/hashes/pbkdf2\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nimport { logger } from \"./logger.js\";\nfunction getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst anyGlobal = getGlobal();\nlet crypto = anyGlobal.crypto || anyGlobal.msCrypto;\nexport function createHash(algo) {\n switch (algo) {\n case \"sha256\": return sha256.create();\n case \"sha512\": return sha512.create();\n }\n return logger.throwArgumentError(\"invalid hashing algorithm name\", \"algorithm\", algo);\n}\nexport function createHmac(_algo, key) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid hmac algorithm\", \"algorithm\", _algo);\n }\n return hmac.create(algo, key);\n}\nexport function pbkdf2Sync(password, salt, iterations, keylen, _algo) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid pbkdf2 algorithm\", \"algorithm\", _algo);\n }\n return pbkdf2(algo, password, salt, { c: iterations, dkLen: keylen });\n}\nexport function randomBytes(length) {\n if (crypto == null) {\n return logger.throwError(\"platform does not support secure random numbers\", \"UNSUPPORTED_OPERATION\", {\n operation: \"randomBytes\"\n });\n }\n if (length <= 0 || length > 1024 || (length % 1) || length != length) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return result;\n}\n//# sourceMappingURL=crypto-browser.js.map","import { createHmac } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _computeHmac = function (algorithm, key, data) {\n return \"0x\" + createHmac(algorithm, key).update(data).digest(\"hex\");\n};\nlet __computeHmac = _computeHmac;\nexport function computeHmac(algorithm, _key, _data) {\n const key = logger.getBytes(_key, \"key\");\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__computeHmac(algorithm, key, data));\n}\ncomputeHmac._ = _computeHmac;\ncomputeHmac.lock = function () { locked = true; };\ncomputeHmac.register = function (func) {\n if (locked) {\n throw new Error(\"computeHmac is locked\");\n }\n __computeHmac = func;\n};\nObject.freeze(computeHmac);\n//# sourceMappingURL=hmac.js.map","import * as u64 from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapConstructorWithOpts, assertNumber, } from './utils.js';\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = 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)\n t ^= _1n << ((_1n << BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = u64.split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => s > 32 ? u64.rotlBH(h, l, s) : u64.rotlSH(h, l, s);\nconst rotlL = (h, l, s) => s > 32 ? u64.rotlBL(h, l, s) : u64.rotlSL(h, l, s);\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 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++)\n 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++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n 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}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n assertNumber(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 keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (this.finished)\n throw new Error('digest() was already called');\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++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n 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)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array))\n throw new Error('Keccak: invalid output buffer');\n this.finish();\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= this.blockLen)\n this.keccak();\n const take = Math.min(this.blockLen - this.posOut, len - pos);\n out.set(this.state.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n assertNumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n if (out.length < this.outputLen)\n throw new Error('Keccak: invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finish();\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) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (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}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = gen(0x06, 136, 256 / 8);\nexport const sha3_384 = gen(0x06, 104, 384 / 8);\nexport const sha3_512 = gen(0x06, 72, 512 / 8);\nexport const keccak_224 = 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 = gen(0x01, 136, 256 / 8);\nexport const keccak_384 = gen(0x01, 104, 384 / 8);\nexport const keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen !== undefined ? opts.dkLen : outputLen, true));\nexport const shake128 = genShake(0x1f, 168, 128 / 8);\nexport const shake256 = genShake(0x1f, 136, 256 / 8);\n","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\nexport function keccak256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","import { SHA2 } from './_sha2.js';\nimport { wrapConstructor } from './utils.js';\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\nconst Rho = new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = Uint8Array.from({ length: 16 }, (_, i) => i);\nconst Pi = Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n for (let j of [idxL, idxR])\n j.push(j[i].map((k) => Rho[k]));\nconst shifts = [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = new Uint32Array([0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]);\nconst Kr = new Uint32Array([0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]);\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | (word >>> (32 - shift));\n// It's called f() in spec.\nfunction f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n else if (group === 1)\n return (x & y) | (~x & z);\n else if (group === 2)\n return (x | ~y) ^ z;\n else if (group === 3)\n return (x & z) | (y & ~z);\n else\n return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst BUF = new Uint32Array(16);\nexport class RIPEMD160 extends SHA2 {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + f(group, bl, cl, dl) + BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + f(rGroup, br, cr, dr) + BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n BUF.fill(0);\n }\n destroy() {\n this.destroyed = true;\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a hash function from 1990s.\n * @param message - msg that would be hashed\n */\nexport const ripemd160 = wrapConstructor(() => new RIPEMD160());\n","import { ripemd160 as noble_ripemd160 } from \"@noble/hashes/ripemd160\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _ripemd160 = function (data) {\n return noble_ripemd160(data);\n};\nlet __ripemd160 = _ripemd160;\nexport function ripemd160(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__ripemd160(data));\n}\nripemd160._ = _ripemd160;\nripemd160.lock = function () { locked = true; };\nripemd160.register = function (func) {\n if (locked) {\n throw new TypeError(\"ripemd160 is locked\");\n }\n __ripemd160 = func;\n};\nObject.freeze(ripemd160);\n//# sourceMappingURL=ripemd160.js.map","import { pbkdf2Sync } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _pbkdf2 = function (password, salt, iterations, keylen, algo) {\n return pbkdf2Sync(password, salt, iterations, keylen, algo);\n};\nlet __pbkdf2 = _pbkdf2;\nexport function pbkdf2(_password, _salt, iterations, keylen, algo) {\n const password = logger.getBytes(_password, \"password\");\n const salt = logger.getBytes(_salt, \"salt\");\n return hexlify(__pbkdf2(password, salt, iterations, keylen, algo));\n}\npbkdf2._ = _pbkdf2;\npbkdf2.lock = function () { locked = true; };\npbkdf2.register = function (func) {\n if (locked) {\n throw new Error(\"pbkdf2 is locked\");\n }\n __pbkdf2 = func;\n};\nObject.freeze(pbkdf2);\n//# sourceMappingURL=pbkdf2.js.map","import { randomBytes as crypto_random } from \"crypto\"; /*-browser*/\nlet locked = false;\nconst _randomBytes = function (length) {\n return new Uint8Array(crypto_random(length));\n};\nlet __randomBytes = _randomBytes;\nexport function randomBytes(length) {\n return __randomBytes(length);\n}\nrandomBytes._ = _randomBytes;\nrandomBytes.lock = function () { locked = true; };\nrandomBytes.register = function (func) {\n if (locked) {\n throw new Error(\"random is locked\");\n }\n __randomBytes = func;\n};\nObject.freeze(randomBytes);\n//# sourceMappingURL=random.js.map","import { sha256 } from './sha256.js';\nimport { pbkdf2 } from './pbkdf2.js';\nimport { assertNumber, asyncLoop, checkOpts, u32 } from './utils.js';\n// RFC 7914 Scrypt KDF\n// Left rotate for uint32\nconst rotl = (a, b) => (a << b) | (a >>> (32 - b));\n// The main Scrypt loop: uses Salsa extensively.\n// Six versions of the function were tried, this is the fastest one.\n// prettier-ignore\nfunction XorAndSalsa(prev, pi, input, ii, out, oi) {\n // Based on https://cr.yp.to/salsa20.html\n // Xor blocks\n let y00 = prev[pi++] ^ input[ii++], y01 = prev[pi++] ^ input[ii++];\n let y02 = prev[pi++] ^ input[ii++], y03 = prev[pi++] ^ input[ii++];\n let y04 = prev[pi++] ^ input[ii++], y05 = prev[pi++] ^ input[ii++];\n let y06 = prev[pi++] ^ input[ii++], y07 = prev[pi++] ^ input[ii++];\n let y08 = prev[pi++] ^ input[ii++], y09 = prev[pi++] ^ input[ii++];\n let y10 = prev[pi++] ^ input[ii++], y11 = prev[pi++] ^ input[ii++];\n let y12 = prev[pi++] ^ input[ii++], y13 = prev[pi++] ^ input[ii++];\n let y14 = prev[pi++] ^ input[ii++], y15 = prev[pi++] ^ input[ii++];\n // Save state to temporary variables (salsa)\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n // Main loop (salsa)\n for (let i = 0; i < 8; i += 2) {\n x04 ^= rotl(x00 + x12 | 0, 7);\n x08 ^= rotl(x04 + x00 | 0, 9);\n x12 ^= rotl(x08 + x04 | 0, 13);\n x00 ^= rotl(x12 + x08 | 0, 18);\n x09 ^= rotl(x05 + x01 | 0, 7);\n x13 ^= rotl(x09 + x05 | 0, 9);\n x01 ^= rotl(x13 + x09 | 0, 13);\n x05 ^= rotl(x01 + x13 | 0, 18);\n x14 ^= rotl(x10 + x06 | 0, 7);\n x02 ^= rotl(x14 + x10 | 0, 9);\n x06 ^= rotl(x02 + x14 | 0, 13);\n x10 ^= rotl(x06 + x02 | 0, 18);\n x03 ^= rotl(x15 + x11 | 0, 7);\n x07 ^= rotl(x03 + x15 | 0, 9);\n x11 ^= rotl(x07 + x03 | 0, 13);\n x15 ^= rotl(x11 + x07 | 0, 18);\n x01 ^= rotl(x00 + x03 | 0, 7);\n x02 ^= rotl(x01 + x00 | 0, 9);\n x03 ^= rotl(x02 + x01 | 0, 13);\n x00 ^= rotl(x03 + x02 | 0, 18);\n x06 ^= rotl(x05 + x04 | 0, 7);\n x07 ^= rotl(x06 + x05 | 0, 9);\n x04 ^= rotl(x07 + x06 | 0, 13);\n x05 ^= rotl(x04 + x07 | 0, 18);\n x11 ^= rotl(x10 + x09 | 0, 7);\n x08 ^= rotl(x11 + x10 | 0, 9);\n x09 ^= rotl(x08 + x11 | 0, 13);\n x10 ^= rotl(x09 + x08 | 0, 18);\n x12 ^= rotl(x15 + x14 | 0, 7);\n x13 ^= rotl(x12 + x15 | 0, 9);\n x14 ^= rotl(x13 + x12 | 0, 13);\n x15 ^= rotl(x14 + x13 | 0, 18);\n }\n // Write output (salsa)\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\nfunction BlockMix(input, ii, out, oi, r) {\n // The block B is r 128-byte chunks (which is equivalent of 2r 64-byte chunks)\n let head = oi + 0;\n let tail = oi + 16 * r;\n for (let i = 0; i < 16; i++)\n out[tail + i] = input[ii + (2 * r - 1) * 16 + i]; // X ← B[2r−1]\n for (let i = 0; i < r; i++, head += 16, ii += 16) {\n // We write odd & even Yi at same time. Even: 0bXXXXX0 Odd: 0bXXXXX1\n XorAndSalsa(out, tail, input, ii, out, head); // head[i] = Salsa(blockIn[2*i] ^ tail[i-1])\n if (i > 0)\n tail += 16; // First iteration overwrites tmp value in tail\n XorAndSalsa(out, head, input, (ii += 16), out, tail); // tail[i] = Salsa(blockIn[2*i+1] ^ head[i])\n }\n}\n// Common prologue and epilogue for sync/async functions\nfunction scryptInit(password, salt, _opts) {\n // Maxmem - 1GB+1KB by default\n const opts = checkOpts({\n dkLen: 32,\n asyncTick: 10,\n maxmem: 1024 ** 3 + 1024,\n }, _opts);\n const { N, r, p, dkLen, asyncTick, maxmem, onProgress } = opts;\n assertNumber(N);\n assertNumber(r);\n assertNumber(p);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n assertNumber(maxmem);\n if (onProgress !== undefined && typeof onProgress !== 'function')\n throw new Error('progressCb should be function');\n const blockSize = 128 * r;\n const blockSize32 = blockSize / 4;\n if (N <= 1 || (N & (N - 1)) !== 0 || N >= 2 ** (blockSize / 8) || N > 2 ** 32) {\n // NOTE: we limit N to be less than 2**32 because of 32 bit variant of Integrify function\n // There is no JS engines that allows alocate more than 4GB per single Uint8Array for now, but can change in future.\n throw new Error('Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32');\n }\n if (p < 0 || p > ((2 ** 32 - 1) * 32) / blockSize) {\n throw new Error('Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)');\n }\n if (dkLen < 0 || dkLen > (2 ** 32 - 1) * 32) {\n throw new Error('Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32');\n }\n const memUsed = blockSize * (N + p);\n if (memUsed > maxmem) {\n throw new Error(`Scrypt: parameters too large, ${memUsed} (128 * r * (N + p)) > ${maxmem} (maxmem)`);\n }\n // [B0...Bp−1] ← PBKDF2HMAC-SHA256(Passphrase, Salt, 1, blockSize*ParallelizationFactor)\n // Since it has only one iteration there is no reason to use async variant\n const B = pbkdf2(sha256, password, salt, { c: 1, dkLen: blockSize * p });\n const B32 = u32(B);\n // Re-used between parallel iterations. Array(iterations) of B\n const V = u32(new Uint8Array(blockSize * N));\n const tmp = u32(new Uint8Array(blockSize));\n let blockMixCb = () => { };\n if (onProgress) {\n const totalBlockMix = 2 * N * p;\n // Invoke callback if progress changes from 10.01 to 10.02\n // Allows to draw smooth progress bar on up to 8K screen\n const callbackPer = Math.max(Math.floor(totalBlockMix / 10000), 1);\n let blockMixCnt = 0;\n blockMixCb = () => {\n blockMixCnt++;\n if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix))\n onProgress(blockMixCnt / totalBlockMix);\n };\n }\n return { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick };\n}\nfunction scryptOutput(password, dkLen, B, V, tmp) {\n const res = pbkdf2(sha256, password, B, { c: 1, dkLen });\n B.fill(0);\n V.fill(0);\n tmp.fill(0);\n return res;\n}\n/**\n * Scrypt KDF from RFC 7914.\n * @param password - pass\n * @param salt - salt\n * @param opts - parameters\n * - `N` is cpu/mem work factor (power of 2 e.g. 2**18)\n * - `r` is block size (8 is common), fine-tunes sequential memory read size and performance\n * - `p` is parallelization factor (1 is common)\n * - `dkLen` is output key length in bytes e.g. 32.\n * - `asyncTick` - (default: 10) max time in ms for which async function can block execution\n * - `maxmem` - (default: `1024 ** 3 + 1024` aka 1GB+1KB). A limit that the app could use for scrypt\n * - `onProgress` - callback function that would be executed for progress report\n * @returns Derived key\n */\nexport function scrypt(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n for (let i = 0, pos = 0; i < N - 1; i++) {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n }\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n for (let i = 0; i < N; i++) {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n }\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n/**\n * Scrypt KDF from RFC 7914.\n */\nexport async function scryptAsync(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n let pos = 0;\n await asyncLoop(N - 1, asyncTick, (i) => {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n });\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n await asyncLoop(N, asyncTick, (i) => {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n });\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n","import { scrypt as _nobleSync, scryptAsync as _nobleAsync } from \"@noble/hashes/scrypt\";\nimport { hexlify as H } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet lockedSync = false, lockedAsync = false;\nconst _scryptAsync = async function (passwd, salt, N, r, p, dkLen, onProgress) {\n return await _nobleAsync(passwd, salt, { N, r, p, dkLen, onProgress });\n};\nconst _scryptSync = function (passwd, salt, N, r, p, dkLen) {\n return _nobleSync(passwd, salt, { N, r, p, dkLen });\n};\nlet __scryptAsync = _scryptAsync;\nlet __scryptSync = _scryptSync;\nexport async function scrypt(_passwd, _salt, N, r, p, dkLen, progress) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(await __scryptAsync(passwd, salt, N, r, p, dkLen, progress));\n}\nscrypt._ = _scryptAsync;\nscrypt.lock = function () { lockedAsync = true; };\nscrypt.register = function (func) {\n if (lockedAsync) {\n throw new Error(\"scrypt is locked\");\n }\n __scryptAsync = func;\n};\nObject.freeze(scrypt);\nexport function scryptSync(_passwd, _salt, N, r, p, dkLen) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(__scryptSync(passwd, salt, N, r, p, dkLen));\n}\nscryptSync._ = _scryptSync;\nscryptSync.lock = function () { lockedSync = true; };\nscryptSync.register = function (func) {\n if (lockedSync) {\n throw new Error(\"scryptSync is locked\");\n }\n __scryptSync = func;\n};\nObject.freeze(scryptSync);\n//# sourceMappingURL=scrypt.js.map","import { createHash } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nconst _sha256 = function (data) {\n return createHash(\"sha256\").update(data).digest();\n};\nconst _sha512 = function (data) {\n return createHash(\"sha512\").update(data).digest();\n};\nlet __sha256 = _sha256;\nlet __sha512 = _sha512;\nlet locked256 = false, locked512 = false;\nexport function sha256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha256(data));\n}\nsha256._ = _sha256;\nsha256.lock = function () { locked256 = true; };\nsha256.register = function (func) {\n if (locked256) {\n throw new Error(\"sha256 is locked\");\n }\n __sha256 = func;\n};\nObject.freeze(sha256);\nexport function sha512(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha512(data));\n}\nsha512._ = _sha512;\nsha512.lock = function () { locked512 = true; };\nsha512.register = function (func) {\n if (locked512) {\n throw new Error(\"sha512 is locked\");\n }\n __sha512 = func;\n};\nObject.freeze(sha256);\n//# sourceMappingURL=sha2.js.map","// We import all these so we can export lock()\nimport { computeHmac } from \"./hmac.js\";\nimport { keccak256 } from \"./keccak.js\";\nimport { ripemd160 } from \"./ripemd160.js\";\nimport { pbkdf2 } from \"./pbkdf2.js\";\nimport { randomBytes } from \"./random.js\";\nimport { scrypt, scryptSync } from \"./scrypt.js\";\nimport { sha256, sha512 } from \"./sha2.js\";\nexport { computeHmac, randomBytes, keccak256, ripemd160, sha256, sha512, pbkdf2, scrypt, scryptSync };\nexport function lock() {\n computeHmac.lock();\n keccak256.lock();\n pbkdf2.lock();\n randomBytes.lock();\n ripemd160.lock();\n scrypt.lock();\n scryptSync.lock();\n sha256.lock();\n sha512.lock();\n}\n//# sourceMappingURL=index.js.map","export const version = \"@ethersproject/address@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { arrayify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\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 return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\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 let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\nexport function getAddress(address) {\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\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 return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\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 let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n return logger.throwArgumentError(\"invalid address\", \"address\", address);\n}\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/rlp@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { logger } from \"./logger.js\";\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n const data = Array.prototype.slice.call(logger.getBytes(object, \"object\"));\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 const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nconst nibbles = \"0123456789abcdef\";\nexport function encodeRlp(object) {\n let result = \"0x\";\n for (const v of _encode(object)) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0xf];\n }\n return result;\n}\n//# sourceMappingURL=encode.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction hexlifyByte(value) {\n let result = value.toString(16);\n while (result.length < 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length, offset\n });\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: 0, offset: 1\n });\n }\n const checkOffset = (offset) => {\n if (offset > data.length) {\n logger.throwError(\"data short segment too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: data.length, offset\n });\n }\n };\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n checkOffset(offset + 1 + length);\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\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 checkOffset(offset + 1 + length);\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlifyByte(data[offset]) };\n}\nexport function decodeRlp(_data) {\n const data = logger.getBytes(_data, \"data\");\n const decoded = _decode(data, 0);\n if (decoded.consumed !== data.length) {\n logger.throwArgumentError(\"unexpected junk after rlp payload\", \"data\", _data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=decode.js.map","import { concat, dataSlice } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { encodeRlp } from \"@ethersproject/rlp\";\nimport { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getCreateAddress(tx) {\n const from = getAddress(tx.from);\n const nonce = logger.getBigInt(tx.nonce, \"tx.nonce\");\n let nonceHex = nonce.toString(16);\n if (nonceHex === \"0\") {\n nonceHex = \"0x\";\n }\n else if (nonceHex.length % 2) {\n nonceHex = \"0x0\" + nonceHex;\n }\n else {\n nonceHex = \"0x\" + nonceHex;\n }\n return getAddress(dataSlice(keccak256(encodeRlp([from, nonceHex])), 12));\n}\nexport function getCreate2Address(_from, _salt, _initCodeHash) {\n const from = getAddress(_from);\n const salt = logger.getBytes(_salt, \"salt\");\n const initCodeHash = logger.getBytes(_initCodeHash, \"initCodeHash\");\n if (salt.length !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", _salt);\n }\n if (initCodeHash.length !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", _initCodeHash);\n }\n return getAddress(dataSlice(keccak256(concat([\"0xff\", from, salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=contract-address.js.map","import { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\n// Resolves an Ethereum address, ENS name or Addressable object,\n// throwing if the result is null; an explicit null returns null\n//export async function resolveAddress(target?: null, resolver?: null | NameResolver): Promise;\n//export async function resolveAddress(target: string | Addressable, resolver?: null | NameResolver): Promise;\n//export async function resolveAddress(target: null | undefined | string | Addressable, resolver?: null | NameResolver) {\nexport async function resolveAddress(target, resolver) {\n //if (target == null) { return null; }\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n if (resolver == null) {\n return logger.throwError(\"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n });\n }\n const result = await resolver.resolveName(target);\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n return logger.throwError(\"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n }\n return getAddress(result);\n }\n else if (isAddressable(target)) {\n const result = await target.getAddress();\n if (result == null) {\n logger.throwArgumentError(\"addressable resolved to null\", \"target\", target);\n }\n return getAddress(result);\n }\n return logger.throwArgumentError(\"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Typed_options;\nimport { defineProperties } from \"@ethersproject/properties\";\nconst _gaurd = {};\nfunction n(value, width) {\n let signed = false;\n if (width < 0) {\n signed = true;\n width *= -1;\n }\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `${signed ? \"\" : \"u\"}int${width}`, value, { signed, width });\n}\nfunction b(value, size) {\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `bytes${(size) ? size : \"\"}`, value, { size });\n}\nconst _typedSymbol = Symbol.for(\"_ethers_typed\");\nexport class Typed {\n constructor(gaurd, type, value, options = null) {\n _Typed_options.set(this, void 0);\n if (gaurd !== _gaurd) {\n throw new Error(\"private constructor\");\n }\n defineProperties(this, { _typedSymbol, type, value });\n __classPrivateFieldSet(this, _Typed_options, options, \"f\");\n // Check the value is valid\n this.format();\n }\n format() {\n if (this.type === \"array\") {\n throw new Error(\"\");\n }\n else if (this.type === \"dynamicArray\") {\n throw new Error(\"\");\n }\n else if (this.type === \"tuple\") {\n return `tuple(${this.value.map((v) => v.format()).join(\",\")})`;\n }\n return this.type;\n }\n defaultValue() {\n return 0;\n }\n minValue() {\n return 0;\n }\n maxValue() {\n return 0;\n }\n isBigInt() {\n return !!(this.type.match(/^u?int[0-9]+$/));\n }\n isData() {\n return (this.type.substring(0, 5) === \"bytes\");\n }\n isString() {\n return (this.type === \"string\");\n }\n get tupleName() {\n if (this.type !== \"tuple\") {\n throw TypeError(\"not a tuple\");\n }\n return __classPrivateFieldGet(this, _Typed_options, \"f\");\n }\n // Returns the length of this type as an array\n // - `null` indicates the length is unforced, it could be dynamic\n // - `-1` indicates the length is dynamic\n // - any other value indicates it is a static array and is its length\n get arrayLength() {\n if (this.type !== \"array\") {\n throw TypeError(\"not an array\");\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === true) {\n return -1;\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === false) {\n return (this.value).length;\n }\n return null;\n }\n static from(type, value) {\n return new Typed(_gaurd, type, value);\n }\n static uint8(v) { return n(v, 8); }\n static uint16(v) { return n(v, 16); }\n static uint24(v) { return n(v, 24); }\n static uint32(v) { return n(v, 32); }\n static uint40(v) { return n(v, 40); }\n static uint48(v) { return n(v, 46); }\n static uint56(v) { return n(v, 56); }\n static uint64(v) { return n(v, 64); }\n static uint72(v) { return n(v, 72); }\n static uint80(v) { return n(v, 80); }\n static uint88(v) { return n(v, 88); }\n static uint96(v) { return n(v, 96); }\n static uint104(v) { return n(v, 104); }\n static uint112(v) { return n(v, 112); }\n static uint120(v) { return n(v, 120); }\n static uint128(v) { return n(v, 128); }\n static uint136(v) { return n(v, 136); }\n static uint144(v) { return n(v, 144); }\n static uint152(v) { return n(v, 152); }\n static uint160(v) { return n(v, 160); }\n static uint168(v) { return n(v, 168); }\n static uint176(v) { return n(v, 176); }\n static uint184(v) { return n(v, 184); }\n static uint192(v) { return n(v, 192); }\n static uint200(v) { return n(v, 200); }\n static uint208(v) { return n(v, 208); }\n static uint216(v) { return n(v, 216); }\n static uint224(v) { return n(v, 224); }\n static uint232(v) { return n(v, 232); }\n static uint240(v) { return n(v, 240); }\n static uint248(v) { return n(v, 248); }\n static uint256(v) { return n(v, 256); }\n static uint(v) { return n(v, 256); }\n static int8(v) { return n(v, -8); }\n static int16(v) { return n(v, -16); }\n static int24(v) { return n(v, -24); }\n static int32(v) { return n(v, -32); }\n static int40(v) { return n(v, -40); }\n static int48(v) { return n(v, -46); }\n static int56(v) { return n(v, -56); }\n static int64(v) { return n(v, -64); }\n static int72(v) { return n(v, -72); }\n static int80(v) { return n(v, -80); }\n static int88(v) { return n(v, -88); }\n static int96(v) { return n(v, -96); }\n static int104(v) { return n(v, -104); }\n static int112(v) { return n(v, -112); }\n static int120(v) { return n(v, -120); }\n static int128(v) { return n(v, -128); }\n static int136(v) { return n(v, -136); }\n static int144(v) { return n(v, -144); }\n static int152(v) { return n(v, -152); }\n static int160(v) { return n(v, -160); }\n static int168(v) { return n(v, -168); }\n static int176(v) { return n(v, -176); }\n static int184(v) { return n(v, -184); }\n static int192(v) { return n(v, -192); }\n static int200(v) { return n(v, -200); }\n static int208(v) { return n(v, -208); }\n static int216(v) { return n(v, -216); }\n static int224(v) { return n(v, -224); }\n static int232(v) { return n(v, -232); }\n static int240(v) { return n(v, -240); }\n static int248(v) { return n(v, -248); }\n static int256(v) { return n(v, -256); }\n static int(v) { return n(v, -256); }\n static bytes(v) { return b(v); }\n static bytes1(v) { return b(v, 1); }\n static bytes2(v) { return b(v, 2); }\n static bytes3(v) { return b(v, 3); }\n static bytes4(v) { return b(v, 4); }\n static bytes5(v) { return b(v, 5); }\n static bytes6(v) { return b(v, 6); }\n static bytes7(v) { return b(v, 7); }\n static bytes8(v) { return b(v, 8); }\n static bytes9(v) { return b(v, 9); }\n static bytes10(v) { return b(v, 10); }\n static bytes11(v) { return b(v, 11); }\n static bytes12(v) { return b(v, 12); }\n static bytes13(v) { return b(v, 13); }\n static bytes14(v) { return b(v, 14); }\n static bytes15(v) { return b(v, 15); }\n static bytes16(v) { return b(v, 16); }\n static bytes17(v) { return b(v, 17); }\n static bytes18(v) { return b(v, 18); }\n static bytes19(v) { return b(v, 19); }\n static bytes20(v) { return b(v, 20); }\n static bytes21(v) { return b(v, 21); }\n static bytes22(v) { return b(v, 22); }\n static bytes23(v) { return b(v, 23); }\n static bytes24(v) { return b(v, 24); }\n static bytes25(v) { return b(v, 25); }\n static bytes26(v) { return b(v, 26); }\n static bytes27(v) { return b(v, 27); }\n static bytes28(v) { return b(v, 28); }\n static bytes29(v) { return b(v, 29); }\n static bytes30(v) { return b(v, 30); }\n static bytes31(v) { return b(v, 31); }\n static bytes32(v) { return b(v, 32); }\n static address(v) { return new Typed(_gaurd, \"address\", v); }\n static bool(v) { return new Typed(_gaurd, \"bool\", !!v); }\n static string(v) { return new Typed(_gaurd, \"string\", v); }\n static array(v, dynamic) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"array\", v, dynamic);\n }\n static tuple(v, name) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"tuple\", v, name);\n }\n static overrides(v) {\n return new Typed(_gaurd, \"overrides\", Object.assign({}, v));\n }\n static isTyped(value) {\n return (value && value._typedSymbol === _typedSymbol);\n }\n static dereference(value, type) {\n if (Typed.isTyped(value)) {\n if (value.type !== type) {\n throw new Error(`invalid type: expecetd ${type}, got ${value.type}`);\n }\n return value.value;\n }\n return value;\n }\n}\n_Typed_options = new WeakMap();\n//# sourceMappingURL=typed.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class AddressCoder extends Coder {\n constructor(localName) {\n super(\"address\", \"address\", localName, false);\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000\";\n }\n encode(writer, _value) {\n let value = Typed.dereference(_value, \"string\");\n try {\n value = getAddress(value);\n }\n catch (error) {\n return this._throwError(error.message, _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n return getAddress(toHex(reader.readValue(), 20));\n }\n}\n//# sourceMappingURL=address.js.map","import { Coder } from \"./abstract-coder.js\";\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n constructor(coder) {\n super(coder.name, coder.type, \"_\", coder.dynamic);\n this.coder = coder;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(writer, value) {\n return this.coder.encode(writer, value);\n }\n decode(reader) {\n return this.coder.decode(reader);\n }\n}\n//# sourceMappingURL=anonymous.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { isError } from \"@ethersproject/logger\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, Result, WordSize, Writer } from \"./abstract-coder.js\";\nimport { AnonymousCoder } from \"./anonymous.js\";\nexport function pack(writer, coders, values) {\n let arrayValues = [];\n if (Array.isArray(values)) {\n arrayValues = values;\n }\n else if (values && typeof (values) === \"object\") {\n let unique = {};\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n unique[name] = true;\n return values[name];\n });\n }\n else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n let staticWriter = new Writer();\n let dynamicWriter = new Writer();\n let updateFuncs = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n }\n else {\n coder.encode(staticWriter, value);\n }\n });\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\nexport function unpack(reader, coders) {\n let values = [];\n let keys = [];\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n coders.forEach((coder) => {\n let value = null;\n if (coder.dynamic) {\n let offset = reader.readIndex();\n let offsetReader = baseReader.subReader(offset);\n try {\n value = coder.decode(offsetReader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\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 }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n if (value == undefined) {\n throw new Error(\"investigate\");\n }\n values.push(value);\n keys.push(coder.localName || null);\n });\n return Result.fromItems(values, keys);\n}\nexport class ArrayCoder extends Coder {\n constructor(coder, length, localName) {\n const type = (coder.type + \"[\" + (length >= 0 ? length : \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n defineProperties(this, { coder, length });\n }\n defaultValue() {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n const result = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"array\");\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n let count = this.length;\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n logger.assertArgumentCount(value.length, count, \"coder array\" + (this.localName ? (\" \" + this.localName) : \"\"));\n let coders = [];\n for (let i = 0; i < value.length; i++) {\n coders.push(this.coder);\n }\n return pack(writer, coders, value);\n }\n decode(reader) {\n let count = this.length;\n if (count === -1) {\n count = reader.readIndex();\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 * WordSize > reader.dataLength) {\n logger.throwError(\"insufficient data length\", \"BUFFER_OVERRUN\", {\n buffer: reader.bytes,\n offset: count * WordSize,\n length: reader.dataLength\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) {\n coders.push(new AnonymousCoder(this.coder));\n }\n return unpack(reader, coders);\n }\n}\n//# sourceMappingURL=array.js.map","import { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class BooleanCoder extends Coder {\n constructor(localName) {\n super(\"bool\", \"bool\", localName, false);\n }\n defaultValue() {\n return false;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"bool\");\n return writer.writeValue(value ? 1 : 0);\n }\n decode(reader) {\n return !!reader.readValue();\n }\n}\n//# sourceMappingURL=boolean.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class DynamicBytesCoder extends Coder {\n constructor(type, localName) {\n super(type, type, localName, true);\n }\n defaultValue() {\n return \"0x\";\n }\n encode(writer, value) {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n decode(reader) {\n return reader.readBytes(reader.readIndex(), true);\n }\n}\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"bytes\", localName);\n }\n decode(reader) {\n return hexlify(super.decode(reader));\n }\n}\n//# sourceMappingURL=bytes.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class FixedBytesCoder extends Coder {\n constructor(size, localName) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n defineProperties(this, { size }, { size: \"number\" });\n }\n defaultValue() {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n encode(writer, _value) {\n let data = arrayify(Typed.dereference(_value, this.type));\n if (data.length !== this.size) {\n this._throwError(\"incorrect data length\", _value);\n }\n return writer.writeBytes(data);\n }\n decode(reader) {\n return hexlify(reader.readBytes(this.size));\n }\n}\n//# sourceMappingURL=fixed-bytes.js.map","import { Coder } from \"./abstract-coder.js\";\nconst Empty = new Uint8Array([]);\nexport class NullCoder extends Coder {\n constructor(localName) {\n super(\"null\", \"\", localName, false);\n }\n defaultValue() {\n return null;\n }\n encode(writer, value) {\n if (value != null) {\n this._throwError(\"not null\", value);\n }\n return writer.writeBytes(Empty);\n }\n decode(reader) {\n reader.readBytes(0);\n return null;\n }\n}\n//# sourceMappingURL=null.js.map","import { fromTwos, mask, toTwos } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, WordSize } from \"./abstract-coder.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nexport class NumberCoder extends Coder {\n constructor(size, signed, localName) {\n const name = ((signed ? \"int\" : \"uint\") + (size * 8));\n super(name, name, localName, false);\n defineProperties(this, { size, signed }, { size: \"number\", signed: \"boolean\" });\n }\n defaultValue() {\n return 0;\n }\n encode(writer, _value) {\n let value = logger.getBigInt(Typed.dereference(_value, this.type));\n // Check bounds are safe for encoding\n let maxUintValue = mask(BN_MAX_UINT256, WordSize * 8);\n if (this.signed) {\n let bounds = mask(maxUintValue, (this.size * 8) - 1);\n if (value > bounds || value < -(bounds + BN_1)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n }\n else if (value < BN_0 || value > mask(maxUintValue, this.size * 8)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n value = mask(toTwos(value, this.size * 8), this.size * 8);\n if (this.signed) {\n value = toTwos(fromTwos(value, this.size * 8), 8 * WordSize);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n let value = mask(reader.readValue(), this.size * 8);\n if (this.signed) {\n value = fromTwos(value, this.size * 8);\n }\n return value;\n }\n}\n//# sourceMappingURL=number.js.map","export const version = \"@ethersproject/strings@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\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 Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\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 Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\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) {\n break;\n }\n i++;\n }\n return i;\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 // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push((badCodepoint != null) ? badCodepoint : -1);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = logger.getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\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 }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\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 // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\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 // See above loop for invalid continuation byte\n if (res === null) {\n 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 // 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 // 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 result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\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 if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\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 return new Uint8Array(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\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 if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","import { zeroPadBytes } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nimport { toUtf8Bytes, toUtf8String } from \"./utf8.js\";\nexport function formatBytes32String(text) {\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n // Check we have room for null-termination\n if (bytes.length > 31) {\n throw new Error(\"bytes32 string must be less than 32 bytes\");\n }\n // Zero-pad (implicitly null-terminates)\n return zeroPadBytes(bytes, 32);\n}\nexport function parseBytes32String(_bytes) {\n const data = logger.getBytes(_bytes, \"bytes\");\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) {\n throw new Error(\"invalid bytes32 - not 32 bytes long\");\n }\n if (data[31] !== 0) {\n throw new Error(\"invalid bytes32 string - no null terminator\");\n }\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) {\n length--;\n }\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n//# sourceMappingURL=bytes32.js.map","import { logger } from \"./logger.js\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8.js\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"should not happen; bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, _func) {\n const func = _func || function (value) { return [parseInt(value, 16)]; };\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n const range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n if (range.s == null) {\n throw new Error(\"should not happenl bad range\");\n }\n return [codepoint + range.s];\n }\n const codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n const shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n const complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_PROHIBITED\", \"value\", value);\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_UNASSIGNED\", \"value\", value);\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n logger.throwArgumentError(\"invalid hyphen\", \"value\", value);\n }\n // IDNA: 4.2.4\n if (name.length > 63) {\n logger.throwArgumentError(\"too long\", \"value\", value);\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","import { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { Typed } from \"../typed.js\";\nimport { DynamicBytesCoder } from \"./bytes.js\";\nexport class StringCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"string\", localName);\n }\n defaultValue() {\n return \"\";\n }\n encode(writer, _value) {\n return super.encode(writer, toUtf8Bytes(Typed.dereference(_value, \"string\")));\n }\n decode(reader) {\n return toUtf8String(super.decode(reader));\n }\n}\n//# sourceMappingURL=string.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nimport { pack, unpack } from \"./array.js\";\nexport class TupleCoder extends Coder {\n constructor(coders, localName) {\n let dynamic = false;\n const types = [];\n coders.forEach((coder) => {\n if (coder.dynamic) {\n dynamic = true;\n }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n super(\"tuple\", type, localName, dynamic);\n defineProperties(this, { coders: Object.freeze(coders.slice()) });\n }\n defaultValue() {\n const values = [];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\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]) {\n accum[name] = 0;\n }\n accum[name]++;\n }\n return accum;\n }, {});\n // Add named values\n this.coders.forEach((coder, index) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) {\n return;\n }\n if (name === \"length\") {\n name = \"_length\";\n }\n if (values[name] != null) {\n return;\n }\n values[name] = values[index];\n });\n return Object.freeze(values);\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"tuple\");\n return pack(writer, this.coders, value);\n }\n decode(reader) {\n return unpack(reader, this.coders);\n }\n}\n//# sourceMappingURL=tuple.js.map","// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbiCoder_instances, _AbiCoder_getCoder;\nimport { logger } from \"./logger.js\";\nimport { Reader, Writer } from \"./coders/abstract-coder.js\";\nimport { AddressCoder } from \"./coders/address.js\";\nimport { ArrayCoder } from \"./coders/array.js\";\nimport { BooleanCoder } from \"./coders/boolean.js\";\nimport { BytesCoder } from \"./coders/bytes.js\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes.js\";\nimport { NullCoder } from \"./coders/null.js\";\nimport { NumberCoder } from \"./coders/number.js\";\nimport { StringCoder } from \"./coders/string.js\";\nimport { TupleCoder } from \"./coders/tuple.js\";\nimport { ParamType } from \"./fragments.js\";\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\nexport class AbiCoder {\n constructor() {\n _AbiCoder_instances.add(this);\n }\n getDefaultValue(types) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n encode(types, values) {\n logger.assertArgumentCount(values.length, types.length, \"types/values length mismatch\");\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n const writer = new Writer();\n coder.encode(writer, values);\n return writer.data;\n }\n decode(types, data, loose) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(new Reader(data, loose));\n }\n}\n_AbiCoder_instances = new WeakSet(), _AbiCoder_getCoder = function _AbiCoder_getCoder(param) {\n if (param.isArray()) {\n return new ArrayCoder(__classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, param.arrayChildren), param.arrayLength, param.name);\n }\n if (param.isTuple()) {\n return new TupleCoder(param.components.map((c) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, c)), param.name);\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 \"\":\n return new NullCoder(param.name);\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 // 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 return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n};\nexport const defaultAbiCoder = new AbiCoder();\n//# sourceMappingURL=abi-coder.js.map","import { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","export const version = \"@ethersproject/hash@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { nameprep, toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nconst Partition = new RegExp(\"^((.*)\\\\.)?([^.]+)$\");\nexport function isValidName(name) {\n try {\n const comps = name.split(\".\");\n for (let i = 0; i < comps.length; i++) {\n if (nameprep(comps[i]).length === 0) {\n throw new Error(\"empty\");\n }\n }\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let current = name;\n let result = Zeros;\n while (current.length) {\n const partition = current.match(Partition);\n if (partition == null || partition[2] === \"\") {\n return logger.throwArgumentError(\"invalid ENS name; missing component\", \"name\", name);\n }\n const label = toUtf8Bytes(nameprep(partition[3]));\n result = keccak256(concat([result, keccak256(label)]));\n current = partition[2] || \"\";\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid DNS name; not a string\", \"name\", name);\n }\n if (name === \"\") {\n return \"0x00\";\n }\n // @TODO: should we enforce the 255 octet limit?\n return concat(name.split(\".\").map((comp) => {\n if (comp === \"\") {\n logger.throwArgumentError(\"invalid DNS name; missing component\", \"name\", name);\n }\n // We jam in an _ prefix to fill in with the length later\n // Note: Nameprep throws if the component is over 63 bytes\n const bytes = toUtf8Bytes(\"_\" + nameprep(comp));\n bytes[0] = bytes.length - 1;\n return bytes;\n })) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","import { concat, dataLength, hexlify, zeroPadBytes, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 as _keccak256, sha256 as _sha256 } from \"@ethersproject/crypto\";\nimport { toTwos } from \"@ethersproject/math\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\nfunction _pack(type, value, isArray) {\n switch (type) {\n case \"address\":\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return logger.getBytes(value);\n case \"bool\":\n value = (!!value ? \"0x01\" : \"0x00\");\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n }\n let match = type.match(regexNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n return logger.throwArgumentError(\"invalid number type\", \"type\", type);\n }\n if (isArray) {\n size = 256;\n }\n value = toTwos(value, size);\n return logger.getBytes(zeroPadValue(value, size / 8));\n }\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n if (String(size) !== match[1] || size === 0 || size > 32) {\n return logger.throwArgumentError(\"invalid bytes type\", \"type\", type);\n }\n if (dataLength(value) !== size) {\n return logger.throwArgumentError(`invalid value for ${type}`, \"value\", value);\n }\n if (isArray) {\n return logger.getBytes(zeroPadBytes(value, 32));\n }\n return value;\n }\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(`invalid array length for ${type}`, \"value\", value);\n }\n const result = [];\n value.forEach(function (value) {\n result.push(_pack(baseType, value, true));\n });\n return logger.getBytes(concat(result));\n }\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n}\n// @TODO: Array Enum\nexport function solidityPacked(types, values) {\n if (types.length != values.length) {\n logger.throwArgumentError(\"wrong number of values; expected ${ types.length }\", \"values\", values);\n }\n const tight = [];\n types.forEach(function (type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\nexport function solidityPackedKeccak256(types, values) {\n return _keccak256(solidityPacked(types, values));\n}\nexport function solidityPackedSha256(types, values) {\n return _sha256(solidityPacked(types, values));\n}\n//# sourceMappingURL=solidity.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TypedDataEncoder_instances, _TypedDataEncoder_types, _TypedDataEncoder_fullTypes, _TypedDataEncoder_encoderCache, _TypedDataEncoder_getEncoder;\n//import { TypedDataDomain, TypedDataField } from \"@ethersproject/providerabstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { mask, toHex, toTwos } from \"@ethersproject/math\";\nimport { id } from \"./id.js\";\nimport { logger } from \"./logger.js\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst BN__1 = BigInt(-1);\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n;\n;\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return concat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = toHex(BN_1, 32);\nconst hexFalse = toHex(BN_0, 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n return logger.getBigInt(value, \"domain.chainId\");\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n const bytes = logger.getBytes(value, \"domain.salt\");\n if (bytes.length !== 32) {\n logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n return hexlify(bytes);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\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 const boundsUpper = mask(BN_MAX_UINT256, signed ? (width - 1) : width);\n const boundsLower = signed ? ((boundsUpper + BN_1) * BN__1) : BN_0;\n return function (_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < boundsLower || value > boundsUpper) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return toHex(toTwos(value, 256), 32);\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 return function (value) {\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 switch (type) {\n case \"address\": return function (value) {\n return zeroPadValue(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n _TypedDataEncoder_instances.add(this);\n _TypedDataEncoder_types.set(this, void 0);\n _TypedDataEncoder_fullTypes.set(this, void 0);\n _TypedDataEncoder_encoderCache.set(this, void 0);\n __classPrivateFieldSet(this, _TypedDataEncoder_types, JSON.stringify(types), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_fullTypes, new Map(), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_encoderCache, new Map(), \"f\");\n // Link struct types to their direct child structs\n const links = new Map();\n // Link structs to structs which contain them as a child\n const parents = new Map();\n // Link all subtypes within a given struct\n const subtypes = new Map();\n Object.keys(types).forEach((type) => {\n links.set(type, new Set());\n parents.set(type, []);\n subtypes.set(type, new Set());\n });\n for (const name in types) {\n const uniqueNames = new Set();\n for (const field of types[name]) {\n // Check each field has a unique name\n if (uniqueNames.has(field.name)) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames.add(field.name);\n // Get the base type (drop any array specifiers)\n const baseType = (field.type.match(/^([^\\x5b]*)(\\x5b|$)/))[1] || null;\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n continue;\n }\n if (!parents.has(baseType)) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents.get(baseType).push(name);\n links.get(name).add(baseType);\n }\n }\n // Deduce the primary type\n const primaryTypes = Array.from(parents.keys()).filter((n) => (parents.get(n).length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\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 defineProperties(this, { primaryType: primaryTypes[0] });\n // Check for circular type references\n function checkCircular(type, found) {\n if (found.has(type)) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found.add(type);\n for (const child of links.get(type)) {\n if (!parents.has(child)) {\n continue;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n for (const subtype of found) {\n subtypes.get(subtype).add(child);\n }\n }\n found.delete(type);\n }\n checkCircular(this.primaryType, new Set());\n // Compute each fully describe type\n for (const [name, set] of subtypes) {\n const st = Array.from(set);\n st.sort();\n __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").set(name, encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\"));\n }\n }\n get types() {\n return JSON.parse(__classPrivateFieldGet(this, _TypedDataEncoder_types, \"f\"));\n }\n getEncoder(type) {\n let encoder = __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").get(type);\n if (!encoder) {\n encoder = __classPrivateFieldGet(this, _TypedDataEncoder_instances, \"m\", _TypedDataEncoder_getEncoder).call(this, type);\n __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").set(type, encoder);\n }\n return encoder;\n }\n encodeType(name) {\n const result = __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(name);\n if (!result) {\n return logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => this._visit(subtype, v, callback));\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 return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\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 domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return concat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain, types, value, resolveName) {\n // Make a copy to isolate it from the object passed in\n domain = Object.assign({}, domain);\n // Look up all ENS names\n const ensCache = {};\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 // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = Object.assign({}, types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(logger.getBytes(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return logger.getBigInt(value).toString();\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 return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n_TypedDataEncoder_types = new WeakMap(), _TypedDataEncoder_fullTypes = new WeakMap(), _TypedDataEncoder_encoderCache = new WeakMap(), _TypedDataEncoder_instances = new WeakSet(), _TypedDataEncoder_getEncoder = function _TypedDataEncoder_getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(subtype)) {\n result = result.map(keccak256);\n }\n return keccak256(concat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(type));\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(type)) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return concat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n};\n//# sourceMappingURL=typed-data.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Interface_instances, _Interface_errors, _Interface_events, _Interface_functions, _Interface_abiCoder, _Interface_getFunction, _Interface_getEvent;\nimport { arrayify, concat, dataSlice, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { defaultAbiCoder } from \"./abi-coder.js\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder.js\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatType, Fragment, FunctionFragment, ParamType } from \"./fragments.js\";\nimport { logger } from \"./logger.js\";\nimport { Typed } from \"./typed.js\";\nexport { checkResultErrors, Result };\nexport class LogDescription {\n constructor(fragment, topic, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, signature, topic, args\n });\n }\n}\nexport class TransactionDescription {\n constructor(fragment, selector, args, value) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector, value\n });\n }\n}\nexport class ErrorDescription {\n constructor(fragment, selector, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector\n });\n }\n}\nexport class Indexed {\n constructor(hash) {\n defineProperties(this, { hash, _isIndexed: true });\n }\n static isIndexed(value) {\n return !!(value && value._isIndexed);\n }\n}\n// https://docs.soliditylang.org/en/v0.8.13/control-structures.html?highlight=panic#panic-via-assert-and-error-via-require\nconst PanicReasons = {\n \"0\": \"generic panic\",\n \"1\": \"assert(false)\",\n \"17\": \"arithmetic overflow\",\n \"18\": \"division or modulo by zero\",\n \"33\": \"enum overflow\",\n \"34\": \"invalid encoded storage byte array accessed\",\n \"49\": \"out-of-bounds array access; popping on an empty array\",\n \"50\": \"out-of-bounds access of an array or bytesN\",\n \"65\": \"out of memory\",\n \"81\": \"uninitialized function\",\n};\nconst BuiltinErrors = {\n \"0x08c379a0\": {\n signature: \"Error(string)\",\n name: \"Error\",\n inputs: [\"string\"],\n reason: (message) => {\n return `reverted with reason string ${JSON.stringify(message)}`;\n }\n },\n \"0x4e487b71\": {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n inputs: [\"uint256\"],\n reason: (code) => {\n let reason = \"unknown panic code\";\n if (code >= 0 && code <= 0xff && PanicReasons[code.toString()]) {\n reason = PanicReasons[code.toString()];\n }\n return `reverted with panic code 0x${code.toString(16)} (${reason})`;\n }\n }\n};\nexport class Interface {\n constructor(fragments) {\n _Interface_instances.add(this);\n _Interface_errors.set(this, void 0);\n _Interface_events.set(this, void 0);\n _Interface_functions.set(this, void 0);\n // #structs: Map;\n _Interface_abiCoder.set(this, void 0);\n let abi = [];\n if (typeof (fragments) === \"string\") {\n abi = JSON.parse(fragments);\n }\n else {\n abi = fragments;\n }\n __classPrivateFieldSet(this, _Interface_functions, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_errors, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_events, new Map(), \"f\");\n // this.#structs = new Map();\n defineProperties(this, {\n fragments: Object.freeze(abi.map((f) => Fragment.from(f)).filter((f) => (f != null))),\n });\n __classPrivateFieldSet(this, _Interface_abiCoder, this.getAbiCoder(), \"f\");\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket;\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 defineProperties(this, { deploy: fragment });\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = __classPrivateFieldGet(this, _Interface_functions, \"f\");\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = __classPrivateFieldGet(this, _Interface_events, \"f\");\n break;\n case \"error\":\n bucket = __classPrivateFieldGet(this, _Interface_errors, \"f\");\n break;\n default:\n return;\n }\n const signature = fragment.format();\n if (bucket.has(signature)) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n bucket.set(signature, fragment);\n });\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineProperties(this, {\n deploy: ConstructorFragment.fromString(\"constructor()\")\n });\n }\n }\n // @TODO: multi sig?\n format(format) {\n if (!format) {\n format = FormatType.full;\n }\n if (format === FormatType.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n const abi = this.fragments.map((f) => f.format(format));\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatType.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n return abi;\n }\n getAbiCoder() {\n return defaultAbiCoder;\n }\n getFunctionName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, null, false)).name;\n }\n getFunction(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, values || null, true);\n }\n getEventName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, null, false)).name;\n }\n getEvent(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, values || null, true);\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(key, values) {\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_errors, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching error\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_errors, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", key);\n }\n else if (matching.length > 1) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching errors\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_errors, \"f\").get(ErrorFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching error\", \"signature\", key);\n }\n // Get the 4-byte selector used by Solidity to identify a function\n getSelector(fragment) {\n /*\n if (typeof(fragment) === \"string\") {\n const matches: Array = [ ];\n\n try { matches.push(this.getFunction(fragment)); } catch (error) { }\n try { matches.push(this.getError(fragment)); } catch (_) { }\n\n if (matches.length === 0) {\n logger.throwArgumentError(\"unknown fragment\", \"key\", fragment);\n } else if (matches.length > 1) {\n logger.throwArgumentError(\"ambiguous fragment matches function and error\", \"key\", fragment);\n }\n\n fragment = matches[0];\n }\n */\n return dataSlice(id(fragment.format()), 0, 4);\n }\n // Get the 32-byte topic hash used by Solidity to identify an event\n getEventTopic(fragment) {\n //if (typeof(fragment) === \"string\") { fragment = this.getEvent(eventFragment); }\n return id(fragment.format());\n }\n _decodeParams(params, data) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(params, data);\n }\n _encodeParams(params, values) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(params, values);\n }\n encodeDeploy(values) {\n return this._encodeParams(this.deploy.inputs, values || []);\n }\n decodeErrorResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n encodeErrorResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match function ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n let message = \"invalid length for result data\";\n const bytes = arrayify(data);\n if ((bytes.length % 32) === 0) {\n try {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.outputs, bytes);\n }\n catch (error) {\n message = \"could not decode result data\";\n }\n }\n // Call returned data with no error, but the data is junk\n return logger.throwError(message, \"BAD_DATA\", {\n value: hexlify(bytes),\n info: { method: fragment.name, signature: fragment.format() }\n });\n }\n makeError(fragment, _data, tx) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n const data = logger.getBytes(_data);\n let args = undefined;\n if (tx) {\n try {\n args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, tx.data || \"0x\");\n }\n catch (error) {\n console.log(error);\n }\n }\n let errorArgs = undefined;\n let errorName = undefined;\n let errorSignature = undefined;\n let reason = \"unknown reason\";\n if (data.length === 0) {\n reason = \"missing error reason\";\n }\n else if ((data.length % 32) === 4) {\n const selector = hexlify(data.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n try {\n errorName = builtin.name;\n errorSignature = builtin.signature;\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(builtin.inputs, data.slice(4));\n reason = builtin.reason(...errorArgs);\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n else {\n reason = \"unknown custom error\";\n try {\n const error = this.getError(selector);\n errorName = error.name;\n errorSignature = error.format();\n reason = `custom error: ${errorSignature}`;\n try {\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(error.inputs, data.slice(4));\n }\n catch (error) {\n reason = `custom error: ${errorSignature} (coult not decode error data)`;\n }\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n }\n return logger.makeError(\"call revert exception\", \"CALL_EXCEPTION\", {\n data: hexlify(data), transaction: null,\n method: fragment.name, signature: fragment.format(), args,\n errorArgs, errorName, errorSignature, reason\n });\n }\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment, values) {\n if (typeof (functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n return hexlify(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(functionFragment.outputs, values || []));\n }\n /*\n spelunk(inputs: Array, values: ReadonlyArray, processfunc: (type: string, value: any) => Promise): Promise> {\n const promises: Array> = [ ];\n const process = function(type: ParamType, value: any): any {\n if (type.baseType === \"array\") {\n return descend(type.child\n }\n if (type. === \"address\") {\n }\n };\n \n const descend = function (inputs: Array, values: ReadonlyArray) {\n if (inputs.length !== values.length) { throw new Error(\"length mismatch\"); }\n \n };\n \n const result: Array = [ ];\n values.forEach((value, index) => {\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 */\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), \"UNEXPECTED_ARGUMENT\", {\n count: values.length,\n expectedCount: eventFragment.inputs.length\n });\n }\n const topics = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n const encodeTopic = (param, value) => {\n if (param.type === \"string\") {\n return id(value);\n }\n else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n // Check addresses are valid\n if (param.type === \"address\") {\n __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([\"address\"], [value]);\n }\n return zeroPadValue(hexlify(value), 32);\n //@TOOD should probably be return toHex(value, 32)\n };\n values.forEach((value, index) => {\n const param = eventFragment.inputs[index];\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 if (value == null) {\n topics.push(null);\n }\n else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n }\n else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n }\n else {\n topics.push(encodeTopic(param, value));\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n }\n encodeEventLog(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n const topics = [];\n const dataTypes = [];\n const dataValues = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\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 }\n else if (param.type === \"bytes\") {\n topics.push(keccak256(value));\n }\n else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n }\n else {\n topics.push(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([param.type], [value]));\n }\n }\n else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n return {\n data: __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(dataTypes, dataValues),\n topics: topics\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment, data, topics) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (topics != null && !eventFragment.anonymous) {\n const eventTopic = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== eventTopic) {\n logger.throwArgumentError(\"fragment/topic mismatch\", \"topics[0]\", topics[0]);\n }\n topics = topics.slice(1);\n }\n const indexed = [];\n const nonIndexed = [];\n const dynamic = [];\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 }\n else {\n indexed.push(param);\n dynamic.push(false);\n }\n }\n else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n const resultIndexed = (topics != null) ? __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(indexed, concat(topics)) : null;\n const resultNonIndexed = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(nonIndexed, data, true);\n //const result: (Array & { [ key: string ]: any }) = [ ];\n const values = [];\n const keys = [];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n let value = null;\n if (param.indexed) {\n if (resultIndexed == null) {\n value = new Indexed(null);\n }\n else if (dynamic[index]) {\n value = new Indexed(resultIndexed[indexedIndex++]);\n }\n else {\n try {\n value = resultIndexed[indexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n }\n else {\n try {\n value = resultNonIndexed[nonIndexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n values.push(value);\n keys.push(param.name || null);\n });\n return Result.fromItems(values, keys);\n }\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx) {\n const data = logger.getBytes(tx.data, \"tx.data\");\n const value = logger.getBigInt((tx.value != null) ? tx.value : 0, \"tx.value\");\n const fragment = this.getFunction(hexlify(data.slice(0, 4)));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, data.slice(4));\n return new TransactionDescription(fragment, this.getSelector(fragment), args, value);\n }\n // @TODO\n //parseCallResult(data: BytesLike): ??\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log) {\n const fragment = this.getEvent(log.topics[0]);\n if (!fragment || fragment.anonymous) {\n 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 return new LogDescription(fragment, this.getEventTopic(fragment), this.decodeEventLog(fragment, log.data, log.topics));\n }\n parseError(data) {\n const hexData = hexlify(data);\n const fragment = this.getError(dataSlice(hexData, 0, 4));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, dataSlice(hexData, 4));\n return new ErrorDescription(fragment, this.getSelector(fragment), args);\n }\n static from(value) {\n // Already an Interface, which is immutable\n if (value instanceof Interface) {\n return value;\n }\n // JSON\n if (typeof (value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n // Maybe an interface from an older version, or from a symlinked copy\n if (typeof (value.format) === \"function\") {\n return new Interface(value.format(FormatType.json));\n }\n // Array of fragments\n return new Interface(value);\n }\n}\n_Interface_errors = new WeakMap(), _Interface_events = new WeakMap(), _Interface_functions = new WeakMap(), _Interface_abiCoder = new WeakMap(), _Interface_instances = new WeakSet(), _Interface_getFunction = function _Interface_getFunction(key, values, forceUnique) {\n // Selector\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_functions, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching function\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_functions, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n const lastValue = (values.length > 0) ? values[values.length - 1] : null;\n let valueLength = values.length;\n let allowOptions = true;\n if (Typed.isTyped(lastValue) && lastValue.type === \"overrides\") {\n allowOptions = false;\n valueLength--;\n }\n // Remove all matches that don't have a compatible length. The args\n // may contain an overrides, so the match may have n or n - 1 parameters\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs.length;\n if (inputs !== valueLength && (!allowOptions || inputs !== valueLength - 1)) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // We are past the inputs\n if (j >= inputs.length) {\n if (values[j].type === \"overrides\") {\n continue;\n }\n matching.splice(i, 1);\n break;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n // We found a single matching signature with an overrides, but the\n // last value is something that cannot possibly be an options\n if (matching.length === 1 && values && values.length !== matching[0].inputs.length) {\n const lastArg = values[values.length - 1];\n if (lastArg == null || Array.isArray(lastArg) || typeof (lastArg) !== \"object\") {\n matching.splice(0, 1);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n logger.throwArgumentError(`multiple matching functions (i.e. ${matchStr})`, \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_functions, \"f\").get(FunctionFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching function\", \"signature\", key);\n}, _Interface_getEvent = function _Interface_getEvent(key, values, forceUnique) {\n // EventTopic\n if (isHexString(key)) {\n const eventTopic = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_events, \"f\").values()) {\n if (eventTopic === this.getEventTopic(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching event\", \"eventTopic\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_events, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n // Remove all matches that don't have a compatible length.\n for (let i = matching.length - 1; i >= 0; i--) {\n if (matching[i].inputs.length < values.length) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching events\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_events, \"f\").get(EventFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching event\", \"signature\", key);\n};\n//# sourceMappingURL=interface.js.map","export const version = \"@ethersproject/web@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchResponse_props, _FetchResponse_error;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties, getStore } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\n;\nexport class FetchResponse {\n constructor(statusCode, statusMessage, headers, body, request) {\n _FetchResponse_props.set(this, void 0);\n _FetchResponse_error.set(this, void 0);\n __classPrivateFieldSet(this, _FetchResponse_props, {\n statusCode,\n statusMessage,\n headers: Object.freeze(Object.assign({}, Object.keys(headers).reduce((accum, k) => {\n accum[k.toLowerCase()] = headers[k];\n return accum;\n }, {}))),\n body: ((body == null) ? null : new Uint8Array(body)),\n request: (request || null),\n }, \"f\");\n __classPrivateFieldSet(this, _FetchResponse_error, { message: \"\" }, \"f\");\n }\n toString() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return ``;\n }\n get statusCode() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusCode\"); }\n get statusMessage() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusMessage\"); }\n get headers() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"headers\"); }\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? null : new Uint8Array(body);\n }\n get bodyText() {\n try {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? \"\" : toUtf8String(body);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid UTF-8 data\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyText\", info: { response: this }\n });\n }\n }\n get bodyJson() {\n try {\n return JSON.parse(this.bodyText);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid JSON\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyJson\", info: { response: this }\n });\n }\n }\n [(_FetchResponse_props = new WeakMap(), _FetchResponse_error = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n makeServerError(message, error) {\n let statusMessage;\n if (!message) {\n message = `${this.statusCode} ${this.statusMessage}`;\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${message})`;\n }\n else {\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${message})`;\n }\n const response = new FetchResponse(599, statusMessage, this.headers, this.body, getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\") || undefined);\n __classPrivateFieldSet(response, _FetchResponse_error, { message, error }, \"f\");\n return response;\n }\n throwThrottleError(message, stall) {\n if (stall == null) {\n stall = 1000;\n }\n if (typeof (stall) !== \"number\" || !Number.isInteger(stall) || stall < 0) {\n logger.throwArgumentError(\"invalid stall timeout\", \"stall\", stall);\n }\n const error = new Error(message || \"throttling requests\");\n defineProperties(error, { stall, throttle: true });\n throw error;\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n hasBody() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body != null);\n }\n get request() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\"); }\n ok() {\n return (__classPrivateFieldGet(this, _FetchResponse_error, \"f\").message === \"\" && this.statusCode >= 200 && this.statusCode < 300);\n }\n assertOk() {\n if (this.ok()) {\n return;\n }\n let { message, error } = __classPrivateFieldGet(this, _FetchResponse_error, \"f\");\n if (message === \"\") {\n message = `server response ${this.statusCode} ${this.statusMessage}`;\n }\n logger.throwError(message, \"SERVER_ERROR\", {\n request: (this.request || \"unknown request\"), response: this, error\n });\n }\n}\n//# sourceMappingURL=response.js.map","import { logger } from \"./logger.js\";\nimport { FetchResponse } from \"./response.js\";\nexport async function getUrl(req, timeout) {\n const protocol = req.url.split(\":\")[0].toLowerCase();\n if (protocol !== \"http\" && protocol !== \"https\") {\n logger.throwError(`unsupported protocol ${protocol}`, \"UNSUPPORTED_OPERATION\", {\n info: { protocol },\n operation: \"request\"\n });\n }\n if (req.credentials && !req.allowInsecureAuthentication) {\n logger.throwError(\"insecure authorized connections unsupported\", \"UNSUPPORTED_OPERATION\", {\n operation: \"request\"\n });\n }\n const init = {\n method: req.method,\n headers: new Headers(Array.from(req)),\n body: req.body || undefined,\n };\n const resp = await fetch(req.url, init);\n const headers = {};\n resp.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n const body = new Uint8Array(await resp.arrayBuffer());\n return new FetchResponse(resp.status, resp.statusText, headers, body, req);\n}\n//# sourceMappingURL=get-url-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchRequest_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nfunction check(value, type, name) {\n if (typeof (value) !== type) {\n throw new Error(`invalid ${name}`);\n }\n return value;\n}\nexport class FetchRequest {\n constructor(url) {\n _FetchRequest_props.set(this, void 0);\n __classPrivateFieldSet(this, _FetchRequest_props, {\n allowInsecure: false,\n gzip: false,\n headers: {},\n method: \"\",\n timeout: 300,\n url: check(url, \"string\", \"url\")\n }, \"f\");\n }\n // URL\n get url() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\"); }\n set url(url) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\", check(url, \"string\", \"url\"));\n }\n // Body\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body == null) {\n return null;\n }\n if (this.isFrozen()) {\n return new Uint8Array(body);\n }\n return body;\n }\n set body(body) {\n if (body == null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", undefined);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", undefined);\n }\n else if (typeof (body) === \"string\") {\n // @TODO: utf8-check\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(body));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"text/plain\");\n }\n else if (body instanceof Uint8Array) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", body);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/octet-stream\");\n }\n else if (typeof (body) === \"object\") {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(JSON.stringify(body)));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/json\");\n }\n else {\n throw new Error(\"invalid body\");\n }\n }\n hasBody() {\n return (getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\") != null);\n }\n // Method (default: GET with no body, POST with a body)\n get method() {\n const method = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\");\n if (method) {\n return method.toUpperCase();\n }\n if (this.body) {\n return \"POST\";\n }\n return \"GET\";\n }\n set method(method) {\n if (method == null) {\n method = \"\";\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\", check(method, \"string\", \"method\"));\n }\n // Headers (automatically fills content-type if not explicitly set)\n get headers() {\n const headers = Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\"));\n const bodyType = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\");\n if (this.credentials) { /* TODO */ }\n ;\n if (this.allowGzip) {\n headers[\"accept-encoding\"] = \"gzip\";\n }\n if (headers[\"content-type\"] == null && bodyType) {\n headers[\"content-type\"] = bodyType;\n }\n if (this.body) {\n headers[\"content-length\"] = String(this.body.length);\n }\n return Object.freeze(headers);\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n setHeader(key, value) {\n const headers = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\");\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", headers);\n headers[check(key, \"string\", \"key\").toLowerCase()] = String(value);\n }\n clearHeaders() {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", {});\n }\n [(_FetchRequest_props = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n // Configure an Authorization header\n get credentials() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\") || null;\n }\n setCredentials(username, password) {\n if (username.match(/:/)) {\n logger.throwArgumentError(\"invalid basic authentication username\", \"username\", \"[REDACTED]\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\", `${username}:${password}`);\n // @TODO:\n //const auth = username + \":\" + password;\n //this.setHeader(\"authorization\", \"Basic \" + base64Encode(toUtf8Bytes(auth)))\n //this.setHeader(\"authorization\", \"Basic TODO:\" + auth);\n }\n // Configure the request to allow gzipped responses\n get allowGzip() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\");\n }\n set allowGzip(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\", !!value);\n }\n // Allow credentials to be sent over an insecure (non-HTTPS) channel\n get allowInsecureAuthentication() {\n return !!getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\");\n }\n set allowInsecureAuthentication(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\", check(value, \"boolean\", \"allowInsecureAuthentication\"));\n }\n // Timeout (seconds)\n get timeout() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\"); }\n set timeout(timeout) {\n timeout = check(timeout, \"number\", \"timeout\");\n if (timeout <= 0) {\n throw new Error(\"invalid timerout\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\", timeout);\n }\n redirect(location) {\n // Redirection; for now we only support absolute locataions\n const current = this.url.split(\":\")[0].toLowerCase();\n const target = location.split(\":\")[0].toLowerCase();\n if (this.method !== \"GET\" || (current === \"https\" && target === \"http\") ||\n !location.match(/^https?:/)) {\n return logger.throwError(`unsupported redirect`, \"UNSUPPORTED_OPERATION\", {\n operation: `redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(location)})`\n });\n }\n // Create a copy of this request, with a new URL\n const req = new FetchRequest(location);\n req.method = \"GET\";\n req.allowGzip = this.allowGzip;\n req.timeout = this.timeout;\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"body\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\"));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Do not forward credentials unless on the same domain; only absolute\n //req.allowInsecure = false;\n // paths are currently supported; may want a way to specify to forward?\n //setStore(req.#props, \"creds\", getStore(this.#pros, \"creds\"));\n return req;\n }\n clone() {\n const clone = new FetchRequest(this.url);\n // Preserve \"default method\" (i.e. null)\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"method\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\"));\n // Preserve \"default body\" with type, copying the Uint8Array is present\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"body\", (body == null) ? undefined : new Uint8Array(body));\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Preserve \"default headers\"\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n // Credentials is readonly, so we copy internally\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"creds\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\"));\n if (this.allowGzip) {\n clone.allowGzip = true;\n }\n clone.timeout = this.timeout;\n if (this.allowInsecureAuthentication) {\n clone.allowInsecureAuthentication = true;\n }\n return clone;\n }\n freeze() {\n // Copy the body so any changes to previous access do not modify it\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body != null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", new Uint8Array(body));\n }\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\").headers);\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n }\n}\n//# sourceMappingURL=request.js.map","import { decodeBase64 } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { getUrl } from \"./get-url.js\"; /*-browser*/\nimport { logger } from \"./logger.js\";\nimport { FetchRequest } from \"./request.js\";\nimport { FetchResponse } from \"./response.js\";\nasync function delay(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\n// @TODO: Add option for global preflightRequest?\nfunction getTime() { return (new Date()).getTime(); }\nfunction unpercent(value) {\n value = value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n });\n return toUtf8Bytes(value);\n}\nlet lockGateways = false;\nlet ipfsGateway = \"https:/\\/gateway.ipfs.io/\";\nlet arGateway = \"https:/\\/gateway.ar.io/\";\nexport async function fetchData(connection) {\n const conn = (typeof (connection) === \"string\") ? {\n request: new FetchRequest(connection)\n } : (connection instanceof FetchRequest) ? {\n request: connection\n } : Object.assign({}, connection);\n if (conn.request == null) {\n return logger.throwArgumentError(\"missing request\", \"connection\", connection);\n }\n let req = conn.request.clone().freeze();\n switch (conn.request.url.split(\":\")[0]) {\n case \"data\": {\n const match = req.url.match(/^data:([^;:]*)?(;base64)?,(.*)$/i);\n if (match) {\n try {\n const headers = {\n \"content-type\": (match[1] ? match[1] : \"text/plain\")\n };\n const body = (match[2] ? decodeBase64(match[3]) : unpercent(match[3]));\n return new FetchResponse(200, \"OK\", headers, body, req.clone());\n }\n catch (error) {\n return new FetchResponse(400, \"BAD REQUEST (invalid base64 encoded data)\", {}, null, req.clone());\n }\n }\n return new FetchResponse(500, \"INTERNAL SERVER ERROR (unsupported dara URI)\", {}, null, req.clone());\n }\n case \"ipfs\":\n case \"ipns\":\n case \"ar\":\n throw new Error(\"not implemented yet\");\n console.log(\"FF\", arGateway, ipfsGateway);\n case \"http\":\n case \"https\":\n break;\n default:\n throw new Error(\"unsupported scheme\");\n }\n const attempts = (conn.throttleLimit != null) ? conn.throttleLimit : 12;\n if (!Number.isInteger(attempts) || attempts < 1) {\n return logger.throwArgumentError(\"invalid throttleLimit\", \"connection\", connection);\n }\n const slotInterval = (conn.throttleSlotInterval != null) ? conn.throttleSlotInterval : 100;\n //logger.assertInteger(slotInterval, \"connection.throttleSlotInterval\", connection.throttleSlotInterval);\n if (!Number.isInteger(slotInterval) || attempts < 0) {\n return logger.throwArgumentError(\"invalid throttleSlotInterval\", \"connection\", connection);\n }\n const retryFunc = (conn.throttleRetry != null) ? conn.throttleRetry : null;\n if (retryFunc && typeof (retryFunc) !== \"function\") {\n return logger.throwArgumentError(\"invalid throttleRetry callback\", \"connection\", connection);\n }\n const preflightRequest = conn.preflightRequest || null;\n if (preflightRequest && typeof (preflightRequest) !== \"function\") {\n return logger.throwArgumentError(\"invalid preflightRequest callback\", \"connection\", connection);\n }\n const processResponse = conn.processResponse || null;\n if (processResponse && typeof (processResponse) !== \"function\") {\n return logger.throwArgumentError(\"invalid processResponse callback\", \"connection\", connection);\n }\n // Start time of this fetch (for timeouts)\n const t0 = getTime();\n let response = null;\n for (let a = 0; a < attempts; a++) {\n let request = req.clone();\n if (preflightRequest) {\n request = (await preflightRequest(request.freeze())).clone();\n }\n const remainingTime = getTime() - t0;\n if (remainingTime < 0) {\n return logger.throwError(\"timeout\", \"TIMEOUT\", { operation: \"request\", reason: \"timeout\", request });\n }\n response = await getUrl(request, remainingTime);\n // Retry logic (server forced)\n if (a < attempts) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Try following the redirect; the request will through if the\n // type of redirect is not supported\n try {\n req = request.redirect(response.headers.location || \"\");\n continue;\n }\n catch (error) { }\n ;\n // Things won't get any better on another attempt; abort\n return response;\n }\n else if (response.statusCode === 429) {\n if (retryFunc == null || (await retryFunc(request.freeze(), response, a))) {\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof (retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n await delay(parseInt(retryAfter));\n }\n else {\n await delay(slotInterval * Math.trunc(Math.random() * Math.pow(2, a)));\n }\n continue;\n }\n }\n }\n // Optional post-processing response; also allows trapping\n // HTTP status errors and doing \"something different\",\n // including any further throttling.\n if (processResponse) {\n try {\n return await processResponse(request, response);\n }\n catch (error) {\n // response.throwThrottleError\n if (error.throttle && typeof (error.stall) === \"number\") {\n if (a < attempts) {\n await delay(error.stall);\n continue;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\", error);\n }\n // Something went wrong during processing; throw a 5xx server error\n response.makeServerError(\"error in post-processing function\", error).assertOk();\n }\n }\n return response;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\");\n}\nfetchData.lock = function () {\n lockGateways = true;\n};\n// @TODO: Allow a master Gateway function\nfetchData.setGateway = function (gateway) {\n};\nfetchData.setIpfsGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setIpfsGateway\"\n });\n }\n ipfsGateway = gateway;\n};\nfetchData.setArGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setArGateway\"\n });\n }\n arGateway = gateway;\n};\n//# sourceMappingURL=fetch-data.js.map","export const version = \"@ethersproject/providers@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _a, _EnsResolver_supports2544, _EnsResolver_getResolver;\nimport { concat, dataSlice, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { encodeBase58, toArray, toNumber } from \"@ethersproject/math\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData } from \"@ethersproject/web\";\nimport { logger } from \"./logger.js\";\nconst BN_1 = BigInt(1);\nconst Empty = new Uint8Array([]);\nconst HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n const offset = toNumber(dataSlice(result, start, start + 32));\n const length = toNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n}\nfunction parseString(result, start) {\n try {\n const bytes = parseBytes(result, start);\n if (bytes != null) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(Empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\n// @TODO: This should use the fetch-data:ipfs gateway\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link) {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n }\n else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n }\n else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n return `https:/\\/gateway.ipfs.io/ipfs/${link}`;\n}\n;\n;\nexport class MulticoinProviderPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n validate(proivder) {\n return this;\n }\n supportsCoinType(coinType) {\n return false;\n }\n async encodeAddress(coinType, address) {\n throw new Error(\"unsupported coin\");\n }\n async decodeAddress(coinType, data) {\n throw new Error(\"unsupported coin\");\n }\n}\nconst BasicMulticoinPluginId = \"org.ethers.provider-prugins.basicmulticoin\";\nexport class BasicMulticoinProviderPlugin extends MulticoinProviderPlugin {\n constructor() {\n super(BasicMulticoinPluginId);\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];\nexport class EnsResolver {\n constructor(provider, address, name) {\n // For EIP-2544 names, the ancestor that provided the resolver\n _EnsResolver_supports2544.set(this, void 0);\n defineProperties(this, { provider, address, name });\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n }\n async supportsWildcard() {\n if (!__classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\")) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n __classPrivateFieldSet(this, _EnsResolver_supports2544, this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return (logger.getBigInt(result) === BN_1);\n }).catch((error) => {\n if (error.code === \"CALL_EXCEPTION\") {\n return false;\n }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n throw error;\n }), \"f\");\n }\n return await __classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\");\n }\n async _fetch(selector, parameters = \"0x\") {\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const addrData = concat([selector, namehash(this.name), parameters]);\n const tx = {\n to: this.address,\n enableCcipRead: true,\n data: addrData\n };\n // Wildcard support; use EIP-2544 to resolve the request\n let wrapped = false;\n if (await this.supportsWildcard()) {\n wrapped = true;\n // selector(\"resolve(bytes,bytes)\")\n tx.data = concat([\"0x9061b923\", encodeBytes([dnsEncode(this.name), addrData])]);\n }\n try {\n let data = await this.provider.call(tx);\n if ((logger.getBytes(data).length % 32) === 4) {\n return logger.throwError(\"resolver threw error\", \"CALL_EXCEPTION\", {\n transaction: tx, data\n });\n }\n if (wrapped) {\n return parseBytes(data, 0);\n }\n return data;\n }\n catch (error) {\n if (error.code !== \"CALL_EXCEPTION\") {\n throw error;\n }\n }\n return null;\n }\n async getAddress(coinType = 60) {\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n // No address\n if (result === \"0x\" || result === HashZero) {\n return null;\n }\n const network = await this.provider.getNetwork();\n return network.formatter.callAddress(result);\n }\n catch (error) {\n if (error.code === \"CALL_EXCEPTION\") {\n return null;\n }\n throw error;\n }\n }\n let coinPlugin = null;\n for (const plugin of this.provider.plugins) {\n if (!(plugin instanceof MulticoinProviderPlugin)) {\n continue;\n }\n if (plugin.supportsCoinType(coinType)) {\n coinPlugin = plugin;\n break;\n }\n }\n if (coinPlugin == null) {\n return null;\n }\n // keccak256(\"addr(bytes32,uint256\")\n const data = parseBytes((await this._fetch(\"0xf1cb7e06\", numPad(coinType))) || \"0x\", 0);\n // No address\n if (data == null || data === \"0x\") {\n return null;\n }\n // Compute the address\n const address = await coinPlugin.encodeAddress(coinType, data);\n if (address != null) {\n return address;\n }\n return logger.throwError(`invalid coin data`, \"UNSUPPORTED_OPERATION\", {\n operation: `getAddress(${coinType})`,\n info: { coinType, data }\n });\n }\n async getText(key) {\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\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 const calldata = logger.getBytes(concat([numPad(64), numPad(keyBytes.length), keyBytes]));\n const hexBytes = parseBytes((await this._fetch(\"0x59d1d43c\", bytesPad(calldata))) || \"0x\", 0);\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n return toUtf8String(hexBytes);\n }\n async getContentHash() {\n // keccak256(\"contenthash()\")\n const hexBytes = parseBytes((await this._fetch(\"0xbc1c58d1\")) || \"0x\", 0);\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n // IPFS (CID: 1, Type: 70=DAG-PB, 72=libp2p-key)\n const ipfs = hexBytes.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const scheme = (ipfs[1] === \"e3010170\") ? \"ipfs\" : \"ipns\";\n const length = parseInt(ipfs[4], 16);\n if (ipfs[5].length === length * 2) {\n return `${scheme}:/\\/${encodeBase58(\"0x\" + ipfs[2])}`;\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 && swarm[1].length === 64) {\n return `bzz:/\\/${swarm[1]}`;\n }\n return logger.throwError(`invalid or unsupported content hash data`, \"UNSUPPORTED_OPERATION\", {\n operation: \"getContentHash()\",\n info: { data: hexBytes }\n });\n }\n async getAvatar() {\n return (await this._getAvatar()).url;\n }\n async _getAvatar() {\n const linkage = [{ type: \"name\", value: 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) {\n linkage.push({ type: \"!avatar\", value: \"\" });\n throw new Error(\"!avatar\");\n }\n linkage.push({ type: \"avatar\", value: avatar });\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) {\n continue;\n }\n const scheme = match[1].toLowerCase();\n switch (scheme) {\n case \"https\":\n case \"data\":\n linkage.push({ type: \"url\", value: avatar });\n return { linkage, url: avatar };\n case \"ipfs\": {\n const url = getIpfsLink(avatar);\n linkage.push({ type: \"ipfs\", value: avatar });\n linkage.push({ type: \"url\", value: url });\n return { linkage, url };\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, value: avatar });\n // The owner of this name\n const owner = await this.getAddress();\n if (owner == null) {\n linkage.push({ type: \"!owner\", value: \"\" });\n throw new Error(\"!owner\");\n }\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) {\n linkage.push({ type: `!${scheme}caip`, value: (match[2] || \"\") });\n throw new Error(\"!caip\");\n }\n const formatter = (await this.provider.getNetwork()).formatter;\n const addr = formatter.address(comps[0]);\n const tokenId = numPad(comps[1]);\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = formatter.callAddress(await this.provider.call({\n to: addr, data: concat([\"0x6352211e\", tokenId])\n }));\n if (owner !== tokenOwner) {\n linkage.push({ type: \"!owner\", value: tokenOwner });\n throw new Error(\"!owner\");\n }\n linkage.push({ type: \"owner\", value: tokenOwner });\n }\n else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = logger.getBigInt(await this.provider.call({\n to: addr, data: concat([\"0x00fdd58e\", zeroPadValue(owner, 32), tokenId])\n }));\n if (!balance) {\n linkage.push({ type: \"!balance\", value: \"0\" });\n throw new Error(\"!balance\");\n }\n linkage.push({ type: \"balance\", value: balance.toString() });\n }\n // Call the token contract for the metadata URL\n const tx = {\n to: comps[0],\n data: concat([selector, tokenId])\n };\n let metadataUrl = parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) {\n linkage.push({ type: \"!metadata-url\", value: \"\" });\n throw new Error(\"!metadata-url\");\n }\n linkage.push({ type: \"metadata-url-base\", value: metadataUrl });\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", hexlify(tokenId).substring(2));\n linkage.push({ type: \"metadata-url-expanded\", value: metadataUrl });\n }\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n linkage.push({ type: \"metadata-url\", value: metadataUrl });\n // Get the token metadata\n let metadata = {};\n const response = await fetchData(metadataUrl);\n response.assertOk();\n try {\n metadata = response.bodyJson;\n }\n catch (error) {\n try {\n linkage.push({ type: \"!metadata\", value: response.bodyText });\n }\n catch (error) {\n const bytes = response.body;\n if (bytes) {\n linkage.push({ type: \"!metadata\", value: hexlify(bytes) });\n }\n throw error;\n }\n throw error;\n }\n if (!metadata) {\n linkage.push({ type: \"!metadata\", value: \"\" });\n throw new Error(\"!metadata\");\n }\n linkage.push({ type: \"metadata\", value: JSON.stringify(metadata) });\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof (imageUrl) !== \"string\") {\n linkage.push({ type: \"!imageUrl\", value: \"\" });\n throw new Error(\"!imageUrl\");\n }\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n }\n else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) {\n linkage.push({ type: \"!imageUrl-ipfs\", value: imageUrl });\n throw new Error(\"!imageUrl-ipfs\");\n }\n linkage.push({ type: \"imageUrl-ipfs\", value: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n linkage.push({ type: \"url\", value: imageUrl });\n return { linkage, url: imageUrl };\n }\n }\n }\n }\n catch (error) {\n console.log(\"EE\", error);\n }\n return { linkage, url: null };\n }\n static async fromName(provider, name) {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") {\n return null;\n }\n // Optimization since the eth node cannot change and does\n // not have a wildcar resolver\n if (name !== \"eth\" && currentName === \"eth\") {\n return null;\n }\n // Check the current node for a resolver\n const addr = await __classPrivateFieldGet(EnsResolver, _a, \"m\", _EnsResolver_getResolver).call(EnsResolver, provider, currentName);\n // Found a resolver!\n if (addr != null) {\n const resolver = new EnsResolver(provider, addr, name);\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) {\n return null;\n }\n return resolver;\n }\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n }\n}\n_a = EnsResolver, _EnsResolver_supports2544 = new WeakMap(), _EnsResolver_getResolver = async function _EnsResolver_getResolver(provider, name) {\n const network = await provider.getNetwork();\n const ensPlugin = network.getPlugin(\"org.ethers.plugins.ens\");\n // No ENS...\n if (!ensPlugin) {\n return logger.throwError(\"network does not support ENS\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getResolver\", info: { network: network.name }\n });\n }\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await provider.call({\n to: ensPlugin.address,\n data: concat([\"0x0178b8bf\", namehash(name)]),\n enableCcipRead: true\n });\n const addr = network.formatter.callAddress(addrData);\n if (addr === dataSlice(HashZero, 0, 20)) {\n return null;\n }\n return addr;\n }\n catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32),\n // so probably a link error\n throw error;\n }\n return null;\n};\n//# sourceMappingURL=ens-resolver.js.map","export const version = \"@ethersproject/signing-key@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Signature_props;\nimport { concat, dataLength, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n// Constants\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst _guard = {};\nconst Zero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nexport class Signature {\n constructor(guard, r, s, v) {\n _Signature_props.set(this, void 0);\n logger.assertPrivate(guard, _guard, \"Signature\");\n __classPrivateFieldSet(this, _Signature_props, { r, s, v, networkV: null }, \"f\");\n }\n get r() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\"); }\n set r(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\", hexlify(value));\n }\n get s() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\"); }\n set s(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n else if (logger.getBytes(value)[0] & 0x80) {\n logger.throwArgumentError(\"non-canonical s\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\", hexlify(value));\n }\n get v() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\"); }\n set v(value) {\n const v = logger.getNumber(value, \"value\");\n if (v !== 27 && v !== 28) {\n throw new Error(\"@TODO\");\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\", v);\n }\n get networkV() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"networkV\"); }\n get legacyChainId() {\n const v = this.networkV;\n if (v == null) {\n return null;\n }\n return Signature.getChainId(v);\n }\n get yParity() {\n if (this.v === 27) {\n return 0;\n }\n return 1;\n /*\n // When v is 0 or 1 it is the recid directly\n if (this.v.isZero()) { return 0; }\n if (this.v.eq(1)) { return 1; }\n\n // Otherwise, odd (e.g. 27) is 0 and even (e.g. 28) is 1\n return this.v.and(1).isZero() ? 1: 0;\n */\n }\n get yParityAndS() {\n // The EIP-2098 compact representation\n const yParityAndS = logger.getBytes(this.s);\n if (this.yParity) {\n yParityAndS[0] |= 0x80;\n }\n return hexlify(yParityAndS);\n }\n get compactSerialized() {\n return concat([this.r, this.yParityAndS]);\n }\n get serialized() {\n return concat([this.r, this.s, (this.yParity ? \"0x1c\" : \"0x1b\")]);\n }\n [(_Signature_props = new WeakMap(), Symbol.for('nodejs.util.inspect.custom'))]() {\n return `Signature { r: \"${this.r}\", s: \"${this.s}\", yParity: ${this.yParity}, networkV: ${this.networkV} }`;\n }\n clone() {\n const clone = new Signature(_guard, this.r, this.s, this.v);\n if (this.networkV) {\n setStore(__classPrivateFieldGet(clone, _Signature_props, \"f\"), \"networkV\", this.networkV);\n }\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n }\n toJSON() {\n const networkV = this.networkV;\n return {\n _type: \"signature\",\n networkV: ((networkV != null) ? networkV.toString() : null),\n r: this.r, s: this.s, v: this.v,\n };\n }\n static create() {\n return new Signature(_guard, Zero, Zero, 27);\n }\n // Get the chain ID from an EIP-155 v\n static getChainId(v) {\n const bv = logger.getBigInt(v, \"v\");\n // The v is not an EIP-155 v, so it is the unspecified chain ID\n if ((bv == BN_27) || (bv == BN_28)) {\n return BN_0;\n }\n // Bad value for an EIP-155 v\n if (bv < BN_35) {\n logger.throwArgumentError(\"invalid EIP-155 v\", \"v\", v);\n }\n return (bv - BN_35) / BN_2;\n }\n // Get the EIP-155 v transformed for a given chainId\n static getChainIdV(chainId, v) {\n return (logger.getBigInt(chainId) * BN_2) + BigInt(35 + v - 27);\n }\n // Convert an EIP-155 v into a normalized v\n static getNormalizedV(v) {\n const bv = logger.getBigInt(v);\n if (bv == BN_0) {\n return 27;\n }\n if (bv == BN_1) {\n return 28;\n }\n // Otherwise, EIP-155 v means odd is 27 and even is 28\n return (bv & BN_1) ? 27 : 28;\n }\n static from(sig) {\n const throwError = (message) => {\n return logger.throwArgumentError(message, \"signature\", sig);\n };\n if (typeof (sig) === \"string\") {\n const bytes = logger.getBytes(sig, \"signature\");\n if (bytes.length === 64) {\n const r = hexlify(bytes.slice(0, 32));\n const s = bytes.slice(32, 64);\n const v = (s[0] & 0x80) ? 28 : 27;\n s[0] &= 0x7f;\n return new Signature(_guard, r, hexlify(s), v);\n }\n if (dataLength(sig) !== 65) {\n const r = hexlify(sig.slice(0, 32));\n const s = bytes.slice(32, 64);\n if (s[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n const v = Signature.getNormalizedV(bytes[64]);\n return new Signature(_guard, r, hexlify(s), v);\n }\n return throwError(\"invlaid raw signature length\");\n }\n if (sig instanceof Signature) {\n return sig.clone();\n }\n // Get r\n const r = sig.r;\n if (r == null) {\n throwError(\"missing r\");\n }\n if (!isHexString(r, 32)) {\n throwError(\"invalid r\");\n }\n // Get s; by any means necessary (we check consistency below)\n const s = (function (s, yParityAndS) {\n if (s != null) {\n if (!isHexString(s, 32)) {\n throwError(\"invalid s\");\n }\n return s;\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n const bytes = logger.getBytes(yParityAndS);\n bytes[0] &= 0x7f;\n return hexlify(bytes);\n }\n return throwError(\"missing s\");\n })(sig.s, sig.yParityAndS);\n if (logger.getBytes(s)[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n // Get v; by any means necessary (we check consistency below)\n const { networkV, v } = (function (_v, yParityAndS, yParity) {\n if (_v != null) {\n const v = logger.getBigInt(_v);\n return {\n networkV: ((v >= BN_35) ? v : undefined),\n v: Signature.getNormalizedV(v)\n };\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n return { v: ((logger.getBytes(yParityAndS)[0] & 0x80) ? 28 : 27) };\n }\n if (yParity != null) {\n switch (yParity) {\n case 0: return { v: 27 };\n case 1: return { v: 28 };\n }\n return throwError(\"invalid yParity\");\n }\n return throwError(\"missing v\");\n })(sig.v, sig.yParityAndS, sig.yParity);\n const result = new Signature(_guard, r, s, v);\n if (networkV) {\n setStore(__classPrivateFieldGet(result, _Signature_props, \"f\"), \"networkV\", networkV);\n }\n // If multiple of v, yParity, yParityAndS we given, check they match\n if (\"yParity\" in sig && sig.yParity !== result.yParity) {\n throwError(\"yParity mismatch\");\n }\n else if (\"yParityAndS\" in sig && sig.yParityAndS !== result.yParityAndS) {\n throwError(\"yParityAndS mismatch\");\n }\n return result;\n }\n}\n//# sourceMappingURL=signature.js.map","/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst POW_2_256 = _2n ** BigInt(256);\nconst CURVE = {\n a: _0n,\n b: BigInt(7),\n P: POW_2_256 - _2n ** BigInt(32) - BigInt(977),\n n: POW_2_256 - BigInt('432420386565659656852420866394968145599'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n};\nexport { CURVE };\nfunction weistrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 ** _2n);\n const B = mod(Y1 ** _2n);\n const C = mod(B ** _2n);\n const D = mod(_2n * (mod((X1 + B) ** _2n) - A - C));\n const E = mod(_3n * A);\n const F = mod(E ** _2n);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H ** _2n);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r ** _2n - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n let n = normalizeScalar(scalar);\n const G = JacobianPoint.BASE;\n const P0 = JacobianPoint.ZERO;\n if (n === _0n)\n return P0;\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.ZERO;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) {\n let pr = precomputes[offset];\n if (window % 2)\n pr = pr.negate();\n f = f.add(pr);\n }\n else {\n let cached = precomputes[offset + Math.abs(wbits) - 1];\n if (wbits < 0)\n cached = cached.negate();\n p = p.add(cached);\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ = invert(this.z)) {\n const { x, y, z } = this;\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weistrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, 33));\n const y = bytesToNumber(bytes.subarray(33, 65));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n return this.fromCompressedHex(bytes);\n }\n if (len === 65 && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n msgHash = ensureBytes(msgHash);\n const h = truncateHash(msgHash);\n const { r, s } = normalizeSignature(signature);\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Cannot recover signature: invalid recovery bit');\n }\n if (h === _0n)\n throw new Error('Cannot recover signature: msgHash cannot be 0');\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(r));\n const { n } = CURVE;\n const rinv = invert(r, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.y & _1n ? '03' : '02';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weistrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nexport class Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = isUint8a(hex);\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = isUint8a(hex);\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n }\n toDERRawBytes(isCompressed = false) {\n return hexToBytes(this.toDERHex(isCompressed));\n }\n toDERHex(isCompressed = false) {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n if (isCompressed)\n return sHex;\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const rLen = numberToHexUnpadded(rHex.length / 2);\n const sLen = numberToHexUnpadded(sHex.length / 2);\n const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nfunction concatBytes(...arrays) {\n if (!arrays.every(isUint8a))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nfunction isUint8a(bytes) {\n return bytes instanceof Uint8Array;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nfunction numTo32bStr(num) {\n if (num > POW_2_256)\n throw new Error('Expected number < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n return hexToBytes(numTo32bStr(num));\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst POW_2_128 = _2n ** BigInt(128);\nfunction splitScalarEndo(k) {\n const { n } = CURVE;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n const { n } = CURVE;\n const byteLength = hash.length;\n const delta = byteLength * 8 - 256;\n let h = bytesToNumber(hash);\n if (delta > 0)\n h = h >> BigInt(delta);\n if (h >= n)\n h -= n;\n return h;\n}\nclass HmacDrbg {\n constructor() {\n this.v = new Uint8Array(32).fill(1);\n this.k = new Uint8Array(32).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n if (typeof utils.hmacSha256Sync !== 'function')\n throw new Error('utils.hmacSha256Sync is undefined, you need to set it');\n const res = utils.hmacSha256Sync(this.k, ...values);\n if (res instanceof Promise)\n throw new Error('To use sync sign(), ensure utils.hmacSha256 is sync');\n return res;\n }\n incr() {\n if (this.counter >= 1000) {\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n }\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n this.v = await this.hmac(this.v);\n return this.v;\n }\n generateSync() {\n this.incr();\n this.v = this.hmacSync(this.v);\n return this.v;\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n const k = bytesToNumber(kBytes);\n if (!isWithinCurveOrder(k))\n return;\n const { n } = CURVE;\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(invert(k, n) * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n const sig = new Signature(r, s);\n const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 64)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (isUint8a(key)) {\n if (key.length !== 32)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isPub(item) {\n const arr = isUint8a(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === 33 || len === 65;\n if (str)\n return len === 66 || len === 130;\n if (item instanceof Point)\n return true;\n return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n const hex = numTo32bStr(num);\n return hexToBytes(hex);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = utils.randomBytes(32);\n const e = ensureBytes(extraEntropy);\n if (e.length !== 32)\n throw new Error('sign: Expected 32 bytes of extra data');\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n let { sig, recovery } = recSig;\n const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n if (canonical && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n await drbg.reseed(seed);\n while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n drbg.reseedSync(seed);\n while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n if (h === _0n)\n return false;\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nasync function taggedHash(tag, ...messages) {\n const tagB = new Uint8Array(tag.split('').map((c) => c.charCodeAt(0)));\n const tagH = await utils.sha256(tagB);\n const h = await utils.sha256(concatBytes(tagH, tagH, ...messages));\n return bytesToNumber(h);\n}\nasync function createChallenge(x, P, message) {\n const rx = numTo32b(x);\n const t = await taggedHash('BIP0340/challenge', rx, P.toRawX(), message);\n return mod(t, CURVE.n);\n}\nfunction hasEvenY(point) {\n return (point.y & _1n) === _0n;\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nasync function schnorrSign(message, privateKey, auxRand = utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n const { n } = CURVE;\n const m = ensureBytes(message);\n const d0 = normalizePrivateKey(privateKey);\n const rand = ensureBytes(auxRand);\n if (rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n const P = Point.fromPrivateKey(d0);\n const d = hasEvenY(P) ? d0 : n - d0;\n const t0h = await taggedHash('BIP0340/aux', rand);\n const t = d ^ t0h;\n const k0h = await taggedHash('BIP0340/nonce', numTo32b(t), P.toRawX(), m);\n const k0 = mod(k0h, n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const R = Point.fromPrivateKey(k0);\n const k = hasEvenY(R) ? k0 : n - k0;\n const e = await createChallenge(R.x, P, m);\n const sig = new SchnorrSignature(R.x, mod(k + e * d, n)).toRawBytes();\n const isValid = await schnorrVerify(sig, m, P.toRawX());\n if (!isValid)\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n let sig;\n try {\n sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n const m = ensureBytes(message);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const e = await createChallenge(r, P, m);\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !hasEvenY(R) || R.x !== r)\n return false;\n return true;\n}\nexport const schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n if (hash.length < 40 || hash.length > 1024)\n throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n const num = mod(bytesToNumber(hash), CURVE.n);\n if (num === _0n || num === _1n)\n throw new Error('Invalid private key');\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => {\n return utils.hashToPrivateKey(utils.randomBytes(40));\n },\n bytesToHex,\n mod,\n sha256: async (message) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', message.buffer);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n return Uint8Array.from(createHash('sha256').update(message).digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n};\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SigningKey_privateKey;\nimport * as secp256k1 from \"@noble/secp256k1\";\nimport { arrayify, concat, dataLength, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac } from \"@ethersproject/crypto\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"./signature.js\";\nimport { logger } from \"./logger.js\";\n// Make noble-secp256k1 sync\nsecp256k1.utils.hmacSha256Sync = function (key, ...messages) {\n return arrayify(computeHmac(\"sha256\", key, concat(messages)));\n};\nexport class SigningKey {\n constructor(privateKey) {\n _SigningKey_privateKey.set(this, void 0);\n logger.assertArgument((dataLength(privateKey) === 32), \"invalid private key length\", \"privateKey\", \"[REDACTED]\");\n __classPrivateFieldSet(this, _SigningKey_privateKey, hexlify(privateKey), \"f\");\n }\n get privateKey() { return __classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"); }\n get publicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")); }\n get compressedPublicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"), true); }\n sign(digest) {\n logger.assertArgument((dataLength(digest) === 32), \"invalid digest length\", \"digest\", digest);\n const [sigDer, recid] = secp256k1.signSync(arrayify(digest), arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), {\n recovered: true,\n canonical: true\n });\n const sig = secp256k1.Signature.fromHex(sigDer);\n return Signature.from({\n r: toHex(\"0x\" + sig.r.toString(16), 32),\n s: toHex(\"0x\" + sig.s.toString(16), 32),\n v: (recid ? 0x1c : 0x1b)\n }).freeze();\n }\n computeShardSecret(other) {\n const pubKey = SigningKey.computePublicKey(other);\n return hexlify(secp256k1.getSharedSecret(arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), pubKey));\n }\n static computePublicKey(key, compressed) {\n let bytes = logger.getBytes(key, \"key\");\n if (bytes.length === 32) {\n const pubKey = secp256k1.getPublicKey(bytes, !!compressed);\n return hexlify(pubKey);\n }\n if (bytes.length === 64) {\n const pub = new Uint8Array(65);\n pub[0] = 0x04;\n pub.set(bytes, 1);\n bytes = pub;\n }\n const point = secp256k1.Point.fromHex(bytes);\n return hexlify(point.toRawBytes(compressed));\n }\n static recoverPublicKey(digest, signature) {\n const sig = Signature.from(signature);\n const der = secp256k1.Signature.fromCompact(arrayify(concat([sig.r, sig.s]))).toDERRawBytes();\n const pubKey = secp256k1.recoverPublicKey(arrayify(digest), der, sig.yParity);\n if (pubKey != null) {\n return hexlify(pubKey);\n }\n return logger.throwArgumentError(\"invalid signautre for digest\", \"signature\", signature);\n }\n static _addPoints(p0, p1, compressed) {\n const pub0 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p0).substring(2));\n const pub1 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p1).substring(2));\n return \"0x\" + pub0.add(pub1).toHex(!!compressed);\n }\n}\n_SigningKey_privateKey = new WeakMap();\n/*\nconst key = new SigningKey(\"0x1234567890123456789012345678901234567890123456789012345678901234\");\nconsole.log(key);\nconsole.log(key.sign(\"0x1234567890123456789012345678901234567890123456789012345678901234\"));\n{\n const privKey = \"0x1234567812345678123456781234567812345678123456781234567812345678\";\n const signingKey = new SigningKey(privKey);\n console.log(\"0\", signingKey, signingKey.publicKey, signingKey.publicKeyCompressed);\n\n let pubKey = SigningKey.computePublicKey(privKey);\n let pubKeyComp = SigningKey.computePublicKey(privKey, true);\n let pubKeyRaw = \"0x\" + SigningKey.computePublicKey(privKey).substring(4);\n console.log(\"A\", pubKey, pubKeyComp);\n\n let a = SigningKey.computePublicKey(pubKey);\n let b = SigningKey.computePublicKey(pubKey, true);\n console.log(\"B\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyComp);\n b = SigningKey.computePublicKey(pubKeyComp, true);\n console.log(\"C\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyRaw);\n b = SigningKey.computePublicKey(pubKeyRaw, true);\n console.log(\"D\", a, b);\n\n const digest = \"0x1122334411223344112233441122334411223344112233441122334411223344\";\n const sig = signingKey.sign(digest);\n console.log(\"SS\", sig, sig.r, sig.s, sig.yParity);\n\n console.log(\"R\", SigningKey.recoverPublicKey(digest, sig));\n}\n*/\n//# sourceMappingURL=signing-key.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { dataLength } from \"@ethersproject/bytes\";\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (dataLength(storageKey) !== 32) {\n //logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }>\n throw new Error(\"\");\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n //logger.throwArgumentError(\"access list expected to be [ address, storageKeys[>\n throw new Error(\"\");\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = 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//# sourceMappingURL=accesslist.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nexport function computeAddress(key) {\n const publicKey = SigningKey.computePublicKey(key, false);\n return getAddress(keccak256(\"0x\" + publicKey.substring(4)).substring(26));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(SigningKey.recoverPublicKey(digest, signature));\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/transaction@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Transaction_props;\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toArray } from \"@ethersproject/math\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { decodeRlp, encodeRlp } from \"@ethersproject/rlp\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"./accesslist.js\";\nimport { recoverAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst BN_MAX_UINT = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleData(value, param) {\n try {\n return hexlify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid data\", param, value);\n }\n}\nfunction handleAccessList(value, param) {\n try {\n return accessListify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid accessList\", param, value);\n }\n}\nfunction handleNumber(_value, param) {\n if (_value === \"0x\") {\n return 0;\n }\n return logger.getNumber(_value, param);\n}\nfunction handleUint(_value, param) {\n if (_value === \"0x\") {\n return BN_0;\n }\n const value = logger.getBigInt(_value, param);\n if (value > BN_MAX_UINT) {\n logger.throwArgumentError(\"value exceeds uint size\", param, value);\n }\n return value;\n}\nfunction formatNumber(_value, name) {\n const value = logger.getBigInt(_value, \"value\");\n const result = toArray(value);\n if (result.length > 32) {\n logger.throwArgumentError(`value too large`, `tx.${name}`, value);\n }\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _parseLegacy(data) {\n const fields = decodeRlp(data);\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 6)) {\n return logger.throwArgumentError(\"invalid field count for legacy transaction\", \"data\", data);\n }\n const tx = {\n type: 0,\n nonce: handleNumber(fields[0], \"nonce\"),\n gasPrice: handleUint(fields[1], \"gasPrice\"),\n gasLimit: handleUint(fields[2], \"gasLimit\"),\n to: handleAddress(fields[3]),\n value: handleUint(fields[4], \"value\"),\n data: handleData(fields[5], \"dta\"),\n chainId: BN_0\n };\n // Legacy unsigned transaction\n if (fields.length === 6) {\n return tx;\n }\n const v = handleUint(fields[6], \"v\");\n const r = handleUint(fields[7], \"r\");\n const s = handleUint(fields[8], \"s\");\n if (r === BN_0 && s === BN_0) {\n // EIP-155 unsigned transaction\n tx.chainId = v;\n }\n else {\n // Compute the EIP-155 chain ID (or 0 for legacy)\n let chainId = (v - BN_35) / BN_2;\n if (chainId < BN_0) {\n chainId = BN_0;\n }\n tx.chainId = chainId;\n // Signed Legacy Transaction\n if (chainId === BN_0 && (v < BN_27 || v > BN_28)) {\n logger.throwArgumentError(\"non-canonical legacy v\", \"v\", fields[6]);\n }\n tx.signature = Signature.from({\n r: zeroPadValue(fields[7], 32),\n s: zeroPadValue(fields[8], 32),\n v\n });\n tx.hash = keccak256(data);\n }\n return tx;\n}\nfunction _serializeLegacy(tx, sig) {\n const fields = [\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n ];\n let chainId = BN_0;\n if (tx.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = logger.getBigInt(tx.chainId, \"tx.chainId\");\n // We have a chainId in the tx and an EIP-155 v in the signature,\n // make sure they agree with each other\n if (sig && sig.networkV != null && sig.legacyChainId !== chainId) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n }\n else if (sig) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n const legacy = sig.legacyChainId;\n if (legacy != null) {\n chainId = legacy;\n }\n }\n // Requesting an unsigned transaction\n if (!sig) {\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== BN_0) {\n fields.push(toArray(chainId));\n fields.push(\"0x\");\n fields.push(\"0x\");\n }\n return encodeRlp(fields);\n }\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = BigInt(27 + sig.yParity);\n if (chainId !== BN_0) {\n v = Signature.getChainIdV(chainId, sig.v);\n }\n else if (BigInt(sig.v) !== v) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n fields.push(toArray(v));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n return encodeRlp(fields);\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n let yParity;\n try {\n yParity = handleNumber(fields[0], \"yParity\");\n if (yParity !== 0 && yParity !== 1) {\n throw new Error(\"bad yParity\");\n }\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid yParity\", \"yParity\", fields[0]);\n }\n const r = zeroPadValue(fields[1], 32);\n const s = zeroPadValue(fields[2], 32);\n const signature = Signature.from({ r, s, yParity });\n tx.signature = signature;\n}\nfunction _parseEip1559(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 12)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 2\", \"data\", hexlify(data));\n }\n const maxPriorityFeePerGas = handleUint(fields[2], \"maxPriorityFeePerGas\");\n const maxFeePerGas = handleUint(fields[3], \"maxFeePerGas\");\n const tx = {\n type: 2,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleUint(fields[4], \"gasLimit\"),\n to: handleAddress(fields[5]),\n value: handleUint(fields[6], \"value\"),\n data: handleData(fields[7], \"data\"),\n accessList: handleAccessList(fields[8], \"accessList\"),\n };\n // Unsigned EIP-1559 Transaction\n if (fields.length === 9) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _serializeEip1559(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(tx.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"yParity\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x02\", encodeRlp(fields)]);\n}\nfunction _parseEip2930(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 8 && fields.length !== 11)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 1\", \"data\", hexlify(data));\n }\n const tx = {\n type: 1,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n gasPrice: handleUint(fields[2], \"gasPrice\"),\n gasLimit: handleUint(fields[3], \"gasLimit\"),\n to: handleAddress(fields[4]),\n value: handleUint(fields[5], \"value\"),\n data: handleData(fields[6], \"data\"),\n accessList: handleAccessList(fields[7], \"accessList\")\n };\n // Unsigned EIP-2930 Transaction\n if (fields.length === 8) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(8), _serializeEip2930);\n return tx;\n}\nfunction _serializeEip2930(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"recoveryParam\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x01\", encodeRlp(fields)]);\n}\nexport class Transaction {\n constructor() {\n _Transaction_props.set(this, void 0);\n __classPrivateFieldSet(this, _Transaction_props, {\n type: null,\n to: null,\n nonce: 0,\n gasLimit: BigInt(0),\n gasPrice: null,\n maxPriorityFeePerGas: null,\n maxFeePerGas: null,\n data: \"0x\",\n value: BigInt(0),\n chainId: BigInt(0),\n sig: null,\n accessList: null\n }, \"f\");\n }\n // A type of null indicates the type will be populated automatically\n get type() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\"); }\n get typeName() {\n switch (this.type) {\n case 0: return \"legacy\";\n case 1: return \"eip-2930\";\n case 2: return \"eip-1559\";\n }\n return null;\n }\n set type(value) {\n switch (value) {\n case null:\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", null);\n break;\n case 0:\n case \"legacy\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 0);\n break;\n case 1:\n case \"berlin\":\n case \"eip-2930\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 1);\n break;\n case 2:\n case \"london\":\n case \"eip-1559\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 2);\n break;\n default:\n throw new Error(`unsupported transaction type`);\n }\n }\n get to() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\"); }\n set to(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\", (value == null) ? null : getAddress(value));\n }\n get nonce() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\"); }\n set nonce(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\", logger.getNumber(value, \"value\")); }\n get gasLimit() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\"); }\n set gasLimit(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\", logger.getBigInt(value)); }\n get gasPrice() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\");\n if (value == null && (this.type === 0 || this.type === 1)) {\n return BN_0;\n }\n return value;\n }\n set gasPrice(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\", (value == null) ? null : logger.getBigInt(value, \"gasPrice\"));\n }\n get maxPriorityFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxPriorityFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxPriorityFeePerGas\"));\n }\n get maxFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxFeePerGas\"));\n }\n get data() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\"); }\n set data(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\", hexlify(value)); }\n get value() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\"); }\n set value(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\", logger.getBigInt(value, \"value\"));\n }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\", logger.getBigInt(value)); }\n get signature() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\") || null; }\n set signature(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\", (value == null) ? null : Signature.from(value));\n }\n get accessList() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\") || null;\n if (value == null && (this.type === 1 || this.type === 2)) {\n return [];\n }\n return value;\n }\n set accessList(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\", (value == null) ? null : accessListify(value));\n }\n get hash() {\n if (this.signature == null) {\n throw new Error(\"cannot hash unsigned transaction; maybe you meant .unsignedHash\");\n }\n return keccak256(this.serialized);\n }\n get unsignedHash() {\n return keccak256(this.unsignedSerialized);\n }\n get from() {\n if (this.signature == null) {\n return null;\n }\n return recoverAddress(this.unsignedSerialized, this.signature);\n }\n get fromPublicKey() {\n if (this.signature == null) {\n return null;\n }\n // use ecrecover\n return \"\";\n }\n isSigned() {\n return this.signature != null;\n }\n get serialized() {\n if (this.signature == null) {\n throw new Error(\"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized\");\n }\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this, this.signature);\n case 1:\n return _serializeEip2930(this, this.signature);\n case 2:\n return _serializeEip1559(this, this.signature);\n }\n throw new Error(\"unsupported type\");\n }\n get unsignedSerialized() {\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this);\n case 1:\n return _serializeEip2930(this);\n case 2:\n return _serializeEip1559(this);\n }\n throw new Error(\"unsupported type\");\n }\n // Validates properties and lists possible types this transaction adheres to\n inferTypes() {\n // Checks that there are no conflicting properties set\n const hasGasPrice = this.gasPrice != null;\n const hasFee = (this.maxFeePerGas != null || this.maxPriorityFeePerGas != null);\n const hasAccessList = (this.accessList != null);\n //if (hasGasPrice && hasFee) {\n // throw new Error(\"transaction cannot have gasPrice and maxFeePerGas\");\n //}\n if (this.maxFeePerGas != null && this.maxPriorityFeePerGas != null) {\n if (this.maxFeePerGas < this.maxPriorityFeePerGas) {\n throw new Error(\"priorityFee cannot be more than maxFee\");\n }\n }\n //if (this.type === 2 && hasGasPrice) {\n // throw new Error(\"eip-1559 transaction cannot have gasPrice\");\n //}\n if ((this.type === 0 || this.type === 1) && hasFee) {\n throw new Error(\"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas\");\n }\n if (this.type === 0 && hasAccessList) {\n throw new Error(\"legacy transaction cannot have accessList\");\n }\n const types = [];\n // Explicit type\n if (this.type != null) {\n types.push(this.type);\n }\n else {\n if (hasFee) {\n types.push(2);\n }\n else if (hasGasPrice) {\n types.push(1);\n if (!hasAccessList) {\n types.push(0);\n }\n }\n else if (hasAccessList) {\n types.push(1);\n types.push(2);\n }\n else {\n types.push(0);\n types.push(1);\n types.push(2);\n }\n }\n types.sort();\n return types;\n }\n isLegacy() { return (this.type === 0); }\n isBerlin() { return (this.type === 1); }\n isLondon() { return (this.type === 2); }\n clone() {\n return Transaction.from(this);\n }\n freeze() {\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").sig = (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig.clone().freeze());\n }\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").accessList = Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList.map((set) => {\n Object.freeze(set.storageKeys);\n return Object.freeze(set);\n }));\n }\n Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n }\n static from(tx) {\n if (typeof (tx) === \"string\") {\n const payload = arrayify(tx);\n if (payload[0] >= 0x7f) { // @TODO: > vs >= ??\n return Transaction.from(_parseLegacy(payload));\n }\n switch (payload[0]) {\n case 1: return Transaction.from(_parseEip2930(payload));\n case 2: return Transaction.from(_parseEip1559(payload));\n }\n throw new Error(\"unsupported transaction type\");\n }\n const result = new Transaction();\n if (tx.type != null) {\n result.type = tx.type;\n }\n if (tx.to != null) {\n result.to = tx.to;\n }\n if (tx.nonce != null) {\n result.nonce = tx.nonce;\n }\n if (tx.gasLimit != null) {\n result.gasLimit = tx.gasLimit;\n }\n if (tx.gasPrice != null) {\n result.gasPrice = tx.gasPrice;\n }\n if (tx.maxPriorityFeePerGas != null) {\n result.maxPriorityFeePerGas = tx.maxPriorityFeePerGas;\n }\n if (tx.maxFeePerGas != null) {\n result.maxFeePerGas = tx.maxFeePerGas;\n }\n if (tx.data != null) {\n result.data = tx.data;\n }\n if (tx.value != null) {\n result.value = tx.value;\n }\n if (tx.chainId != null) {\n result.chainId = tx.chainId;\n }\n if (tx.signature != null) {\n result.signature = Signature.from(tx.signature);\n }\n if (tx.accessList != null) {\n result.accessList = tx.accessList;\n }\n if (tx.hash != null) {\n if (result.isSigned()) {\n if (result.hash !== tx.hash) {\n throw new Error(\"hash mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a hashs\");\n }\n }\n if (tx.from != null) {\n if (result.isSigned()) {\n if (result.from.toLowerCase() !== (tx.from || \"\").toLowerCase()) {\n throw new Error(\"from mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a from\");\n }\n }\n return result;\n }\n}\n_Transaction_props = new WeakMap();\n//# sourceMappingURL=transaction.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Block_transactions, _TransactionReceipt_logs;\n//import { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\n// -----------------------\nfunction getValue(value) {\n if (value == null) {\n return null;\n }\n return value;\n}\nfunction toJson(value) {\n if (value == null) {\n return null;\n }\n return value.toString();\n}\n// @TODO? implements Required\nexport class FeeData {\n constructor(gasPrice, maxFeePerGas, maxPriorityFeePerGas) {\n defineProperties(this, {\n gasPrice: getValue(gasPrice),\n maxFeePerGas: getValue(maxFeePerGas),\n maxPriorityFeePerGas: getValue(maxPriorityFeePerGas)\n });\n }\n toJSON() {\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = this;\n return {\n _type: \"FeeData\",\n gasPrice: toJson(gasPrice),\n maxFeePerGas: toJson(maxFeePerGas),\n maxPriorityFeePerGas: toJson(maxPriorityFeePerGas),\n };\n }\n}\n;\nexport function copyRequest(req) {\n const result = {};\n // These could be addresses, ENS names or Addressables\n if (req.to) {\n result.to = req.to;\n }\n if (req.from) {\n result.from = req.from;\n }\n if (req.data) {\n result.data = hexlify(req.data);\n }\n const bigIntKeys = \"chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value\".split(/,/);\n for (const key in bigIntKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getBigInt(req[key], `request.${key}`);\n }\n const numberKeys = \"type,nonce\".split(/,/);\n for (const key in numberKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getNumber(req[key], `request.${key}`);\n }\n if (req.accessList) {\n result.accessList = accessListify(req.accessList);\n }\n if (\"blockTag\" in req) {\n result.blockTag = req.blockTag;\n }\n if (\"enableCcipRead\" in req) {\n result.enableCcipReadEnabled = !!req.enableCcipRead;\n }\n if (\"customData\" in req) {\n result.customData = req.customData;\n }\n return result;\n}\n;\nexport class Block {\n constructor(block, provider) {\n _Block_transactions.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _Block_transactions, Object.freeze(block.transactions.map((tx) => {\n if (typeof (tx) !== \"string\" && tx.provider !== provider) {\n throw new Error(\"provider mismatch\");\n }\n return tx;\n })), \"f\");\n ;\n defineProperties(this, {\n provider,\n hash: getValue(block.hash),\n number: block.number,\n timestamp: block.timestamp,\n parentHash: block.parentHash,\n nonce: block.nonce,\n difficulty: block.difficulty,\n gasLimit: block.gasLimit,\n gasUsed: block.gasUsed,\n miner: block.miner,\n extraData: block.extraData,\n baseFeePerGas: getValue(block.baseFeePerGas)\n });\n }\n get transactions() { return __classPrivateFieldGet(this, _Block_transactions, \"f\"); }\n //connect(provider: Provider): Block {\n // return new Block(this, provider);\n //}\n toJSON() {\n const { baseFeePerGas, difficulty, extraData, gasLimit, gasUsed, hash, miner, nonce, number, parentHash, timestamp, transactions } = this;\n return {\n _type: \"Block\",\n baseFeePerGas: toJson(baseFeePerGas),\n difficulty: toJson(difficulty),\n extraData,\n gasLimit: toJson(gasLimit),\n gasUsed: toJson(gasUsed),\n hash, miner, nonce, number, parentHash, timestamp,\n transactions,\n };\n }\n [(_Block_transactions = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return {\n value: this.transactions[index++], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get length() { return this.transactions.length; }\n get date() {\n if (this.timestamp == null) {\n return null;\n }\n return new Date(this.timestamp * 1000);\n }\n async getTransaction(index) {\n const tx = this.transactions[index];\n if (tx == null) {\n throw new Error(\"no such tx\");\n }\n if (typeof (tx) === \"string\") {\n return (await this.provider.getTransaction(tx));\n }\n else {\n return tx;\n }\n }\n isMined() { return !!this.hash; }\n isLondon() { return !!this.baseFeePerGas; }\n orphanedEvent() {\n if (!this.isMined()) {\n throw new Error(\"\");\n }\n return createOrphanedBlockFilter(this);\n }\n}\nexport class Log {\n constructor(log, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n const topics = Object.freeze(log.topics.slice());\n defineProperties(this, {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n removed: log.removed,\n address: log.address,\n data: log.data,\n topics,\n index: log.index,\n transactionIndex: log.transactionIndex,\n });\n }\n //connect(provider: Provider): Log {\n // return new Log(this, provider);\n //}\n toJSON() {\n const { address, blockHash, blockNumber, data, index, removed, topics, transactionHash, transactionIndex } = this;\n return {\n _type: \"log\",\n address, blockHash, blockNumber, data, index,\n removed, topics, transactionHash, transactionIndex\n };\n }\n async getBlock() {\n return (await this.provider.getBlock(this.blockHash));\n }\n async getTransaction() {\n return (await this.provider.getTransaction(this.transactionHash));\n }\n async getTransactionReceipt() {\n return (await this.provider.getTransactionReceipt(this.transactionHash));\n }\n removedEvent() {\n return createRemovedLogFilter(this);\n }\n}\nexport class TransactionReceipt {\n constructor(tx, provider) {\n _TransactionReceipt_logs.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _TransactionReceipt_logs, Object.freeze(tx.logs.map((log) => {\n if (provider !== log.provider) {\n //return log.connect(provider);\n throw new Error(\"provider mismatch\");\n }\n return log;\n })), \"f\");\n defineProperties(this, {\n provider,\n to: tx.to,\n from: tx.from,\n contractAddress: tx.contractAddress,\n hash: tx.hash,\n index: tx.index,\n blockHash: tx.blockHash,\n blockNumber: tx.blockNumber,\n logsBloom: tx.logsBloom,\n gasUsed: tx.gasUsed,\n cumulativeGasUsed: tx.cumulativeGasUsed,\n gasPrice: (tx.effectiveGasPrice || tx.gasPrice),\n byzantium: tx.byzantium,\n status: tx.status,\n root: tx.root\n });\n }\n get logs() { return __classPrivateFieldGet(this, _TransactionReceipt_logs, \"f\"); }\n //connect(provider: Provider): TransactionReceipt {\n // return new TransactionReceipt(this, provider);\n //}\n toJSON() {\n const { to, from, contractAddress, hash, index, blockHash, blockNumber, logsBloom, logs, byzantium, status, root } = this;\n return {\n _type: \"TransactionReceipt\",\n blockHash, blockNumber, byzantium, contractAddress,\n cumulativeGasUsed: toJson(this.cumulativeGasUsed),\n from,\n gasPrice: toJson(this.gasPrice),\n gasUsed: toJson(this.gasUsed),\n hash, index, logs, logsBloom, root, status, to\n };\n }\n get length() { return this.logs.length; }\n [(_TransactionReceipt_logs = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return { value: this.logs[index++], done: false };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get fee() {\n return this.gasUsed * this.gasPrice;\n }\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.hash);\n if (tx == null) {\n throw new Error(\"TODO\");\n }\n return tx;\n }\n async confirmations() {\n return (await this.provider.getBlockNumber()) - this.blockNumber + 1;\n }\n removedEvent() {\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transction cannot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"reorderedEvent(other)\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\n;\nexport class TransactionResponse {\n constructor(tx, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n this.blockNumber = (tx.blockNumber != null) ? tx.blockNumber : null;\n this.blockHash = (tx.blockHash != null) ? tx.blockHash : null;\n this.hash = tx.hash;\n this.index = tx.index;\n this.type = tx.type;\n this.from = tx.from;\n this.to = tx.to || null;\n this.gasLimit = tx.gasLimit;\n this.nonce = tx.nonce;\n this.data = tx.data;\n this.value = tx.value;\n this.gasPrice = tx.gasPrice;\n this.maxPriorityFeePerGas = (tx.maxPriorityFeePerGas != null) ? tx.maxPriorityFeePerGas : null;\n this.maxFeePerGas = (tx.maxFeePerGas != null) ? tx.maxFeePerGas : null;\n this.chainId = tx.chainId;\n this.signature = tx.signature;\n this.accessList = (tx.accessList != null) ? tx.accessList : null;\n }\n //connect(provider: Provider): TransactionResponse {\n // return new TransactionResponse(this, provider);\n //}\n toJSON() {\n const { blockNumber, blockHash, index, hash, type, to, from, nonce, data, signature, accessList } = this;\n return {\n _type: \"TransactionReceipt\",\n accessList, blockNumber, blockHash,\n chainId: toJson(this.chainId),\n data, from,\n gasLimit: toJson(this.gasLimit),\n gasPrice: toJson(this.gasPrice),\n hash,\n maxFeePerGas: toJson(this.maxFeePerGas),\n maxPriorityFeePerGas: toJson(this.maxPriorityFeePerGas),\n nonce, signature, to, index, type,\n value: toJson(this.value),\n };\n }\n async getBlock() {\n let blockNumber = this.blockNumber;\n if (blockNumber == null) {\n const tx = await this.getTransaction();\n if (tx) {\n blockNumber = tx.blockNumber;\n }\n }\n if (blockNumber == null) {\n return null;\n }\n const block = this.provider.getBlock(blockNumber);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n return this.provider.getTransaction(this.hash);\n }\n async wait(confirms) {\n return this.provider.waitForTransaction(this.hash, confirms);\n }\n isMined() {\n return (this.blockHash != null);\n }\n isLegacy() {\n return (this.type === 0);\n }\n isBerlin() {\n return (this.type === 1);\n }\n isLondon() {\n return (this.type === 2);\n }\n removedEvent() {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\nfunction createOrphanedBlockFilter(block) {\n return { orphan: \"drop-block\", hash: block.hash, number: block.number };\n}\nfunction createReorderedTransactionFilter(tx, other) {\n return { orphan: \"reorder-transaction\", tx, other };\n}\nfunction createRemovedTransactionFilter(tx) {\n return { orphan: \"drop-transaction\", tx };\n}\nfunction createRemovedLogFilter(log) {\n return { orphan: \"drop-log\", log: {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n address: log.address,\n data: log.data,\n topics: Object.freeze(log.topics.slice()),\n index: log.index\n } };\n}\nfunction fail() {\n throw new Error(\"this provider should not be used\");\n}\nclass DummyProvider {\n get provider() { return this; }\n async getNetwork() { return fail(); }\n async getFeeData() { return fail(); }\n async estimateGas(tx) { return fail(); }\n async call(tx) { return fail(); }\n async resolveName(name) { return fail(); }\n // State\n async getBlockNumber() { return fail(); }\n // Account\n async getBalanceOf(address, blockTag) {\n return fail();\n }\n async getTransactionCountOf(address, blockTag) {\n return fail();\n }\n async getCode(address, blockTag) {\n return fail();\n }\n async getStorageAt(address, position, blockTag) {\n return fail();\n }\n // Write\n async broadcastTransaction(signedTx) { return fail(); }\n // Queries\n async getBlock(blockHashOrBlockTag) {\n return fail();\n }\n async getBlockWithTransactions(blockHashOrBlockTag) {\n return fail();\n }\n async getTransaction(hash) {\n return fail();\n }\n async getTransactionReceipt(hash) {\n return fail();\n }\n // Bloom-filter Queries\n async getLogs(filter) {\n return fail();\n }\n // ENS\n async lookupAddress(address) {\n return fail();\n }\n async waitForTransaction(hash, confirms, timeout) {\n return fail();\n }\n async waitForBlock(blockTag) {\n return fail();\n }\n // EventEmitterable\n async on(event, listener) { return fail(); }\n async once(event, listener) { return fail(); }\n async emit(event, ...args) { return fail(); }\n async listenerCount(event) { return fail(); }\n async listeners(event) { return fail(); }\n async off(event, listener) { return fail(); }\n async removeAllListeners(event) { return fail(); }\n async addListener(event, listener) { return fail(); }\n async removeListener(event, listener) { return fail(); }\n}\n// A singleton provider instance that can be used as a placeholder. This\n// allows API that have a Provider added later to not require a null check.\nexport const dummyProvider = new DummyProvider();\n//# sourceMappingURL=provider.js.map","// Belongs to Networks; requires abstract-provider\n// provider requires abstract-provider and network\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Formatter_format, _Formatter_baseBlock;\n/**\n * Formatter\n *\n * This is responsibile for converting much of the various\n * loose network values into a concrete ethers-ready value.\n *\n * For example, converting addresses to checksum addresses,\n * validating a hash is 32 bytes, and so on.\n *\n * By sub-classing this class and providing it in a custom\n * Network object this allows exotic (non-Ethereum) networks\n * to be fairly simple to adapt to ethers.\n */\nimport { getAddress, getCreateAddress } from \"@ethersproject/address\";\nimport { dataLength, dataSlice, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { Block, Log, TransactionReceipt, TransactionResponse } from \"./provider.js\";\nimport { logger } from \"./logger.js\";\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n//export type AccessListSet = { address: string, storageKeys: Array };\n//export type AccessList = Array;\n//export type AccessListish = AccessList |\n// Array<[ string, Array ]> |\n// Record>;\nfunction stringify(value) {\n if (typeof (value) !== \"string\") {\n throw new Error(\"invalid string\");\n }\n return value;\n}\nexport class Formatter {\n constructor() {\n _Formatter_format.set(this, void 0);\n _Formatter_baseBlock.set(this, void 0);\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 number = this.number.bind(this);\n const uint256 = this.uint256.bind(this);\n const topics = this.arrayOf(hash);\n __classPrivateFieldSet(this, _Formatter_format, {\n address,\n bigNumber,\n blockTag,\n data,\n hash,\n number,\n uint256,\n topics,\n filter: this.object({\n fromBlock: this.allowNull(blockTag, undefined),\n toBlock: this.allowNull(blockTag, undefined),\n blockHash: this.allowNull(hash, undefined),\n address: this.allowNull(address, undefined),\n topics: this.allowNull(topics, undefined)\n }),\n transactionRequest: this.object({\n from: this.allowNull(address),\n type: this.allowNull(number),\n to: this.allowNull(address),\n nonce: this.allowNull(number),\n gasLimit: this.allowNull(uint256),\n gasPrice: this.allowNull(uint256),\n maxFeePerGas: this.allowNull(uint256),\n maxPriorityFeePerGas: this.allowNull(uint256),\n data: this.allowNull(data),\n value: this.allowNull(uint256),\n }),\n transactionResponse: this.object({\n hash: hash,\n index: number,\n type: this.allowNull(number, 0),\n // These can be null for pending blocks\n blockHash: this.allowNull(hash),\n blockNumber: this.allowNull(number),\n // For Legacy transactions, this comes from the v\n chainId: this.allowNull(number),\n from: address,\n to: this.address,\n gasLimit: bigNumber,\n gasPrice: this.allowNull(bigNumber),\n maxFeePerGas: this.allowNull(bigNumber),\n maxPriorityFeePerGas: this.allowNull(bigNumber),\n value: bigNumber,\n data: data,\n nonce: number,\n r: hash,\n s: hash,\n v: number,\n accessList: this.allowNull(this.accessList)\n }, {\n index: [\"transactionIndex\"]\n }),\n }, \"f\");\n __classPrivateFieldSet(this, _Formatter_baseBlock, this.object({\n number: number,\n hash: this.allowNull(hash, null),\n timestamp: number,\n parentHash: hash,\n nonce: this.allowNull(stringify, \"0x0000000000000000\"),\n difficulty: bigNumber,\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n miner: this.allowNull(address, \"0x0000000000000000000000000000000000000000\"),\n extraData: stringify,\n baseFeePerGas: this.allowNull(bigNumber),\n }), \"f\");\n }\n // An address\n address(value) {\n return getAddress(value);\n }\n // An address from a call result; may be zero-padded\n callAddress(value) {\n if (dataLength(value) !== 32 || dataSlice(value, 0, 12) !== \"0x000000000000000000000000\") {\n logger.throwArgumentError(\"invalid call address\", \"value\", value);\n }\n return this.address(dataSlice(value, 12));\n }\n // An address from a transaction (e.g. { from: string, nonce: number })\n contractAddress(value) {\n return getCreateAddress({\n from: this.address(value.from),\n nonce: logger.getNumber(value.nonce, \"value.nonce\")\n });\n }\n // Block Tag\n blockTag(value) {\n if (value == null) {\n return \"latest\";\n }\n switch (value) {\n case \"earliest\":\n return \"0x0\";\n case \"latest\":\n case \"pending\":\n return value;\n }\n if (typeof (value) === \"number\" || (isHexString(value) && dataLength(value) < 32)) {\n return quantity(value);\n }\n return logger.throwArgumentError(\"invalid blockTag\", \"value\", value);\n }\n // Block objects\n block(value, provider) {\n const params = __classPrivateFieldGet(this, _Formatter_baseBlock, \"f\").call(this, value);\n params.transactions = value.transactions.map((t) => this.hash(t));\n return new Block(params, provider);\n }\n blockWithTransactions(value, provider) {\n throw new Error();\n }\n // Transactions\n transactionRequest(value, provider) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionRequest(value);\n }\n transactionResponse(value, provider) {\n value = Object.assign({}, value);\n // @TODO: Use the remap feature\n if (value.data == null && value.input != null) {\n value.data = value.input;\n }\n if (value.gasLimit == null && value.gas) {\n value.gasLimit = value.gas;\n }\n value = __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionResponse(value);\n const sig = Signature.from({ r: value.r, s: value.s, v: value.v });\n value.signature = sig;\n if (value.chainId == null) {\n value.chainId = sig.legacyChainId;\n }\n return new TransactionResponse(value, provider);\n }\n // Receipts\n log(value, provider) {\n const log = this.object({\n address: this.address,\n blockHash: this.hash,\n blockNumber: this.number,\n data: this.data,\n index: this.number,\n removed: this.boolean,\n topics: this.topics,\n transactionHash: this.hash,\n transactionIndex: this.number,\n }, {\n index: [\"logIndex\"]\n })(value);\n return new Log(log, provider);\n }\n receipt(value, provider) {\n const receipt = this.object({\n blockHash: this.hash,\n blockNumber: this.number,\n contractAddress: this.allowNull(this.address),\n cumulativeGasUsed: this.bigNumber,\n from: this.address,\n gasUsed: this.bigNumber,\n logs: this.arrayOf((v) => (this.log(v, provider))),\n logsBloom: this.data,\n root: this.allowNull(this.data),\n status: this.allowNull(this.number),\n to: this.address,\n gasPrice: this.allowNull(this.bigNumber),\n hash: this.hash,\n index: this.number,\n type: this.allowNull(this.number, 0),\n }, {\n hash: [\"transactionHash\"],\n gasPrice: [\"effectiveGasPrice\"],\n index: [\"transactionIndex\"]\n })(value);\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (receipt.root != null) {\n if (receipt.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = parseInt(receipt.root);\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (receipt.status != null && receipt.status !== value) {\n return logger.throwError(\"alt-root-status/status mismatch\", \"BAD_DATA\", {\n value: { root: receipt.root, status: receipt.status }\n });\n }\n receipt.status = value;\n delete receipt.root;\n }\n else {\n return logger.throwError(\"invalid alt-root-status\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n else if (!isHexString(receipt.root, 32)) {\n // Must be a valid bytes32\n return logger.throwError(\"invalid receipt root hash\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n //receipt.byzantium = (receipt.root == null);\n return new TransactionReceipt(receipt, provider);\n }\n // Fitlers\n topics(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").topics(value);\n }\n filter(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").filter(value);\n }\n filterLog(value) {\n console.log(\"ME\", value);\n return null;\n }\n // Converts a serialized transaction to a TransactionResponse\n transaction(value) {\n throw new Error();\n }\n // Useful utility formatters functions, which if need be use the\n // methods within the formatter to ensure internal compatibility\n // Access List; converts an AccessListish to an AccessList\n accessList(value) {\n return accessListify(value);\n }\n // Converts falsish values to a specific value, otherwise use the formatter. Calls preserve `this`.\n allowFalsish(format, ifFalse) {\n return ((value) => {\n if (!value) {\n return ifFalse;\n }\n return format.call(this, value);\n });\n }\n // Allows null, optionally replacing it with a default value. Calls preserve `this`.\n allowNull(format, ifNull) {\n return ((value) => {\n if (value == null) {\n return ifNull;\n }\n return format.call(this, value);\n });\n }\n // Requires an Array satisfying the formatter. Calls preserves `this`.\n arrayOf(format) {\n return ((array) => {\n if (!Array.isArray(array)) {\n throw new Error(\"not an array\");\n }\n return array.map((i) => format.call(this, i));\n });\n }\n // Requires a value which is a value BigNumber\n bigNumber(value) {\n return logger.getBigInt(value, \"value\");\n }\n uint256(value) {\n const result = this.bigNumber(value);\n if (result < 0 || result > BN_MAX_UINT256) {\n logger.throwArgumentError(\"invalid uint256\", \"value\", value);\n }\n return result;\n }\n // Requires a value which is a value boolean or string equivalent\n boolean(value) {\n switch (value) {\n case true:\n case \"true\":\n return true;\n case false:\n case \"false\":\n return false;\n }\n return logger.throwArgumentError(`invalid boolean; ${JSON.stringify(value)}`, \"value\", value);\n }\n // Requires a value which is a valid hexstring. If dataOrLength is true,\n // the length must be even (i.e. a datahexstring) or if it is a number,\n // specifies teh number of bytes value must represent\n _hexstring(dataOrLength) {\n if (dataOrLength == null) {\n dataOrLength = false;\n }\n return (function (value) {\n if (isHexString(value, dataOrLength)) {\n return value.toLowerCase();\n }\n throw new Error(\"bad hexstring\");\n });\n }\n data(value) {\n if (dataLength(value) == null) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return value;\n }\n // Requires a network-native hash\n hash(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").data(value);\n }\n // Requires a valid number, within the IEEE 754 safe range\n number(value) {\n return logger.getNumber(value);\n }\n // Requires an object which matches a fleet of other formatters\n // Any FormatFunc may return `undefined` to have the value omitted\n // from the result object. Calls preserve `this`.\n object(format, altNames) {\n return ((value) => {\n const result = {};\n for (const key in format) {\n let srcKey = key;\n if (altNames && key in altNames && !(srcKey in value)) {\n for (const altKey of altNames[key]) {\n if (altKey in value) {\n srcKey = altKey;\n break;\n }\n }\n }\n try {\n const nv = format[key].call(this, value[srcKey]);\n if (nv !== undefined) {\n result[key] = nv;\n }\n }\n catch (error) {\n const message = (error instanceof Error) ? error.message : \"not-an-error\";\n logger.throwError(`invalid value for value.${key} (${message})`, \"BAD_DATA\", { value });\n }\n }\n return result;\n });\n }\n // Requires a value which matches a network-native storage slot\n storageSlot(value) {\n return toHex(logger.getBigInt(value), 32);\n }\n}\n_Formatter_format = new WeakMap(), _Formatter_baseBlock = new WeakMap();\n//# sourceMappingURL=formatter.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\nconst EnsAddress = \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\";\nexport class NetworkPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n clone() {\n return new NetworkPlugin(this.name);\n }\n validate(network) {\n return this;\n }\n}\nexport class GasCostPlugin extends NetworkPlugin {\n constructor(effectiveBlock = 0, costs) {\n super(`org.ethers.plugins.gas-cost#${(effectiveBlock || 0)}`);\n const props = { effectiveBlock };\n function set(name, nullish) {\n let value = (costs || {})[name];\n if (value == null) {\n value = nullish;\n }\n if (typeof (value) !== \"number\") {\n logger.throwArgumentError(`invalud value for ${name}`, \"costs\", costs);\n }\n props[name] = value;\n }\n set(\"txBase\", 21000);\n set(\"txCreate\", 32000);\n set(\"txDataZero\", 4);\n set(\"txDataNonzero\", 16);\n set(\"txAccessListStorageKey\", 1900);\n set(\"txAccessListAddress\", 2400);\n defineProperties(this, props);\n }\n clone() {\n return new GasCostPlugin(this.effectiveBlock, this);\n }\n}\n// Networks shoudl use this plugin to specify the contract address\n// and network necessary to resolve ENS names.\nexport class EnsPlugin extends NetworkPlugin {\n constructor(address, targetNetwork) {\n super(\"org.ethers.plugins.ens\");\n defineProperties(this, {\n address: (address || EnsAddress),\n targetNetwork: ((targetNetwork == null) ? 1 : targetNetwork)\n });\n }\n clone() {\n return new EnsPlugin(this.address, this.targetNetwork);\n }\n validate(network) {\n network.formatter.address(this.address);\n return this;\n }\n}\nexport class MaxPriorityFeePlugin extends NetworkPlugin {\n constructor(priorityFee) {\n super(\"org.ethers.plugins.max-priority-fee\");\n defineProperties(this, {\n priorityFee: logger.getBigInt(priorityFee)\n });\n }\n async getPriorityFee(provider) {\n return this.priorityFee;\n }\n clone() {\n return new MaxPriorityFeePlugin(this.priorityFee);\n }\n}\n//# sourceMappingURL=plugins-network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Network_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { Formatter } from \"./formatter.js\";\nimport { logger } from \"./logger.js\";\nimport { EnsPlugin, GasCostPlugin } from \"./plugins-network.js\";\n/* * * *\n// Networks which operation against an L2 can use this plugin to\n// specify how to access L1, for the purpose of resolving ENS,\n// for example.\nexport class LayerOneConnectionPlugin extends NetworkPlugin {\n readonly provider!: Provider;\n// @TODO: Rename to ChainAccess and allow for connecting to any chain\n constructor(provider: Provider) {\n super(\"org.ethers.plugins.layer-one-connection\");\n defineProperties(this, { provider });\n }\n\n clone(): LayerOneConnectionPlugin {\n return new LayerOneConnectionPlugin(this.provider);\n }\n}\n*/\n/* * * *\nexport class PriceOraclePlugin extends NetworkPlugin {\n readonly address!: string;\n\n constructor(address: string) {\n super(\"org.ethers.plugins.price-oracle\");\n defineProperties(this, { address });\n }\n\n clone(): PriceOraclePlugin {\n return new PriceOraclePlugin(this.address);\n }\n}\n*/\n// Networks or clients with a higher need for security (such as clients\n// that may automatically make CCIP requests without user interaction)\n// can use this plugin to anonymize requests or intercept CCIP requests\n// to notify and/or receive authorization from the user\n/* * * *\nexport type FetchDataFunc = (req: Frozen) => Promise;\nexport class CcipPreflightPlugin extends NetworkPlugin {\n readonly fetchData!: FetchDataFunc;\n\n constructor(fetchData: FetchDataFunc) {\n super(\"org.ethers.plugins.ccip-preflight\");\n defineProperties(this, { fetchData });\n }\n\n clone(): CcipPreflightPlugin {\n return new CcipPreflightPlugin(this.fetchData);\n }\n}\n*/\nconst Networks = new Map();\nconst defaultFormatter = new Formatter();\nexport class Network {\n constructor(name, _chainId, formatter) {\n _Network_props.set(this, void 0);\n const chainId = logger.getBigInt(_chainId);\n if (formatter == null) {\n formatter = defaultFormatter;\n }\n const plugins = new Map();\n __classPrivateFieldSet(this, _Network_props, { name, chainId, formatter, plugins }, \"f\");\n }\n toJSON() {\n return { name: this.name, chainId: this.chainId };\n }\n get name() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\"); }\n set name(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\", value); }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\", logger.getBigInt(value, \"chainId\")); }\n get formatter() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\"); }\n set formatter(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\", value); }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _Network_props, \"f\").plugins.values());\n }\n attachPlugin(plugin) {\n if (this.isFrozen()) {\n throw new Error(\"frozen\");\n }\n if (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _Network_props, \"f\").plugins.set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(name)) || null;\n }\n // Gets a list of Plugins which match basename, ignoring any fragment\n getPlugins(basename) {\n return (this.plugins.filter((p) => (p.name.split(\"#\")[0] === basename)));\n }\n clone() {\n const clone = new Network(this.name, this.chainId, this.formatter);\n this.plugins.forEach((plugin) => {\n clone.attachPlugin(plugin.clone());\n });\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Network_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Network_props, \"f\"));\n }\n computeIntrinsicGas(tx) {\n const costs = this.getPlugin(\"org.ethers.gas-cost\") || (new GasCostPlugin());\n let gas = costs.txBase;\n if (tx.to == null) {\n gas += costs.txCreate;\n }\n if (tx.data) {\n for (let i = 2; i < tx.data.length; i += 2) {\n if (tx.data.substring(i, i + 2) === \"00\") {\n gas += costs.txDataZero;\n }\n else {\n gas += costs.txDataNonzero;\n }\n }\n }\n if (tx.accessList) {\n const accessList = this.formatter.accessList(tx.accessList);\n for (const addr in accessList) {\n gas += costs.txAccessListAddress + costs.txAccessListStorageKey * accessList[addr].storageKeys.length;\n }\n }\n return gas;\n }\n static from(network) {\n // Default network\n if (network == null) {\n return Network.from(\"homestead\");\n }\n // Canonical name or chain ID\n if (typeof (network) === \"number\") {\n network = BigInt(network);\n }\n if (typeof (network) === \"string\" || typeof (network) === \"bigint\") {\n const networkFunc = Networks.get(network);\n if (networkFunc) {\n return networkFunc();\n }\n if (typeof (network) === \"bigint\") {\n return new Network(\"unknown\", network);\n }\n logger.throwArgumentError(\"unknown network\", \"network\", network);\n }\n // Clonable with network-like abilities\n if (typeof (network.clone) === \"function\") {\n const clone = network.clone();\n //if (typeof(network.name) !== \"string\" || typeof(network.chainId) !== \"number\") {\n //}\n return clone;\n }\n // Networkish\n if (typeof (network) === \"object\") {\n if (typeof (network.name) !== \"string\" || typeof (network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network object name or chainId\", \"network\", network);\n }\n const custom = new Network((network.name), (network.chainId));\n if (network.ensAddress || network.ensNetwork != null) {\n custom.attachPlugin(new EnsPlugin(network.ensAddress, network.ensNetwork));\n }\n //if ((network).layerOneConnection) {\n // custom.attachPlugin(new LayerOneConnectionPlugin((network).layerOneConnection));\n //}\n return custom;\n }\n return logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n static register(nameOrChainId, networkFunc) {\n if (typeof (nameOrChainId) === \"number\") {\n nameOrChainId = BigInt(nameOrChainId);\n }\n const existing = Networks.get(nameOrChainId);\n if (existing) {\n logger.throwArgumentError(`conflicting network for ${JSON.stringify(existing.name)}`, \"nameOrChainId\", nameOrChainId);\n }\n Networks.set(nameOrChainId, networkFunc);\n }\n}\n_Network_props = new WeakMap();\n//# sourceMappingURL=network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PollingBlockSubscriber_instances, _PollingBlockSubscriber_provider, _PollingBlockSubscriber_poller, _PollingBlockSubscriber_interval, _PollingBlockSubscriber_blockNumber, _PollingBlockSubscriber_poll, _OnBlockSubscriber_provider, _OnBlockSubscriber_poll, _PollingOrphanSubscriber_filter, _PollingTransactionSubscriber_hash, _PollingEventSubscriber_instances, _PollingEventSubscriber_provider, _PollingEventSubscriber_filter, _PollingEventSubscriber_poller, _PollingEventSubscriber_blockNumber, _PollingEventSubscriber_poll;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport function getPollingSubscriber(provider, event) {\n if (event === \"block\") {\n return new PollingBlockSubscriber(provider);\n }\n if (isHexString(event, 32)) {\n return new PollingTransactionSubscriber(provider, event);\n }\n return logger.throwError(\"unsupported polling event\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getPollingSubscriber\", info: { event }\n });\n}\n// @TODO: refactor this\nexport class PollingBlockSubscriber {\n constructor(provider) {\n _PollingBlockSubscriber_instances.add(this);\n _PollingBlockSubscriber_provider.set(this, void 0);\n _PollingBlockSubscriber_poller.set(this, void 0);\n _PollingBlockSubscriber_interval.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingBlockSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, 4000, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\"); }\n set pollingInterval(value) { __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, value, \"f\"); }\n start() {\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber already running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).call(this);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n }\n stop() {\n if (!__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber not running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._clearTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\"));\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingBlockSubscriber_provider = new WeakMap(), _PollingBlockSubscriber_poller = new WeakMap(), _PollingBlockSubscriber_interval = new WeakMap(), _PollingBlockSubscriber_blockNumber = new WeakMap(), _PollingBlockSubscriber_instances = new WeakSet(), _PollingBlockSubscriber_poll = async function _PollingBlockSubscriber_poll() {\n const blockNumber = await __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").getBlockNumber();\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n return;\n }\n // @TODO: Put a cap on the maximum number of events per loop?\n if (blockNumber !== __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\")) {\n for (let b = __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") + 1; b <= blockNumber; b++) {\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").emit(\"block\", b);\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n};\nexport class OnBlockSubscriber {\n constructor(provider) {\n _OnBlockSubscriber_provider.set(this, void 0);\n _OnBlockSubscriber_poll.set(this, void 0);\n __classPrivateFieldSet(this, _OnBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _OnBlockSubscriber_poll, (blockNumber) => {\n this._poll(blockNumber, __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\"));\n }, \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"sub-classes must override this\");\n }\n start() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\").call(this, -2);\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n pause(dropWhilePaused) { this.stop(); }\n resume() { this.start(); }\n}\n_OnBlockSubscriber_provider = new WeakMap(), _OnBlockSubscriber_poll = new WeakMap();\nexport class PollingOrphanSubscriber extends OnBlockSubscriber {\n constructor(provider, filter) {\n super(provider);\n _PollingOrphanSubscriber_filter.set(this, void 0);\n __classPrivateFieldSet(this, _PollingOrphanSubscriber_filter, copy(filter), \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"@TODO\");\n console.log(__classPrivateFieldGet(this, _PollingOrphanSubscriber_filter, \"f\"));\n }\n}\n_PollingOrphanSubscriber_filter = new WeakMap();\nexport class PollingTransactionSubscriber extends OnBlockSubscriber {\n constructor(provider, hash) {\n super(provider);\n _PollingTransactionSubscriber_hash.set(this, void 0);\n __classPrivateFieldSet(this, _PollingTransactionSubscriber_hash, hash, \"f\");\n }\n async _poll(blockNumber, provider) {\n const tx = await provider.getTransactionReceipt(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"));\n if (tx) {\n provider.emit(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"), tx);\n }\n }\n}\n_PollingTransactionSubscriber_hash = new WeakMap();\nexport class PollingEventSubscriber {\n constructor(provider, filter) {\n _PollingEventSubscriber_instances.add(this);\n _PollingEventSubscriber_provider.set(this, void 0);\n _PollingEventSubscriber_filter.set(this, void 0);\n _PollingEventSubscriber_poller.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingEventSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingEventSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_filter, copy(filter), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_poller, __classPrivateFieldGet(this, _PollingEventSubscriber_instances, \"m\", _PollingEventSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n start() {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getBlockNumber().then((blockNumber) => {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n });\n }\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingEventSubscriber_provider = new WeakMap(), _PollingEventSubscriber_filter = new WeakMap(), _PollingEventSubscriber_poller = new WeakMap(), _PollingEventSubscriber_blockNumber = new WeakMap(), _PollingEventSubscriber_instances = new WeakSet(), _PollingEventSubscriber_poll = async function _PollingEventSubscriber_poll(blockNumber) {\n // The initial block hasn't been determined yet\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n return;\n }\n const filter = copy(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"));\n filter.fromBlock = __classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") + 1;\n filter.toBlock = blockNumber;\n const logs = await __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getLogs(filter);\n // No logs could just mean the node has not indexed them yet,\n // so we keep a sliding window of 60 blocks to keep scanning\n if (logs.length === 0) {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") < blockNumber - 60) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber - 60, \"f\");\n }\n return;\n }\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n for (const log of logs) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").emit(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"), log);\n }\n};\n//# sourceMappingURL=subscriber-polling.js.map","// @TODO\n// Event coalescence\n// When we register an event with an async value (e.g. address is a Signer\n// or ENS name), we need to add it immeidately for the Event API, but also\n// need time to resolve the address. Upon resolving the address, we need to\n// migrate the listener to the static event. We also need to maintain a map\n// of Signer/ENS name to address so we can sync respond to listenerCount.\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractProvider_instances, _AbstractProvider_subs, _AbstractProvider_plugins, _AbstractProvider_pausedState, _AbstractProvider_networkPromise, _AbstractProvider_anyNetwork, _AbstractProvider_performCache, _AbstractProvider_nextTimer, _AbstractProvider_timers, _AbstractProvider_disableCcipRead, _AbstractProvider_perform, _AbstractProvider_call, _AbstractProvider_getBlock, _AbstractProvider_hasSub, _AbstractProvider_getSub;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { concat, dataLength, dataSlice, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { toArray } from \"@ethersproject/math\";\nimport { defineProperties, EventPayload, resolveProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { EnsResolver } from \"./ens-resolver.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { FeeData } from \"./provider.js\";\nimport { PollingBlockSubscriber, PollingEventSubscriber, PollingOrphanSubscriber, PollingTransactionSubscriber } from \"./subscriber-polling.js\";\n// Constants\nconst BN_2 = BigInt(2);\nconst MAX_CCIP_REDIRECTS = 10;\nfunction getTag(prefix, value) {\n return prefix + \":\" + JSON.stringify(value, (k, v) => {\n if (typeof (v) === \"bigint\") {\n return `bigint:${v.toString()}`;\n }\n if (typeof (v) === \"string\") {\n return v.toLowerCase();\n }\n // Sort object keys\n if (typeof (v) === \"object\" && !Array.isArray(v)) {\n const keys = Object.keys(v);\n keys.sort();\n return keys.reduce((accum, key) => {\n accum[key] = v[key];\n return accum;\n }, {});\n }\n return v;\n });\n}\nexport class UnmanagedSubscriber {\n constructor(name) { defineProperties(this, { name }); }\n start() { }\n stop() { }\n pause(dropWhilePaused) { }\n resume() { }\n}\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\n// Normalize a ProviderEvent into a Subscription\n// @TODO: Make events sync if possible; like block\n//function getSyncSubscription(_event: ProviderEvent): Subscription {\n//}\nasync function getSubscription(_event, provider) {\n if (_event == null) {\n throw new Error(\"invalid event\");\n }\n // Normalize topic array info an EventFilter\n if (Array.isArray(_event)) {\n _event = { topics: _event };\n }\n if (typeof (_event) === \"string\") {\n switch (_event) {\n case \"block\":\n case \"pending\":\n case \"debug\":\n case \"network\": {\n return { type: _event, tag: _event };\n }\n }\n }\n if (isHexString(_event, 32)) {\n const hash = _event.toLowerCase();\n return { type: \"transaction\", tag: getTag(\"tx\", { hash }), hash };\n }\n if (_event.orphan) {\n const event = _event;\n // @TODO: Should lowercase and whatnot things here instead of copy...\n return { type: \"orphan\", tag: getTag(\"orphan\", event), filter: copy(event) };\n }\n if ((_event.address || _event.topics)) {\n const event = _event;\n const filter = {\n topics: ((event.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n }))\n };\n if (event.address) {\n const addresses = [];\n const promises = [];\n const addAddress = (addr) => {\n if (isHexString(addr)) {\n addresses.push(addr);\n }\n else {\n promises.push((async () => {\n addresses.push(await resolveAddress(addr, provider));\n })());\n }\n };\n if (Array.isArray(event.address)) {\n event.address.forEach(addAddress);\n }\n else {\n addAddress(event.address);\n }\n if (promises.length) {\n await Promise.all(promises);\n }\n filter.address = concisify(addresses.map((a) => a.toLowerCase()));\n }\n return { filter, tag: getTag(\"event\", filter), type: \"event\" };\n }\n return logger.throwArgumentError(\"unknown ProviderEvent\", \"event\", _event);\n}\nfunction getTime() { return (new Date()).getTime(); }\nexport function copyRequest(tx) {\n // @TODO: copy the copy from contracts and use it from this\n return tx;\n}\nexport class AbstractProvider {\n // @TODO: This should be a () => Promise so network can be\n // done when needed; or rely entirely on _detectNetwork?\n constructor(_network) {\n _AbstractProvider_instances.add(this);\n _AbstractProvider_subs.set(this, void 0);\n _AbstractProvider_plugins.set(this, void 0);\n // null=unpaused, true=paused+dropWhilePaused, false=paused\n _AbstractProvider_pausedState.set(this, void 0);\n _AbstractProvider_networkPromise.set(this, void 0);\n _AbstractProvider_anyNetwork.set(this, void 0);\n _AbstractProvider_performCache.set(this, void 0);\n _AbstractProvider_nextTimer.set(this, void 0);\n _AbstractProvider_timers.set(this, void 0);\n _AbstractProvider_disableCcipRead.set(this, void 0);\n if (_network === \"any\") {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, true, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n else if (_network) {\n const network = Network.from(_network);\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(network), \"f\");\n setTimeout(() => { this.emit(\"network\", network, null); }, 0);\n }\n else {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n __classPrivateFieldSet(this, _AbstractProvider_performCache, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_plugins, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_nextTimer, 0, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_timers, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, false, \"f\");\n }\n get provider() { return this; }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").values());\n }\n attachPlugin(plugin) {\n if (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(name)) || null;\n }\n set disableCcipRead(value) { __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, !!value, \"f\"); }\n get disableCcipRead() { return __classPrivateFieldGet(this, _AbstractProvider_disableCcipRead, \"f\"); }\n async ccipReadFetch(tx, calldata, urls) {\n if (this.disableCcipRead || urls.length === 0 || tx.to == null) {\n return null;\n }\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n const errorMessages = [];\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\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 //const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n // value.status = response.statusCode;\n // return value;\n //});\n const request = new FetchRequest(href);\n if (url.indexOf(\"{data}\") === -1) {\n request.body = { data, sender };\n }\n let errorMessage = \"unknown error\";\n const resp = await fetchData(request);\n try {\n const result = resp.bodyJson;\n if (result.data) {\n return result.data;\n }\n if (result.message) {\n errorMessage = result.message;\n }\n }\n catch (error) { }\n // 4xx indicates the result is not present; stop\n if (resp.statusCode >= 400 && resp.statusCode < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${errorMessage}`, \"OFFCHAIN_FAULT\", {\n reason: \"404_MISSING_RESOURCE\",\n transaction: tx, info: { url, errorMessage }\n });\n }\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n return logger.throwError(`error encountered during CCIP fetch: ${errorMessages.map((m) => JSON.stringify(m)).join(\", \")}`, \"OFFCHAIN_FAULT\", {\n reason: \"500_SERVER_ERROR\",\n transaction: tx, info: { urls, errorMessages }\n });\n }\n _wrapTransaction(tx, hash, blockNumber) {\n return tx;\n }\n _detectNetwork() {\n return logger.throwError(\"sub-classes must implement this\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_detectNetwork\"\n });\n }\n async _perform(req) {\n return logger.throwError(`unsupported method: ${req.method}`, \"UNSUPPORTED_OPERATION\", {\n operation: req.method,\n info: req\n });\n }\n // State\n async getBlockNumber() {\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getBlockNumber\" }), \"%response\");\n }\n async _getAddress(address) {\n if (typeof (address) === \"string\") {\n return address;\n }\n return await address.getAddress();\n }\n async _getBlockTag(blockTag) {\n const network = await this.getNetwork();\n if (typeof (blockTag) === \"number\" && Number.isSafeInteger(blockTag) && blockTag < 0) {\n //let blockNumber = await this._getApproxBlockNumber(500);\n let blockNumber = await this.getBlockNumber();\n blockNumber += blockTag;\n if (blockNumber < 0) {\n blockNumber = 0;\n }\n return network.formatter.blockTag(blockNumber);\n }\n return network.formatter.blockTag(blockTag);\n }\n async getNetwork() {\n // No explicit network was set and this is our first time\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") == null) {\n // Detect the current network (shared with all calls)\n const detectNetwork = this._detectNetwork().then((network) => {\n this.emit(\"network\", network, null);\n return network;\n }, (error) => {\n // Reset the networkPromise on failure, so we will try again\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === detectNetwork) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n throw error;\n });\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, detectNetwork, \"f\");\n return await detectNetwork;\n }\n const networkPromise = __classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\");\n const [expected, actual] = await Promise.all([\n networkPromise,\n this._detectNetwork() // The actual connected network\n ]);\n if (expected.chainId !== actual.chainId) {\n if (__classPrivateFieldGet(this, _AbstractProvider_anyNetwork, \"f\")) {\n // The \"any\" network can change, so notify listeners\n this.emit(\"network\", actual, expected);\n // Update the network if something else hasn't already changed it\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === networkPromise) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(actual), \"f\");\n }\n }\n else {\n // Otherwise, we do not allow changes to the underlying network\n logger.throwError(`network changed: ${expected.chainId} => ${actual.chainId} `, \"NETWORK_ERROR\", {\n event: \"changed\"\n });\n }\n }\n return expected.clone().freeze();\n }\n async getFeeData() {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: ((async () => {\n try {\n const gasPrice = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getGasPrice\" });\n return logger.getBigInt(gasPrice, \"%response\");\n }\n catch (error) { }\n return null;\n })())\n });\n let maxFeePerGas = null, maxPriorityFeePerGas = null;\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 maxPriorityFeePerGas = BigInt(\"1500000000\");\n // Allow a network to override their maximum priority fee per gas\n const priorityFeePlugin = (await this.getNetwork()).getPlugin(\"org.ethers.plugins.max-priority-fee\");\n if (priorityFeePlugin) {\n maxPriorityFeePerGas = await priorityFeePlugin.getPriorityFee(this);\n }\n maxFeePerGas = (block.baseFeePerGas * BN_2) + maxPriorityFeePerGas;\n }\n return new FeeData(gasPrice, maxFeePerGas, maxPriorityFeePerGas);\n }\n async _getTransaction(_request) {\n const network = await this.getNetwork();\n // Fill in any addresses\n const request = Object.assign({}, _request, await resolveProperties({\n to: (_request.to ? resolveAddress(_request.to, this) : undefined),\n from: (_request.from ? resolveAddress(_request.from, this) : undefined),\n }));\n return network.formatter.transactionRequest(request);\n }\n async estimateGas(_tx) {\n const transaction = await this._getTransaction(_tx);\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"estimateGas\", transaction\n }), \"%response\");\n }\n async call(_tx) {\n const { tx, blockTag } = await resolveProperties({\n tx: this._getTransaction(_tx),\n blockTag: this._getBlockTag(_tx.blockTag)\n });\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, tx, blockTag, _tx.enableCcipRead ? 0 : -1);\n }\n // Account\n async getBalanceOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBalance\", address, blockTag\n }), \"%response\");\n }\n async getTransactionCountOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getTransactionCount\", address, blockTag\n }), \"%response\");\n }\n async getCode(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getCode\", address, blockTag\n }));\n }\n async getStorageAt(_address, _position, _blockTag) {\n const position = logger.getBigInt(_position);\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getStorageAt\", address, position, blockTag\n }));\n }\n // Write\n async broadcastTransaction(signedTx) {\n throw new Error();\n return {};\n }\n // Queries\n async getBlock(block) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, false);\n if (params == null) {\n return null;\n }\n return format.block(params, this);\n }\n async getBlockWithTransactions(block) {\n const format = (await this.getNetwork()).formatter;\n const params = __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, true);\n if (params == null) {\n return null;\n }\n return format.blockWithTransactions(params, this);\n }\n async getTransaction(hash) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n return format.transactionResponse(params, this);\n }\n async getTransactionReceipt(hash) {\n const format = (await this.getNetwork()).formatter;\n const receipt = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransactionReceipt\", hash });\n if (receipt == null) {\n return null;\n }\n // Some backends did not backfill the effectiveGasPrice into old transactions\n // in the receipt, so we look it up manually and inject it.\n if (receipt.gasPrice == null && receipt.effectiveGasPrice == null) {\n const tx = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n receipt.effectiveGasPrice = tx.gasPrice;\n }\n return format.receipt(receipt, this);\n }\n async _getFilter(filter) {\n // Create a canonical representation of the topics\n const topics = (filter.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const blockHash = (\"blockHash\" in filter) ? filter.blockHash : undefined;\n const lookup = {};\n // Addresses could be async (ENS names or Addressables)\n if (filter.address) {\n if (Array.isArray(filter.address)) {\n lookup.address = Promise.all(filter.address.map((a) => resolveAddress(a, this)));\n }\n else {\n lookup.address = resolveAddress(filter.address, this);\n }\n }\n // Block Tags could be async (i.e. relative)\n const addBlockTag = (key) => {\n if (filter[key] == null) {\n return;\n }\n lookup[key] = this._getBlockTag(filter[key]);\n };\n addBlockTag(\"fromBlock\");\n addBlockTag(\"toBlock\");\n // Wait for all properties to resolve\n const result = await resolveProperties(lookup);\n // Make sure things are canonical\n if (Array.isArray(result.address)) {\n result.address.sort();\n }\n result.topics = topics;\n if (blockHash) {\n if (filter.fromBlock || filter.toBlock) {\n throw new Error(\"invalid filter\");\n }\n result.blockHash = blockHash;\n }\n return result;\n }\n // Bloom-filter Queries\n async getLogs(_filter) {\n const { network, filter } = await resolveProperties({\n network: this.getNetwork(),\n filter: this._getFilter(_filter)\n });\n return (await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getLogs\", filter })).map((l) => {\n return network.formatter.log(l, this);\n });\n }\n // ENS\n _getProvider(chainId) {\n return logger.throwError(\"provider cannot connect to target network\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_getProvider()\"\n });\n }\n async getResolver(name) {\n return await EnsResolver.fromName(this, name);\n }\n async getAvatar(name) {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAvatar();\n }\n return null;\n }\n async resolveName(name) {\n if (typeof (name) === \"string\") {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAddress();\n }\n }\n else {\n const address = await name.getAddress();\n if (address == null) {\n return logger.throwArgumentError(\"Addressable returned no address\", \"name\", name);\n }\n return address;\n }\n return null;\n }\n async lookupAddress(address) {\n throw new Error();\n //return \"TODO\";\n }\n async waitForTransaction(hash, confirms = 1, timeout) {\n if (confirms === 0) {\n return this.getTransactionReceipt(hash);\n }\n return new Promise(async (resolve, reject) => {\n let timer = null;\n const listener = (async (blockNumber) => {\n try {\n const receipt = await this.getTransactionReceipt(hash);\n if (receipt != null) {\n if (blockNumber - receipt.blockNumber + 1 >= confirms) {\n resolve(receipt);\n this.off(\"block\", listener);\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n return;\n }\n }\n }\n catch (error) {\n console.log(\"EEE\", error);\n }\n this.once(\"block\", listener);\n });\n if (timeout != null) {\n timer = setTimeout(() => {\n if (timer == null) {\n return;\n }\n timer = null;\n this.off(\"block\", listener);\n reject(logger.makeError(\"timeout\", \"TIMEOUT\", { reason: \"timeout\" }));\n }, timeout);\n }\n listener(await this.getBlockNumber());\n });\n }\n async waitForBlock(blockTag) {\n throw new Error();\n //return new Block({ }, this);\n }\n _clearTimeout(timerId) {\n const timer = __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").get(timerId);\n if (!timer) {\n return;\n }\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n }\n _setTimeout(_func, timeout = 0) {\n var _a, _b;\n const timerId = (__classPrivateFieldSet(this, _AbstractProvider_nextTimer, (_b = __classPrivateFieldGet(this, _AbstractProvider_nextTimer, \"f\"), _a = _b++, _b), \"f\"), _a);\n const func = () => {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n _func();\n };\n if (this.paused) {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer: null, func, time: timeout });\n }\n else {\n const timer = setTimeout(func, timeout);\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer, func, time: getTime() });\n }\n return timerId;\n }\n _forEachSubscriber(func) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n func(sub.subscriber);\n }\n }\n // Event API; sub-classes should override this; any supported\n // event filter will have been munged into an EventFilter\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"debug\":\n case \"network\":\n return new UnmanagedSubscriber(sub.type);\n case \"block\":\n return new PollingBlockSubscriber(this);\n case \"event\":\n return new PollingEventSubscriber(this, sub.filter);\n case \"transaction\":\n return new PollingTransactionSubscriber(this, sub.hash);\n case \"orphan\":\n return new PollingOrphanSubscriber(this, sub.filter);\n }\n throw new Error(`unsupported event: ${sub.type}`);\n }\n _recoverSubscriber(oldSub, newSub) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n if (sub.subscriber === oldSub) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n sub.subscriber = newSub;\n if (sub.started) {\n newSub.start();\n }\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n newSub.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n break;\n }\n }\n }\n async on(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: false });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async once(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: true });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async emit(event, ...args) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event, args);\n if (!sub) {\n return false;\n }\n ;\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const payload = new EventPayload(this, (once ? null : listener), event);\n try {\n listener.call(this, ...args, payload);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n let total = 0;\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n let result = [];\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (!listener || sub.listeners.length === 0) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const { tag, started, subscriber } = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n else {\n for (const [tag, { started, subscriber }] of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\")) {\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return this.off(event, listener);\n }\n // Sub-classes should override this to shutdown any sockets, etc.\n // but MUST call this super.shutdown.\n async shutdown() {\n // Stop all listeners\n this.removeAllListeners();\n // Shut down all tiemrs\n for (const timerId of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").keys()) {\n this._clearTimeout(timerId);\n }\n }\n get paused() { return (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null); }\n pause(dropWhilePaused) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == !!dropWhilePaused) {\n return;\n }\n return logger.throwError(\"cannot change pause type; resume first\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause\"\n });\n }\n this._forEachSubscriber((s) => s.pause(dropWhilePaused));\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, !!dropWhilePaused, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Clear the timer\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n // Remaining time needed for when we become unpaused\n timer.time = getTime() - timer.time;\n }\n }\n resume() {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == null) {\n return;\n }\n this._forEachSubscriber((s) => s.resume());\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Remaining time when we were paused\n let timeout = timer.time;\n if (timeout < 0) {\n timeout = 0;\n }\n // Start time (in cause paused, so we con compute remaininf time)\n timer.time = getTime();\n // Start the timer\n setTimeout(timer.func, timeout);\n }\n }\n}\n_AbstractProvider_subs = new WeakMap(), _AbstractProvider_plugins = new WeakMap(), _AbstractProvider_pausedState = new WeakMap(), _AbstractProvider_networkPromise = new WeakMap(), _AbstractProvider_anyNetwork = new WeakMap(), _AbstractProvider_performCache = new WeakMap(), _AbstractProvider_nextTimer = new WeakMap(), _AbstractProvider_timers = new WeakMap(), _AbstractProvider_disableCcipRead = new WeakMap(), _AbstractProvider_instances = new WeakSet(), _AbstractProvider_perform = \n// Shares multiple identical requests made during the same 250ms\nasync function _AbstractProvider_perform(req) {\n // Create a tag\n const tag = getTag(req.method, req);\n let perform = __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag);\n if (!perform) {\n perform = this._perform(req);\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").set(tag, perform);\n setTimeout(() => {\n if (__classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag) === perform) {\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").delete(tag);\n }\n }, 250);\n }\n return await perform;\n}, _AbstractProvider_call = async function _AbstractProvider_call(tx, blockTag, attempt) {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", \"OFFCHAIN_FAULT\", {\n reason: \"TOO_MANY_REDIRECTS\",\n transaction: Object.assign({}, tx, { blockTag, enableCcipRead: true })\n });\n }\n const transaction = copyRequest(tx);\n try {\n return hexlify(await this._perform({ method: \"call\", transaction, blockTag }));\n }\n catch (error) {\n // CCIP Read OffchainLookup\n if (!this.disableCcipRead && isCallException(error) && attempt >= 0 && blockTag === \"latest\" && transaction.to != null && dataSlice(error.data, 0, 4) === \"0x556f1830\") {\n const data = error.data;\n const txSender = await resolveAddress(transaction.to, this);\n // Parse the CCIP Read Arguments\n let ccipArgs;\n try {\n ccipArgs = parseOffchainLookup(dataSlice(error.data, 4));\n }\n catch (error) {\n return logger.throwError(error.message, \"OFFCHAIN_FAULT\", {\n reason: \"BAD_DATA\",\n transaction, info: { data }\n });\n }\n // Check the sender of the OffchainLookup matches the transaction\n if (ccipArgs.sender.toLowerCase() !== txSender.toLowerCase()) {\n return logger.throwError(\"CCIP Read sender mismatch\", \"CALL_EXCEPTION\", {\n data, transaction,\n errorSignature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n errorName: \"OffchainLookup\",\n errorArgs: ccipArgs.errorArgs\n });\n }\n const ccipResult = await this.ccipReadFetch(transaction, ccipArgs.calldata, ccipArgs.urls);\n if (ccipResult == null) {\n return logger.throwError(\"CCIP Read failed to fetch data\", \"OFFCHAIN_FAULT\", {\n reason: \"FETCH_FAILED\",\n transaction, info: { data: error.data, errorArgs: ccipArgs.errorArgs }\n });\n }\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, {\n to: txSender,\n data: concat([\n ccipArgs.selector, encodeBytes([ccipResult, ccipArgs.extraData])\n ]),\n }, blockTag, attempt + 1);\n }\n throw error;\n }\n}, _AbstractProvider_getBlock = async function _AbstractProvider_getBlock(block, includeTransactions) {\n const format = (await this.getNetwork()).formatter;\n if (isHexString(block, 32)) {\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockHash: block, includeTransactions\n });\n }\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockTag: format.blockTag(block), includeTransactions\n });\n}, _AbstractProvider_hasSub = async function _AbstractProvider_hasSub(event, emitArgs) {\n let sub = await getSubscription(event, this);\n // This is a log that is removing an existing log; we actually want\n // to emit an orphan event for the removed log\n if (sub.type === \"event\" && emitArgs && emitArgs.length > 0 && emitArgs[0].removed === true) {\n sub = await getSubscription({ orphan: \"drop-log\", log: emitArgs[0] }, this);\n }\n return __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(sub.tag) || null;\n}, _AbstractProvider_getSub = async function _AbstractProvider_getSub(event) {\n const subscription = await getSubscription(event, this);\n // Prevent tampering with our tag in any subclass' _getSubscriber\n const tag = subscription.tag;\n let sub = __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(tag);\n if (!sub) {\n const subscriber = this._getSubscriber(subscription);\n const addressableMap = new WeakMap();\n const nameMap = new Map();\n sub = { subscriber, tag, addressableMap, nameMap, started: false, listeners: [] };\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").set(tag, sub);\n }\n return sub;\n};\nfunction _parseString(result, start) {\n try {\n const bytes = _parseBytes(result, start);\n if (bytes) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction _parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n try {\n const offset = logger.getNumber(dataSlice(result, start, start + 32));\n const length = logger.getNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\nconst empty = new Uint8Array([]);\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\nconst zeros = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseOffchainLookup(data) {\n const result = {\n sender: \"\", urls: [], calldata: \"\", selector: \"\", extraData: \"\", errorArgs: []\n };\n if (dataLength(data) < 5 * 32) {\n throw new Error(\"insufficient OffchainLookup data\");\n }\n const sender = dataSlice(data, 0, 32);\n if (dataSlice(sender, 0, 12) !== dataSlice(zeros, 0, 12)) {\n throw new Error(\"corrupt OffchainLookup sender\");\n }\n result.sender = dataSlice(sender, 12);\n // Read the URLs from the response\n try {\n const urls = [];\n const urlsOffset = logger.getNumber(dataSlice(data, 32, 64));\n const urlsLength = logger.getNumber(dataSlice(data, urlsOffset, urlsOffset + 32));\n const urlsData = dataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n throw new Error(\"abort\");\n }\n urls.push(url);\n }\n result.urls = urls;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup urls\");\n }\n // Get the CCIP calldata to forward\n try {\n const calldata = _parseBytes(data, 64);\n if (calldata == null) {\n throw new Error(\"abort\");\n }\n result.calldata = calldata;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup calldata\");\n }\n // Get the callbackSelector (bytes4)\n if (dataSlice(data, 100, 128) !== dataSlice(zeros, 0, 28)) {\n throw new Error(\"corrupt OffchainLookup callbaackSelector\");\n }\n result.selector = dataSlice(data, 96, 100);\n // Get the extra data to send back to the contract as context\n try {\n const extraData = _parseBytes(data, 128);\n if (extraData == null) {\n throw new Error(\"abort\");\n }\n result.extraData = extraData;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup extraData\");\n }\n result.errorArgs = \"sender,urls,calldata,selector,extraData\".split(/,/).map((k) => result[k]);\n return result;\n}\n//# sourceMappingURL=abstract-provider.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AbstractSigner_instances, _AbstractSigner_checkProvider, _AbstractSigner_fromify, _VoidSigner_instances, _VoidSigner_throwUnsupported, _WrappedSigner_signer;\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class AbstractSigner {\n constructor(provider) {\n _AbstractSigner_instances.add(this);\n defineProperties(this, { provider: (provider || null) });\n }\n async getBalance(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getBalance\").getBalanceOf(await this.getAddress(), blockTag);\n }\n async getTransactionCount(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getTransactionCount\").getTransactionCountOf(await this.getAddress(), blockTag);\n }\n async estimateGas(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"estimateGas\").estimateGas(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async call(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"call\").call(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async populateTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"populateTransaction\");\n //let pop: Deferrable = Object.assign({ }, tx);\n let pop = Object.assign({}, tx);\n if (pop.to != null) {\n pop.to = provider.resolveName(pop.to).then((to) => {\n if (to == null) {\n return logger.throwArgumentError(\"transaction to ENS name not configured\", \"tx.to\", pop.to);\n }\n return to;\n });\n }\n if (pop.from != null) {\n const from = pop.from;\n pop.from = Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n return logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n return address;\n });\n }\n if (pop.nonce == null) {\n pop.nonce = this.getTransactionCount();\n }\n pop = resolveProperties(pop);\n if (pop.gasLimit == null) {\n pop.gasLimit = provider.estimateGas(pop);\n }\n pop = resolveProperties(pop);\n //@TODO: Copy logic from AbstractSigner in v5\n return await resolveProperties(pop);\n }\n async resolveName(name) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"resolveName\");\n return await provider.resolveName(name);\n }\n async sendTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"sendTransaction\");\n const txObj = Transaction.from(await this.populateTransaction(tx));\n return await provider.broadcastTransaction(await this.signTransaction(txObj));\n }\n}\n_AbstractSigner_instances = new WeakSet(), _AbstractSigner_checkProvider = function _AbstractSigner_checkProvider(operation) {\n if (this.provider) {\n return this.provider;\n }\n return logger.throwError(\"missing provider\", \"UNSUPPORTED_OPERATION\", { operation });\n}, _AbstractSigner_fromify = async function _AbstractSigner_fromify(tx) {\n tx = Object.assign({}, tx);\n const actions = [];\n if (tx.from != null) {\n const from = tx.from;\n actions.push(Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n tx.from = address;\n }));\n }\n await Promise.all(actions);\n return tx;\n};\nexport class VoidSigner extends AbstractSigner {\n constructor(address, provider) {\n super(provider);\n _VoidSigner_instances.add(this);\n defineProperties(this, { address });\n }\n async getAddress() { return this.address; }\n connect(provider) {\n return new VoidSigner(this.address, provider);\n }\n async signTransaction(tx) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"transactions\", \"signTransaction\");\n }\n async signMessage(message) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"messages\", \"signMessage\");\n }\n async signTypedData(domain, types, value) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"typed-data\", \"signTypedData\");\n }\n}\n_VoidSigner_instances = new WeakSet(), _VoidSigner_throwUnsupported = function _VoidSigner_throwUnsupported(suffix, operation) {\n return logger.throwError(`VoidSigner cannot sign ${suffix}`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n};\nexport class WrappedSigner extends AbstractSigner {\n //get provider(): null | Provider { return this.#signer.provider; }\n constructor(signer) {\n super(signer.provider);\n _WrappedSigner_signer.set(this, void 0);\n __classPrivateFieldSet(this, _WrappedSigner_signer, signer, \"f\");\n }\n async getAddress() {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").getAddress();\n }\n connect(provider) {\n return new WrappedSigner(__classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").connect(provider));\n }\n async signTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTransaction(tx);\n }\n async sendTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").sendTransaction(tx);\n }\n async signMessage(message) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signMessage(message);\n }\n async signTypedData(domain, types, value) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTypedData(domain, types, value);\n }\n}\n_WrappedSigner_signer = new WeakMap();\n//# sourceMappingURL=abstract-signer.js.map","// Show the throttle message only once\nconst shown = new Set();\nexport function showThrottleMessage(service) {\n if (shown.has(service)) {\n return;\n }\n shown.add(service);\n console.log(\"========= NOTICE =========\");\n console.log(`Request-Rate Exceeded for ${service} (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//# sourceMappingURL=community.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FilterIdSubscriber_instances, _FilterIdSubscriber_provider, _FilterIdSubscriber_filterIdPromise, _FilterIdSubscriber_poller, _FilterIdSubscriber_network, _FilterIdSubscriber_poll, _FilterIdSubscriber_teardown, _FilterIdEventSubscriber_event;\nimport { PollingEventSubscriber } from \"./subscriber-polling.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport class FilterIdSubscriber {\n constructor(provider) {\n _FilterIdSubscriber_instances.add(this);\n _FilterIdSubscriber_provider.set(this, void 0);\n _FilterIdSubscriber_filterIdPromise.set(this, void 0);\n _FilterIdSubscriber_poller.set(this, void 0);\n _FilterIdSubscriber_network.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_poller, __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, null, \"f\");\n }\n _subscribe(provider) {\n throw new Error(\"subclasses must override this\");\n }\n _emitResults(provider, result) {\n throw new Error(\"subclasses must override this\");\n }\n _recover(provider) {\n throw new Error(\"subclasses must override this\");\n }\n start() { __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).call(this, -2); }\n stop() {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n if (dropWhilePaused) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n resume() { this.start(); }\n}\n_FilterIdSubscriber_provider = new WeakMap(), _FilterIdSubscriber_filterIdPromise = new WeakMap(), _FilterIdSubscriber_poller = new WeakMap(), _FilterIdSubscriber_network = new WeakMap(), _FilterIdSubscriber_instances = new WeakSet(), _FilterIdSubscriber_poll = async function _FilterIdSubscriber_poll(blockNumber) {\n try {\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\") == null) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, this._subscribe(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")), \"f\");\n }\n const filterId = await __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterId == null) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")._recoverSubscriber(this, this._recover(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")));\n return;\n }\n const network = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").getNetwork();\n if (!__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\")) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, network, \"f\");\n }\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\").chainId !== network.chainId) {\n throw new Error(\"chaid changed\");\n }\n const result = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_getFilterChanges\", [filterId]);\n await this._emitResults(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\"), result);\n }\n catch (error) {\n console.log(\"@TODO\", error);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").once(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n}, _FilterIdSubscriber_teardown = function _FilterIdSubscriber_teardown() {\n const filterIdPromise = __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterIdPromise) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n filterIdPromise.then((filterId) => {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_uninstallFilter\", [filterId]);\n });\n }\n};\nexport class FilterIdEventSubscriber extends FilterIdSubscriber {\n constructor(provider, filter) {\n super(provider);\n _FilterIdEventSubscriber_event.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdEventSubscriber_event, copy(filter), \"f\");\n }\n _recover(provider) {\n return new PollingEventSubscriber(provider, __classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"));\n }\n async _subscribe(provider) {\n const filterId = await provider.send(\"eth_newFilter\", [__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\")]);\n console.log(\"____SUB\", filterId);\n return filterId;\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n const log = network.formatter.log(result, provider);\n provider.emit(__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"), log);\n }\n }\n}\n_FilterIdEventSubscriber_event = new WeakMap();\nexport class FilterIdPendingSubscriber extends FilterIdSubscriber {\n async _subscribe(provider) {\n return await provider.send(\"eth_newPendingTransactionFilter\", []);\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n provider.emit(\"pending\", network.formatter.hash(result));\n }\n }\n}\n//# sourceMappingURL=subscriber-filterid.js.map","// @TODO:\n// - Add the batching API\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _JsonRpcApiProvider_nextId, _JsonRpcApiProvider_options, _JsonRpcProvider_connect, _JsonRpcProvider_pollingInterval;\n// https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/ethereum/eth1.0-apis/assembled-spec/openrpc.json&uiSchema%5BappBar%5D%5Bui:splitView%5D=true&uiSchema%5BappBar%5D%5Bui:input%5D=false&uiSchema%5BappBar%5D%5Bui:examplesDropdown%5D=false\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { TypedDataEncoder } from \"@ethersproject/hash\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { AbstractProvider, UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { FilterIdEventSubscriber, FilterIdPendingSubscriber } from \"./subscriber-filterid.js\";\nimport { logger } from \"./logger.js\";\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nconst Primitive = \"bigint,boolean,function,number,string,symbol\".split(/,/g);\n//const Methods = \"getAddress,then\".split(/,/g);\nfunction deepCopy(value) {\n if (value == null || Primitive.indexOf(typeof (value)) >= 0) {\n return value;\n }\n // Keep any Addressable\n if (typeof (value.getAddress) === \"function\") {\n return value;\n }\n if (Array.isArray(value)) {\n return (value.map(deepCopy));\n }\n if (typeof (value) === \"object\") {\n return Object.keys(value).reduce((accum, key) => {\n accum[key] = value[key];\n return accum;\n }, {});\n }\n throw new Error(`should not happen: ${value} (${typeof (value)})`);\n}\nfunction getLowerCase(value) {\n if (value) {\n return value.toLowerCase();\n }\n return value;\n}\nfunction isPollable(value) {\n return (value && typeof (value.pollingInterval) === \"number\");\n}\nconst defaultOptions = {\n // Default to use filter ID (the FilterIdSubscriber will\n // fallback onto polling if subscription fails)\n polling: false,\n // Maximum batch size (in bytes)\n batchMaxSize: (1 << 20),\n // How long to wait before dispatching a new batch\n batchStallTime: 250,\n};\n// @TODO: Unchecked Signers\nexport class JsonRpcSigner {\n constructor(provider, address) {\n defineProperties(this, { provider, address });\n }\n connect(provider) {\n return logger.throwError(\"cannot reconnect JsonRpcSigner\", \"UNSUPPORTED_OPERATION\", {\n operation: \"signer.connect\"\n });\n }\n async getAddress() {\n return this.address;\n }\n async getNetwork() {\n return await this.provider.getNetwork();\n }\n async getFeeData() {\n return await this.provider.getFeeData();\n }\n async estimateGas(tx) {\n return await this.provider.estimateGas(tx);\n }\n async call(tx) {\n return await this.provider.call(tx);\n }\n async resolveName(name) {\n return await this.provider.resolveName(name);\n }\n async getBalance(blockTag) {\n return await this.provider.getBalanceOf(this.address);\n }\n async getTransactionCount(blockTag) {\n return await this.provider.getTransactionCountOf(this.address);\n }\n // Returns just the hash of the transaction after sent, which is what\n // the bare JSON-RPC API does;\n async sendUncheckedTransaction(_tx) {\n const tx = deepCopy(_tx);\n const promises = [];\n // Make sure the from matches the sender\n if (tx.from) {\n const _from = tx.from;\n promises.push((async () => {\n const from = await resolveAddress(_from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n })());\n }\n else {\n tx.from = this.address;\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 (tx.gasLimit == null) {\n promises.push((async () => {\n tx.gasLimit = await this.provider.estimateGas(Object.assign(Object.assign({}, tx), { from: this.address }));\n })());\n }\n // The address may be an ENS name or Addressable\n if (tx.to != null) {\n const _to = tx.to;\n promises.push((async () => {\n tx.to = await resolveAddress(_to, this.provider);\n })());\n }\n // Wait until all of our properties are filled in\n if (promises.length) {\n await Promise.all(promises);\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return this.provider.send(\"eth_sendTransaction\", [hexTx]);\n }\n async sendTransaction(tx) {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider.getBlockNumber();\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(tx);\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 (new Promise((resolve, reject) => {\n const timeouts = [1000, 100];\n const checkTx = async () => {\n // Try getting the transaction\n const tx = await this.provider.getTransaction(hash);\n if (tx != null) {\n resolve(this.provider._wrapTransaction(tx, hash, blockNumber));\n return;\n }\n // Wait another 4 seconds\n this.provider._setTimeout(() => { checkTx(); }, timeouts.pop() || 4000);\n };\n checkTx();\n }));\n }\n async signTransaction(_tx) {\n const tx = deepCopy(_tx);\n // Make sure the from matches the sender\n if (tx.from) {\n const from = await resolveAddress(tx.from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n return logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n }\n else {\n tx.from = this.address;\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return await this.provider.send(\"eth_sign_Transaction\", [hexTx]);\n }\n async signMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"personal_sign\", [\n hexlify(message), this.address.toLowerCase()\n ]);\n }\n async signTypedData(domain, types, _value) {\n const value = deepCopy(_value);\n // Populate any ENS names (in-place)\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (value) => {\n const address = await resolveAddress(value);\n if (address == null) {\n return logger.throwArgumentError(\"TypedData does not support null address\", \"value\", value);\n }\n return address;\n });\n return await this.provider.send(\"eth_signTypedData_v4\", [\n this.address.toLowerCase(),\n JSON.stringify(TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n }\n async unlock(password) {\n return this.provider.send(\"personal_unlockAccount\", [\n this.address.toLowerCase(), password, null\n ]);\n }\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n async _legacySignMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"eth_sign\", [\n this.address.toLowerCase(), hexlify(message)\n ]);\n }\n}\nexport class JsonRpcApiProvider extends AbstractProvider {\n constructor(network) {\n super(network);\n _JsonRpcApiProvider_nextId.set(this, void 0);\n _JsonRpcApiProvider_options.set(this, void 0);\n __classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, 1, \"f\");\n __classPrivateFieldSet(this, _JsonRpcApiProvider_options, Object.assign({}, defaultOptions), \"f\");\n }\n _getOptions(key) {\n return __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key];\n }\n _setOptions(options) {\n // Validate all the options\n for (const _key in options) {\n const key = _key;\n const value = options[key];\n if (typeof (value) !== typeof (__classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key])) {\n return logger.throwArgumentError(\"invalid option value\", `options.${key}`, value);\n }\n }\n // Update the values\n for (const _key in options) {\n const key = _key;\n __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key] = (options[key]);\n }\n }\n prepareRequest(method, params) {\n var _a, _b;\n return {\n method, params, id: (__classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, (_b = __classPrivateFieldGet(this, _JsonRpcApiProvider_nextId, \"f\"), _a = _b++, _b), \"f\"), _a), jsonrpc: \"2.0\"\n };\n }\n // Sends the payload to the backend\n //async sendPayload(payload: any): Promise {\n // throw new Error(\"sub-class must implement this\");\n //}\n async send(method, params) {\n // @TODO: This should construct and queue the payload\n throw new Error(\"sub-class must implement this\");\n }\n async getSigner(address = 0) {\n const network = await this.getNetwork();\n const accounts = await this.send(\"eth_accounts\", []);\n // Account index\n if (typeof (address) === \"number\") {\n if (address > accounts.length) {\n throw new Error(\"no such account\");\n }\n return new JsonRpcSigner(this, accounts[address]);\n }\n // Account address\n address = network.formatter.address(address);\n for (const account of accounts) {\n if (network.formatter.address(account) === account) {\n return new JsonRpcSigner(this, account);\n }\n }\n throw new Error(\"invalid account\");\n }\n // Sub-classes can override this; it detects the *actual* network we\n // are connected to\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" })));\n }\n _getSubscriber(sub) {\n // Pending Filters aren't availble via polling\n if (sub.type === \"pending\") {\n return new FilterIdPendingSubscriber(this);\n }\n if (sub.type === \"event\") {\n return new FilterIdEventSubscriber(this, sub.filter);\n }\n // Orphaned Logs are handled automatically, by the filter, since\n // logs with removed are emitted by it\n if (sub.type === \"orphan\" && sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"orphan\");\n }\n return super._getSubscriber(sub);\n }\n getRpcTransaction(tx) {\n const result = {};\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n let dstKey = key;\n if (key === \"gasLimit\") {\n dstKey = \"gas\";\n }\n result[dstKey] = quantity(tx[key]);\n });\n // Make sure addresses and data are lowercase\n [\"from\", \"to\", \"data\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n result[key] = hexlify(tx[key]);\n });\n // Normalize the access list object\n if (tx.accessList) {\n result[\"accessList\"] = accessListify(tx.accessList);\n }\n return result;\n }\n getRpcRequest(req) {\n switch (req.method) {\n case \"chainId\":\n return { method: \"eth_chainId\", args: [] };\n case \"getBlockNumber\":\n return { method: \"eth_blockNumber\", args: [] };\n case \"getGasPrice\":\n return { method: \"eth_gasPrice\", args: [] };\n case \"getBalance\":\n return {\n method: \"eth_getBalance\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getTransactionCount\":\n return {\n method: \"eth_getTransactionCount\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getCode\":\n return {\n method: \"eth_getCode\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getStorageAt\":\n return {\n method: \"eth_getStorageAt\",\n args: [\n getLowerCase(req.address),\n (\"0x\" + req.position.toString(16)),\n req.blockTag\n ]\n };\n case \"sendTransaction\":\n return {\n method: \"eth_sendRawTransaction\",\n args: [req.signedTransaction]\n };\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return {\n method: \"eth_getBlockByNumber\",\n args: [req.blockTag, !!req.includeTransactions]\n };\n }\n else if (\"blockHash\" in req) {\n return {\n method: \"eth_getBlockByHash\",\n args: [req.blockHash, !!req.includeTransactions]\n };\n }\n break;\n case \"getTransaction\":\n return {\n method: \"eth_getTransactionByHash\",\n args: [req.hash]\n };\n case \"getTransactionReceipt\":\n return {\n method: \"eth_getTransactionReceipt\",\n args: [req.hash]\n };\n case \"call\":\n return {\n method: \"eth_call\",\n args: [this.getRpcTransaction(req.transaction), req.blockTag]\n };\n case \"estimateGas\": {\n return {\n method: \"eth_estimateGas\",\n args: [this.getRpcTransaction(req.transaction)]\n };\n }\n case \"getLogs\":\n if (req.filter && req.filter.address != null) {\n if (Array.isArray(req.filter.address)) {\n req.filter.address = req.filter.address.map(getLowerCase);\n }\n else {\n req.filter.address = getLowerCase(req.filter.address);\n }\n }\n return { method: \"eth_getLogs\", args: [req.filter] };\n }\n return null;\n }\n getRpcError(method, args, error) {\n if (method === \"eth_call\") {\n const result = spelunkData(error);\n if (result) {\n // @TODO: Extract errorSignature, errorName, errorArgs, reason if\n // it is Error(string) or Panic(uint25)\n return logger.makeError(\"execution reverted during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: result.data,\n transaction: args[0]\n });\n }\n return logger.makeError(\"missing revert data during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: \"0x\", transaction: args[0], info: { error }\n });\n }\n if (method === \"eth_estimateGas\") {\n }\n const message = JSON.stringify(spelunkMessage(error));\n if (message.match(/insufficient funds|base fee exceeds gas limit/)) {\n return logger.makeError(\"insufficient funds for intrinsic transaction cost\", \"INSUFFICIENT_FUNDS\", {\n transaction: args[0]\n });\n }\n if (message.match(/nonce/) && message.match(/too low/)) {\n return logger.makeError(\"nonce has already been used\", \"NONCE_EXPIRED\", {\n transaction: args[0]\n });\n }\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction/) && message.match(/underpriced/)) {\n return logger.makeError(\"replacement fee too low\", \"REPLACEMENT_UNDERPRICED\", {\n transaction: args[0]\n });\n }\n if (message.match(/only replay-protected/)) {\n return logger.makeError(\"legacy pre-eip-155 transactions not supported\", \"UNSUPPORTED_OPERATION\", {\n operation: method, info: { transaction: args[0] }\n });\n }\n if (method === \"estimateGas\" && message.match(/gas required exceeds allowance|always failing transaction|execution reverted/)) {\n return logger.makeError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", \"UNPREDICTABLE_GAS_LIMIT\", {\n transaction: args[0]\n });\n }\n return error;\n }\n async _perform(req) {\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 (req.method === \"call\" || req.method === \"estimateGas\") {\n let tx = req.transaction;\n if (tx && tx.type != null && logger.getBigInt(tx.type)) {\n // If there are no EIP-1559 properties, it might be non-EIP-a559\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 req = Object.assign({}, req, {\n transaction: Object.assign({}, tx, { type: undefined })\n });\n }\n }\n }\n }\n const request = this.getRpcRequest(req);\n if (request != null) {\n this.emit(\"debug\", { type: \"sendRequest\", request });\n try {\n const result = await this.send(request.method, request.args);\n //console.log(\"RR\", result);\n this.emit(\"debug\", { type: \"getResponse\", result });\n return result;\n }\n catch (error) {\n this.emit(\"debug\", { type: \"getError\", error });\n throw this.getRpcError(request.method, request.args, error);\n }\n }\n return super._perform(req);\n }\n}\n_JsonRpcApiProvider_nextId = new WeakMap(), _JsonRpcApiProvider_options = new WeakMap();\nexport class JsonRpcProvider extends JsonRpcApiProvider {\n constructor(url, network) {\n if (url == null) {\n url = \"http:/\\/localhost:8545\";\n }\n super(network);\n _JsonRpcProvider_connect.set(this, void 0);\n _JsonRpcProvider_pollingInterval.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, { request: new FetchRequest(url) }, \"f\");\n }\n else {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, Object.assign({}, url), \"f\");\n __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request = __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request.clone();\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, 4000, \"f\");\n }\n async send(method, params) {\n params = copy(params);\n // Configure a POST connection for the requested method\n const connection = Object.assign({}, __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\"));\n connection.request = connection.request.clone();\n connection.request.body = this.prepareRequest(method, params);\n const response = await fetchData(connection);\n response.assertOk();\n const result = response.bodyJson;\n if (\"error\" in result) {\n return logger.throwError(\"error from JSON-RPC\", \"UNKNOWN_ERROR\", {\n result\n });\n }\n return result.result;\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\"); }\n set pollingInterval(value) {\n if (!Number.isInteger(value) || value < 0) {\n throw new Error(\"invalid interval\");\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, value, \"f\");\n this._forEachSubscriber((sub) => {\n if (isPollable(sub)) {\n sub.pollingInterval = __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\");\n }\n });\n }\n}\n_JsonRpcProvider_connect = new WeakMap(), _JsonRpcProvider_pollingInterval = new WeakMap();\n// This class should only be used when it is not possible for the\n// underlying network to change, such as with INFURA. If you are\n// using MetaMask or some other client which allows users to change\n// their network DO NOT USE THIS. Bad things will happen.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n constructor(url, network) {\n super(url, network);\n defineProperties(this, { network });\n }\n async _detectNetwork() {\n return this.network;\n }\n}\nfunction spelunkData(value) {\n if (value == null) {\n return null;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\" && value.message.match(\"reverted\") && isHexString(value.data)) {\n return { message: value.message, data: value.data };\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n const result = spelunkData(value[key]);\n if (result) {\n return result;\n }\n }\n return null;\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return spelunkData(JSON.parse(value));\n }\n catch (error) { }\n }\n return null;\n}\nfunction _spelunkMessage(value, result) {\n if (value == null) {\n return;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\") {\n result.push(value.message);\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n _spelunkMessage(value[key], result);\n }\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return _spelunkMessage(JSON.parse(value), result);\n }\n catch (error) { }\n }\n}\nfunction spelunkMessage(value) {\n const result = [];\n _spelunkMessage(value, result);\n return result;\n}\n//# sourceMappingURL=provider-jsonrpc.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth\";\n case \"matic\":\n return \"rpc.ankr.com/polygon\";\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AnkrProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const connection = AnkrProvider.getConnection(network, apiKey);\n super(connection, network);\n defineProperties(this, { apiKey });\n // Ankr does not support filterId, so we force polling\n super._setOptions({ polling: true });\n }\n _getProvider(chainId) {\n try {\n return new AnkrProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"AnkrProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=provider-ankr.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.alchemyapi.io\";\n case \"ropsten\":\n return \"eth-ropsten.alchemyapi.io\";\n case \"rinkeby\":\n return \"eth-rinkeby.alchemyapi.io\";\n case \"goerli\":\n return \"eth-goerli.alchemyapi.io\";\n case \"kovan\":\n return \"eth-kovan.alchemyapi.io\";\n case \"matic\":\n return \"polygon-mainnet.g.alchemy.com\";\n case \"maticmum\":\n return \"polygon-mumbai.g.alchemy.com\";\n case \"arbitrum\":\n return \"arb-mainnet.g.alchemy.com\";\n case \"arbitrum-rinkeby\":\n return \"arb-rinkeby.g.alchemy.com\";\n case \"optimism\":\n return \"opt-mainnet.g.alchemy.com\";\n case \"optimism-kovan\":\n return \"opt-kovan.g.alchemy.com\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AlchemyProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n super(AlchemyProvider.getConnection(network, apiKey), network);\n defineProperties(this, { apiKey });\n }\n _getProvider(chainId) {\n try {\n return new AlchemyProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v2/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"alchemy\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n}\n//# sourceMappingURL=provider-alchemy.js.map","import { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nexport class CloudflareProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\") {\n const network = Network.from(_network);\n if (network.name !== \"homestead\") {\n return logger.throwArgumentError(\"unsupported network\", \"network\", _network);\n }\n super(\"https:/\\/cloudflare-eth.com/\", network);\n }\n}\n//# sourceMappingURL=provider-cloudflare.js.map","import { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { isError } from \"@ethersproject/logger\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nif (false) {\n console.log(isHexString, isError);\n} // @TODO\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { NetworkPlugin } from \"./plugins-network.js\";\nimport { logger } from \"./logger.js\";\nconst defaultApiKey = \"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB\";\nconst EtherscanPluginId = \"org.ethers.plugins.etherscan\";\nexport class EtherscanPlugin extends NetworkPlugin {\n constructor(baseUrl, communityApiKey) {\n super(EtherscanPluginId);\n //if (communityApiKey == null) { communityApiKey = null; }\n defineProperties(this, { baseUrl, communityApiKey });\n }\n clone() {\n return new EtherscanPlugin(this.baseUrl, this.communityApiKey);\n }\n}\nexport class EtherscanProvider extends AbstractProvider {\n constructor(_network, apiKey) {\n super();\n const network = Network.from(_network);\n if (apiKey == null) {\n const plugin = network.getPlugin(EtherscanPluginId);\n if (plugin) {\n apiKey = plugin.communityApiKey;\n }\n else {\n apiKey = defaultApiKey;\n }\n }\n defineProperties(this, { apiKey, network });\n // Test that the network is supported by Etherscan\n this.getBaseUrl();\n }\n getBaseUrl() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return plugin.baseUrl;\n }\n switch (this.network.name) {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"ropsten\":\n return \"https:/\\/api-ropsten.etherscan.io\";\n case \"rinkeby\":\n return \"https:/\\/api-rinkeby.etherscan.io\";\n case \"kovan\":\n return \"https:/\\/api-kovan.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n default:\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network);\n }\n getUrl(module, params) {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${key}=${value}`;\n }\n return accum;\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${this.apiKey}` : \"\");\n return `${this.getBaseUrl()}/api?module=${module}${query}${apiKey}`;\n }\n getPostUrl() {\n return `${this.getBaseUrl()}/api`;\n }\n getPostData(module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n async detectNetwork() {\n return this.network;\n }\n async fetch(module, params, post) {\n const url = (post ? this.getPostUrl() : this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params) : null);\n /*\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n */\n const request = new FetchRequest(url);\n const connection = {\n request,\n throttleSlotInterval: 1000,\n processResponse: async (request, response) => {\n const result = response.hasBody() ? JSON.parse(toUtf8String(response.body)) : {};\n const throttle = ((typeof (result.result) === \"string\") ? result.result : \"\").toLowerCase().indexOf(\"rate limit\") >= 0;\n if (module === \"proxy\") {\n // This JSON response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && throttle) {\n response.throwThrottleError(result.result);\n }\n }\n else {\n if (throttle) {\n response.throwThrottleError(result.result);\n }\n }\n return response;\n },\n };\n if (payload) {\n request.setHeader(\"content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n request.body = Object.keys(payload).map((k) => `${k}=${payload[k]}`).join(\"&\");\n }\n const response = await fetchData(connection);\n response.assertOk();\n if (!response.hasBody()) {\n throw new Error();\n }\n /*\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n */\n const result = JSON.parse(toUtf8String(response.body));\n if (module === \"proxy\") {\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n if (result.error) {\n // @TODO: not any\n const error = new Error(result.error.message || \"unknown error\");\n if (result.error.code) {\n error.code = result.error.code;\n }\n if (result.error.data) {\n error.data = result.error.data;\n }\n throw error;\n }\n return result.result;\n }\n else {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n if (result.status != 1 || result.message != \"OK\") {\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n // if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n // error.throttleRetry = true;\n // }\n throw error;\n }\n return result.result;\n }\n }\n // The transaction has already been sanitized by the calls in Provider\n _getTransactionPostData(transaction) {\n const result = {};\n for (let key in transaction) {\n if (transaction[key] == null) {\n continue;\n }\n let value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = quantity(hexlify(value));\n }\n else if (key === \"accessList\") {\n value = \"[\" + this.network.formatter.accessList(value).map((set) => {\n return `{address:\"${set.address}\",storageKeys:[\"${set.storageKeys.join('\",\"')}\"]}`;\n }).join(\",\") + \"]\";\n }\n else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n }\n _checkError(req, error, transaction) {\n /*\n let body = \"\";\n if (isError(error, Logger.Errors.SERVER_ERROR) && error.response && error.response.hasBody()) {\n body = toUtf8String(error.response.body);\n }\n console.log(body);\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\" && body) {\n \n // Etherscan keeps changing their string\n if (body.match(/reverted/i) || body.match(/VM execution error/i)) {\n \n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n if (!isHexString(data)) { data = \"0x\"; }\n \n logger.throwError(\"call exception\", Logger.Errors.CALL_EXCEPTION, {\n error, data\n });\n }\n }\n \n // Get the message from any nested error structure\n let message = error.message;\n if (isError(error, Logger.Errors.SERVER_ERROR)) {\n if (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 }\n message = (message || \"\").toLowerCase();\n \n // \"Insufficient funds. The account you tried to send transaction from\n // does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.Errors.INSUFFICIENT_FUNDS, {\n error, transaction, info: { method }\n });\n }\n \n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.Errors.NONCE_EXPIRED, {\n error, transaction, info: { method }\n });\n }\n \n // \"Transaction gas price is too low. There is another transaction with\n // same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.Errors.REPLACEMENT_UNDERPRICED, {\n error, transaction, info: { method }\n });\n }\n \n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.Errors.UNPREDICTABLE_GAS_LIMIT, {\n error, transaction, info: { method }\n });\n }\n */\n throw error;\n }\n async _detectNetwork() {\n return this.network;\n }\n async _perform(req) {\n switch (req.method) {\n case \"chainId\":\n return this.network.chainId;\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: req.address,\n position: req.position,\n tag: req.blockTag\n });\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: req.signedTransaction\n }, true).catch((error) => {\n return this._checkError(req, error, req.signedTransaction);\n });\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: req.blockTag,\n boolean: (req.includeTransactions ? \"true\" : \"false\")\n });\n }\n return logger.throwError(\"getBlock by blockHash not supported by Etherscan\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getBlock(blockHash)\"\n });\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: req.hash\n });\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: req.hash\n });\n case \"call\": {\n if (req.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n case \"estimateGas\": {\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n /*\n case \"getLogs\": {\n // Needs to complain if more than one address is passed in\n const args: Record = { action: \"getLogs\" }\n \n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n \n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n \n if (params.filter.address) {\n args.address = params.filter.address;\n }\n \n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.Errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.Errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n \n const logs: Array = await this.fetch(\"logs\", args);\n \n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n \n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n \n log.blockHash = blocks[log.blockNumber];\n }\n \n return logs;\n }\n */\n default:\n break;\n }\n return super._perform(req);\n }\n async getNetwork() {\n return this.network;\n }\n async getEtherPrice() {\n if (this.network.name !== \"homestead\") {\n return 0.0;\n }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n }\n isCommunityResource() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return (plugin.communityApiKey === this.apiKey);\n }\n return (defaultApiKey === this.apiKey);\n }\n}\n/*\n(async function() {\n const provider = new EtherscanProvider();\n console.log(provider);\n console.log(await provider.getBlockNumber());\n / *\n provider.on(\"block\", (b) => {\n console.log(\"BB\", b);\n });\n console.log(await provider.getTransactionReceipt(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\"));\n\n provider.once(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\", (tx) => {\n console.log(\"TT\", tx);\n });\n * /\n try {\n console.log(await provider.getBlock(100));\n } catch (error) {\n console.log(error);\n }\n\n try {\n console.log(await provider.getBlock(13821768));\n } catch (error) {\n console.log(error);\n }\n\n})();\n*/\n//# sourceMappingURL=provider-etherscan.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultProjectId = \"84842078b09946638c03157f83405213\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"mainnet.infura.io\";\n case \"ropsten\":\n return \"ropsten.infura.io\";\n case \"rinkeby\":\n return \"rinkeby.infura.io\";\n case \"kovan\":\n return \"kovan.infura.io\";\n case \"goerli\":\n return \"goerli.infura.io\";\n case \"matic\":\n return \"polygon-mainnet.infura.io\";\n case \"maticmum\":\n return \"polygon-mumbai.infura.io\";\n case \"optimism\":\n return \"optimism-mainnet.infura.io\";\n case \"optimism-kovan\":\n return \"optimism-kovan.infura.io\";\n case \"arbitrum\":\n return \"arbitrum-mainnet.infura.io\";\n case \"arbitrum-rinkeby\":\n return \"arbitrum-rinkeby.infura.io\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class InfuraProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", projectId, projectSecret) {\n const network = Network.from(_network);\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const connection = InfuraProvider.getConnection(network, projectId, projectSecret);\n super(connection, network);\n defineProperties(this, { projectId, projectSecret });\n }\n _getProvider(chainId) {\n try {\n return new InfuraProvider(chainId, this.projectId, this.projectSecret);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, projectId, projectSecret) {\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v3/${projectId}`);\n request.allowGzip = true;\n if (projectSecret) {\n request.setCredentials(\"\", projectSecret);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (projectId === defaultProjectId) {\n showThrottleMessage(\"InfuraProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\n//# sourceMappingURL=provider-infura.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\n// These are load-balancer-based application IDs\nconst defaultAppIds = {\n homestead: \"6004bcd10040261633ade990\",\n ropsten: \"6004bd4d0040261633ade991\",\n rinkeby: \"6004bda20040261633ade994\",\n goerli: \"6004bd860040261633ade992\",\n};\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.gateway.pokt.network\";\n case \"ropsten\":\n return \"eth-ropsten.gateway.pokt.network\";\n case \"rinkeby\":\n return \"eth-rinkeby.gateway.pokt.network\";\n case \"goerli\":\n return \"eth-goerli.gateway.pokt.network\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nfunction normalizeApiKey(network, _appId, applicationSecretKey, loadBalancer) {\n loadBalancer = !!loadBalancer;\n let community = false;\n let applicationId = _appId;\n if (applicationId == null) {\n applicationId = defaultAppIds[network.name];\n if (applicationId == null) {\n logger.throwArgumentError(\"network does not support default applicationId\", \"applicationId\", _appId);\n }\n loadBalancer = true;\n community = true;\n }\n else if (applicationId === defaultAppIds[network.name]) {\n loadBalancer = true;\n community = true;\n }\n if (applicationSecretKey == null) {\n applicationSecretKey = null;\n }\n return { applicationId, applicationSecretKey, community, loadBalancer };\n}\nexport class PocketProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", _appId, _secretKey, _loadBalancer) {\n const network = Network.from(_network);\n const { applicationId, applicationSecretKey, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n const connection = PocketProvider.getConnection(network, applicationId, applicationSecretKey, loadBalancer);\n super(connection, network);\n defineProperties(this, { applicationId, applicationSecretKey, loadBalancer });\n }\n static getConnection(network, _appId, _secretKey, _loadBalancer) {\n const { applicationId, applicationSecretKey, community, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n let url = `https:/\\/${getHost(network.name)}/v1/`;\n if (loadBalancer) {\n url += \"lb/\";\n }\n url += applicationId;\n const request = new FetchRequest(url);\n request.allowGzip = true;\n if (applicationSecretKey) {\n request.setCredentials(\"\", applicationSecretKey);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (community) {\n showThrottleMessage(\"PocketProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.applicationId === defaultAppIds[this.network.name]);\n }\n}\n//# sourceMappingURL=provider-pocket.js.map","export function shuffle(array) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n}\n//# sourceMappingURL=shuffle.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FallbackProvider_instances, _FallbackProvider_configs, _FallbackProvider_height, _FallbackProvider_initialSyncPromise, _FallbackProvider_getNextConfig, _FallbackProvider_addRunner, _FallbackProvider_initialSync, _FallbackProvider_checkQuorum, _FallbackProvider_waitForQuorum;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { shuffle } from \"./shuffle.js\";\n//const BN_0 = BigInt(\"0\");\nconst BN_1 = BigInt(\"1\");\nconst BN_2 = BigInt(\"2\");\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\nfunction getTime() { return (new Date()).getTime(); }\n;\nconst defaultConfig = { stallTimeout: 400, priority: 1, weight: 1 };\nconst defaultState = {\n blockNumber: -2, requests: 0, lateResponses: 0, errorResponses: 0,\n outOfSync: -1, unsupportedEvents: 0, rollingDuration: 0, score: 0,\n _network: null, _updateNumber: null, _totalTime: 0\n};\nasync function waitForSync(config, blockNumber) {\n while (config.blockNumber < 0 || config.blockNumber < blockNumber) {\n if (!config._updateNumber) {\n config._updateNumber = (async () => {\n const blockNumber = await config.provider.getBlockNumber();\n if (blockNumber > config.blockNumber) {\n config.blockNumber = blockNumber;\n }\n config._updateNumber = null;\n })();\n }\n await config._updateNumber;\n config.outOfSync++;\n }\n}\n// Normalizes a result to a string that can be used to compare against\n// other results using normal string equality\nfunction normalize(network, value, req) {\n switch (req.method) {\n case \"chainId\":\n return logger.getBigInt(value).toString();\n case \"getBlockNumber\":\n return logger.getNumber(value).toString();\n case \"getGasPrice\":\n return logger.getBigInt(value).toString();\n case \"getBalance\":\n return logger.getBigInt(value).toString();\n case \"getTransactionCount\":\n return logger.getNumber(value).toString();\n case \"getCode\":\n return hexlify(value);\n case \"getStorageAt\":\n return hexlify(value);\n case \"getBlock\":\n if (req.includeTransactions) {\n return JSON.stringify(network.formatter.blockWithTransactions(value));\n }\n return JSON.stringify(network.formatter.block(value));\n case \"getTransaction\":\n return JSON.stringify(network.formatter.transactionResponse(value));\n case \"getTransactionReceipt\":\n return JSON.stringify(network.formatter.receipt(value));\n case \"call\":\n return hexlify(value);\n case \"estimateGas\":\n return logger.getBigInt(value).toString();\n case \"getLogs\":\n return JSON.stringify(value.map((v) => network.formatter.log(v)));\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}\n// This strategy picks the highest wieght result, as long as the weight is\n// equal to or greater than quorum\nfunction checkQuorum(quorum, results) {\n const tally = new Map();\n for (const { result, normal, weight } of results) {\n const t = tally.get(normal) || { result, weight: 0 };\n t.weight += weight;\n tally.set(normal, t);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n if (weight >= quorum && weight > bestWeight) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\n/*\nfunction getMean(results: Array): bigint {\n const total = results.reduce((a, r) => (a + BigInt(r.result)), BN_0);\n return total / BigInt(results.length);\n}\n*/\nfunction getMedian(results) {\n // Get the sorted values\n const values = results.map((r) => BigInt(r.result));\n values.sort((a, b) => ((a < b) ? -1 : (b > a) ? 1 : 0));\n const mid = values.length / 2;\n // Odd-length; take the middle value\n if (values.length % 2) {\n return values[mid];\n }\n // Even length; take the ceiling of the mean of the center two values\n return (values[mid - 1] + values[mid] + BN_1) / BN_2;\n}\nfunction getFuzzyMode(quorum, results) {\n if (quorum === 1) {\n return logger.getNumber(getMedian(results), \"%internal\");\n }\n const tally = new Map();\n const add = (result, weight) => {\n const t = tally.get(result) || { result, weight: 0 };\n t.weight += weight;\n tally.set(result, t);\n };\n for (const { weight, result } of results) {\n const r = logger.getNumber(result);\n add(r - 1, weight);\n add(r, weight);\n add(r + 1, weight);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n // Use this result, if this result meets quorum and has either:\n // - a better weight\n // - or equal weight, but the result is larger\n if (weight >= quorum && (weight > bestWeight || (bestResult != null && weight === bestWeight && result > bestResult))) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\nexport class FallbackProvider extends AbstractProvider {\n constructor(providers, network) {\n super(network);\n _FallbackProvider_instances.add(this);\n _FallbackProvider_configs.set(this, void 0);\n _FallbackProvider_height.set(this, void 0);\n _FallbackProvider_initialSyncPromise.set(this, void 0);\n __classPrivateFieldSet(this, _FallbackProvider_configs, providers.map((p) => {\n if (p instanceof AbstractProvider) {\n return Object.assign({ provider: p }, defaultConfig, defaultState);\n }\n else {\n return Object.assign({}, defaultConfig, p, defaultState);\n }\n }), \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_height, -2, \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, null, \"f\");\n this.quorum = 2; //Math.ceil(providers.length / 2);\n this.eventQuorum = 1;\n this.eventWorkers = 1;\n if (this.quorum > __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").reduce((a, c) => (a + c.weight), 0)) {\n logger.throwArgumentError(\"quorum exceed provider wieght\", \"quorum\", this.quorum);\n }\n }\n // @TOOD: Copy these and only return public values\n get providerConfigs() {\n return __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n }\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" }))).freeze();\n }\n async _perform(req) {\n await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_initialSync).call(this);\n // Bootstrap enough to meet quorum\n const running = new Set();\n for (let i = 0; i < this.quorum; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n const result = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n for (const runner of running) {\n runner.done = true;\n }\n return result;\n }\n}\n_FallbackProvider_configs = new WeakMap(), _FallbackProvider_height = new WeakMap(), _FallbackProvider_initialSyncPromise = new WeakMap(), _FallbackProvider_instances = new WeakSet(), _FallbackProvider_getNextConfig = function _FallbackProvider_getNextConfig(configs) {\n // Shuffle the states, sorted by priority\n const allConfigs = __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n shuffle(allConfigs);\n allConfigs.sort((a, b) => (b.priority - a.priority));\n for (const config of allConfigs) {\n if (configs.indexOf(config) === -1) {\n return config;\n }\n }\n return null;\n}, _FallbackProvider_addRunner = function _FallbackProvider_addRunner(running, req) {\n const config = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_getNextConfig).call(this, Array.from(running).map((r) => r.config));\n if (config == null) {\n return null;\n }\n const result = {};\n const runner = {\n config, result, didBump: false, done: false,\n perform: null, staller: null\n };\n const now = getTime();\n runner.perform = (async () => {\n try {\n config.requests++;\n result.result = await config.provider._perform(req);\n }\n catch (error) {\n config.errorResponses++;\n result.error = error;\n }\n if (runner.done) {\n config.lateResponses++;\n }\n const dt = (getTime() - now);\n config._totalTime += dt;\n config.rollingDuration = 0.95 * config.rollingDuration + 0.05 * dt;\n runner.perform = null;\n })();\n runner.staller = (async () => {\n await stall(config.stallTimeout);\n runner.staller = null;\n })();\n running.add(runner);\n return runner;\n}, _FallbackProvider_initialSync = \n// Initializes the blockNumber and network for each runner and\n// blocks until initialized\nasync function _FallbackProvider_initialSync() {\n let initialSync = __classPrivateFieldGet(this, _FallbackProvider_initialSyncPromise, \"f\");\n if (!initialSync) {\n const promises = [];\n __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").forEach((config) => {\n promises.push(waitForSync(config, 0));\n promises.push((async () => {\n config._network = await config.provider.getNetwork();\n })());\n });\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, initialSync = (async () => {\n // Wait for all providers to have a block number and network\n await Promise.all(promises);\n // Check all the networks match\n let chainId = null;\n for (const config of __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\")) {\n const network = (config._network);\n if (chainId == null) {\n chainId = network.chainId;\n }\n else if (network.chainId !== chainId) {\n logger.throwError(\"cannot mix providers on different networks\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FallbackProvider\"\n });\n }\n }\n })(), \"f\");\n }\n await initialSync;\n}, _FallbackProvider_checkQuorum = async function _FallbackProvider_checkQuorum(running, req) {\n // Get all the result objects\n const results = [];\n for (const runner of running) {\n if (\"result\" in runner.result) {\n const result = runner.result.result;\n results.push({\n result,\n normal: normalize((runner.config._network), result, req),\n weight: runner.config.weight\n });\n }\n }\n // Are there enough results to event meet quorum?\n if (results.reduce((a, r) => (a + r.weight), 0) < this.quorum) {\n return undefined;\n }\n switch (req.method) {\n case \"getBlockNumber\": {\n // We need to get the bootstrap block height\n if (__classPrivateFieldGet(this, _FallbackProvider_height, \"f\") === -2) {\n const height = Math.ceil(logger.getNumber(getMedian(__classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").map((c) => ({\n result: c.blockNumber,\n normal: logger.getNumber(c.blockNumber).toString(),\n weight: c.weight\n }))), \"%internal\"));\n __classPrivateFieldSet(this, _FallbackProvider_height, height, \"f\");\n }\n const mode = getFuzzyMode(this.quorum, results);\n if (mode === undefined) {\n return undefined;\n }\n if (mode > __classPrivateFieldGet(this, _FallbackProvider_height, \"f\")) {\n __classPrivateFieldSet(this, _FallbackProvider_height, mode, \"f\");\n }\n return __classPrivateFieldGet(this, _FallbackProvider_height, \"f\");\n }\n case \"getGasPrice\":\n case \"estimateGas\":\n return getMedian(results);\n case \"getBlock\":\n // Pending blocks are mempool dependant and already\n // quite untrustworthy\n if (\"blockTag\" in req && req.blockTag === \"pending\") {\n return results[0].result;\n }\n return checkQuorum(this.quorum, results);\n case \"chainId\":\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n case \"getLogs\":\n return checkQuorum(this.quorum, results);\n case \"call\":\n // @TODO: Check errors\n return checkQuorum(this.quorum, results);\n case \"sendTransaction\":\n throw new Error(\"TODO\");\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}, _FallbackProvider_waitForQuorum = async function _FallbackProvider_waitForQuorum(running, req) {\n if (running.size === 0) {\n throw new Error(\"no runners?!\");\n }\n // Any promises that are interesting to watch for; an expired stall\n // or a successful perform\n const interesting = [];\n //const results: Array = [ ];\n //const errors: Array = [ ];\n let newRunners = 0;\n for (const runner of running) {\n // @TODO: use runner.perfom != null\n /*\n if (\"result\" in runner.result) {\n results.push(runner.result.result);\n } else if (\"error\" in runner.result) {\n errors.push(runner.result.error);\n }\n*/\n // No responses, yet; keep an eye on it\n if (runner.perform) {\n interesting.push(runner.perform);\n }\n // Still stalling...\n if (runner.staller) {\n interesting.push(runner.staller);\n continue;\n }\n // This runner has already triggered another runner\n if (runner.didBump) {\n continue;\n }\n // Got a response (result or error) or stalled; kick off another runner\n runner.didBump = true;\n newRunners++;\n }\n // Check for quorum\n /*\n console.log({ results, errors } );\n if (results.length >= this.quorum) {\n return results[0];\n }\n\n if (errors.length >= this.quorum) {\n return errors[0];\n }\n */\n const value = await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_checkQuorum).call(this, running, req);\n if (value !== undefined) {\n if (value instanceof Error) {\n throw value;\n }\n return value;\n }\n // Add any new runners, because a staller timed out or a result\n // or error response came in.\n for (let i = 0; i < newRunners; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n if (interesting.length === 0) {\n throw new Error(\"quorum not met\");\n // return logger.throwError(\"failed to meet quorum\", \"\", {\n // });\n }\n // Wait for someone to either complete its perform or trigger a stall\n await Promise.race(interesting);\n return await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n};\n//# sourceMappingURL=provider-fallback.js.map","function getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst _WebSocket = getGlobal().WebSocket;\nexport { _WebSocket as WebSocket };\n//# sourceMappingURL=ws-browser.js.map","/**\n * SocketProvider\n *\n * Generic long-lived socket provider.\n *\n * Sub-classing notes\n * - a sub-class MUST call the `_start()` method once connected\n * - a sub-class MUST override the `_write(string)` method\n * - a sub-class MUST call `_processMessage(string)` for each message\n */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SocketSubscriber_provider, _SocketSubscriber_filter, _SocketSubscriber_filterId, _SocketSubscriber_paused, _SocketSubscriber_emitPromise, _SocketEventSubscriber_logFilter, _SocketEventSubscriber_formatter, _SocketProvider_callbacks, _SocketProvider_ready, _SocketProvider_subs, _SocketProvider_pending;\nimport { UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { JsonRpcApiProvider } from \"./provider-jsonrpc.js\";\nexport class SocketSubscriber {\n constructor(provider, filter) {\n _SocketSubscriber_provider.set(this, void 0);\n _SocketSubscriber_filter.set(this, void 0);\n _SocketSubscriber_filterId.set(this, void 0);\n _SocketSubscriber_paused.set(this, void 0);\n _SocketSubscriber_emitPromise.set(this, void 0);\n __classPrivateFieldSet(this, _SocketSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n get filter() { return JSON.parse(__classPrivateFieldGet(this, _SocketSubscriber_filter, \"f\")); }\n start() {\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_subscribe\", this.filter).then((filterId) => {\n ;\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\")._register(filterId, this);\n return filterId;\n }), \"f\");\n }\n stop() {\n (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\")).then((filterId) => {\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_unsubscribe\", [filterId]);\n });\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n }\n // @TODO: pause should trap the current blockNumber, unsub, and on resume use getLogs\n // and resume\n pause(dropWhilePaused) {\n if (!dropWhilePaused) {\n logger.throwError(\"preserve logs while paused not supported by SocketSubscriber yet\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause(false)\"\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_paused, !!dropWhilePaused, \"f\");\n }\n resume() {\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n }\n _handleMessage(message) {\n if (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\") == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _SocketSubscriber_paused, \"f\") === null) {\n let emitPromise = __classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\");\n if (emitPromise == null) {\n emitPromise = this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n }\n else {\n emitPromise = emitPromise.then(async () => {\n await this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, emitPromise.then(() => {\n if (__classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\") === emitPromise) {\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n }), \"f\");\n }\n }\n async _emit(provider, message) {\n throw new Error(\"sub-classes must implemente this; _emit\");\n }\n}\n_SocketSubscriber_provider = new WeakMap(), _SocketSubscriber_filter = new WeakMap(), _SocketSubscriber_filterId = new WeakMap(), _SocketSubscriber_paused = new WeakMap(), _SocketSubscriber_emitPromise = new WeakMap();\nexport class SocketBlockSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newHeads\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"block\", parseInt(message.number));\n }\n}\nexport class SocketPendingSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newPendingTransactions\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"pending\", message);\n }\n}\nexport class SocketEventSubscriber extends SocketSubscriber {\n constructor(provider, filter) {\n super(provider, [\"logs\", filter]);\n _SocketEventSubscriber_logFilter.set(this, void 0);\n _SocketEventSubscriber_formatter.set(this, void 0);\n __classPrivateFieldSet(this, _SocketEventSubscriber_logFilter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketEventSubscriber_formatter, provider.getNetwork().then((network) => network.formatter), \"f\");\n }\n get logFilter() { return JSON.parse(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\")); }\n async _emit(provider, message) {\n const formatter = await __classPrivateFieldGet(this, _SocketEventSubscriber_formatter, \"f\");\n provider.emit(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\"), formatter.log(message, provider));\n }\n}\n_SocketEventSubscriber_logFilter = new WeakMap(), _SocketEventSubscriber_formatter = new WeakMap();\nexport class SocketProvider extends JsonRpcApiProvider {\n constructor(network) {\n super(network);\n _SocketProvider_callbacks.set(this, void 0);\n _SocketProvider_ready.set(this, void 0);\n // Maps each filterId to its subscriber\n _SocketProvider_subs.set(this, void 0);\n // If any events come in before a subscriber has finished\n // registering, queue them\n _SocketProvider_pending.set(this, void 0);\n __classPrivateFieldSet(this, _SocketProvider_callbacks, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_ready, false, \"f\");\n __classPrivateFieldSet(this, _SocketProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_pending, new Map(), \"f\");\n }\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"close\":\n return new UnmanagedSubscriber(\"close\");\n case \"block\":\n return new SocketBlockSubscriber(this);\n case \"pending\":\n return new SocketPendingSubscriber(this);\n case \"event\":\n return new SocketEventSubscriber(this, sub.filter);\n case \"orphan\":\n // Handled auto-matically within AbstractProvider\n // when the log.removed = true\n if (sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"drop-log\");\n }\n }\n return super._getSubscriber(sub);\n }\n _register(filterId, subscriber) {\n __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").set(filterId, subscriber);\n const pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending) {\n for (const message of pending) {\n subscriber._handleMessage(message);\n }\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").delete(filterId);\n }\n }\n async send(method, params) {\n const payload = this.prepareRequest(method, params);\n const promise = new Promise((resolve, reject) => {\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").set(payload.id, { payload, resolve, reject });\n });\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n await this._write(JSON.stringify(payload));\n }\n return await promise;\n }\n // Sub-classes must call this once they are connected\n async _start() {\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n return;\n }\n __classPrivateFieldSet(this, _SocketProvider_ready, true, \"f\");\n for (const { payload } of __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").values()) {\n await this._write(JSON.stringify(payload));\n }\n }\n // Sub-classes must call this for each message\n async _processMessage(message) {\n const result = JSON.parse(message);\n if (\"id\" in result) {\n const promise = __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").get(result.id);\n if (!promise) {\n console.log(\"Weird... Response for not a thing we sent\");\n return;\n }\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").delete(result.id);\n if (\"error\" in result) {\n const { message, code, data } = result.error;\n const error = logger.makeError(message || \"unkonwn error\", \"SERVER_ERROR\", {\n request: `ws:${JSON.stringify(promise.payload)}`,\n info: { code, data }\n });\n promise.reject(error);\n }\n else {\n promise.resolve(result.result);\n }\n }\n else if (result.method === \"eth_subscription\") {\n const filterId = result.params.subscription;\n const subscriber = __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").get(filterId);\n if (subscriber) {\n subscriber._handleMessage(result.params.result);\n }\n else {\n let pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending == null) {\n pending = [];\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").set(filterId, pending);\n }\n pending.push(result.params.result);\n }\n }\n }\n async _write(message) {\n throw new Error(\"sub-classes must override this\");\n }\n}\n_SocketProvider_callbacks = new WeakMap(), _SocketProvider_ready = new WeakMap(), _SocketProvider_subs = new WeakMap(), _SocketProvider_pending = new WeakMap();\n//# sourceMappingURL=provider-socket.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WebSocketProvider_websocket;\nimport { WebSocket } from \"ws\"; /*-browser*/\nimport { SocketProvider } from \"./provider-socket.js\";\nexport class WebSocketProvider extends SocketProvider {\n constructor(url, network) {\n super(network);\n _WebSocketProvider_websocket.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, new WebSocket(url), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, url, \"f\");\n }\n this.websocket.onopen = () => {\n this._start();\n };\n this.websocket.onmessage = (message) => {\n this._processMessage(message.data);\n };\n }\n get websocket() { return __classPrivateFieldGet(this, _WebSocketProvider_websocket, \"f\"); }\n async _write(message) {\n this.websocket.send(message);\n }\n}\n_WebSocketProvider_websocket = new WeakMap();\n//# sourceMappingURL=provider-websocket.js.map","import { AnkrProvider } from \"./provider-ankr.js\";\nimport { AlchemyProvider } from \"./provider-alchemy.js\";\nimport { CloudflareProvider } from \"./provider-cloudflare.js\";\nimport { EtherscanProvider } from \"./provider-etherscan.js\";\nimport { InfuraProvider } from \"./provider-infura.js\";\nimport { PocketProvider } from \"./provider-pocket.js\";\nimport { FallbackProvider } from \"./provider-fallback.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nimport { WebSocketProvider } from \"./provider-websocket.js\";\nfunction isWebSocketLike(value) {\n return (value && typeof (value.send) === \"function\" &&\n typeof (value.close) === \"function\");\n}\nexport function getDefaultProvider(network, options) {\n if (options == null) {\n options = {};\n }\n if (typeof (network) === \"string\" && network.match(/^https?:/)) {\n return new JsonRpcProvider(network);\n }\n if (typeof (network) === \"string\" && network.match(/^wss?:/) || isWebSocketLike(network)) {\n return new WebSocketProvider(network);\n }\n const providers = [];\n if (options.alchemy !== \"-\") {\n try {\n providers.push(new AlchemyProvider(network, options.alchemy));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.ankr !== \"-\") {\n try {\n providers.push(new AnkrProvider(network, options.ankr));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.cloudflare !== \"-\") {\n try {\n providers.push(new CloudflareProvider(network));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.etherscan !== \"-\") {\n try {\n providers.push(new EtherscanProvider(network, options.etherscan));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.infura !== \"-\") {\n try {\n let projectId = options.infura;\n let projectSecret = undefined;\n if (typeof (projectId) === \"object\") {\n projectSecret = projectId.projectSecret;\n projectId = projectId.projectId;\n }\n providers.push(new InfuraProvider(network, projectId, projectSecret));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.pocket !== \"-\") {\n try {\n let appId = options.pocket;\n let secretKey = undefined;\n let loadBalancer = undefined;\n if (typeof (appId) === \"object\") {\n loadBalancer = !!appId.loadBalancer;\n secretKey = appId.secretKey;\n appId = appId.appId;\n }\n providers.push(new PocketProvider(network, appId, secretKey, loadBalancer));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (providers.length === 0) {\n throw new Error(\"TODO\");\n }\n if (providers.length === 1) {\n return providers[0];\n }\n return new FallbackProvider(providers);\n}\n//# sourceMappingURL=default-provider.js.map","import { EnsPlugin, GasCostPlugin, MaxPriorityFeePlugin } from \"./plugins-network.js\";\nimport { EtherscanPlugin } from \"./provider-etherscan.js\";\nimport { Network as _Network } from \"./network.js\";\n// See: https://chainlist.org\nfunction injectCommonNetworks(Network) {\n /// Register popular Ethereum networks\n function registerEth(name, chainId, options) {\n const func = function () {\n const network = new Network(name, chainId);\n // We use 0 to disable ENS\n if (options.ensNetwork != null) {\n network.attachPlugin(new EnsPlugin(null, options.ensNetwork));\n }\n if (options.priorityFee) {\n network.attachPlugin(new MaxPriorityFeePlugin(options.priorityFee));\n }\n if (options.etherscan) {\n const { url, apiKey } = options.etherscan;\n network.attachPlugin(new EtherscanPlugin(url, apiKey));\n }\n network.attachPlugin(new GasCostPlugin());\n return network;\n };\n // Register the network by name and chain ID\n Network.register(name, func);\n Network.register(chainId, func);\n if (options.altNames) {\n options.altNames.forEach((name) => {\n Network.register(name, func);\n });\n }\n }\n registerEth(\"homestead\", 1, { ensNetwork: 1, altNames: [\"mainnet\"] });\n registerEth(\"ropsten\", 3, { ensNetwork: 3 });\n registerEth(\"rinkeby\", 4, { ensNetwork: 4 });\n registerEth(\"goerli\", 5, { ensNetwork: 5 });\n registerEth(\"kovan\", 42, { ensNetwork: 42 });\n registerEth(\"classic\", 61, {});\n registerEth(\"classicKotti\", 6, {});\n registerEth(\"xdai\", 100, { ensNetwork: 1 });\n // Polygon has a 35 gwei maxPriorityFee requirement\n registerEth(\"matic\", 137, {\n ensNetwork: 1,\n priorityFee: 35000000000,\n etherscan: {\n apiKey: \"W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7\",\n url: \"https:/\\/api.polygonscan.com/\"\n }\n });\n registerEth(\"maticMumbai\", 80001, {\n priorityFee: 35000000000,\n etherscan: {\n apiKey: \"W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7\",\n url: \"https:/\\/api-testnet.polygonscan.com/\"\n }\n });\n registerEth(\"bnb\", 56, {\n ensNetwork: 1,\n etherscan: {\n apiKey: \"EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9\",\n url: \"http:/\\/api.bscscan.com\"\n }\n });\n registerEth(\"bnbt\", 97, {\n etherscan: {\n apiKey: \"EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9\",\n url: \"http:/\\/api-testnet.bscscan.com\"\n }\n });\n return Network;\n}\nconst Network = injectCommonNetworks(_Network);\nexport { Network };\n//# sourceMappingURL=common-networks.js.map","const IpcSocketProvider = undefined;\nexport { IpcSocketProvider };\n//# sourceMappingURL=provider-ipcsocket-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ContractTransactionReceipt_interface, _ContractTransactionResponse_interface;\nimport { defineProperties, EventPayload } from \"@ethersproject/properties\";\nimport { Log, TransactionReceipt, TransactionResponse } from \"@ethersproject/providers\";\nexport class EventLog extends Log {\n constructor(log, iface, fragment) {\n super(log, log.provider);\n const args = iface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, interface: iface });\n }\n get eventName() { return this.fragment.name; }\n get eventSignature() { return this.fragment.format(); }\n}\nexport class ContractTransactionReceipt extends TransactionReceipt {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionReceipt_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionReceipt_interface, iface, \"f\");\n }\n get logs() {\n return super.logs.map((log) => {\n const fragment = log.topics.length ? __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\").getEvent(log.topics[0]) : null;\n if (fragment) {\n return new EventLog(log, __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\"), fragment);\n }\n else {\n return log;\n }\n });\n }\n}\n_ContractTransactionReceipt_interface = new WeakMap();\nexport class ContractTransactionResponse extends TransactionResponse {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionResponse_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionResponse_interface, iface, \"f\");\n }\n async wait(confirms) {\n const receipt = await super.wait();\n if (receipt == null) {\n return null;\n }\n return new ContractTransactionReceipt(__classPrivateFieldGet(this, _ContractTransactionResponse_interface, \"f\"), this.provider, receipt);\n }\n}\n_ContractTransactionResponse_interface = new WeakMap();\nexport class ContractEventPayload extends EventPayload {\n constructor(contract, listener, filter, fragment, _log) {\n super(contract, listener, filter);\n const log = new EventLog(_log, contract.interface, fragment);\n const args = contract.interface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, log });\n }\n get eventName() {\n return this.fragment.name;\n }\n get eventSignature() {\n return this.fragment.format();\n }\n async getBlock() {\n return await this.log.getBlock();\n }\n async getTransaction() {\n return await this.log.getTransaction();\n }\n async getTransactionReceipt() {\n return await this.log.getTransactionReceipt();\n }\n}\n//# sourceMappingURL=wrappers.js.map","export const version = \"@ethersproject/contract@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PreparedTopicFilter_filter;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { Interface, Typed } from \"@ethersproject/abi\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { copyRequest } from \"@ethersproject/providers\";\nimport { ContractEventPayload, ContractTransactionResponse, EventLog } from \"./wrappers.js\";\nimport { logger } from \"./logger.js\";\nfunction canCall(value) {\n return (value && typeof (value.call) === \"function\");\n}\nfunction canEstimate(value) {\n return (value && typeof (value.estimateGas) === \"function\");\n}\nfunction canResolve(value) {\n return (value && typeof (value.resolveName) === \"function\");\n}\nfunction canSend(value) {\n return (value && typeof (value.sendTransaction) === \"function\");\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\nclass PreparedTopicFilter {\n constructor(contract, fragment, args) {\n _PreparedTopicFilter_filter.set(this, void 0);\n defineProperties(this, { fragment });\n if (fragment.inputs.length < args.length) {\n throw new Error(\"too many arguments\");\n }\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(contract.runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n __classPrivateFieldSet(this, _PreparedTopicFilter_filter, (async function () {\n const resolvedArgs = await Promise.all(fragment.inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n return contract.interface.encodeFilterTopics(fragment, resolvedArgs);\n })(), \"f\");\n }\n getTopicFilter() {\n return __classPrivateFieldGet(this, _PreparedTopicFilter_filter, \"f\");\n }\n}\n_PreparedTopicFilter_filter = new WeakMap();\n// A = Arguments passed in as a tuple\n// R = The result type of the call (i.e. if only one return type,\n// the qualified type, otherwise Result)\n// D = The type the default call will return (i.e. R for view/pure,\n// TransactionResponse otherwise)\n//export interface ContractMethod = Array, R = any, D extends R | ContractTransactionResponse = ContractTransactionResponse> {\nfunction _WrappedMethodBase() {\n return Function;\n}\nfunction getRunner(value, feature) {\n if (value == null) {\n return null;\n }\n if (typeof (value[feature]) === \"function\") {\n return value;\n }\n if (value.provider && typeof (value.provider[feature]) === \"function\") {\n return value.provider;\n }\n return null;\n}\nfunction getProvider(value) {\n if (value == null) {\n return null;\n }\n return value.provider || null;\n}\nexport async function copyOverrides(arg) {\n // Create a shallow copy (we'll deep-ify anything needed during normalizing)\n const overrides = copyRequest(Typed.dereference(arg, \"overrides\"));\n // Some sanity checking; these are what these methods adds\n //if ((overrides).to) {\n if (overrides.to) {\n logger.throwArgumentError(\"cannot override to\", \"overrides.to\", overrides.to);\n }\n else if (overrides.data) {\n logger.throwArgumentError(\"cannot override data\", \"overrides.data\", overrides.data);\n }\n // Resolve any from\n if (overrides.from) {\n overrides.from = await resolveAddress(overrides.from);\n }\n return overrides;\n}\nexport async function resolveArgs(_runner, inputs, args) {\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(_runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n return await Promise.all(inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n}\nclass WrappedMethod extends _WrappedMethodBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getFunctionName(key),\n _contract: contract, _key: key\n });\n const proxy = new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n const fragment = target.getFragment(...args);\n if (fragment.constant) {\n return await target.staticCall(...args);\n }\n return await target.send(...args);\n },\n });\n return proxy;\n }\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n get fragment() {\n return this._contract.interface.getFunction(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getFunction(this._key, args);\n }\n async populateTransaction(...args) {\n const fragment = this.getFragment(...args);\n // If an overrides was passed in, copy it and normalize the values\n let overrides = {};\n if (fragment.inputs.length + 1 === args.length) {\n overrides = await copyOverrides(args.pop());\n }\n if (fragment.inputs.length !== args.length) {\n throw new Error(\"internal error: fragment inputs doesn't match arguments; should not happen\");\n }\n const resolvedArgs = await resolveArgs(this._contract.runner, fragment.inputs, args);\n return Object.assign({}, overrides, await resolveProperties({\n to: this._contract.getAddress(),\n data: this._contract.interface.encodeFunctionData(fragment, resolvedArgs)\n }));\n }\n async staticCall(...args) {\n const result = await this.staticCallResult(...args);\n if (result.length === 1) {\n return result[0];\n }\n return result;\n }\n async send(...args) {\n const runner = this._contract.runner;\n if (!canSend(runner)) {\n return logger.throwError(\"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", {\n operation: \"sendTransaction\"\n });\n }\n const tx = await runner.sendTransaction(await this.populateTransaction(...args));\n const provider = getProvider(this._contract.runner);\n return new ContractTransactionResponse(this._contract.interface, provider, tx);\n }\n async estimateGas(...args) {\n const runner = getRunner(this._contract.runner, \"estimateGas\");\n if (!canEstimate(runner)) {\n return logger.throwError(\"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", {\n operation: \"estimateGas\"\n });\n }\n return await runner.estimateGas(await this.populateTransaction(...args));\n }\n async staticCallResult(...args) {\n const runner = getRunner(this._contract.runner, \"call\");\n if (!canCall(runner)) {\n return logger.throwError(\"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", {\n operation: \"call\"\n });\n }\n const fragment = this.getFragment(...args);\n const tx = await this.populateTransaction(...args);\n let result = \"0x\";\n try {\n result = await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error)) {\n throw this._contract.interface.makeError(fragment, error.data, tx);\n }\n throw error;\n }\n return this._contract.interface.decodeFunctionResult(fragment, result);\n }\n}\nfunction _WrappedEventBase() {\n return Function;\n}\nclass WrappedEvent extends _WrappedEventBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getEventName(key),\n _contract: contract, _key: key\n });\n return new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n return new PreparedTopicFilter(contract, target.getFragment(...args), args);\n },\n });\n }\n // Only works on non-ambiguous keys\n get fragment() {\n return this._contract.interface.getEvent(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getEvent(this._key, args);\n }\n}\n;\n// The combination of TypeScrype, Private Fields and Proxies makes\n// the world go boom; so we hide variables with some trickery keeping\n// a symbol attached to each BaseContract which its sub-class (even\n// via a Proxy) can reach and use to look up its internal values.\nconst internal = Symbol.for(\"_ethersInternal_contract\");\nconst internalValues = new WeakMap();\nfunction setInternal(contract, values) {\n internalValues.set(contract[internal], values);\n}\nfunction getInternal(contract) {\n return internalValues.get(contract[internal]);\n}\nfunction isDeferred(value) {\n return (value && typeof (value) === \"object\" && (\"getTopicFilter\" in value) &&\n (typeof (value.getTopicFilter) === \"function\") && value.fragment);\n}\nasync function getSubTag(contract, event) {\n let fragment;\n let topics;\n if (Array.isArray(event)) {\n // Topics; e.g. `[ \"0x1234...89ab\" ]`\n fragment = contract.interface.getEvent(event[0]);\n topics = event;\n }\n else if (typeof (event) === \"string\") {\n // Event name (name or signature); `\"Transfer\"`\n fragment = contract.interface.getEvent(event);\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else if (isDeferred(event)) {\n // Deferred Topic Filter; e.g. `contract.filter.Transfer(from)`\n fragment = event.fragment;\n topics = await event.getTopicFilter();\n }\n else if (\"fragment\" in event) {\n // ContractEvent; e.g. `contract.filter.Transfer`\n fragment = event.fragment;\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else {\n console.log(event);\n throw new Error(\"TODO\");\n }\n // Normalize topics and sort TopicSets\n topics = topics.map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const tag = topics.map((t) => {\n if (t == null) {\n return \"null\";\n }\n if (Array.isArray(t)) {\n return t.join(\"|\");\n }\n return t;\n }).join(\"&\");\n return { fragment, tag, topics };\n}\nasync function hasSub(contract, event) {\n const { subs } = getInternal(contract);\n return subs.get((await getSubTag(contract, event)).tag) || null;\n}\nasync function getSub(contract, event) {\n // Make sure our runner can actually subscribe to events\n const provider = getProvider(contract.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not support subscribing\", \"UNSUPPORTED_OPERATION\", {\n operation: \"on\"\n });\n }\n const { fragment, tag, topics } = await getSubTag(contract, event);\n const { addr, subs } = getInternal(contract);\n let sub = subs.get(tag);\n if (!sub) {\n const address = (addr ? addr : contract);\n const filter = { address, topics };\n const listener = (log) => {\n const payload = new ContractEventPayload(contract, null, event, fragment, log);\n emit(contract, event, payload.args, payload);\n };\n let started = false;\n const start = () => {\n if (started) {\n return;\n }\n provider.on(filter, listener);\n started = true;\n };\n const stop = () => {\n if (!started) {\n return;\n }\n provider.off(filter, listener);\n started = false;\n };\n sub = { tag, listeners: [], start, stop };\n subs.set(tag, sub);\n }\n return sub;\n}\nasync function _emit(contract, event, args, payload) {\n await lastEmit;\n const sub = await hasSub(contract, event);\n if (!sub) {\n return false;\n }\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const passArgs = args.slice();\n if (payload) {\n passArgs.push(new ContractEventPayload(contract, (once ? null : listener), event, payload.fragment, payload.log));\n }\n try {\n listener.call(contract, ...passArgs);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n}\n// We use this to ensure one emit resolves before firing the next to\n// ensure correct ordering (note this cannot throw and just adds the\n// notice to the event queu using setTimeout).\nlet lastEmit = Promise.resolve();\nasync function emit(contract, event, args, payload) {\n try {\n await lastEmit;\n }\n catch (error) { }\n const resultPromise = _emit(contract, event, args, payload);\n lastEmit = resultPromise;\n return await resultPromise;\n}\nconst passProperties = [\"then\"];\nexport class BaseContract {\n constructor(target, abi, runner = null, _deployTx) {\n const iface = Interface.from(abi);\n defineProperties(this, { target, runner, interface: iface });\n Object.defineProperty(this, internal, { value: {} });\n let addrPromise;\n let addr = null;\n let deployTx = null;\n if (_deployTx) {\n const provider = getProvider(runner);\n deployTx = new ContractTransactionResponse(this.interface, provider, _deployTx);\n }\n let subs = new Map();\n // Resolve the target as the address\n if (typeof (target) === \"string\") {\n if (isHexString(target)) {\n addr = target;\n addrPromise = Promise.resolve(target);\n }\n else {\n const resolver = getRunner(runner, \"resolveName\");\n if (!canResolve(resolver)) {\n throw logger.makeError(\"contract runner does not support name resolution\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\"\n });\n }\n addrPromise = resolver.resolveName(target).then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n }\n else {\n addrPromise = target.getAddress().then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n // Set our private values\n setInternal(this, { addrPromise, addr, deployTx, subs });\n // Add the event filters\n const filters = new Proxy({}, {\n get: (target, _prop, receiver) => {\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = this.getEvent(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract event: ${prop}`);\n }\n });\n defineProperties(this, { filters });\n // Return a Proxy that will respond to functions\n return new Proxy(this, {\n get: (target, _prop, receiver) => {\n if (_prop in target || passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = target.getFunction(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract method: ${prop}`);\n }\n });\n }\n async getAddress() { return await getInternal(this).addrPromise; }\n async getDeployedCode() {\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getDeployedCode\"\n });\n }\n const code = await provider.getCode(await this.getAddress());\n if (code === \"0x\") {\n return null;\n }\n return code;\n }\n async waitForDeployment() {\n // We have the deployement transaction; just use that (throws if deployement fails)\n const deployTx = this.deploymentTransaction();\n if (deployTx) {\n await deployTx.wait();\n return this;\n }\n // Check for code\n const code = await this.getDeployedCode();\n if (code != null) {\n return this;\n }\n // Make sure we can subscribe to a provider event\n const provider = getProvider(this.runner);\n if (provider == null) {\n return logger.throwError(\"contract runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"waitForDeployment\"\n });\n }\n return new Promise((resolve, reject) => {\n const checkCode = async () => {\n try {\n const code = await this.getDeployedCode();\n if (code != null) {\n return resolve(this);\n }\n provider.once(\"block\", checkCode);\n }\n catch (error) {\n reject(error);\n }\n };\n checkCode();\n });\n }\n deploymentTransaction() {\n return getInternal(this).deployTx;\n }\n getFunction(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedMethod(this, key));\n }\n getEvent(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedEvent(this, key));\n }\n async queryTransaction(hash) {\n // Is this useful?\n throw new Error(\"@TODO\");\n }\n async queryFilter(event, fromBlock = 0, toBlock = \"latest\") {\n const { addr, addrPromise } = getInternal(this);\n const address = (addr ? addr : (await addrPromise));\n const { fragment, topics } = await getSubTag(this, event);\n const filter = { address, topics, fromBlock, toBlock };\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not have a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"queryFilter\"\n });\n }\n return (await provider.getLogs(filter)).map((log) => {\n return new EventLog(log, this.interface, fragment);\n });\n }\n async on(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: false });\n sub.start();\n return this;\n }\n async once(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: true });\n sub.start();\n return this;\n }\n async emit(event, ...args) {\n return await emit(this, event, args, null);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n const { subs } = getInternal(this);\n let total = 0;\n for (const { listeners } of subs.values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n const { subs } = getInternal(this);\n let result = [];\n for (const { listeners } of subs.values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (listener == null || sub.listeners.length === 0) {\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n else {\n const { subs } = getInternal(this);\n for (const { tag, stop } of subs.values()) {\n stop();\n subs.delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return await this.off(event, listener);\n }\n static buildClass(abi) {\n class CustomContract extends BaseContract {\n constructor(address, runner = null) {\n super(address, abi, runner);\n }\n }\n return CustomContract;\n }\n ;\n static from(target, abi, runner = null) {\n const contract = new this(target, abi, runner);\n return contract;\n }\n}\nfunction _ContractBase() {\n return BaseContract;\n}\nexport class Contract extends _ContractBase() {\n}\n//# sourceMappingURL=contract.js.map","const subsChrs = \" !#$%&'()*+,-./<=>?@[]^_`{|}~\";\nconst Word = /^[a-z]*$/i;\nfunction unfold(words, sep) {\n let initial = 97;\n return words.reduce((accum, word) => {\n if (word === sep) {\n initial++;\n }\n else if (word.match(Word)) {\n accum.push(String.fromCharCode(initial) + word);\n }\n else {\n initial = 97;\n accum.push(word);\n }\n return accum;\n }, []);\n}\nexport function decode(data, subs) {\n // Replace all the substitutions with their expanded form\n for (let i = subsChrs.length - 1; i >= 0; i--) {\n data = data.split(subsChrs[i]).join(subs.substring(2 * i, 2 * i + 2));\n }\n // Get all tle clumps; each suffix, first-increment and second-increment\n const clumps = [];\n const leftover = data.replace(/(:|([0-9])|([A-Z][a-z]*))/g, (all, item, semi, word) => {\n if (semi) {\n for (let i = parseInt(semi); i >= 0; i--) {\n clumps.push(\";\");\n }\n }\n else {\n clumps.push(item.toLowerCase());\n }\n return \"\";\n });\n if (leftover) {\n throw new Error(`leftovers: ${JSON.stringify(leftover)}`);\n }\n return unfold(unfold(clumps, \";\"), \":\");\n}\nexport function decodeOwl(data) {\n if (data[0] !== \"0\") {\n throw TypeError(\"unsupported auwl data\");\n }\n return decode(data.substring(1 + 2 * subsChrs.length), data.substring(1, 1 + 2 * subsChrs.length));\n}\n//# sourceMappingURL=decode-owl.js.map","export const version = \"@ethersproject/wordlists@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { defineProperties } from \"@ethersproject/properties\";\nexport class Wordlist {\n constructor(locale) {\n defineProperties(this, { locale });\n }\n // Subclasses may override this\n split(mnemonic) {\n return mnemonic.toLowerCase().split(/ +/g);\n }\n // Subclasses may override this\n join(words) {\n return words.join(\" \");\n }\n}\n//# sourceMappingURL=wordlist.js.map","// Use the encode-latin.js script to create the necessary\n// data files to be consumed by this class\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwl_instances, _WordlistOwl_data, _WordlistOwl_checksum, _WordlistOwl_words, _WordlistOwl_loadWords;\nimport { id } from \"@ethersproject/hash\";\nimport { decodeOwl } from \"./decode-owl.js\";\nimport { logger } from \"./logger.js\";\nimport { Wordlist } from \"./wordlist.js\";\nexport class WordlistOwl extends Wordlist {\n constructor(locale, data, checksum) {\n super(locale);\n _WordlistOwl_instances.add(this);\n _WordlistOwl_data.set(this, void 0);\n _WordlistOwl_checksum.set(this, void 0);\n _WordlistOwl_words.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwl_data, data, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_checksum, checksum, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_words, null, \"f\");\n }\n get _data() { return __classPrivateFieldGet(this, _WordlistOwl_data, \"f\"); }\n _decodeWords() {\n return decodeOwl(__classPrivateFieldGet(this, _WordlistOwl_data, \"f\"));\n }\n getWord(index) {\n const words = __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this);\n if (index < 0 || index >= words.length) {\n logger.throwArgumentError(`invalid word index: ${index}`, \"index\", index);\n }\n return words[index];\n }\n getWordIndex(word) {\n return __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this).indexOf(word);\n }\n}\n_WordlistOwl_data = new WeakMap(), _WordlistOwl_checksum = new WeakMap(), _WordlistOwl_words = new WeakMap(), _WordlistOwl_instances = new WeakSet(), _WordlistOwl_loadWords = function _WordlistOwl_loadWords() {\n if (__classPrivateFieldGet(this, _WordlistOwl_words, \"f\") == null) {\n const words = this._decodeWords();\n // Verify the computed list matches the official list\n const checksum = id(words.join(\"\\n\") + \"\\n\");\n /* c8 ignore start */\n if (checksum !== __classPrivateFieldGet(this, _WordlistOwl_checksum, \"f\")) {\n throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);\n }\n /* c8 ignore stop */\n __classPrivateFieldSet(this, _WordlistOwl_words, words, \"f\");\n }\n return __classPrivateFieldGet(this, _WordlistOwl_words, \"f\");\n};\n//# sourceMappingURL=wordlist-owl.js.map","import { WordlistOwl } from \"./wordlist-owl.js\";\nconst words = \"0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-EgSe0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-PM&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryFN Noc|PutQuirySSue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurEAyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOgAyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NNGradeHoldOnP Set1BOng::Rd3Ar~ow9UUngU`:3BraRo9NeO\";\nconst checksum = \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\";\nexport class LangEn extends WordlistOwl {\n constructor() { super(\"en\", words, checksum); }\n}\nexport const langEn = new LangEn();\n//# sourceMappingURL=lang-en.js.map","export const version = \"@ethersproject/wallet@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { langEn as en } from \"./lang-en.js\";\nexport const wordlists = Object.freeze({\n en\n});\n//# sourceMappingURL=wordlists-en.js.map","const Base64 = \")!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_\";\nexport function decodeBits(width, data) {\n const maxValue = (1 << width) - 1;\n const result = [];\n let accum = 0, bits = 0, flood = 0;\n for (let i = 0; i < data.length; i++) {\n // Accumulate 6 bits of data\n accum = ((accum << 6) | Base64.indexOf(data[i]));\n bits += 6;\n // While we have enough for a word...\n while (bits >= width) {\n // ...read the word\n const value = (accum >> (bits - width));\n accum &= (1 << (bits - width)) - 1;\n bits -= width;\n // A value of 0 indicates we exceeded maxValue, it\n // floods over into the next value\n if (value === 0) {\n flood += maxValue;\n }\n else {\n result.push(value + flood);\n flood = 0;\n }\n }\n }\n return result;\n}\n//# sourceMappingURL=bit-reader.js.map","import { decodeBits } from \"./bit-reader.js\";\nimport { decodeOwl } from \"./decode-owl.js\";\nexport function decodeOwlA(data, accents) {\n let words = decodeOwl(data).join(\",\");\n // Inject the accents\n accents.split(/,/g).forEach((accent) => {\n const match = accent.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);\n if (!match) {\n throw new Error(\"internal error parsing accents\");\n }\n let posOffset = 0;\n const positions = decodeBits(parseInt(match[3]), match[4]);\n const charCode = parseInt(match[2]);\n const regex = new RegExp(`([${match[1]}])`, \"g\");\n words = words.replace(regex, (all, letter) => {\n const rem = --positions[posOffset];\n if (rem === 0) {\n letter = String.fromCharCode(letter.charCodeAt(0), charCode);\n posOffset++;\n }\n return letter;\n });\n });\n return words.split(\",\");\n}\n//# sourceMappingURL=decode-owla.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwlA_accent;\nimport { WordlistOwl } from \"./wordlist-owl.js\";\nimport { decodeOwlA } from \"./decode-owla.js\";\nexport class WordlistOwlA extends WordlistOwl {\n constructor(locale, data, accent, checksum) {\n super(locale, data, checksum);\n _WordlistOwlA_accent.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwlA_accent, accent, \"f\");\n }\n get _accent() { return __classPrivateFieldGet(this, _WordlistOwlA_accent, \"f\"); }\n _decodeWords() {\n return decodeOwlA(this._data, this._accent);\n }\n}\n_WordlistOwlA_accent = new WeakMap();\n//# sourceMappingURL=wordlist-owla.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { pbkdf2, sha256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { langEn } from \"@ethersproject/wordlists\";\nimport { logger } from \"./logger.js\";\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits) {\n return ((1 << bits) - 1) << (8 - bits) & 0xff;\n}\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits) {\n return ((1 << bits) - 1) & 0xff;\n}\nfunction mnemonicToEntropy(mnemonic, wordlist = langEn) {\n logger.assertNormalize(\"NFKD\");\n if (wordlist == null) {\n wordlist = langEn;\n }\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0 || words.length < 12 || words.length > 24) {\n logger.throwArgumentError(\"invalid mnemonic length\", \"mnemonic\", \"[ REDACTED ]\");\n }\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) {\n logger.throwArgumentError(`invalid mnemonic word at index ${i}`, \"mnemonic\", \"[ REDACTED ]\");\n }\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n const entropyBits = 32 * words.length / 3;\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n logger.throwArgumentError(\"invalid mnemonic checksum\", \"mnemonic\", \"[ REDACTED ]\");\n }\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\nfunction entropyToMnemonic(entropy, wordlist = langEn) {\n if ((entropy.length % 4) || entropy.length < 16 || entropy.length > 32) {\n logger.throwArgumentError(\"invalid entropy size\", \"entropy\", \"[ REDACTED ]\");\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n const indices = [0];\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n remainingBits -= 8;\n // This byte will complete an 11-bit index\n }\n else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n remainingBits += 3;\n }\n }\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = parseInt(sha256(entropy).substring(2, 4), 16) & getUpperMask(checksumBits);\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n return wordlist.join(indices.map((index) => wordlist.getWord(index)));\n}\nconst _guard = {};\nexport class Mnemonic {\n constructor(guard, entropy, phrase, password, wordlist) {\n if (password == null) {\n password = \"\";\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n logger.assertPrivate(guard, _guard, \"Mnemonic\");\n defineProperties(this, { phrase, password, wordlist, entropy });\n }\n computeSeed() {\n const salt = toUtf8Bytes(\"mnemonic\" + this.password, UnicodeNormalizationForm.NFKD);\n return pbkdf2(toUtf8Bytes(this.phrase, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n }\n static fromPhrase(phrase, password, wordlist) {\n // Normalize the case and space; throws if invalid\n const entropy = mnemonicToEntropy(phrase, wordlist);\n phrase = entropyToMnemonic(logger.getBytes(entropy), wordlist);\n return new Mnemonic(_guard, entropy, phrase, password, wordlist);\n }\n static fromEntropy(_entropy, password, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n const phrase = entropyToMnemonic(entropy, wordlist);\n return new Mnemonic(_guard, hexlify(entropy), phrase, password, wordlist);\n }\n static entropyToPhrase(_entropy, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n return entropyToMnemonic(entropy, wordlist);\n }\n static phraseToEntropy(phrase, wordlist) {\n return mnemonicToEntropy(phrase, wordlist);\n }\n static isValidMnemonic(phrase, wordlist) {\n try {\n mnemonicToEntropy(phrase, wordlist);\n return true;\n }\n catch (error) { }\n return false;\n }\n}\n//# sourceMappingURL=mnemonic.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _BaseWallet_signingKey;\nimport { getAddress, resolveAddress } from \"@ethersproject/address\";\nimport { hashMessage, TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { AbstractSigner } from \"@ethersproject/providers\";\nimport { computeAddress, Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class BaseWallet extends AbstractSigner {\n constructor(privateKey, provider) {\n super(provider);\n _BaseWallet_signingKey.set(this, void 0);\n __classPrivateFieldSet(this, _BaseWallet_signingKey, privateKey, \"f\");\n const address = computeAddress(this.signingKey.publicKey);\n defineProperties(this, { address });\n }\n // Store these in getters to reduce visibility in console.log\n get signingKey() { return __classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"); }\n get privateKey() { return this.signingKey.privateKey; }\n async getAddress() { return this.address; }\n connect(provider) {\n return new BaseWallet(__classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"), provider);\n }\n async signTransaction(_tx) {\n // Replace any Addressable or ENS name with an address\n const tx = Object.assign({}, _tx, await resolveProperties({\n to: (_tx.to ? resolveAddress(_tx.to, this.provider) : undefined),\n from: (_tx.from ? resolveAddress(_tx.from, this.provider) : undefined)\n }));\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"tx.from\", _tx.from);\n }\n delete tx.from;\n }\n // Build the transaction\n const btx = Transaction.from(tx);\n btx.signature = this.signingKey.sign(btx.unsignedHash);\n return btx.serialized;\n }\n async signMessage(message) {\n return this.signingKey.sign(hashMessage(message)).serialized;\n }\n async signTypedData(domain, types, value) {\n // Populate any ENS names\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (name) => {\n if (this.provider == null) {\n return logger.throwError(\"cannot resolve ENS names without a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n info: { name }\n });\n }\n const address = await this.provider.resolveName(name);\n if (address == null) {\n return logger.throwError(\"unconfigured ENS name\", \"UNCONFIGURED_NAME\", {\n value: name\n });\n }\n return address;\n });\n return this.signingKey.sign(TypedDataEncoder.hash(populated.domain, types, populated.value)).serialized;\n }\n}\n_BaseWallet_signingKey = new WeakMap();\n//# sourceMappingURL=base-wallet.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _a, _HDNodeWallet_fromSeed, _HDNodeWalletManager_root;\nimport { arrayify, concat, dataSlice, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac, randomBytes, ripemd160, sha256 } from \"@ethersproject/crypto\";\nimport { decodeBase58, encodeBase58, toBigInt, toHex } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { VoidSigner } from \"@ethersproject/providers\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { langEn } from \"@ethersproject/wordlists/lib/lang-en.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nimport { BaseWallet } from \"./base-wallet.js\";\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n// \"Bitcoin seed\"\nconst MasterSecret = new Uint8Array([66, 105, 116, 99, 111, 105, 110, 32, 115, 101, 101, 100]);\nconst HardenedBit = 0x80000000;\nconst N = BigInt(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\nconst Nibbles = \"0123456789abcdef\";\nfunction zpad(value, length) {\n let result = \"\";\n while (value) {\n result = Nibbles[value % 16] + result;\n value = Math.trunc(value / 16);\n }\n while (result.length < length * 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction encodeBase58Check(_value) {\n const value = logger.getBytes(_value);\n const check = dataSlice(sha256(sha256(value)), 0, 4);\n const bytes = concat([value, check]);\n return encodeBase58(bytes);\n}\nconst _guard = {};\nfunction ser_I(index, chainCode, publicKey, privateKey) {\n const data = new Uint8Array(37);\n if (index & HardenedBit) {\n if (privateKey == null) {\n return logger.throwError(\"cannot derive child of neutered node\", \"UNSUPPORTED_OPERATION\", {\n operation: \"deriveChild\"\n });\n }\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(privateKey), 1);\n }\n else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(publicKey));\n }\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) {\n data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff);\n }\n const I = arrayify(computeHmac(\"sha512\", chainCode, data));\n return { IL: I.slice(0, 32), IR: I.slice(32) };\n}\nfunction derivePath(node, path) {\n const components = path.split(\"/\");\n if (components.length === 0 || (components[0] === \"m\" && node.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n if (components[0] === \"m\") {\n components.shift();\n }\n let result = node;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(HardenedBit + index);\n }\n else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(index);\n }\n else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n return result;\n}\nexport class HDNodeWallet extends BaseWallet {\n constructor(guard, signingKey, parentFingerprint, chainCode, path, index, depth, mnemonic, provider) {\n super(signingKey, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeWallet\");\n defineProperties(this, { publicKey: signingKey.compressedPublicKey });\n const fingerprint = dataSlice(ripemd160(sha256(this.publicKey)), 0, 4);\n defineProperties(this, {\n parentFingerprint, fingerprint,\n chainCode, path, index, depth\n });\n defineProperties(this, { mnemonic });\n }\n connect(provider) {\n return new HDNodeWallet(_guard, this.signingKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.mnemonic, provider);\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488ADE4\", zpad(this.depth, 1), this.parentFingerprint,\n zpad(this.index, 4), this.chainCode,\n concat([\"0x00\", this.privateKey])\n ]));\n }\n hasPath() { return (this.path != null); }\n neuter() {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.provider);\n }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, this.privateKey);\n const ki = new SigningKey(toHex((toBigInt(IL) + BigInt(this.privateKey)) % N, 32));\n return new HDNodeWallet(_guard, ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.mnemonic, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n static fromSeed(seed) {\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, seed, null);\n }\n static fromPhrase(phrase, password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromPhrase(phrase, password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromMnemonic(mnemonic, path = defaultPath) {\n if (!path) {\n path = defaultPath;\n }\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromExtendedKey(extendedKey) {\n const bytes = arrayify(decodeBase58(extendedKey)); // @TODO: redact\n if (bytes.length !== 82 || encodeBase58Check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[ REDACTED ]\");\n }\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\":\n case \"0x043587cf\": {\n const publicKey = hexlify(key);\n return new HDNodeVoidWallet(_guard, computeAddress(publicKey), publicKey, parentFingerprint, chainCode, null, index, depth, null);\n }\n // Private Key\n case \"0x0488ade4\":\n case \"0x04358394 \":\n if (key[0] !== 0) {\n break;\n }\n return new HDNodeWallet(_guard, new SigningKey(key.slice(1)), parentFingerprint, chainCode, null, index, depth, null, null);\n }\n return logger.throwArgumentError(\"invalid extended key prefix\", \"extendedKey\", \"[ REDACTED ]\");\n }\n static createRandom(password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromEntropy(randomBytes(16), password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n}\n_a = HDNodeWallet, _HDNodeWallet_fromSeed = function _HDNodeWallet_fromSeed(_seed, mnemonic) {\n const seed = logger.getBytes(_seed, \"seed\");\n if (seed.length < 16 || seed.length > 64) {\n throw new Error(\"invalid seed\");\n }\n const I = arrayify(computeHmac(\"sha512\", MasterSecret, seed));\n const signingKey = new SigningKey(hexlify(I.slice(0, 32)));\n return new HDNodeWallet(_guard, signingKey, \"0x00000000\", hexlify(I.slice(32)), \"m\", 0, 0, mnemonic, null);\n};\nexport class HDNodeVoidWallet extends VoidSigner {\n constructor(guard, address, publicKey, parentFingerprint, chainCode, path, index, depth, provider) {\n super(address, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeVoidWallet\");\n defineProperties(this, { publicKey });\n const fingerprint = dataSlice(ripemd160(sha256(publicKey)), 0, 4);\n defineProperties(this, {\n publicKey, fingerprint, parentFingerprint, chainCode, path, index, depth\n });\n }\n connect(provider) {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, provider);\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488B21E\",\n zpad(this.depth, 1),\n this.parentFingerprint,\n zpad(this.index, 4),\n this.chainCode,\n this.publicKey,\n ]));\n }\n hasPath() { return (this.path != null); }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, null);\n const Ki = SigningKey._addPoints(IL, this.publicKey, true);\n const address = computeAddress(Ki);\n return new HDNodeVoidWallet(_guard, address, Ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n}\nexport class HDNodeWalletManager {\n constructor(phrase, password = \"\", path = \"m/44'/60'/0'/0\", locale = langEn) {\n _HDNodeWalletManager_root.set(this, void 0);\n __classPrivateFieldSet(this, _HDNodeWalletManager_root, HDNodeWallet.fromPhrase(phrase, password, path, locale), \"f\");\n }\n getSigner(index = 0) {\n return __classPrivateFieldGet(this, _HDNodeWalletManager_root, \"f\").deriveChild(index);\n }\n}\n_HDNodeWalletManager_root = new WeakMap();\nexport function getAccountPath(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index < 0 || index >= HardenedBit) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${index}'/0/0`;\n}\n//# sourceMappingURL=hdwallet.js.map","/*! MIT License. Copyright 2015-2022 Richard Moore . See LICENSE.txt. */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AES_key, _AES_Kd, _AES_Ke;\n// Number of rounds by keysize\nconst numberOfRounds = { 16: 10, 24: 12, 32: 14 };\n// Round constant words\nconst rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n// S-box and Inverse S-box (S is for Substitution)\nconst S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\nconst Si = [0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n// Transformations for encryption\nconst T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\nconst T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\nconst T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\nconst T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n// Transformations for decryption\nconst T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\nconst T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\nconst T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\nconst T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n// Transformations for decryption key expansion\nconst U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\nconst U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\nconst U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\nconst U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\nfunction convertToInt32(bytes) {\n const result = [];\n for (let i = 0; i < bytes.length; i += 4) {\n result.push((bytes[i] << 24) | (bytes[i + 1] << 16) | (bytes[i + 2] << 8) | bytes[i + 3]);\n }\n return result;\n}\nexport class AES {\n constructor(key) {\n _AES_key.set(this, void 0);\n _AES_Kd.set(this, void 0);\n _AES_Ke.set(this, void 0);\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n __classPrivateFieldSet(this, _AES_key, new Uint8Array(key), \"f\");\n const rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new TypeError('invalid key size (must be 16, 24 or 32 bytes)');\n }\n // encryption round keys\n __classPrivateFieldSet(this, _AES_Ke, [], \"f\");\n // decryption round keys\n __classPrivateFieldSet(this, _AES_Kd, [], \"f\");\n for (let i = 0; i <= rounds; i++) {\n __classPrivateFieldGet(this, _AES_Ke, \"f\").push([0, 0, 0, 0]);\n __classPrivateFieldGet(this, _AES_Kd, \"f\").push([0, 0, 0, 0]);\n }\n const roundKeyCount = (rounds + 1) * 4;\n const KC = this.key.length / 4;\n // convert the key into ints\n const tk = convertToInt32(this.key);\n // copy values into round key arrays\n let index;\n for (let i = 0; i < KC; i++) {\n index = i >> 2;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[index][i % 4] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - index][i % 4] = tk[i];\n }\n // key expansion (fips-197 section 5.2)\n let rconpointer = 0;\n let t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (let i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n }\n else {\n for (let i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n tk[KC / 2] ^= (S[tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n for (let i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n // copy values into round key arrays\n let i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][c] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - r][c] = tk[i++];\n t++;\n }\n }\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (let r = 1; r < rounds; r++) {\n for (let c = 0; c < 4; c++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[tt & 0xFF]);\n }\n }\n }\n get key() { return __classPrivateFieldGet(this, _AES_key, \"f\").slice(); }\n encrypt(plaintext) {\n if (plaintext.length != 16) {\n throw new TypeError('invalid plaintext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Ke, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(plaintext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Ke, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T1[(t[i] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[t[(i + 3) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Ke, \"f\")[rounds][i];\n result[4 * i] = (S[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[t[(i + 3) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n decrypt(ciphertext) {\n if (ciphertext.length != 16) {\n throw new TypeError('invalid ciphertext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Kd, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(ciphertext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Kd, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T5[(t[i] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[t[(i + 1) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds][i];\n result[4 * i] = (Si[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[t[(i + 1) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n}\n_AES_key = new WeakMap(), _AES_Kd = new WeakMap(), _AES_Ke = new WeakMap();\n//# sourceMappingURL=aes.js.map","import { AES } from \"./aes.js\";\nexport class ModeOfOperation {\n constructor(name, key, cls) {\n if (cls && !(this instanceof cls)) {\n throw new Error(`${name} must be instantiated with \"new\"`);\n }\n Object.defineProperties(this, {\n aes: { enumerable: true, value: new AES(key) },\n name: { enumerable: true, value: name }\n });\n }\n}\n//# sourceMappingURL=mode.js.map","// Cipher Block Chaining\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CBC_iv, _CBC_lastBlock;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CBC extends ModeOfOperation {\n constructor(key, iv) {\n super(\"ECC\", key, CBC);\n _CBC_iv.set(this, void 0);\n _CBC_lastBlock.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CBC_iv, \"f\")); }\n encrypt(plaintext) {\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext.length);\n for (let i = 0; i < plaintext.length; i += 16) {\n for (let j = 0; j < 16; j++) {\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] ^= plaintext[i + j];\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.aes.encrypt(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\")), \"f\");\n ciphertext.set(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\"), i);\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n const plaintext = new Uint8Array(ciphertext.length);\n for (let i = 0; i < ciphertext.length; i += 16) {\n const block = this.aes.decrypt(ciphertext.subarray(i, i + 16));\n for (let j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j];\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] = ciphertext[i + j];\n }\n }\n return plaintext;\n }\n}\n_CBC_iv = new WeakMap(), _CBC_lastBlock = new WeakMap();\n//# sourceMappingURL=mode-cbc.js.map","// Cipher Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CFB_instances, _CFB_iv, _CFB_shiftRegister, _CFB_shift;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CFB extends ModeOfOperation {\n constructor(key, iv, segmentSize = 8) {\n super(\"CFB\", key, CFB);\n _CFB_instances.add(this);\n _CFB_iv.set(this, void 0);\n _CFB_shiftRegister.set(this, void 0);\n // This library currently only handles byte-aligned segmentSize\n if (!Number.isInteger(segmentSize) || (segmentSize % 8)) {\n throw new TypeError(\"invalid segmentSize\");\n }\n Object.defineProperties(this, {\n segmentSize: { enumerable: true, value: segmentSize }\n });\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CFB_shiftRegister, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CFB_iv, \"f\")); }\n encrypt(plaintext) {\n if (8 * plaintext.length % this.segmentSize) {\n throw new TypeError(\"invalid plaintext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n ciphertext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (8 * ciphertext.length % this.segmentSize) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const plaintext = new Uint8Array(ciphertext);\n for (let i = 0; i < plaintext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return plaintext;\n }\n}\n_CFB_iv = new WeakMap(), _CFB_shiftRegister = new WeakMap(), _CFB_instances = new WeakSet(), _CFB_shift = function _CFB_shift(data) {\n const segmentSize = this.segmentSize / 8;\n // Shift the register\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").subarray(segmentSize));\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(data.subarray(0, segmentSize), 16 - segmentSize);\n};\n//# sourceMappingURL=mode-cfb.js.map","// Counter Mode\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CTR_remaining, _CTR_remainingIndex, _CTR_counter;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CTR extends ModeOfOperation {\n constructor(key, initialValue) {\n super(\"CTR\", key, CTR);\n // Remaining bytes for the one-time pad\n _CTR_remaining.set(this, void 0);\n _CTR_remainingIndex.set(this, void 0);\n // The current counter\n _CTR_counter.set(this, void 0);\n __classPrivateFieldSet(this, _CTR_counter, new Uint8Array(16), \"f\");\n __classPrivateFieldGet(this, _CTR_counter, \"f\").fill(0);\n __classPrivateFieldSet(this, _CTR_remaining, __classPrivateFieldGet(this, _CTR_counter, \"f\"), \"f\"); // This will be discarded immediately\n __classPrivateFieldSet(this, _CTR_remainingIndex, 16, \"f\");\n if (initialValue == null) {\n initialValue = 1;\n }\n if (typeof (initialValue) === \"number\") {\n this.setCounterValue(initialValue);\n }\n else {\n this.setCounterBytes(initialValue);\n }\n }\n get counter() { return new Uint8Array(__classPrivateFieldGet(this, _CTR_counter, \"f\")); }\n setCounterValue(value) {\n if (!Number.isInteger(value) || value < 0 || value > Number.MAX_SAFE_INTEGER) {\n throw new TypeError(\"invalid counter initial integer value\");\n }\n for (let index = 15; index >= 0; --index) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[index] = value % 256;\n value = Math.floor(value / 256);\n }\n }\n setCounterBytes(value) {\n if (value.length !== 16) {\n throw new TypeError(\"invalid counter initial Uint8Array value length\");\n }\n __classPrivateFieldGet(this, _CTR_counter, \"f\").set(value);\n }\n increment() {\n for (let i = 15; i >= 0; i--) {\n if (__classPrivateFieldGet(this, _CTR_counter, \"f\")[i] === 255) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i] = 0;\n }\n else {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i]++;\n break;\n }\n }\n }\n encrypt(plaintext) {\n var _a, _b;\n const crypttext = new Uint8Array(plaintext);\n for (let i = 0; i < crypttext.length; i++) {\n if (__classPrivateFieldGet(this, _CTR_remainingIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _CTR_remaining, this.aes.encrypt(__classPrivateFieldGet(this, _CTR_counter, \"f\")), \"f\");\n __classPrivateFieldSet(this, _CTR_remainingIndex, 0, \"f\");\n this.increment();\n }\n crypttext[i] ^= __classPrivateFieldGet(this, _CTR_remaining, \"f\")[__classPrivateFieldSet(this, _CTR_remainingIndex, (_b = __classPrivateFieldGet(this, _CTR_remainingIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return crypttext;\n }\n decrypt(ciphertext) {\n return this.encrypt(ciphertext);\n }\n}\n_CTR_remaining = new WeakMap(), _CTR_remainingIndex = new WeakMap(), _CTR_counter = new WeakMap();\n//# sourceMappingURL=mode-ctr.js.map","// Output Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _OFB_iv, _OFB_lastPrecipher, _OFB_lastPrecipherIndex;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class OFB extends ModeOfOperation {\n constructor(key, iv) {\n super(\"OFB\", key, OFB);\n _OFB_iv.set(this, void 0);\n _OFB_lastPrecipher.set(this, void 0);\n _OFB_lastPrecipherIndex.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.iv, \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 16, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _OFB_iv, \"f\")); }\n encrypt(plaintext) {\n var _a, _b;\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i++) {\n if (__classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.aes.encrypt(__classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")), \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 0, \"f\");\n }\n ciphertext[i] ^= __classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")[__classPrivateFieldSet(this, _OFB_lastPrecipherIndex, (_b = __classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n return this.encrypt(ciphertext);\n }\n}\n_OFB_iv = new WeakMap(), _OFB_lastPrecipher = new WeakMap(), _OFB_lastPrecipherIndex = new WeakMap();\n//# sourceMappingURL=mode-ofb.js.map","export function pkcs7Pad(data) {\n const padder = 16 - (data.length % 16);\n const result = new Uint8Array(data.length + padder);\n result.set(data);\n for (let i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n}\nexport function pkcs7Strip(data) {\n if (data.length < 16) {\n throw new TypeError('PKCS#7 invalid length');\n }\n const padder = data[data.length - 1];\n if (padder > 16) {\n throw new TypeError('PKCS#7 padding byte out of range');\n }\n const length = data.length - padder;\n for (let i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new TypeError('PKCS#7 invalid padding byte');\n }\n }\n return new Uint8Array(data.subarray(0, length));\n}\n//# sourceMappingURL=padding.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\nimport { logger } from \"./logger.js\";\nexport function looseArrayify(hexString) {\n if (typeof (hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\nexport function zpad(value, length) {\n value = String(value);\n while (value.length < length) {\n value = '0' + value;\n }\n return value;\n}\nexport function getPassword(password) {\n if (typeof (password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\nexport function spelunk(object, _path) {\n const match = _path.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);\n if (match == null) {\n return logger.throwArgumentError(\"invalid path\", \"path\", _path);\n }\n const path = match[1];\n const type = match[3];\n const reqd = (match[4] === \"!\");\n let cur = object;\n for (const comp of path.toLowerCase().split('.')) {\n // Search for a child object with a case-insensitive matching key\n if (Array.isArray(cur)) {\n if (!comp.match(/^[0-9]+$/)) {\n break;\n }\n cur = cur[parseInt(comp)];\n }\n else if (typeof (cur) === \"object\") {\n let found = null;\n for (const key in cur) {\n if (key.toLowerCase() === comp) {\n found = cur[key];\n break;\n }\n }\n cur = found;\n }\n else {\n cur = null;\n }\n if (cur == null) {\n break;\n }\n }\n if (reqd && cur == null) {\n logger.throwArgumentError(\"missing required value\", \"path\", path);\n }\n if (type && cur != null) {\n if (type === \"int\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9]+$/)) {\n return parseInt(cur);\n }\n else if (Number.isSafeInteger(cur)) {\n return cur;\n }\n }\n if (type === \"number\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9.]*$/)) {\n return parseFloat(cur);\n }\n }\n if (type === \"data\") {\n if (typeof (cur) === \"string\") {\n return looseArrayify(cur);\n }\n }\n if (type === \"array\" && Array.isArray(cur)) {\n return cur;\n }\n if (type === typeof (cur)) {\n return cur;\n }\n logger.throwArgumentError(`wrong type found for ${type} `, \"path\", path);\n }\n return cur;\n}\n/*\nexport function follow(object: any, path: string): null | string {\n let currentChild = object;\n\n for (const comp of path.toLowerCase().split('/')) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comp) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n if (matchingChild === null) { return null; }\n\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// \"path/to/something:type!\"\nexport function followRequired(data: any, path: string): string {\n const value = follow(data, path);\n if (value != null) { return value; }\n return logger.throwArgumentError(\"invalid value\", `data:${ path }`,\n JSON.stringify(data));\n}\n*/\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes) {\n const bytes = logger.getBytes(randomBytes, \"randomBytes\");\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const value = hexlify(bytes);\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n//# sourceMappingURL=utils.js.map","import { CBC, pkcs7Strip } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { pbkdf2 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, looseArrayify, spelunk } from \"./utils.js\";\nexport function isCrowdsaleJson(json) {\n try {\n const data = JSON.parse(json);\n if (data.encseed) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\n// See: https://github.com/ethereum/pyethsaletool\nexport function decryptCrowdsaleJson(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n // Ethereum Address\n const address = getAddress(spelunk(data, \"ethaddr:string!\"));\n // Encrypted Seed\n const encseed = looseArrayify(spelunk(data, \"encseed:string!\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n // Decrypt the seed\n const aesCbc = new CBC(key, iv);\n const seed = pkcs7Strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n return { address, privateKey: id(seedHex) };\n}\n//# sourceMappingURL=json-crowdsale.js.map","import { CTR } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256, pbkdf2, randomBytes, scrypt, scryptSync } from \"@ethersproject/crypto\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, spelunk, uuidV4, zpad } from \"./utils.js\";\nimport { version } from \"./_version.js\";\nconst defaultPath = \"m/44'/60'/0'/0/0\";\nexport function isKeystoreJson(json) {\n try {\n const data = JSON.parse(json);\n const version = ((data.version != null) ? parseInt(data.version) : 0);\n if (version === 3) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\nfunction decrypt(data, key, ciphertext) {\n const cipher = spelunk(data, \"crypto.cipher:string\");\n if (cipher === \"aes-128-ctr\") {\n const iv = spelunk(data, \"crypto.cipherparams.iv:data!\");\n const aesCtr = new CTR(key, iv);\n return hexlify(aesCtr.decrypt(ciphertext));\n }\n return logger.throwError(\"unsupported cipher\", \"UNSUPPORTED_OPERATION\", {\n operation: \"decrypt\"\n });\n}\nfunction getAccount(data, _key) {\n const key = logger.getBytes(_key);\n const ciphertext = spelunk(data, \"crypto.ciphertext:data!\");\n const computedMAC = hexlify(keccak256(concat([key.slice(16, 32), ciphertext]))).substring(2);\n if (computedMAC !== spelunk(data, \"crypto.mac:string!\").toLowerCase()) {\n return logger.throwArgumentError(\"incorrect password\", \"password\", \"[ REDACTED ]\");\n }\n const privateKey = decrypt(data, key.slice(0, 16), ciphertext);\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") {\n check = \"0x\" + check;\n }\n if (getAddress(check) !== address) {\n logger.throwArgumentError(\"keystore address/privateKey mismatch\", \"address\", data.address);\n }\n }\n const account = { address, privateKey };\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n const version = spelunk(data, \"x-ethers.version:string\");\n if (version === \"0.1\") {\n const mnemonicKey = key.slice(32, 64);\n const mnemonicCiphertext = spelunk(data, \"x-ethers.mnemonicCiphertext:data!\");\n const mnemonicIv = spelunk(data, \"x-ethers.mnemonicCounter:data!\");\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n account.mnemonic = {\n path: (spelunk(data, \"x-ethers.path:string\") || defaultPath),\n locale: (spelunk(data, \"x-ethers.locale:string\") || \"en\"),\n entropy: hexlify(arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext)))\n };\n }\n return account;\n}\nfunction getKdfParams(data) {\n const kdf = spelunk(data, \"crypto.kdf:string\");\n if (kdf && typeof (kdf) === \"string\") {\n const throwError = function (name, value) {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n };\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const N = spelunk(data, \"crypto.kdfparams.n:int!\");\n const r = spelunk(data, \"crypto.kdfparams.r:int!\");\n const p = spelunk(data, \"crypto.kdfparams.p:int!\");\n // Check for all required parameters\n if (!N || !r || !p) {\n return throwError(\"kdf\", kdf);\n }\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) {\n return throwError(\"N\", N);\n }\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n return throwError(\"dklen\", dkLen);\n }\n return { name: \"scrypt\", salt, N, r, p, dkLen: 64 };\n }\n else if (kdf.toLowerCase() === \"pbkdf2\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const prf = spelunk(data, \"crypto.kdfparams.prf:string!\");\n const algorithm = prf.split(\"-\").pop();\n if (algorithm !== \"sha256\" && algorithm !== \"sha512\") {\n return throwError(\"prf\", prf);\n }\n const count = spelunk(data, \"crypto.kdfparams.c:int!\");\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return { name: \"pbkdf2\", salt, count, dkLen, algorithm };\n }\n }\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\nexport function decryptKeystoreJsonSync(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = scryptSync(password, salt, N, r, p, dkLen);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport async function decryptKeystoreJson(json, _password, progress) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n if (progress) {\n progress(0);\n await stall(0);\n }\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n if (progress) {\n progress(1);\n await stall(0);\n }\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = await scrypt(password, salt, N, r, p, dkLen, progress);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nexport async function encryptKeystoreJson(account, password, options, progressCallback) {\n // Check the address matches the private key\n //if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n // throw new Error(\"address/privateKey mismatch\");\n //}\n // Check the mnemonic (if any) matches the private key\n /*\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n */\n // The options are optional, so adjust the call as needed\n if (typeof (options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n const privateKey = logger.getBytes(account.privateKey, \"privateKey\");\n const passwordBytes = getPassword(password);\n /*\n let mnemonic: null | Mnemonic = null;\n let entropy: Uint8Array = null\n let path: string = null;\n let locale: string = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n mnemonic = Mnemonic.from(\n }\n */\n // Check/generate the salt\n const salt = (options.salt != null) ? logger.getBytes(options.salt, \"options.slat\") : randomBytes(32);\n // Override initialization vector\n const iv = (options.iv != null) ? logger.getBytes(options.iv, \"options.iv\") : randomBytes(16);\n if (iv.length !== 16) {\n logger.throwArgumentError(\"invalid options.iv\", \"options.iv\", options.iv);\n }\n // Override the uuid\n const uuidRandom = (options.uuid != null) ? logger.getBytes(options.uuid, \"options.uuid\") : randomBytes(16);\n if (uuidRandom.length !== 16) {\n logger.throwArgumentError(\"invalid options.uuid\", \"options.uuid\", options.iv);\n }\n if (uuidRandom.length !== 16) {\n throw new Error(\"invalid uuid\");\n }\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) {\n N = options.scrypt.N;\n }\n if (options.scrypt.r) {\n r = options.scrypt.r;\n }\n if (options.scrypt.p) {\n p = options.scrypt.p;\n }\n }\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n const _key = await scrypt(passwordBytes, salt, N, r, p, 64, progressCallback);\n const key = arrayify(_key);\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n // Encrypt the private key\n const aesCtr = new CTR(derivedKey, iv);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]));\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n Crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (account.mnemonic) {\n const client = (options.client != null) ? options.client : `ethers/${version}`;\n const path = account.mnemonic.path || defaultPath;\n const locale = account.mnemonic.locale || \"en\";\n const mnemonicKey = key.slice(32, 64);\n const entropy = logger.getBytes(account.mnemonic.entropy, \"account.mnemonic.entropy\");\n const mnemonicIv = randomBytes(16);\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\");\n const gethFilename = (\"UTC--\" + timestamp + \"--\" + data.address);\n data[\"x-ethers\"] = {\n client, gethFilename, path, locale,\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n version: \"0.1\"\n };\n }\n return JSON.stringify(data);\n}\n//# sourceMappingURL=json-keystore.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Wallet_mnemonic;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { randomBytes } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { BaseWallet } from \"./base-wallet.js\";\nimport { HDNodeWallet } from \"./hdwallet.js\";\nimport { decryptCrowdsaleJson, isCrowdsaleJson } from \"./json-crowdsale.js\";\nimport { decryptKeystoreJson, decryptKeystoreJsonSync, isKeystoreJson } from \"./json-keystore.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nfunction tryWallet(value) {\n try {\n if (!value || !value.signingKey) {\n return null;\n }\n const key = trySigningKey(value.signingKey);\n if (key == null || computeAddress(key.publicKey) !== value.address) {\n return null;\n }\n if (value.mnemonic) {\n const wallet = HDNodeWallet.fromMnemonic(value.mnemonic);\n if (wallet.privateKey !== key.privateKey) {\n return null;\n }\n }\n return value;\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\n// Try using value as mnemonic to derive the defaultPath HDodeWallet\nfunction tryMnemonic(value) {\n try {\n if (value == null || typeof (value.phrase) !== \"string\" ||\n typeof (value.password) !== \"string\" ||\n value.wordlist == null) {\n return null;\n }\n return HDNodeWallet.fromPhrase(value.phrase, value.password, null, value.wordlist);\n }\n catch (error) {\n console.log(error);\n }\n return null;\n}\nfunction trySigningKey(value) {\n try {\n if (!value || !isHexString(value.privateKey, 32)) {\n return null;\n }\n const key = value.privateKey;\n if (SigningKey.computePublicKey(key) !== value.publicKey) {\n return null;\n }\n return new SigningKey(key);\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport class Wallet extends BaseWallet {\n constructor(key, provider) {\n let signingKey = null;\n let mnemonic = null;\n // A normal private key\n if (typeof (key) === \"string\") {\n signingKey = new SigningKey(key);\n }\n // Try Wallet\n if (signingKey == null) {\n const wallet = tryWallet(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // Try Mnemonic, with the defaultPath wallet\n if (signingKey == null) {\n const wallet = tryMnemonic(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // A signing key\n if (signingKey == null) {\n signingKey = trySigningKey(key);\n }\n if (signingKey == null) {\n logger.throwArgumentError(\"invalid key\", \"key\", \"[ REDACTED ]\");\n }\n super(signingKey, provider);\n _Wallet_mnemonic.set(this, void 0);\n __classPrivateFieldSet(this, _Wallet_mnemonic, mnemonic, \"f\");\n }\n // Store this in a getter to reduce visibility in console.log\n get mnemonic() { return __classPrivateFieldGet(this, _Wallet_mnemonic, \"f\"); }\n connect(provider) {\n return new Wallet(this, provider);\n }\n async encrypt(password, options, progressCallback) {\n throw new Error(\"TODO\");\n }\n encryptSync(password, options) {\n throw new Error(\"TODO\");\n }\n static async fromEncryptedJson(json, password, progress) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = await decryptKeystoreJson(json, password, progress);\n }\n else if (isCrowdsaleJson(json)) {\n if (progress) {\n progress(0);\n await stall(0);\n }\n account = decryptCrowdsaleJson(json, password);\n if (progress) {\n progress(1);\n await stall(0);\n }\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static fromEncryptedJsonSync(json, password) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = decryptKeystoreJsonSync(json, password);\n }\n else if (isCrowdsaleJson(json)) {\n account = decryptCrowdsaleJson(json, password);\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static createRandom(provider, password, wordlist) {\n return new Wallet(Mnemonic.fromEntropy(randomBytes(16), password, wordlist), provider);\n }\n static fromMnemonic(mnemonic, provider) {\n return new Wallet(mnemonic, provider);\n }\n static fromPhrase(phrase, provider, password = \"\", wordlist) {\n return new Wallet(Mnemonic.fromPhrase(phrase, password, wordlist), provider);\n }\n}\n_Wallet_mnemonic = new WeakMap();\n//# sourceMappingURL=wallet.js.map","export const version = \"ethers@6.0.0-beta.5\";\n//# sourceMappingURL=_version.js.map"],"names":["__classPrivateFieldSet","this","__classPrivateFieldGet","version","maxValue","logger","regexNumber","_guard","internal","nibbles","BN_0","BN_1","zeros","passProperties","getValue","pbkdf2","sha256","u64.split","u64.rotrSH","u64.shrSH","u64.rotrSL","u64.shrSL","u64.rotrBH","u64.rotrBL","u64.add4L","u64.add4H","u64.add5L","u64.add5H","u64.add","u64.add3L","u64.add3H","sha512","getGlobal","crypto","randomBytes","locked","_0n","_1n","_2n","u64.rotlBH","u64.rotlSH","u64.rotlBL","u64.rotlSL","rotl","ripemd160","noble_ripemd160","crypto_random","scrypt","_nobleAsync","_nobleSync","H","Empty","BN_MAX_UINT256","_keccak256","_sha256","getTime","_a","numPad","bytesPad","encodeBytes","BN_2","BN_27","BN_28","BN_35","Signature","secp256k1.utils","secp256k1.signSync","secp256k1.Signature","secp256k1.getSharedSecret","secp256k1.getPublicKey","secp256k1.Point","secp256k1.recoverPublicKey","copyRequest","Network","copy","concisify","defaultApiKey","getHost","stall","WebSocket","_Network","en","defaultPath"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,iBAAiB,CAAC,KAAK,EAAE;AAC/C,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,IAAI,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK;AAC/C,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAQD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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AAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/E,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE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EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,KAAK;AACL;AACA,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,CAAC;AACD,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;AACzC;AACA,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAC/B,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACzD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;AACtD;AACA,QAAQ,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,GAAG,CAAC;AACjB,YAAY,IAAI,IAAI,EAAE,CAAC;AACvB,QAAQ,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7D,KAAK;AACL,CAAC;AACD;AACA,SAAS,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;AAC3C;AACA,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC;AAC3B,QAAQ,KAAK,EAAE,EAAE;AACjB,QAAQ,SAAS,EAAE,EAAE;AACrB,QAAQ,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI;AAChC,KAAK,EAAE,KAAK,CAAC,CAAC;AACd,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;AACnE,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AACxB,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;AAC5B,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AACzB,IAAI,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,UAAU,KAAK,UAAU;AACpE,QAAQ,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACzD,IAAI,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;AAC9B,IAAI,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;AACnF;AACA;AACA,QAAQ,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;AACvH,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,SAAS,EAAE;AACvD,QAAQ,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;AACpH,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE;AACjD,QAAQ,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;AAC1G,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,IAAI,IAAI,OAAO,GAAG,MAAM,EAAE;AAC1B,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7G,KAAK;AACL;AACA;AACA,IAAI,MAAM,CAAC,GAAG/B,QAAM,CAACC,QAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7E,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB;AACA,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;AACjD,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/C,IAAI,IAAI,UAAU,GAAG,MAAM,GAAG,CAAC;AAC/B,IAAI,IAAI,UAAU,EAAE;AACpB,QAAQ,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxC;AACA;AACA,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC;AAC5B,QAAQ,UAAU,GAAG,MAAM;AAC3B,YAAY,WAAW,EAAE,CAAC;AAC1B,YAAY,IAAI,UAAU,KAAK,EAAE,WAAW,GAAG,WAAW,CAAC,IAAI,WAAW,KAAK,aAAa,CAAC;AAC7F,gBAAgB,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;AACxD,SAAS,CAAC;AACV,KAAK;AACL,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAClF,CAAC;AACD,SAAS,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;AAClD,IAAI,MAAM,GAAG,GAAGD,QAAM,CAACC,QAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS+B,QAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;AAC7C,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzG,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE;AACnC,QAAQ,MAAM,EAAE,GAAG,WAAW,GAAG,EAAE,CAAC;AACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE;AAC5C,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACjD,YAAY,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;AACzD,YAAY,UAAU,EAAE,CAAC;AACzB,SAAS;AACT,QAAQ,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACvD,QAAQ,UAAU,EAAE,CAAC;AACrB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpC;AACA,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACrD,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE;AAChD,gBAAgB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;AAC9D,YAAY,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,UAAU,EAAE,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AACD;AACA;AACA;AACO,eAAe,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;AACxD,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpH,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE;AACnC,QAAQ,MAAM,EAAE,GAAG,WAAW,GAAG,EAAE,CAAC;AACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE;AAC5C,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/B,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC;AACpB,QAAQ,MAAM,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK;AACjD,YAAY,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;AACzD,YAAY,UAAU,EAAE,CAAC;AACzB,SAAS,CAAC,CAAC;AACX,QAAQ,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACvD,QAAQ,UAAU,EAAE,CAAC;AACrB,QAAQ,MAAM,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK;AAC7C;AACA,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACrD,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE;AAChD,gBAAgB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;AAC9D,YAAY,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,UAAU,EAAE,CAAC;AACzB,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACpD;;ACpNA,IAAI,UAAU,GAAG,KAAK,EAAE,WAAW,GAAG,KAAK,CAAC;AAC5C,MAAM,YAAY,GAAG,gBAAgB,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;AAC/E,IAAI,OAAO,MAAMC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AAC3E,CAAC,CAAC;AACF,MAAM,WAAW,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;AAC5D,IAAI,OAAOC,QAAU,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,CAAC,CAAC;AACF,IAAI,aAAa,GAAG,YAAY,CAAC;AACjC,IAAI,YAAY,GAAG,WAAW,CAAC;AACxB,eAAe,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;AACvE,IAAI,MAAM,MAAM,GAAG5C,QAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACtD,IAAI,MAAM,IAAI,GAAGA,QAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,OAAO6C,OAAC,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1E,CAAC;AACD,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC;AACxB,MAAM,CAAC,IAAI,GAAG,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC;AAClD,MAAM,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE;AAClC,IAAI,IAAI,WAAW,EAAE;AACrB,QAAQ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACf,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;AAC3D,IAAI,MAAM,MAAM,GAAG7C,QAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACtD,IAAI,MAAM,IAAI,GAAGA,QAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,OAAO6C,OAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AACD,UAAU,CAAC,CAAC,GAAG,WAAW,CAAC;AAC3B,UAAU,CAAC,IAAI,GAAG,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;AACrD,UAAU,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE;AACtC,IAAI,IAAI,UAAU,EAAE;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;;ACpCzB,MAAM,OAAO,GAAG,UAAU,IAAI,EAAE;AAChC,IAAI,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACtD,CAAC,CAAC;AACF,MAAM,OAAO,GAAG,UAAU,IAAI,EAAE;AAChC,IAAI,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACtD,CAAC,CAAC;AACF,IAAI,QAAQ,GAAG,OAAO,CAAC;AACvB,IAAI,QAAQ,GAAG,OAAO,CAAC;AACvB,IAAI,SAAS,GAAG,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC;AAClC,SAAS,MAAM,CAAC,KAAK,EAAE;AAC9B,IAAI,MAAM,IAAI,GAAG7C,QAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,CAAC;AACD,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC;AACnB,MAAM,CAAC,IAAI,GAAG,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;AAChD,MAAM,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE;AAClC,IAAI,IAAI,SAAS,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACf,SAAS,MAAM,CAAC,KAAK,EAAE;AAC9B,IAAI,MAAM,IAAI,GAAGA,QAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,CAAC;AACD,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC;AACnB,MAAM,CAAC,IAAI,GAAG,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;AAChD,MAAM,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE;AAClC,IAAI,IAAI,SAAS,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;;ACrCrB;AASO,SAAS,IAAI,GAAG;AACvB,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;AACvB,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;AACrB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AAClB,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;AACvB,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;AACrB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AAClB,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;AACtB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AAClB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AAClB;;ACnBO,MAAMF,SAAO,GAAG,qCAAqC;;ACErD,MAAME,QAAM,GAAG,IAAI,MAAM,CAACF,SAAO,CAAC;;ACCzC,MAAMO,MAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AACzB,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC;AACA;AACA;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACpC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjD,IAAI,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACxC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9C,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;AAC1C,YAAY,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACtD,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC;AACD;AACA;AACA,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC;AACD;AACA;AACA,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,SAAS,YAAY,CAAC,OAAO,EAAE;AAC/B,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACpC,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACpE,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpF;AACA,IAAI,OAAO,QAAQ,CAAC,MAAM,IAAI,UAAU,EAAE;AAC1C,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9D,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;AAClC,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,YAAY;AAE5B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,QAAQ,MAAM,GAAG,GAAG,sCAAsC,CAAC,CAAC,CAAC,CAAC;AAC9D,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC,GAAG,CAAC;AACL,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;AAChC,IAAI,IAAI,MAAM,GAAGA,MAAI,CAAC;AACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACM,SAAS,UAAU,CAAC,OAAO,EAAE;AACpC,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;AACvC,QAAQL,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE;AACjD;AACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AAC9C,YAAY,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACnD;AACA,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,MAAM,KAAK,OAAO,EAAE;AAClF,YAAYA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAClF,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE;AACzD;AACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE;AAC/D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/E,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,QAAQ,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE;AACnC,YAAY,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;AAClC,SAAS;AACT,QAAQ,OAAO,kBAAkB,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,OAAOA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AACM,SAAS,cAAc,CAAC,OAAO,EAAE;AACxC;AACA,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACxE,IAAI,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE;AAC/B,QAAQ,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AACzD;;AC5GO,MAAMF,SAAO,GAAG,iCAAiC;;ACEjD,MAAME,QAAM,GAAG,IAAI,MAAM,CAACF,SAAO,CAAC;;ACFzC;AAEA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AACrC,QAAQ,KAAK,KAAK,CAAC,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,OAAO,CAAC,MAAM,EAAE;AACzB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/B,QAAQ,IAAI,OAAO,GAAG,EAAE,CAAC;AACzB,QAAQ,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;AACxC,YAAY,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE;AAClC,YAAY,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACnD,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACvD,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7C,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAACE,QAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/E,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;AAC9C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE;AAChC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACzC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AACD,MAAM,OAAO,GAAG,kBAAkB,CAAC;AAC5B,SAAS,SAAS,CAAC,MAAM,EAAE;AAClC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB,IAAI,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AACrC,QAAQ,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,QAAQ,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB;;AC5CA;AAGA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpC,IAAI,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,QAAQ,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,IAAI,GAAG,MAAM,CAAC;AACzB,CAAC;AACD,SAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;AACjD,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;AACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,QAAQ,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;AAC5D,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,OAAO,WAAW,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE;AAC9C,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACnD,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACpC,QAAQ,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,WAAW,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE;AAC/C,YAAYA,QAAM,CAAC,UAAU,CAAC,sBAAsB,EAAE,gBAAgB,EAAE;AACxE,gBAAgB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,OAAO,EAAE,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACtD,CAAC;AACD;AACA,SAAS,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE;AAC/B,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,QAAQA,QAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,EAAE;AAC9D,YAAY,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAC9C,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK;AACpC,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAClC,YAAYA,QAAM,CAAC,UAAU,CAAC,8BAA8B,EAAE,gBAAgB,EAAE;AAChF,gBAAgB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM;AACzD,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK,CAAC;AACN;AACA,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;AAC9B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACjD,QAAQ,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;AAC/C,QAAQ,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;AACzE,QAAQ,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;AACxD,QAAQ,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,YAAY,EAAE,YAAY,GAAG,MAAM,CAAC,CAAC;AAC/F,KAAK;AACL,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;AACnC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3C,QAAQ,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AACzC,QAAQ,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AACjE,KAAK;AACL,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;AACnC,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACjD,QAAQ,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;AAC/C,QAAQ,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;AACzE,QAAQ,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;AACxD,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,EAAE,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;AAC1G,QAAQ,OAAO,EAAE,QAAQ,GAAG,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACzE,KAAK;AACL,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;AACnC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3C,QAAQ,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AACzC,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAC5E,QAAQ,OAAO,EAAE,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC1D,KAAK;AACL,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC;AACM,SAAS,SAAS,CAAC,KAAK,EAAE;AACjC,IAAI,MAAM,IAAI,GAAGA,QAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACrC,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,EAAE;AAC1C,QAAQA,QAAM,CAAC,kBAAkB,CAAC,mCAAmC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACtF,KAAK;AACL,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC;AAC1B;;AC5EA;AACO,SAAS,gBAAgB,CAAC,EAAE,EAAE;AACrC,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACrC,IAAI,MAAM,KAAK,GAAGA,QAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACzD,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtC,IAAI,IAAI,QAAQ,KAAK,GAAG,EAAE;AAC1B,QAAQ,QAAQ,GAAG,IAAI,CAAC;AACxB,KAAK;AACL,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,QAAQ,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;AACpC,KAAK;AACL,SAAS;AACT,QAAQ,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AACM,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE;AAC/D,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AACnC,IAAI,MAAM,IAAI,GAAGA,QAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,YAAY,GAAGA,QAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AACxE,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE;AAC5B,QAAQA,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1E,KAAK;AACL,IAAI,IAAI,YAAY,CAAC,MAAM,KAAK,EAAE,EAAE;AACpC,QAAQA,QAAM,CAAC,kBAAkB,CAAC,+BAA+B,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;AAClG,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5F;;AC9BO,SAAS,aAAa,CAAC,KAAK,EAAE;AACrC,IAAI,QAAQ,KAAK,IAAI,QAAQ,KAAK,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE;AAC/D,CAAC;AACM,SAAS,SAAS,CAAC,KAAK,EAAE;AACjC,IAAI,IAAI;AACR,QAAQ,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,KAAK,EAAE,GAAG;AACrB,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA;AACO,eAAe,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE;AACvD;AACA,IAAI,IAAI,QAAQ,MAAM,CAAC,KAAK,QAAQ,EAAE;AACtC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;AAC/C,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC9B,YAAY,OAAOA,QAAM,CAAC,UAAU,CAAC,oCAAoC,EAAE,uBAAuB,EAAE;AACpG,gBAAgB,SAAS,EAAE,aAAa;AACxC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1D,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,4CAA4C,EAAE;AACvF,YAAY,OAAOA,QAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAClG,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC,KAAK;AACL,SAAS,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;AACpC,QAAQ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;AACjD,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC5B,YAAYA,QAAM,CAAC,kBAAkB,CAAC,8BAA8B,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxF,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,OAAOA,QAAM,CAAC,kBAAkB,CAAC,+BAA+B,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxF;;AC3CA,IAAIL,wBAAsB,GAAG,CAACC,MAAI,IAAIA,MAAI,CAAC,sBAAsB,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AACjH,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;AAC5E,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;AACtL,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AAC9G,CAAC,CAAC;AACF,IAAIC,wBAAsB,GAAG,CAACD,MAAI,IAAIA,MAAI,CAAC,sBAAsB,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AAC1G,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;AACvL,IAAI,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClG,CAAC,CAAC;AACF,IAAI,cAAc,CAAC;AAEnB,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE;AACzB,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC;AACvB,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACnB,QAAQ,MAAM,GAAG,IAAI,CAAC;AACtB,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC;AACpB,KAAK;AACL;AACA,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1F,CAAC;AACD,SAAS,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE;AACxB;AACA,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5E,CAAC;AACD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC1C,MAAM,KAAK,CAAC;AACnB,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE;AACpD,QAAQ,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE;AAC9B,YAAY,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACnD,SAAS;AACT,QAAQ,gBAAgB,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9D,QAAQD,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AACnE;AACA,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACnC,YAAY,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AAChC,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE;AAC/C,YAAY,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AAChC,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACxC,YAAY,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,EAAE;AACvD,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,QAAQ,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AACxC,KAAK;AACL,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACnC,YAAY,MAAM,SAAS,CAAC,aAAa,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAOE,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;AACjE,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACnC,YAAY,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAIA,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE;AACxE,YAAY,OAAO,CAAC,CAAC,CAAC;AACtB,SAAS;AACT,QAAQ,IAAIA,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,KAAK,KAAK,EAAE;AACzE,YAAY,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AAC7B,QAAQ,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,E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C,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AAChE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AAClD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AAC3D,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AACzC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AACzC,IAAI,EAAE,C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E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3gD,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5gD;AACA,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG;AACA,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG;AACA,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9C,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClG,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACM,MAAM,GAAG,CAAC;AACjB,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,EAAE,IAAI,YAAY,GAAG,CAAC,EAAE;AACpC,YAAY,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAC/D,SAAS;AACT,QAAQD,wBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACzE,QAAQ,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvD,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC5B,YAAY,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjF,SAAS;AACT;AACA,QAAQA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACvD;AACA,QAAQA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACvD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAYE,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1E,YAAYA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1E,SAAS;AACT,QAAQ,MAAM,aAAa,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC;AACA,QAAQ,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C;AACA,QAAQ,IAAI,KAAK,CAAC;AAClB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACrC,YAAY,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAYA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,YAAYA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACtF,SAAS;AACT;AACA,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;AACvB,QAAQ,OAAO,CAAC,GAAG,aAAa,EAAE;AAClC,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;AACjD,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3C,iBAAiB,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACpC,iBAAiB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,YAAY,WAAW,IAAI,CAAC,CAAC;AAC7B;AACA,YAAY,IAAI,EAAE,IAAI,CAAC,EAAE;AACzB,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7C,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,iBAAiB;AACjB;AACA,aAAa;AACb,iBAAiB;AACjB,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,iBAAiB;AACjB,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,gBAAgB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;AAC3C,qBAAqB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,qBAAqB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAChD,qBAAqB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAClD,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACxD,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,iBAAiB;AACjB,aAAa;AACb;AACA,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,YAAY,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,aAAa,EAAE;AAChD,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,gBAAgBA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE,gBAAgBA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACpF,gBAAgB,CAAC,EAAE,CAAC;AACpB,aAAa;AACb,SAAS;AACT;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACxC,gBAAgB,EAAE,GAAGA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,gBAAgBA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACzF,oBAAoB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACzC,oBAAoB,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AACxC,oBAAoB,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AACnC,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,IAAI,GAAG,GAAG,EAAE,OAAOA,wBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;AAC7E,IAAI,OAAO,CAAC,SAAS,EAAE;AACvB,QAAQ,IAAI,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE;AACpC,YAAY,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;AAC7E,SAAS;AACT,QAAQ,MAAM,MAAM,GAAGA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7E,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B;AACA,QAAQ,IAAI,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AAC1C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAIA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,SAAS;AACT;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACxC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AAC/C,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AACrD,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACpD,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7C,oBAAoBA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,aAAa;AACb,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B,SAAS;AACT;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC1C,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC;AACnB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpC,YAAY,EAAE,GAAGA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC;AACzE,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC;AACvF,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;AACrF,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;AACvE,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,CAAC,UAAU,EAAE;AACxB,QAAQ,IAAI,UAAU,CAAC,MAAM,IAAI,EAAE,EAAE;AACrC,YAAY,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;AAC9E,SAAS;AACT,QAAQ,MAAM,MAAM,GAAGA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7E,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B;AACA,QAAQ,IAAI,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAC3C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAIA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,SAAS;AACT;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACxC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AAC/C,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AACrD,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACpD,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7C,oBAAoBA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,aAAa;AACb,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B,SAAS;AACT;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC1C,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC;AACnB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpC,YAAY,EAAE,GAAGA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC;AAC1E,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC;AACxF,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;AACtF,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;AACxE,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,CAAC;AACD,QAAQ,GAAG,IAAI,OAAO,EAAE,EAAE,OAAO,GAAG,IAAI,OAAO,EAAE,EAAE,OAAO,GAAG,IAAI,OAAO,EAAE;;ACnMnE,MAAM,eAAe,CAAC;AAC7B,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAChC,QAAQ,IAAI,GAAG,IAAI,EAAE,IAAI,YAAY,GAAG,CAAC,EAAE;AAC3C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;AACvE,SAAS;AACT,QAAQ,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;AACtC,YAAY,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;AAC1D,YAAY,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AACnD,SAAS,CAAC,CAAC;AACX,KAAK;AACL;;ACXA;AACA,IAAIF,wBAAsB,GAAG,CAACC,MAAI,IAAIA,MAAI,CAAC,sBAAsB,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AACjH,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;AAC5E,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;AACtL,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AAC9G,CAAC,CAAC;AACF,IAAIC,wBAAsB,GAAG,CAACD,MAAI,IAAIA,MAAI,CAAC,sBAAsB,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AAC1G,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;AACvL,IAAI,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClG,CAAC,CAAC;AACF,IAAI,OAAO,EAAE,cAAc,CAAC;AAErB,MAAM,GAAG,SAAS,eAAe,CAAC;AACzC,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE;AACzB,QAAQ,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/B,QAAQ,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,IAAI,EAAE,EAAE;AAChB,YAAY,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE;AAChC,gBAAgB,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;AAC1E,aAAa;AACb,YAAYD,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3E,SAAS;AACT,aAAa;AACb,YAAYA,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3E,SAAS;AACT,QAAQA,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACnE,KAAK;AACL,IAAI,IAAI,EAAE,GAAG,EAAE,OAAO,IAAI,UAAU,CAACE,wBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;AACnF,IAAI,OAAO,CAAC,SAAS,EAAE;AACvB,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE;AACnC,YAAY,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5D,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;AACvD,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACzC,gBAAgBA,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzF,aAAa;AACb,YAAYF,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAACE,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnI,YAAY,UAAU,CAAC,GAAG,CAACA,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACjF,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,CAAC,UAAU,EAAE;AACxB,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE;AACpC,YAAY,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;AAC1F,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5D,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;AACxD,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3E,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACzC,gBAAgB,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAGA,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnG,gBAAgBA,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzF,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,CAAC;AACD,OAAO,GAAG,IAAI,OAAO,EAAE,EAAE,cAAc,GAAG,IAAI,OAAO,EAAE;;AC5DvD;AAC6B,CAACD,MAAI,IAAIA,MAAI,CAAC,sBAAsB,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AACjH,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;AAC5E,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;AACtL,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AAC9G,EAAE;AAC2B,CAACA,MAAI,IAAIA,MAAI,CAAC,sBAAsB,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AAC1G,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;AACvL,IAAI,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClG;;ACXA;AACA,IAAID,wBAAsB,GAAG,CAACC,MAAI,IAAIA,MAAI,CAAC,sBAAsB,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AACjH,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;AAC5E,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;AACtL,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AAC9G,CAAC,CAAC;AACF,IAAIC,wBAAsB,GAAG,CAACD,MAAI,IAAIA,MAAI,CAAC,sBAAsB,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AAC1G,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;AACvL,IAAI,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClG,CAAC,CAAC;AACF,IAAI,cAAc,EAAE,mBAAmB,EAAE,YAAY,CAAC;AAE/C,MAAM,GAAG,SAAS,eAAe,CAAC;AACzC,IAAI,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE;AACnC,QAAQ,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/B;AACA,QAAQ,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9C;AACA,QAAQ,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACvC,QAAQD,wBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5E,QAAQE,wBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChE,QAAQF,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAEE,wBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3G,QAAQF,wBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACnE,QAAQ,IAAI,YAAY,IAAI,IAAI,EAAE;AAClC,YAAY,YAAY,GAAG,CAAC,CAAC;AAC7B,SAAS;AACT,QAAQ,IAAI,QAAQ,YAAY,CAAC,KAAK,QAAQ,EAAE;AAChD,YAAY,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AAC/C,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AAC/C,SAAS;AACT,KAAK;AACL,IAAI,IAAI,OAAO,GAAG,EAAE,OAAO,IAAI,UAAU,CAACE,wBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;AAC7F,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,gBAAgB,EAAE;AACtF,YAAY,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;AACzE,SAAS;AACT,QAAQ,KAAK,IAAI,KAAK,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE;AAClD,YAAYA,wBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;AACjF,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AAC5C,SAAS;AACT,KAAK;AACL,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AACjC,YAAY,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;AACnF,SAAS;AACT,QAAQA,wBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnE,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACtC,YAAY,IAAIA,wBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC5E,gBAAgBA,wBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvE,aAAa;AACb,iBAAiB;AACjB,gBAAgBA,wBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,gBAAgB,MAAM;AACtB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,OAAO,CAAC,SAAS,EAAE;AACvB,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;AACpD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,YAAY,IAAIA,wBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE;AAC/E,gBAAgBF,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAACE,wBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACrI,gBAAgBF,wBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1E,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC;AACjC,aAAa;AACb,YAAY,SAAS,CAAC,CAAC,CAAC,IAAIE,wBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAACF,wBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,EAAE,GAAGE,wBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACxN,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,CAAC,UAAU,EAAE;AACxB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxC,KAAK;AACL,CAAC;AACD,cAAc,GAAG,IAAI,OAAO,EAAE,EAAE,mBAAmB,GAAG,IAAI,OAAO,EAAE,EAAE,YAAY,GAAG,IAAI,OAAO,EAAE;;AChFjG;AAC6B,CAACD,MAAI,IAAIA,MAAI,CAAC,sBAAsB,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AACjH,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;AAC5E,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;AACtL,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AAC9G,EAAE;AAC2B,CAACA,MAAI,IAAIA,MAAI,CAAC,sBAAsB,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AAC1G,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;AACvL,IAAI,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClG;;ACFO,SAAS,UAAU,CAAC,IAAI,EAAE;AACjC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE;AAC1B,QAAQ,MAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,IAAI,IAAI,MAAM,GAAG,EAAE,EAAE;AACrB,QAAQ,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;AAChE,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE;AACzC,YAAY,MAAM,IAAI,SAAS,CAAC,6BAA6B,CAAC,CAAC;AAC/D,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACpD;;ACrBO,SAAS,aAAa,CAAC,SAAS,EAAE;AACzC,IAAI,IAAI,QAAQ,SAAS,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AAC/E,QAAQ,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC;AAQM,SAAS,WAAW,CAAC,QAAQ,EAAE;AACtC,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;AACxC,QAAQ,OAAO,WAAW,CAAC,QAAQ,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AACM,SAAS,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE;AACvC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;AACpE,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,OAAO,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACpC,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC;AACrB,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACtD;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAChC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AACzC,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,SAAS;AACT,aAAa,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;AAC5C,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC;AAC7B,YAAY,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACnC,gBAAgB,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;AAChD,oBAAoB,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACrC,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,aAAa;AACb,YAAY,GAAG,GAAG,KAAK,CAAC;AACxB,SAAS;AACT,aAAa;AACb,YAAY,GAAG,GAAG,IAAI,CAAC;AACvB,SAAS;AACT,QAAQ,IAAI,GAAG,IAAI,IAAI,EAAE;AACzB,YAAY,MAAM;AAClB,SAAS;AACT,KAAK;AACL,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE;AAC7B,QAAQ,MAAM,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1E,KAAK;AACL,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE;AAC7B,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE;AAC5B,YAAY,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AACtE,gBAAgB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrC,aAAa;AACb,iBAAiB,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;AAChD,gBAAgB,OAAO,GAAG,CAAC;AAC3B,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC/B,YAAY,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AACvE,gBAAgB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AACvC,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,KAAK,MAAM,EAAE;AAC7B,YAAY,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;AAC3C,gBAAgB,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC1C,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACpD,YAAY,OAAO,GAAG,CAAC;AACvB,SAAS;AACT,QAAQ,IAAI,IAAI,KAAK,QAAQ,GAAG,CAAC,EAAE;AACnC,YAAY,OAAO,GAAG,CAAC;AACvB,SAAS;AACT,QAAQ,MAAM,CAAC,kBAAkB,CAAC,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACjF,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf;;AChFO,SAAS,eAAe,CAAC,IAAI,EAAE;AACtC,IAAI,IAAI;AACR,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,KAAK,EAAE,GAAG;AACrB,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACO,SAAS,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE;AACtD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAClC,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAC5C;AACA,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACjE;AACA,IAAI,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE;AACjD,QAAQ,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACnE,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtF,IAAI,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpC,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5C;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACpC,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACrE;AACA,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAQ,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;AAChD;;AChCA,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAChC,SAAS,cAAc,CAAC,IAAI,EAAE;AACrC,IAAI,IAAI;AACR,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC,QAAQ,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9E,QAAQ,IAAI,OAAO,KAAK,CAAC,EAAE;AAC3B,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,KAAK,EAAE,GAAG;AACrB,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,SAAS,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;AACzD,IAAI,IAAI,MAAM,KAAK,aAAa,EAAE;AAClC,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;AACjE,QAAQ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACxC,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,uBAAuB,EAAE;AAC5E,QAAQ,SAAS,EAAE,SAAS;AAC5B,KAAK,CAAC,CAAC;AACP,CAAC;AACD,SAAS,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE;AAChC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;AAChE,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjG,IAAI,IAAI,WAAW,KAAK,OAAO,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,WAAW,EAAE,EAAE;AAC3E,QAAQ,OAAO,MAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;AAC3F,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AACnE,IAAI,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAC/C,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AAC5C,YAAY,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE;AAC3C,YAAY,MAAM,CAAC,kBAAkB,CAAC,sCAAsC,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACvG,SAAS;AACT,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AAC5C;AACA,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;AAC7D,IAAI,IAAI,OAAO,KAAK,KAAK,EAAE;AAC3B,QAAQ,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9C,QAAQ,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,EAAE,mCAAmC,CAAC,CAAC;AACtF,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;AAC3E,QAAQ,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAChE,QAAQ,OAAO,CAAC,QAAQ,GAAG;AAC3B,YAAY,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,sBAAsB,CAAC,IAAI,WAAW,CAAC;AACxE,YAAY,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,wBAAwB,CAAC,IAAI,IAAI,CAAC;AACrE,YAAY,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAClF,SAAS,CAAC;AACV,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC;AACD,SAAS,YAAY,CAAC,IAAI,EAAE;AAC5B,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AACnD,IAAI,IAAI,GAAG,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;AAC1C,QAAQ,MAAM,UAAU,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AAClD,YAAY,OAAO,MAAM,CAAC,kBAAkB,CAAC,4CAA4C,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACxG,SAAS,CAAC;AACV,QAAQ,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;AAC5C,YAAY,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;AACtE,YAAY,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;AAC/D,YAAY,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;AAC/D,YAAY,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;AAC/D;AACA,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAChC,gBAAgB,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9C,aAAa;AACb;AACA,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE;AACrC,gBAAgB,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1C,aAAa;AACb,YAAY,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;AACvE,YAAY,IAAI,KAAK,KAAK,EAAE,EAAE;AAC9B,gBAAgB,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAClD,aAAa;AACb,YAAY,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAChE,SAAS;AACT,aAAa,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;AACjD,YAAY,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;AACtE,YAAY,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;AACtE,YAAY,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AACnD,YAAY,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,QAAQ,EAAE;AAClE,gBAAgB,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9C,aAAa;AACb,YAAY,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;AACnE,YAAY,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;AACvE,YAAY,IAAI,KAAK,KAAK,EAAE,EAAE;AAC9B,gBAAgB,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3C,aAAa;AACb,YAAY,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACrE,SAAS;AACT,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,kBAAkB,CAAC,qCAAqC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACxF,CAAC;AACM,SAAS,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE;AACzD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAClC,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAC5C,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClC,QAAQ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;AACzD,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACpE,QAAQ,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,KAAK;AACL,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACvC,QAAQ,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;AAChD,QAAQ,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D,QAAQ,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC;AACD,SAAS6E,OAAK,CAAC,QAAQ,EAAE;AACzB,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,CAAC;AACM,eAAe,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE;AACrE,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAClC,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAC5C,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClC,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,MAAMA,OAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAS;AACT,QAAQ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;AACzD,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACpE,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,MAAMA,OAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,KAAK;AACL,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACvC,QAAQ,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;AAChD,QAAQ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3E,QAAQ,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AACnC;;ACrJA,IAAI,sBAAsB,GAAG,CAAC7E,MAAI,IAAIA,MAAI,CAAC,sBAAsB,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AACjH,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;AAC5E,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;AACtL,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AAC9G,CAAC,CAAC;AACF,IAAI,sBAAsB,GAAG,CAACA,MAAI,IAAIA,MAAI,CAAC,sBAAsB,KAAK,UAAU,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AAC1G,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;AACjG,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;AACvL,IAAI,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClG,CAAC,CAAC;AACF,IAAI,gBAAgB,CAAC;AAWrB,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,IAAI,IAAI;AACR,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACzC,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACpD,QAAQ,IAAI,GAAG,IAAI,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE;AAC5E,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC5B,YAAY,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACrE,YAAY,IAAI,MAAM,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,EAAE;AACtD,gBAAgB,OAAO,IAAI,CAAC;AAC5B,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,CAAC,EAAE;AACd,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAI,IAAI;AACR,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,QAAQ,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ;AAC/D,YAAY,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ;AAChD,YAAY,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE;AACpC,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,OAAO,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC3F,KAAK;AACL,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,IAAI;AACR,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE;AAC1D,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;AACrC,QAAQ,IAAI,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,EAAE;AAClE,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,CAAC,EAAE;AACd,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,SAAS,KAAK,CAAC,QAAQ,EAAE;AACzB,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,CAAC;AACM,MAAM,MAAM,SAAS,UAAU,CAAC;AACvC,IAAI,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE;AAC/B,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC;AAC9B,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC;AAC5B;AACA,QAAQ,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;AACvC,YAAY,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7C,SAAS;AACT;AACA,QAAQ,IAAI,UAAU,IAAI,IAAI,EAAE;AAChC,YAAY,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC1C,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/C,gBAAgB,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;AACnD,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,UAAU,IAAI,IAAI,EAAE;AAChC,YAAY,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AAC5C,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/C,gBAAgB,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;AACnD,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,UAAU,IAAI,IAAI,EAAE;AAChC,YAAY,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,UAAU,IAAI,IAAI,EAAE;AAChC,YAAY,MAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAC5E,SAAS;AACT,QAAQ,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACpC,QAAQ,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,QAAQ,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACtE,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC,EAAE;AAClF,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB,QAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,MAAM,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE;AACvD,QAAQ,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE;AACnC,QAAQ,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,aAAa,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC7D,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC;AAC3B,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;AAClC,YAAY,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC1E,SAAS;AACT,aAAa,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AACxC,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAa;AACb,YAAY,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC3D,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,MAAM,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AAC5F,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACtD,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;AAChD,YAAY,MAAM,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AAC7F,SAAS;AACT;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE;AACjD,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC;AAC3B,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;AAClC,YAAY,OAAO,GAAG,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC9D,SAAS;AACT,aAAa,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AACxC,YAAY,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC3D,SAAS;AACT,aAAa;AACb,YAAY,OAAO,MAAM,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AAC5F,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACtD,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;AAChD,YAAY,MAAM,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AAC7F,SAAS;AACT;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACtD,QAAQ,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/F,KAAK;AACL,IAAI,OAAO,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAC5C,QAAQ,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,EAAE,EAAE,QAAQ,EAAE;AACjE,QAAQ,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACrF,KAAK;AACL,CAAC;AACD,gBAAgB,GAAG,IAAI,OAAO,EAAE;;AClLpB,MAAC,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"ethers.js","sources":["../../properties/lib/properties.js","../../properties/lib/events.js","../../properties/lib/storage.js","../../logger/lib/errors.js","../../logger/lib/_version.js","../../logger/lib/logger.js","../../abi/lib/_version.js","../../abi/lib/logger.js","../../abi/lib/fragments.js","../../math/lib/_version.js","../../math/lib/logger.js","../../math/lib/convert.js","../../math/lib/maths.js","../../math/lib/fixednumber.js","../../math/lib/base58.js","../../math/lib/units.js","../../bytes/lib/check.js","../../bytes/lib/_version.js","../../bytes/lib/logger.js","../../bytes/lib/array.js","../../bytes/lib/base64.js","../../bytes/lib/hex.js","../../bytes/lib/data.js","../../bytes/lib/pad.js","../../abi/lib/coders/abstract-coder.js","../../../node_modules/@noble/hashes/esm/utils.js","../../../node_modules/@noble/hashes/esm/hmac.js","../../../node_modules/@noble/hashes/esm/pbkdf2.js","../../../node_modules/@noble/hashes/esm/_sha2.js","../../../node_modules/@noble/hashes/esm/sha256.js","../../../node_modules/@noble/hashes/esm/_u64.js","../../../node_modules/@noble/hashes/esm/sha512.js","../../crypto/lib/_version.js","../../crypto/lib/logger.js","../../crypto/lib/crypto-browser.js","../../crypto/lib/hmac.js","../../../node_modules/@noble/hashes/esm/sha3.js","../../crypto/lib/keccak.js","../../../node_modules/@noble/hashes/esm/ripemd160.js","../../crypto/lib/ripemd160.js","../../crypto/lib/pbkdf2.js","../../crypto/lib/random.js","../../../node_modules/@noble/hashes/esm/scrypt.js","../../crypto/lib/scrypt.js","../../crypto/lib/sha2.js","../../crypto/lib/index.js","../../address/lib/_version.js","../../address/lib/logger.js","../../address/lib/address.js","../../rlp/lib/_version.js","../../rlp/lib/logger.js","../../rlp/lib/encode.js","../../rlp/lib/decode.js","../../address/lib/contract-address.js","../../address/lib/checks.js","../../abi/lib/typed.js","../../abi/lib/coders/address.js","../../abi/lib/coders/anonymous.js","../../abi/lib/coders/array.js","../../abi/lib/coders/boolean.js","../../abi/lib/coders/bytes.js","../../abi/lib/coders/fixed-bytes.js","../../abi/lib/coders/null.js","../../abi/lib/coders/number.js","../../strings/lib/_version.js","../../strings/lib/logger.js","../../strings/lib/utf8.js","../../strings/lib/bytes32.js","../../strings/lib/idna.js","../../abi/lib/coders/string.js","../../abi/lib/coders/tuple.js","../../abi/lib/abi-coder.js","../../hash/lib/id.js","../../hash/lib/_version.js","../../hash/lib/logger.js","../../hash/lib/namehash.js","../../hash/lib/message.js","../../hash/lib/solidity.js","../../hash/lib/typed-data.js","../../abi/lib/interface.js","../../web/lib/_version.js","../../web/lib/logger.js","../../web/lib/response.js","../../web/lib/get-url-browser.js","../../web/lib/request.js","../../web/lib/fetch-data.js","../../providers/lib/_version.js","../../providers/lib/logger.js","../../providers/lib/ens-resolver.js","../../signing-key/lib/_version.js","../../signing-key/lib/logger.js","../../signing-key/lib/signature.js","../../../node_modules/@noble/secp256k1/lib/esm/index.js","../../signing-key/lib/signing-key.js","../../transaction/lib/accesslist.js","../../transaction/lib/address.js","../../transaction/lib/_version.js","../../transaction/lib/logger.js","../../transaction/lib/transaction.js","../../providers/lib/provider.js","../../providers/lib/formatter.js","../../providers/lib/plugins-network.js","../../providers/lib/network.js","../../providers/lib/subscriber-polling.js","../../providers/lib/abstract-provider.js","../../providers/lib/abstract-signer.js","../../providers/lib/community.js","../../providers/lib/subscriber-filterid.js","../../providers/lib/provider-jsonrpc.js","../../providers/lib/provider-ankr.js","../../providers/lib/provider-alchemy.js","../../providers/lib/provider-cloudflare.js","../../providers/lib/provider-etherscan.js","../../providers/lib/provider-infura.js","../../providers/lib/provider-pocket.js","../../providers/lib/shuffle.js","../../providers/lib/provider-fallback.js","../../providers/lib/ws-browser.js","../../providers/lib/provider-socket.js","../../providers/lib/provider-websocket.js","../../providers/lib/default-provider.js","../../providers/lib/provider-ipcsocket-browser.js","../../contract/lib/wrappers.js","../../contract/lib/_version.js","../../contract/lib/logger.js","../../contract/lib/contract.js","../../wordlists/lib/decode-owl.js","../../wordlists/lib/_version.js","../../wordlists/lib/logger.js","../../wordlists/lib/wordlist.js","../../wordlists/lib/wordlist-owl.js","../../wordlists/lib/lang-en.js","../../wallet/lib/_version.js","../../wallet/lib/logger.js","../../wordlists/lib/wordlists-en.js","../../wordlists/lib/bit-reader.js","../../wordlists/lib/decode-owla.js","../../wordlists/lib/wordlist-owla.js","../../wallet/lib/mnemonic.js","../../wallet/lib/base-wallet.js","../../wallet/lib/hdwallet.js","../../../node_modules/aes-js/lib/aes.js","../../../node_modules/aes-js/lib/mode.js","../../../node_modules/aes-js/lib/mode-cbc.js","../../../node_modules/aes-js/lib/mode-cfb.js","../../../node_modules/aes-js/lib/mode-ctr.js","../../../node_modules/aes-js/lib/mode-ofb.js","../../../node_modules/aes-js/lib/padding.js","../../wallet/lib/utils.js","../../wallet/lib/json-crowdsale.js","../../wallet/lib/json-keystore.js","../../wallet/lib/wallet.js","../lib/_version.js"],"sourcesContent":["//import type { BigNumber, BigNumberish } from \"./big-number\";\n//import type { Bytes, BytesLike } from \"./bytes\";\n//import type { Signature, SignatureLike } from \"./signature\";\n/*\nexport type Loose = T extends BigNumber ? BigNumberish:\n T extends number ? BigNumberish:\n T extends Bytes ? BytesLike:\n T extends Signature ? SignatureLike:\n T;\nexport type LooseObject = { [P in keyof T]?: Loose; };\n*/\n//export type Deferrable = T | Promise;\n/*\nexport type DeferrableObject = {\n [ P in keyof T ]: Deferrable\n};\n*/\n/*\nexport type Frozen = Readonly<{\n [ P in keyof T ]: T[P] extends Freezable ? Frozen: T[P];\n}>;\n\nexport interface Freezable {\n clone(): T;\n freeze(): Frozen;\n isFrozen(): boolean;\n}\n*/\n/*\nconst _data: WeakMap = new WeakMap();\n\nexport class Data implements Freezable {\n #props: {\n data: Uint8Array\n };\n\n [ index: number ]: number;\n\n constructor(lengthOrData: number | Uint8Array) {\n if (typeof(lengthOrData) === \"number\") {\n _data[this] = new Uint8Array(lengthOrData);\n } else {\n _data[this] = lengthOrData;\n }\n\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return Reflect.get(target, prop, receiver); }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n throw new Error(\"\");\n }\n return data[index];\n },\n\n set: (target, prop, value, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return false; }\n\n if (value < 0 || value > 255 || value % 1) { return false; }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n return false;\n }\n\n data[index] = value;\n\n return true;\n },\n });\n }\n\n toString(): string {\n return this.slice().toString();\n }\n\n slice(): Uint8Array {\n return _data.get(this).slice();\n }\n\n clone(): Data {\n return new Data(this.slice());\n }\n\n freeze(): Frozen {\n //Object.freeze(this.#props);\n return this;\n }\n\n isFrozen(): boolean {\n return Object.isFrozen(this.#props);\n }\n}\nconst d = new Data(4);\nconsole.log(d.toString());\nd[0] = 45;\nconsole.log(d.toString());\n*/\n/*\nexport type DeferrableObject = {\n [ P in keyof T ]: Deferrable\n};\n*/\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n/*\nexport type IsCancelled = () => Promise;\n\nexport function createPromise(resolve: (isCancelled: IsCancelled, (result: T) => void) => void, reject: (error: Error) => void, isCancelled: IsCancelled): CancellablePromise {\n let cancelled = false;\n\n const promise = new Promise((resolve, reject) => {\n \n });\n\n (>promise).cancel = function() {\n cancelled = true;\n };\n\n return (>promise);\n}\n*/\n/*\nexport class A implements Freezable {\n foo: number;\n constructor(foo: number) {\n this.foo = foo;\n }\n freeze(): Frozen {\n Object.freeze(this);\n return this;\n }\n clone(): A {\n return new A(this.foo);\n }\n}\n\nexport class B implements Freezable {\n a: A;\n constructor(a: A) {\n this.a = a;\n }\n freeze(): Frozen {\n this.a.freeze();\n Object.freeze(this);\n return this;\n }\n clone(): B {\n return new B(this.a);\n }\n}\n\nexport function test() {\n const a = new A(123);\n const b = new B(a);\n b.a = new A(234);\n const b2 = b.freeze();\n b2.a.foo = 123; // = a;\n}\n*/\nfunction checkType(value, type) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n throw new Error(\"invalid value for type\");\n}\nexport function defineProperties(target, values, types, defaults) {\n for (let key in values) {\n let value = values[key];\n const fallback = (defaults ? defaults[key] : undefined);\n if (fallback !== undefined) {\n value = fallback;\n }\n else {\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type);\n }\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _EventPayload_listener;\nimport { defineProperties } from \"./properties.js\";\nexport class EventPayload {\n constructor(emitter, listener, filter) {\n _EventPayload_listener.set(this, void 0);\n __classPrivateFieldSet(this, _EventPayload_listener, listener, \"f\");\n defineProperties(this, { emitter, filter });\n }\n async removeListener() {\n if (__classPrivateFieldGet(this, _EventPayload_listener, \"f\") == null) {\n return;\n }\n await this.emitter.off(this.filter, __classPrivateFieldGet(this, _EventPayload_listener, \"f\"));\n }\n}\n_EventPayload_listener = new WeakMap();\n//# sourceMappingURL=events.js.map","export function getStore(store, key) {\n return store[key];\n}\nexport function setStore(store, key, value) {\n if (Object.isFrozen(store)) {\n throw new Error(\"frozen object is immuatable; cannot set \" + key);\n }\n store[key] = value;\n}\n//# sourceMappingURL=storage.js.map","//export type TransactionReceipt {\n//}\n/**\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, errors.CALL_EXCEPTION)) {\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n//# sourceMappingURL=errors.js.map","export const version = \"@ethersproject/logger@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Logger_instances, _Logger_getBytes, _Logger_log;\nimport { version } from \"./_version.js\";\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\n;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nlet _globalLogger = null;\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\nfunction defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true, writable: false, value,\n });\n}\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\n// The type of error to use for various error codes\nconst ErrorConstructors = {};\nErrorConstructors.INVALID_ARGUMENT = TypeError;\nErrorConstructors.NUMERIC_FAULT = RangeError;\nErrorConstructors.BUFFER_OVERRUN = RangeError;\nexport class Logger {\n constructor(version) {\n _Logger_instances.add(this);\n defineReadOnly(this, \"version\", version || \"_\");\n }\n makeError(message, code, info) {\n {\n const details = [];\n if (info) {\n for (const key in info) {\n const value = (info[key]);\n try {\n details.push(key + \"=\" + JSON.stringify(value));\n }\n catch (error) {\n details.push(key + \"=[could not serialize object]\");\n }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${this.version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n const create = ErrorConstructors[code] || Error;\n const error = (new create(message));\n defineReadOnly(error, \"code\", code);\n if (info) {\n for (const key in info) {\n defineReadOnly(error, key, (info[key]));\n }\n }\n return error;\n }\n throwError(message, code, info) {\n throw this.makeError(message, code, info);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, \"INVALID_ARGUMENT\", {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, info) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code || \"UNKNOWN_ERROR\", info);\n }\n assertArgument(condition, message, name, value) {\n return this.assert(condition, message, \"INVALID_ARGUMENT\", {\n argument: name,\n value\n });\n }\n assertIntegerArgument(name, value, lower, upper) {\n let message = null;\n if (typeof (value) !== \"number\") {\n message = \"expected a number\";\n }\n else if (!Number.isInteger(value)) {\n message = \"invalid integer\";\n }\n else if ((lower != null && value < lower) || (upper != null && value > upper)) {\n message = \"value is out of range\";\n }\n if (message) {\n this.throwArgumentError(message, name, value);\n }\n }\n assertSafeUint53(value, message) {\n this.assertArgument((typeof (value) === \"number\"), \"invalid number\", \"value\", value);\n if (message == null) {\n message = \"value not safe\";\n }\n const operation = \"assertSafeInteger\";\n this.assert((value >= 0 && value < 0x1fffffffffffff), message, \"NUMERIC_FAULT\", {\n operation, fault: \"out-of-safe-range\", value\n });\n this.assert((value % 1) === 0, message, \"NUMERIC_FAULT\", {\n operation, fault: \"non-integer\", value\n });\n }\n assertNormalize(form) {\n if (_normalizeForms.indexOf(form) === -1) {\n this.throwError(\"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n }\n }\n assertPrivate(givenGuard, guard, className = \"\") {\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n this.throwError(`private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n }\n assertArgumentCount(count, expectedCount, message = \"\") {\n if (message) {\n message = \": \" + message;\n }\n this.assert((count >= expectedCount), \"missing arguemnt\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n this.assert((count >= expectedCount), \"too many arguemnts\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n }\n getBytes(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, false);\n }\n getBytesCopy(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, true);\n }\n getNumber(value, name) {\n switch (typeof (value)) {\n case \"bigint\":\n if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return Number(value);\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return value;\n case \"string\":\n try {\n return this.getNumber(BigInt(value), name);\n }\n catch (e) {\n this.throwArgumentError(`invalid numeric string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid numeric value\", name || \"value\", value);\n }\n getBigInt(value, name) {\n switch (typeof (value)) {\n case \"bigint\": return value;\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return BigInt(value);\n case \"string\":\n try {\n return BigInt(value);\n }\n catch (e) {\n this.throwArgumentError(`invalid BigNumberish string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid BigNumberish value\", name || \"value\", value);\n }\n debug(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.DEBUG, args);\n }\n info(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.INFO, args);\n }\n warn(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.WARNING, args);\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setLogLevel(logLevel) {\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_Logger_instances = new WeakSet(), _Logger_getBytes = function _Logger_getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x([0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n return this.throwArgumentError(\"invalid BytesLike value\", name || \"value\", value);\n}, _Logger_log = function _Logger_log(logLevel, args) {\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]) {\n return;\n }\n console.log.apply(console, args);\n};\nLogger.LogLevels = LogLevel;\n//# sourceMappingURL=logger.js.map","export const version = \"@ethersproject/abi@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TokenString_instances, _TokenString_offset, _TokenString_tokens, _TokenString_subTokenString, _ParamType_instances, _ParamType_walkAsync;\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n;\nexport var FormatType;\n(function (FormatType) {\n // Bare formatting, as is needed for computing a sighash of an event or function\n FormatType[\"sighash\"] = \"sighash\";\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n FormatType[\"minimal\"] = \"minimal\";\n // Human-Readable with nice spacing, including all names\n FormatType[\"full\"] = \"full\";\n // JSON-format a la Solidity\n FormatType[\"json\"] = \"json\";\n})(FormatType || (FormatType = {}));\n;\n// [ \"a\", \"b\" ] => { \"a\": 1, \"b\": 1 }\nfunction setify(items) {\n const result = new Set();\n items.forEach((k) => result.add(k));\n return Object.freeze(result);\n}\n// Visibility Keywords\nconst _kwVisib = \"constant external internal payable private public pure view\";\nconst KwVisib = setify(_kwVisib.split(\" \"));\nconst _kwTypes = \"constructor error event function struct\";\nconst KwTypes = setify(_kwTypes.split(\" \"));\nconst _kwModifiers = \"calldata memory storage payable indexed\";\nconst KwModifiers = setify(_kwModifiers.split(\" \"));\nconst _kwOther = \"tuple returns\";\n// All Keywords\nconst _keywords = [_kwTypes, _kwModifiers, _kwOther, _kwVisib].join(\" \");\nconst Keywords = setify(_keywords.split(\" \"));\n// Single character tokens\nconst SimpleTokens = {\n \"(\": \"OPEN_PAREN\", \")\": \"CLOSE_PAREN\",\n \"[\": \"OPEN_BRACKET\", \"]\": \"CLOSE_BRACKET\",\n \",\": \"COMMA\", \"@\": \"AT\"\n};\n// Parser regexes to consume the next token\nconst regexWhitespace = new RegExp(\"^(\\\\s*)\");\nconst regexNumber = new RegExp(\"^([0-9]+)\");\nconst regexIdentifier = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)\");\nconst regexType = new RegExp(\"^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))\");\nexport class TokenString {\n constructor(tokens) {\n _TokenString_instances.add(this);\n _TokenString_offset.set(this, void 0);\n _TokenString_tokens.set(this, void 0);\n __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\");\n __classPrivateFieldSet(this, _TokenString_tokens, tokens.slice(), \"f\");\n }\n get offset() { return __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n get length() { return __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length - __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n clone() { return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\")); }\n reset() { __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\"); }\n // Pops and returns the value of the next token, if it is a keyword in allowed; throws if out of tokens\n popKeyword(allowed) {\n const top = this.peek();\n if (top.type !== \"KEYWORD\" || !allowed.has(top.text)) {\n throw new Error(`expected keyword ${top.text}`);\n }\n return this.pop().text;\n }\n // Pops and returns the value of the next token if it is `type`; throws if out of tokens\n popType(type) {\n if (this.peek().type !== type) {\n throw new Error(`expected ${type}; got ${JSON.stringify(this.peek())}`);\n }\n return this.pop().text;\n }\n // Pops and returns a \"(\" TOKENS \")\"\n popParen() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = __classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, top.match + 1);\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Pops and returns the items within \"(\" ITEM1 \",\" ITEM2 \",\" ... \")\"\n popParams() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = [];\n while (__classPrivateFieldGet(this, _TokenString_offset, \"f\") < top.match - 1) {\n const link = this.peek().linkNext;\n result.push(__classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, link));\n __classPrivateFieldSet(this, _TokenString_offset, link, \"f\");\n }\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Returns the top Token, throwing if out of tokens\n peek() {\n if (__classPrivateFieldGet(this, _TokenString_offset, \"f\") >= __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length) {\n throw new Error(\"out-of-bounds\");\n }\n return __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[__classPrivateFieldGet(this, _TokenString_offset, \"f\")];\n }\n // Returns the next value, if it is a keyword in `allowed`\n peekKeyword(allowed) {\n const top = this.peekType(\"KEYWORD\");\n return (top != null && allowed.has(top)) ? top : null;\n }\n // Returns the value of the next token if it is `type`\n peekType(type) {\n if (this.length === 0) {\n return null;\n }\n const top = this.peek();\n return (top.type === type) ? top.text : null;\n }\n // Returns the next token; throws if out of tokens\n pop() {\n var _a;\n const result = this.peek();\n __classPrivateFieldSet(this, _TokenString_offset, (_a = __classPrivateFieldGet(this, _TokenString_offset, \"f\"), _a++, _a), \"f\");\n return result;\n }\n toString() {\n const tokens = [];\n for (let i = __classPrivateFieldGet(this, _TokenString_offset, \"f\"); i < __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length; i++) {\n const token = __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[i];\n tokens.push(`${token.type}:${token.text}`);\n }\n return ``;\n }\n}\n_TokenString_offset = new WeakMap(), _TokenString_tokens = new WeakMap(), _TokenString_instances = new WeakSet(), _TokenString_subTokenString = function _TokenString_subTokenString(from = 0, to = 0) {\n return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\").slice(from, to).map((t) => {\n return Object.freeze(Object.assign({}, t, {\n match: (t.match - from),\n linkBack: (t.linkBack - from),\n linkNext: (t.linkNext - from),\n }));\n return t;\n }));\n};\nexport function lex(text) {\n const tokens = [];\n const throwError = (message) => {\n const token = (offset < text.length) ? JSON.stringify(text[offset]) : \"$EOI\";\n throw new Error(`invalid token ${token} at ${offset}: ${message}`);\n };\n let brackets = [];\n let commas = [];\n let offset = 0;\n while (offset < text.length) {\n // Strip off any leading whitespace\n let cur = text.substring(offset);\n let match = cur.match(regexWhitespace);\n if (match) {\n offset += match[1].length;\n cur = text.substring(offset);\n }\n const token = { depth: brackets.length, linkBack: -1, linkNext: -1, match: -1, type: \"\", text: \"\", offset, value: -1 };\n tokens.push(token);\n let type = (SimpleTokens[cur[0]] || \"\");\n if (type) {\n token.type = type;\n token.text = cur[0];\n offset++;\n if (type === \"OPEN_PAREN\") {\n brackets.push(tokens.length - 1);\n commas.push(tokens.length - 1);\n }\n else if (type == \"CLOSE_PAREN\") {\n if (brackets.length === 0) {\n throwError(\"no matching open bracket\");\n }\n token.match = brackets.pop();\n (tokens[token.match]).match = tokens.length - 1;\n token.depth--;\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n }\n else if (type === \"COMMA\") {\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n commas.push(tokens.length - 1);\n }\n else if (type === \"OPEN_BRACKET\") {\n token.type = \"BRACKET\";\n }\n else if (type === \"CLOSE_BRACKET\") {\n // Remove the CLOSE_BRACKET\n let suffix = tokens.pop().text;\n if (tokens.length > 0 && tokens[tokens.length - 1].type === \"NUMBER\") {\n const value = tokens.pop().text;\n suffix = value + suffix;\n (tokens[tokens.length - 1]).value = logger.getNumber(value);\n }\n if (tokens.length === 0 || tokens[tokens.length - 1].type !== \"BRACKET\") {\n throw new Error(\"missing opening bracket\");\n }\n (tokens[tokens.length - 1]).text += suffix;\n }\n continue;\n }\n match = cur.match(regexIdentifier);\n if (match) {\n token.text = match[1];\n offset += token.text.length;\n if (Keywords.has(token.text)) {\n token.type = \"KEYWORD\";\n continue;\n }\n if (token.text.match(regexType)) {\n token.type = \"TYPE\";\n continue;\n }\n token.type = \"ID\";\n continue;\n }\n match = cur.match(regexNumber);\n if (match) {\n token.text = match[1];\n token.type = \"NUMBER\";\n offset += token.text.length;\n continue;\n }\n throw new Error(`unexpected token ${JSON.stringify(cur[0])} at position ${offset}`);\n }\n return new TokenString(tokens.map((t) => Object.freeze(t)));\n}\n// Check only one of `allowed` is in `set`\nfunction allowSingle(set, allowed) {\n let included = [];\n for (const key in allowed.keys()) {\n if (set.has(key)) {\n included.push(key);\n }\n }\n if (included.length > 1) {\n throw new Error(`conflicting types: ${included.join(\", \")}`);\n }\n}\n// Functions to process a Solidity Signature TokenString from left-to-right for...\n// ...the name with an optional type, returning the name\nfunction consumeName(type, tokens) {\n if (tokens.peekKeyword(KwTypes)) {\n const keyword = tokens.pop().text;\n if (keyword !== type) {\n throw new Error(`expected ${type}, got ${keyword}`);\n }\n }\n return tokens.popType(\"ID\");\n}\n// ...all keywords matching allowed, returning the keywords\nfunction consumeKeywords(tokens, allowed) {\n const keywords = new Set();\n while (true) {\n const keyword = tokens.peekType(\"KEYWORD\");\n if (keyword == null || (allowed && !allowed.has(keyword))) {\n break;\n }\n tokens.pop();\n if (keywords.has(keyword)) {\n throw new Error(`duplicate keywords: ${JSON.stringify(keyword)}`);\n }\n keywords.add(keyword);\n }\n return Object.freeze(keywords);\n}\n// ...all visibility keywords, returning the coalesced mutability\nfunction consumeMutability(tokens) {\n let modifiers = consumeKeywords(tokens, KwVisib);\n // Detect conflicting modifiers\n allowSingle(modifiers, setify(\"constant payable nonpayable\".split(\" \")));\n allowSingle(modifiers, setify(\"pure view payable nonpayable\".split(\" \")));\n // Process mutability states\n if (modifiers.has(\"view\")) {\n return \"view\";\n }\n if (modifiers.has(\"pure\")) {\n return \"pure\";\n }\n if (modifiers.has(\"payable\")) {\n return \"payable\";\n }\n if (modifiers.has(\"nonpayable\")) {\n return \"nonpayable\";\n }\n // Process legacy `constant` last\n if (modifiers.has(\"constant\")) {\n return \"view\";\n }\n return \"nonpayable\";\n}\n// ...a parameter list, returning the ParamType list\nfunction consumeParams(tokens, allowIndexed) {\n return tokens.popParams().map((t) => ParamType.fromTokens(t, allowIndexed));\n}\n// ...a gas limit, returning a BigNumber or null if none\nfunction consumeGas(tokens) {\n if (tokens.peekType(\"AT\")) {\n tokens.pop();\n if (tokens.peekType(\"NUMBER\")) {\n return logger.getBigInt(tokens.pop().text);\n }\n throw new Error(\"invalid gas\");\n }\n return null;\n}\nfunction consumeEoi(tokens) {\n if (tokens.length) {\n throw new Error(`unexpected tokens: ${tokens.toString()}`);\n }\n}\nconst regexArrayType = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nfunction verifyBasicType(type) {\n const match = type.match(regexType);\n if (!match) {\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n }\n if (type === \"uint\") {\n return \"uint256\";\n }\n if (type === \"int\") {\n return \"int256\";\n }\n if (match[2]) {\n // bytesXX\n const length = parseInt(match[2]);\n if (length === 0 || length > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"type\", type);\n }\n }\n else if (match[3]) {\n // intXX or uintXX\n const size = parseInt(match[3]);\n if (size === 0 || size > 256 || size % 8) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n }\n return type;\n}\n// Make the Fragment constructors effectively private\nconst _guard = {};\nconst internal = Symbol.for(\"_ethers_internal\");\nconst ParamTypeInternal = \"_ParamTypeInternal\";\nexport class ParamType {\n constructor(guard, name, type, baseType, indexed, components, arrayLength, arrayChildren) {\n _ParamType_instances.add(this);\n logger.assertPrivate(guard, _guard, \"ParamType\");\n Object.defineProperty(this, internal, { value: ParamTypeInternal });\n if (components) {\n components = Object.freeze(components.slice());\n }\n if (baseType === \"array\") {\n if (arrayLength == null || arrayChildren == null) {\n throw new Error(\"\");\n }\n }\n else if (arrayLength != null || arrayChildren != null) {\n throw new Error(\"\");\n }\n if (baseType === \"tuple\") {\n if (components == null) {\n throw new Error(\"\");\n }\n }\n else if (components != null) {\n throw new Error(\"\");\n }\n defineProperties(this, {\n name, type, baseType, indexed, components, arrayLength, arrayChildren\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 = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n let result = {\n type: ((this.baseType === \"tuple\") ? \"tuple\" : this.type),\n name: (this.name || undefined)\n };\n if (typeof (this.indexed) === \"boolean\") {\n result.indexed = this.indexed;\n }\n if (this.isTuple()) {\n result.components = this.components.map((c) => JSON.parse(c.format(format)));\n }\n return JSON.stringify(result);\n }\n let result = \"\";\n // Array\n if (this.isArray()) {\n result += this.arrayChildren.format(format);\n result += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n }\n else {\n if (this.isTuple()) {\n if (format !== FormatType.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map((comp) => comp.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n }\n else {\n result += this.type;\n }\n }\n if (format !== FormatType.sighash) {\n if (this.indexed === true) {\n result += \" indexed\";\n }\n if (format === FormatType.full && this.name) {\n result += \" \" + this.name;\n }\n }\n return result;\n }\n static isArray(value) {\n return value && (value.baseType === \"array\");\n }\n isArray() {\n return (this.baseType === \"array\");\n }\n isTuple() {\n return (this.baseType === \"tuple\");\n }\n isIndexable() {\n return (this.indexed != null);\n }\n walk(value, process) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v) => (this.arrayChildren.walk(v, process)));\n }\n if (this.isTuple()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid tuple value\");\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v, i) => (this.components[i].walk(v, process)));\n }\n return process(this.type, value);\n }\n async walkAsync(value, process) {\n const promises = [];\n const result = [value];\n __classPrivateFieldGet(this, _ParamType_instances, \"m\", _ParamType_walkAsync).call(this, promises, value, process, (value) => {\n result[0] = value;\n });\n if (promises.length) {\n await Promise.all(promises);\n }\n return result[0];\n }\n static from(obj, allowIndexed) {\n if (ParamType.isParamType(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n return ParamType.fromTokens(lex(obj), allowIndexed);\n }\n if (obj instanceof TokenString) {\n return ParamType.fromTokens(obj, allowIndexed);\n }\n const name = obj.name;\n if (name && (typeof (name) !== \"string\" || !name.match(regexIdentifier))) {\n logger.throwArgumentError(\"invalid name\", \"obj.name\", name);\n }\n let indexed = obj.indexed;\n if (indexed != null) {\n if (!allowIndexed) {\n logger.throwArgumentError(\"parameter cannot be indexed\", \"obj.indexed\", obj.indexed);\n }\n indexed = !!indexed;\n }\n let type = obj.type;\n let arrayMatch = type.match(regexArrayType);\n if (arrayMatch) {\n const arrayLength = arrayMatch[2];\n const arrayChildren = ParamType.from({\n type: arrayMatch[1],\n components: obj.components\n });\n return new ParamType(_guard, name, type, \"array\", indexed, null, arrayLength, arrayChildren);\n }\n if (type.substring(0, 5) === \"tuple(\" || type[0] === \"(\") {\n const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;\n const tuple = new ParamType(_guard, name, type, \"tuple\", indexed, comps, null, null);\n // @TODO: use lexer to validate and normalize type\n return tuple;\n }\n type = verifyBasicType(obj.type);\n return new ParamType(_guard, name, type, type, indexed, null, null, null);\n }\n static fromObject(obj, allowIndexed) {\n throw new Error(\"@TODO\");\n }\n static fromTokens(tokens, allowIndexed) {\n let type = \"\", baseType = \"\";\n let comps = null;\n if (consumeKeywords(tokens, setify([\"tuple\"])).has(\"tuple\") || tokens.peekType(\"OPEN_PAREN\")) {\n // Tuple\n baseType = \"tuple\";\n comps = tokens.popParams().map((t) => ParamType.from(t));\n type = `tuple(${comps.map((c) => c.format()).join(\",\")})`;\n }\n else {\n // Normal\n type = verifyBasicType(tokens.popType(\"TYPE\"));\n baseType = type;\n }\n // Check for Array\n let arrayChildren = null;\n let arrayLength = null;\n while (tokens.length && tokens.peekType(\"BRACKET\")) {\n const bracket = tokens.pop(); //arrays[i];\n arrayChildren = new ParamType(_guard, \"\", type, baseType, null, comps, arrayLength, arrayChildren);\n arrayLength = bracket.value;\n type += bracket.text;\n baseType = \"array\";\n comps = null;\n }\n let indexed = null;\n const keywords = consumeKeywords(tokens, KwModifiers);\n if (keywords.has(\"indexed\")) {\n if (!allowIndexed) {\n throw new Error(\"\");\n }\n indexed = true;\n }\n const name = (tokens.peekType(\"ID\") ? tokens.pop().text : \"\");\n if (tokens.length) {\n throw new Error(\"leftover tokens\");\n }\n return new ParamType(_guard, name, type, baseType, indexed, comps, arrayLength, arrayChildren);\n }\n static isParamType(value) {\n return (value && value[internal] === ParamTypeInternal);\n }\n}\n_ParamType_instances = new WeakSet(), _ParamType_walkAsync = function _ParamType_walkAsync(promises, value, process, setValue) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const childType = this.arrayChildren;\n const result = value.slice();\n result.forEach((value, index) => {\n __classPrivateFieldGet(childType, _ParamType_instances, \"m\", _ParamType_walkAsync).call(childType, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n if (this.isTuple()) {\n const components = this.components;\n // Convert the object into an array\n let result;\n if (Array.isArray(value)) {\n result = value.slice();\n }\n else {\n if (value == null || typeof (value) !== \"object\") {\n throw new Error(\"invlaid tuple value\");\n }\n result = components.map((param) => {\n if (!param.name) {\n throw new Error(\"cannot use object value with unnamed components\");\n }\n if (!(param.name in value)) {\n throw new Error(`missing value for component ${param.name}`);\n }\n return value[param.name];\n });\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n result.forEach((value, index) => {\n var _a;\n __classPrivateFieldGet((_a = components[index]), _ParamType_instances, \"m\", _ParamType_walkAsync).call(_a, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n const result = process(this.type, value);\n if (result.then) {\n promises.push((async function () { setValue(await result); })());\n }\n else {\n setValue(result);\n }\n};\nexport var FragmentType;\n(function (FragmentType) {\n FragmentType[\"constructor\"] = \"constructor\";\n FragmentType[\"error\"] = \"error\";\n FragmentType[\"event\"] = \"event\";\n FragmentType[\"function\"] = \"function\";\n FragmentType[\"struct\"] = \"struct\";\n})(FragmentType || (FragmentType = {}));\n;\nexport class Fragment {\n constructor(guard, type, inputs) {\n logger.assertPrivate(guard, _guard, \"Fragment\");\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { type, inputs });\n }\n static from(obj) {\n if (typeof (obj) === \"string\") {\n return this.fromString(obj);\n }\n if (obj instanceof TokenString) {\n return this.fromTokens(obj);\n }\n if (typeof (obj) === \"object\") {\n return this.fromObject(obj);\n }\n throw new Error(`unsupported type: ${obj}`);\n }\n static fromObject(obj) {\n switch (obj.type) {\n case \"constructor\": return ConstructorFragment.fromObject(obj);\n case \"error\": return ErrorFragment.fromObject(obj);\n case \"event\": return EventFragment.fromObject(obj);\n case \"function\": return FunctionFragment.fromObject(obj);\n case \"struct\": return StructFragment.fromObject(obj);\n }\n throw new Error(\"not implemented yet\");\n }\n static fromString(text) {\n try {\n Fragment.from(JSON.parse(text));\n }\n catch (e) { }\n return Fragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const type = tokens.popKeyword(KwTypes);\n switch (type) {\n case \"constructor\": return ConstructorFragment.fromTokens(tokens);\n case \"error\": return ErrorFragment.fromTokens(tokens);\n case \"event\": return EventFragment.fromTokens(tokens);\n case \"function\": return FunctionFragment.fromTokens(tokens);\n case \"struct\": return StructFragment.fromTokens(tokens);\n }\n throw new Error(`unsupported type: ${type}`);\n }\n /*\n static fromTokens(tokens: TokenString): Fragment {\n const assertDone = () => {\n if (tokens.length) { throw new Error(`unexpected tokens: ${ tokens.toString() }`); }\n });\n\n const type = (tokens.length && tokens.peek().type === \"KEYWORD\") ? tokens.peek().text: \"unknown\";\n\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens, type === \"event\");\n\n switch (type) {\n case \"event\": case \"struct\":\n assertDone();\n }\n\n }\n */\n static isConstructor(value) {\n return (value && value.type === \"constructor\");\n }\n static isError(value) {\n return (value && value.type === \"error\");\n }\n static isEvent(value) {\n return (value && value.type === \"event\");\n }\n static isFunction(value) {\n return (value && value.type === \"function\");\n }\n static isStruct(value) {\n return (value && value.type === \"struct\");\n }\n}\nexport class NamedFragment extends Fragment {\n constructor(guard, type, name, inputs) {\n super(guard, type, inputs);\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { name });\n }\n}\nfunction joinParams(format, params) {\n return \"(\" + params.map((p) => p.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n}\nexport class ErrorFragment extends NamedFragment {\n constructor(guard, name, inputs) {\n super(guard, FragmentType.error, name, inputs);\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"error\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n return result.join(\" \");\n }\n static fromString(text) {\n return ErrorFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new ErrorFragment(_guard, name, inputs);\n }\n}\nexport class EventFragment extends NamedFragment {\n constructor(guard, name, inputs, anonymous) {\n super(guard, FragmentType.event, name, inputs);\n defineProperties(this, { anonymous });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"event\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash && this.anonymous) {\n result.push(\"anonymous\");\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return EventFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"event\", tokens);\n const inputs = consumeParams(tokens, true);\n const anonymous = !!consumeKeywords(tokens, setify([\"anonymous\"])).has(\"anonymous\");\n consumeEoi(tokens);\n return new EventFragment(_guard, name, inputs, anonymous);\n }\n}\nexport class ConstructorFragment extends Fragment {\n constructor(guard, type, inputs, payable, gas) {\n super(guard, type, inputs);\n defineProperties(this, { payable, gas });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", \"UNSUPPORTED_OPERATION\", {\n operation: \"format(sighash)\"\n });\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: (this.payable ? \"payable\" : \"undefined\"),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [`constructor${joinParams(format, this.inputs)}`];\n result.push((this.payable) ? \"payable\" : \"nonpayable\");\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return ConstructorFragment.fromTokens(lex(text));\n }\n static fromObject(obj) {\n throw new Error(\"TODO\");\n }\n static fromTokens(tokens) {\n consumeKeywords(tokens, setify([\"constructor\"]));\n const inputs = consumeParams(tokens);\n const payable = !!consumeKeywords(tokens, setify([\"payable\"])).has(\"payable\");\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new ConstructorFragment(_guard, FragmentType.constructor, inputs, payable, gas);\n }\n}\nexport class FunctionFragment extends NamedFragment {\n constructor(guard, name, stateMutability, inputs, outputs, gas) {\n super(guard, FragmentType.function, name, inputs);\n outputs = Object.freeze(outputs.slice());\n const constant = (stateMutability === \"view\" || stateMutability === \"pure\");\n const payable = (stateMutability === \"payable\");\n defineProperties(this, { constant, gas, outputs, payable, stateMutability });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format))),\n outputs: this.outputs.map((o) => JSON.parse(o.format(format))),\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"function\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash) {\n if (this.stateMutability !== \"nonpayable\") {\n result.push(this.stateMutability);\n }\n if (this.outputs && this.outputs.length) {\n result.push(\"returns\");\n result.push(joinParams(format, this.outputs));\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return FunctionFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"function\", tokens);\n const inputs = consumeParams(tokens);\n const mutability = consumeMutability(tokens);\n let outputs = [];\n if (consumeKeywords(tokens, setify([\"returns\"])).has(\"returns\")) {\n outputs = consumeParams(tokens);\n }\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new FunctionFragment(_guard, name, mutability, inputs, outputs, gas);\n }\n}\nexport class StructFragment extends NamedFragment {\n format() {\n throw new Error(\"@TODO\");\n }\n static fromString(text) {\n return StructFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"struct\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new StructFragment(_guard, FragmentType.struct, name, inputs);\n }\n}\n//# sourceMappingURL=fragments.js.map","export const version = \"@ethersproject/math@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\nconst nibbles = \"0123456789abcdef\";\nconst BN_0 = BigInt(0);\n// Converts a value to a BigInt, including big endian data\nexport function toBigInt(_value) {\n if (_value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of _value) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return logger.getBigInt(_value, \"value\");\n}\nexport function toNumber(_value) {\n const value = toBigInt(_value);\n if (value < -maxValue || value > maxValue) {\n logger.throwArgumentError(\"overflow\", \"value\", _value);\n }\n return Number(value);\n}\n// Converts value to hex, optionally padding on the left to width bytes\nexport function toHex(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n let result = value.toString(16);\n if (_width == null) {\n // Ensure the value is of even length\n if (result.length % 2) {\n result = \"0\" + result;\n }\n }\n else {\n const width = logger.getNumber(_width, \"width\");\n if (width * 2 < result.length) {\n throw new Error(`value ${value} exceeds width ${width}`);\n }\n // Pad the value to the required width\n while (result.length < (width * 2)) {\n result = \"0\" + result;\n }\n }\n return \"0x\" + result;\n}\nexport function toArray(_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n//# sourceMappingURL=convert.js.map","import { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\n// Convert a value from a twos-compliment value\nexport function fromTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n // Top bit set; treat as a negative value\n if (value >> (width - BN_1)) {\n const mask = (BN_1 << width) - BN_1;\n return -(((~value) & mask) + BN_1);\n }\n return value;\n}\n// Convert value to a twos-compliment value\nexport function toTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n if (value < BN_0) {\n const mask = (BN_1 << width) - BN_1;\n return ((~(-value)) & mask) + BN_1;\n }\n return value;\n}\nexport function mask(_value, _bits) {\n const value = logger.getBigInt(_value, \"value\");\n const bits = logger.getBigInt(_bits, \"bits\");\n return value & ((BN_1 << bits) - BN_1);\n}\n//# sourceMappingURL=maths.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FixedNumber_instances, _FixedNumber_value, _FixedNumber_checkFormat;\nimport { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nimport { fromTwos, toTwos } from \"./maths.js\";\nconst _constructorGuard = {};\n//const Zero = BigInt(0);\nconst NegativeOne = BigInt(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, \"NUMERIC_FAULT\", params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\" || decimals < 0 || decimals > 256 || decimals % 1) {\n logger.throwArgumentError(\"invalid decimal length\", \"decimals\", decimals);\n }\n return BigInt(\"1\" + zeros.substring(0, decimals));\n}\nexport function formatFixed(_value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n let value = logger.getBigInt(_value, \"value\");\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n const multiplierStr = String(multiplier);\n const negative = (value < 0);\n if (negative) {\n value *= NegativeOne;\n }\n let fraction = String(value % multiplier);\n // Make sure there are enough place-holders\n while (fraction.length < multiplierStr.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n while (fraction.length > 1 && fraction.substring(fraction.length - 1) === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n let result = String(value / multiplier);\n if (multiplierStr.length !== 1) {\n result += \".\" + fraction;\n }\n if (negative) {\n result = \"-\" + result;\n }\n return result;\n}\nexport function parseFixed(value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\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 let whole = (comps[0] || \"0\"), fraction = (comps[1] || \"0\");\n // Trim trialing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > String(multiplier).length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < String(multiplier).length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigInt(whole);\n const fractionValue = BigInt(fraction);\n let wei = (wholeValue * multiplier) + fractionValue;\n if (negative) {\n wei *= NegativeOne;\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n return logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\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 if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n _FixedNumber_instances.add(this);\n //#hex: string;\n _FixedNumber_value.set(this, void 0);\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.format = FixedFormat.from(format);\n //this.#hex = hex;\n __classPrivateFieldSet(this, _FixedNumber_value, value, \"f\");\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n addUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a + b, this.format.decimals, this.format);\n }\n subUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a - b, this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * b) / this.format._multiplier, this.format.decimals, this.format);\n }\n divUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * this.format._multiplier) / b, this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0.0\" || __classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0\");\n }\n isNegative() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\")[0] === \"-\");\n }\n toString() { return __classPrivateFieldGet(this, _FixedNumber_value, \"f\"); }\n toHexString(_width) {\n throw new Error(\"TODO\");\n /*\n return toHex();\n if (width == null) { return this.#hex; }\n\n const width = logger.getNumeric(_width);\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n\n const hex = BigNumber.from(this.#hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return zeroPadLeft(hex, width / 8);\n */\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), format);\n }\n static fromValue(value, decimals = 0, format = \"fixed\") {\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format = \"fixed\") {\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric < 0) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n const hex = (function () {\n if (fixedFormat.signed) {\n return toHex(toTwos(numeric, fixedFormat.width));\n }\n return toHex(numeric, fixedFormat.width / 8);\n })();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(_value, format = \"fixed\") {\n const value = logger.getBytes(_value, \"value\");\n const fixedFormat = FixedFormat.from(format);\n if (value.length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = toBigInt(value);\n if (fixedFormat.signed) {\n numeric = fromTwos(numeric, fixedFormat.width);\n }\n const hex = toHex(toTwos(numeric, (fixedFormat.signed ? 0 : 1) + fixedFormat.width));\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (value instanceof Uint8Array) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== \"INVALID_ARGUMENT\") {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\n_FixedNumber_value = new WeakMap(), _FixedNumber_instances = new WeakSet(), _FixedNumber_checkFormat = function _FixedNumber_checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n};\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","import { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nconst Alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nlet Lookup = null;\nfunction getAlpha(letter) {\n if (Lookup == null) {\n Lookup = {};\n for (let i = 0; i < Alphabet.length; i++) {\n Lookup[Alphabet[i]] = BigInt(i);\n }\n }\n const result = Lookup[letter];\n if (result == null) {\n logger.throwArgumentError(`invalid base58 value`, \"letter\", letter);\n }\n return result;\n}\nconst BN_0 = BigInt(0);\nconst BN_58 = BigInt(58);\nexport function encodeBase58(_value) {\n let value = toBigInt(logger.getBytes(_value));\n let result = \"\";\n while (value) {\n result = Alphabet[Number(value % BN_58)] + result;\n value /= BN_58;\n }\n return result;\n}\nexport function decodeBase58(value) {\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result *= BN_58;\n result += getAlpha(value[i]);\n }\n return toHex(result);\n}\n//# sourceMappingURL=base58.js.map","import { formatFixed, parseFixed } from \"./fixednumber.js\";\nimport { logger } from \"./logger.js\";\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\nexport function formatUnits(value, unit) {\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return formatFixed(value, (unit != null) ? unit : 18);\n}\nexport function parseUnits(value, unit) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return parseFixed(value, (unit != null) ? unit : 18);\n}\nexport function formatEther(wei) {\n return formatUnits(wei, 18);\n}\nexport function parseEther(ether) {\n return parseUnits(ether, 18);\n}\n//# sourceMappingURL=units.js.map","export function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\n//# sourceMappingURL=check.js.map","export const version = \"@ethersproject/bytes@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { isBytesLike } from \"./check.js\";\nimport { logger } from \"./logger.js\";\nlet BN_8 = null;\nlet BN_255 = null;\ntry {\n BN_8 = BigInt(\"8\");\n BN_255 = BigInt(\"255\");\n}\ncatch (error) {\n console.log(\"Unsupported bigint\", error);\n}\nfunction isHexable(value) {\n return (value && typeof (value.toHexString) === \"function\");\n}\nexport function arrayify(data) {\n if (data == null) {\n logger.throwArgumentError(\"cannot arrayify nullish\", \"data\", data);\n }\n if (typeof (data) === \"number\") {\n let v = logger.getNumber(data, \"data\");\n const result = [];\n while (v) {\n result.unshift(v & 0xff);\n v = parseInt(String(v / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (BN_8 && typeof (data) === \"bigint\") {\n const result = [];\n while (data) {\n result.unshift(Number(data & BN_255));\n data >>= BN_8;\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (isHexable(data)) {\n return arrayify(data.toHexString());\n }\n if (typeof (data) === \"string\") {\n let hex = data;\n //if (options.allowMissingPrefix && hex.substring(0, 2) !== \"0x\") {\n // hex = \"0x\" + hex;\n //}\n if (!hex.match(/^0x[0-9a-f]*$/i)) {\n throw new RangeError(`invalid hex data string (${JSON.stringify(data)})`);\n }\n const result = [];\n for (let i = 2; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return new Uint8Array(result);\n }\n if (data instanceof Uint8Array) {\n return new Uint8Array(data);\n }\n throw new TypeError(`cannot arrayify ${JSON.stringify(data)}`);\n}\nexport function _noCopyArrayify(data) {\n if (!isBytesLike(data)) {\n logger.throwArgumentError(\"invalid BytesLike value\", \"data\", data);\n } // @TODO: ArgumentE>\n if (data instanceof Uint8Array) {\n return data;\n }\n return arrayify(data);\n}\n//# sourceMappingURL=array.js.map","import { logger } from \"./logger.js\";\nexport function decodeBase64(textData) {\n return new Uint8Array(Buffer.from(textData, \"base64\"));\n}\n;\nexport function encodeBase64(data) {\n return Buffer.from(logger.getBytes(data, \"data\")).toString(\"base64\");\n}\n//# sourceMappingURL=base64.js.map","import { arrayify, _noCopyArrayify } from \"./array.js\";\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(data) {\n const bytes = _noCopyArrayify(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\nexport function quantity(value) {\n let result = hexlify(arrayify(value)).substring(2);\n while (result.substring(0, 1) === \"0\") {\n result = result.substring(1);\n }\n if (result === \"\") {\n result = \"0\";\n }\n return \"0x\" + result;\n}\n//# sourceMappingURL=hex.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { isHexString } from \"./check.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return _noCopyArrayify(data).length;\n}\nexport function dataSlice(data, start, end) {\n const bytes = _noCopyArrayify(data);\n if (end != null && end > bytes.length) {\n logger.throwError(\"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.substring(0, 2) == \"00\") {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\n//# sourceMappingURL=data.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nfunction zeroPad(data, length, left) {\n const bytes = _noCopyArrayify(data);\n if (length < bytes.length) {\n logger.throwError(\"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n }\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=pad.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Result_instances, _Result_indices, _Result_throwError, _Writer_instances, _Writer_data, _Writer_dataLength, _Writer_writeData, _Reader_instances, _Reader_data, _Reader_offset, _Reader_peekBytes;\nimport { toArray, toBigInt, toNumber } from \"@ethersproject/math\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nexport const WordSize = 32;\nconst Padding = new Uint8Array(WordSize);\n// Properties used to immediate pass through to the underlying object\n// - `then` is used to detect if an object is a Promise for await\nconst passProperties = [\"then\"];\nconst _guard = {};\nexport class Result extends Array {\n constructor(guard, items, keys) {\n logger.assertPrivate(guard, _guard, \"Result\");\n super(...items);\n _Result_instances.add(this);\n _Result_indices.set(this, void 0);\n // Name lookup table\n __classPrivateFieldSet(this, _Result_indices, new Map(), \"f\");\n if (keys) {\n keys.forEach((key, index) => {\n if (key == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _Result_indices, \"f\").has(key)) {\n (__classPrivateFieldGet(this, _Result_indices, \"f\").get(key)).push(index);\n }\n else {\n __classPrivateFieldGet(this, _Result_indices, \"f\").set(key, [index]);\n }\n });\n }\n Object.freeze(this);\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"string\") {\n if (prop.match(/^[0-9]+$/)) {\n const index = logger.getNumber(prop, \"%index\");\n if (index < 0 || index >= this.length) {\n throw new RangeError(\"out of result range\");\n }\n const item = target[index];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `index ${index}`, item);\n }\n return item;\n }\n // Pass important checks (like `then` for Promise) through\n if (prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n // Something that could be a result keyword value\n if (!(prop in target)) {\n return target.getValue(prop);\n }\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n }\n slice(start, end) {\n if (start == null) {\n start = 0;\n }\n if (end == null) {\n end = this.length;\n }\n const result = [];\n for (let i = start; i < end; i++) {\n let value;\n try {\n value = this[i];\n }\n catch (error) {\n value = error.error;\n }\n result.push(value);\n }\n return result;\n }\n getValue(name) {\n const index = __classPrivateFieldGet(this, _Result_indices, \"f\").get(name);\n if (index != null && index.length === 1) {\n const item = this[index[0]];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `property ${JSON.stringify(name)}`, item);\n }\n return item;\n }\n throw new Error(`no named parameter: ${JSON.stringify(name)}`);\n }\n static fromItems(items, keys) {\n return new Result(_guard, items, keys);\n }\n}\n_Result_indices = new WeakMap(), _Result_instances = new WeakSet(), _Result_throwError = function _Result_throwError(name, error) {\n const wrapped = new Error(`deferred error during ABI decoding triggered accessing ${name}`);\n wrapped.error = error;\n throw wrapped;\n};\nexport function checkResultErrors(result) {\n // Find the first error (if any)\n const errors = [];\n const checkErrors = function (path, object) {\n if (!Array.isArray(object)) {\n return;\n }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n try {\n checkErrors(childPath, object[key]);\n }\n catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n };\n checkErrors([], result);\n return errors;\n}\nfunction getValue(value) {\n let bytes = toArray(value);\n if (bytes.length > WordSize) {\n logger.throwError(\"value out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes,\n length: WordSize,\n offset: bytes.length\n });\n }\n if (bytes.length !== WordSize) {\n bytes = arrayify(concat([Padding.slice(bytes.length % WordSize), bytes]));\n }\n return bytes;\n}\nexport class Coder {\n constructor(name, type, localName, dynamic) {\n defineProperties(this, { name, type, localName, dynamic }, {\n name: \"string\", type: \"string\", localName: \"string\", dynamic: \"boolean\"\n });\n }\n _throwError(message, value) {\n return logger.throwArgumentError(message, this.localName, value);\n }\n}\nexport class Writer {\n constructor() {\n _Writer_instances.add(this);\n // An array of WordSize lengthed objects to concatenation\n _Writer_data.set(this, void 0);\n _Writer_dataLength.set(this, void 0);\n __classPrivateFieldSet(this, _Writer_data, [], \"f\");\n __classPrivateFieldSet(this, _Writer_dataLength, 0, \"f\");\n }\n get data() {\n return concat(__classPrivateFieldGet(this, _Writer_data, \"f\"));\n }\n get length() { return __classPrivateFieldGet(this, _Writer_dataLength, \"f\"); }\n appendWriter(writer) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, arrayify(writer.data));\n }\n // Arrayish item; pad on the right to *nearest* WordSize\n writeBytes(value) {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % WordSize;\n if (paddingOffset) {\n bytes = arrayify(concat([bytes, Padding.slice(paddingOffset)]));\n }\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, bytes);\n }\n // Numeric item; pad on the left *to* WordSize\n writeValue(value) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, getValue(value));\n }\n // Inserts a numeric place-holder, returning a callback that can\n // be used to asjust the value later\n writeUpdatableValue() {\n const offset = __classPrivateFieldGet(this, _Writer_data, \"f\").length;\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(Padding);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + WordSize, \"f\");\n return (value) => {\n __classPrivateFieldGet(this, _Writer_data, \"f\")[offset] = getValue(value);\n };\n }\n}\n_Writer_data = new WeakMap(), _Writer_dataLength = new WeakMap(), _Writer_instances = new WeakSet(), _Writer_writeData = function _Writer_writeData(data) {\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(data);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + data.length, \"f\");\n return data.length;\n};\nexport class Reader {\n constructor(data, allowLoose) {\n _Reader_instances.add(this);\n _Reader_data.set(this, void 0);\n _Reader_offset.set(this, void 0);\n defineProperties(this, { allowLoose: !!allowLoose });\n __classPrivateFieldSet(this, _Reader_data, arrayify(data), \"f\");\n __classPrivateFieldSet(this, _Reader_offset, 0, \"f\");\n }\n get data() { return hexlify(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n get dataLength() { return __classPrivateFieldGet(this, _Reader_data, \"f\").length; }\n get consumed() { return __classPrivateFieldGet(this, _Reader_offset, \"f\"); }\n get bytes() { return new Uint8Array(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n // Create a sub-reader with the same underlying data, but offset\n subReader(offset) {\n return new Reader(__classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\") + offset), this.allowLoose);\n }\n // Read bytes\n readBytes(length, loose) {\n let bytes = __classPrivateFieldGet(this, _Reader_instances, \"m\", _Reader_peekBytes).call(this, 0, length, !!loose);\n __classPrivateFieldSet(this, _Reader_offset, __classPrivateFieldGet(this, _Reader_offset, \"f\") + bytes.length, \"f\");\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n // Read a numeric values\n readValue() {\n return toBigInt(this.readBytes(WordSize));\n }\n readIndex() {\n return toNumber(this.readBytes(WordSize));\n }\n}\n_Reader_data = new WeakMap(), _Reader_offset = new WeakMap(), _Reader_instances = new WeakSet(), _Reader_peekBytes = function _Reader_peekBytes(offset, length, loose) {\n let alignedLength = Math.ceil(length / WordSize) * WordSize;\n if (__classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength > __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n if (this.allowLoose && loose && __classPrivateFieldGet(this, _Reader_offset, \"f\") + length <= __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n alignedLength = length;\n }\n else {\n logger.throwError(\"data out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: arrayify(__classPrivateFieldGet(this, _Reader_data, \"f\")),\n length: __classPrivateFieldGet(this, _Reader_data, \"f\").length,\n offset: __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength\n });\n }\n }\n return __classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\"), __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength);\n};\n//# sourceMappingURL=abstract-coder.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianess.\n// So, just to be sure not to corrupt anything.\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nexport function bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('deadbeef')\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte))\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// Currently avoid insertion of polyfills with packers (browserify/webpack/etc)\n// But setTimeout is pretty slow, maybe worth to investigate howto do minimal polyfill here\nexport const nextTick = (() => {\n const nodeRequire = typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n try {\n if (nodeRequire) {\n const { setImmediate } = nodeRequire('timers');\n return () => new Promise((resolve) => setImmediate(resolve));\n }\n }\n catch (e) { }\n return () => new Promise((resolve) => setTimeout(resolve, 0));\n})();\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\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)\n continue;\n await nextTick();\n ts += diff;\n }\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nexport function assertNumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexport function assertBool(b) {\n if (typeof b !== 'boolean') {\n throw new Error(`Expected boolean, not ${b}`);\n }\n}\nexport function assertBytes(bytes, ...lengths) {\n if (bytes instanceof Uint8Array && (!lengths.length || lengths.includes(bytes.length))) {\n return;\n }\n throw new TypeError(`Expected ${lengths} bytes, not ${typeof bytes} with length=${bytes.length}`);\n}\nexport function assertHash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n assertNumber(hash.outputLen);\n assertNumber(hash.blockLen);\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(def, _opts) {\n if (_opts !== undefined && (typeof _opts !== 'object' || !isPlainObject(_opts)))\n throw new TypeError('Options should be object or undefined');\n const opts = Object.assign(def, _opts);\n return opts;\n}\nexport function wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n return new Uint8Array(crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\n","import { assertHash, Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nclass HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (!(this.iHash instanceof Hash))\n throw new TypeError('Expected instance of class which extends utils.Hash');\n const blockLen = (this.blockLen = this.iHash.blockLen);\n this.outputLen = this.iHash.outputLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > this.iHash.blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length !== this.outputLen)\n throw new Error('HMAC: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n","import { hmac } from './hmac.js';\n// prettier-ignore\nimport { createView, toBytes, assertNumber, assertHash, checkOpts, asyncLoop } from './utils.js';\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n assertHash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n assertNumber(c);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n if (c < 1)\n throw new Error('PBKDF2: iterations (c) should be >= 1');\n const password = toBytes(_password);\n const salt = toBytes(_salt);\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n u.fill(0);\n return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n */\nexport function pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexport async function pbkdf2Async(hash, password, salt, opts) {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await asyncLoop(c - 1, asyncTick, (i) => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n","import { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n const { view, buffer, blockLen, finished } = this;\n if (finished)\n throw new Error('digest() was already called');\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 // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length < this.outputLen)\n throw new Error('_Sha2: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // NOTE: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64bit of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n this.get().forEach((v, i) => oview.setUint32(4 * i, v, isLE));\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = wrapConstructor(() => new SHA256());\n","const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\nexport function fromBig(n, le = false) {\n if (le)\n 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}\nexport function split(lst, 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}\nexport const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nexport const shrSH = (h, l, s) => h >>> s;\nexport const shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nexport const rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexport const rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexport const rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nexport const rotr32H = (h, l) => l;\nexport const rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nexport const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexport const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexport const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\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.\nexport function add(Ah, Al, Bh, Bl) {\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\nexport const add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexport const add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexport const add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexport const add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexport const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexport const add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n","import { SHA2 } from './_sha2.js';\nimport * as u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = wrapConstructor(() => new SHA512());\nexport const sha512_256 = wrapConstructor(() => new SHA512_256());\nexport const sha384 = wrapConstructor(() => new SHA384());\n","export const version = \"@ethersproject/crypto@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","/* Browser Crypto Shims */\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { pbkdf2 } from \"@noble/hashes/pbkdf2\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nimport { logger } from \"./logger.js\";\nfunction getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst anyGlobal = getGlobal();\nlet crypto = anyGlobal.crypto || anyGlobal.msCrypto;\nexport function createHash(algo) {\n switch (algo) {\n case \"sha256\": return sha256.create();\n case \"sha512\": return sha512.create();\n }\n return logger.throwArgumentError(\"invalid hashing algorithm name\", \"algorithm\", algo);\n}\nexport function createHmac(_algo, key) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid hmac algorithm\", \"algorithm\", _algo);\n }\n return hmac.create(algo, key);\n}\nexport function pbkdf2Sync(password, salt, iterations, keylen, _algo) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid pbkdf2 algorithm\", \"algorithm\", _algo);\n }\n return pbkdf2(algo, password, salt, { c: iterations, dkLen: keylen });\n}\nexport function randomBytes(length) {\n if (crypto == null) {\n return logger.throwError(\"platform does not support secure random numbers\", \"UNSUPPORTED_OPERATION\", {\n operation: \"randomBytes\"\n });\n }\n if (length <= 0 || length > 1024 || (length % 1) || length != length) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return result;\n}\n//# sourceMappingURL=crypto-browser.js.map","import { createHmac } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _computeHmac = function (algorithm, key, data) {\n return \"0x\" + createHmac(algorithm, key).update(data).digest(\"hex\");\n};\nlet __computeHmac = _computeHmac;\nexport function computeHmac(algorithm, _key, _data) {\n const key = logger.getBytes(_key, \"key\");\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__computeHmac(algorithm, key, data));\n}\ncomputeHmac._ = _computeHmac;\ncomputeHmac.lock = function () { locked = true; };\ncomputeHmac.register = function (func) {\n if (locked) {\n throw new Error(\"computeHmac is locked\");\n }\n __computeHmac = func;\n};\nObject.freeze(computeHmac);\n//# sourceMappingURL=hmac.js.map","import * as u64 from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapConstructorWithOpts, assertNumber, } from './utils.js';\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = 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)\n t ^= _1n << ((_1n << BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = u64.split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => s > 32 ? u64.rotlBH(h, l, s) : u64.rotlSH(h, l, s);\nconst rotlL = (h, l, s) => s > 32 ? u64.rotlBL(h, l, s) : u64.rotlSL(h, l, s);\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 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++)\n 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++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n 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}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n assertNumber(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 keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (this.finished)\n throw new Error('digest() was already called');\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++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n 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)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array))\n throw new Error('Keccak: invalid output buffer');\n this.finish();\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= this.blockLen)\n this.keccak();\n const take = Math.min(this.blockLen - this.posOut, len - pos);\n out.set(this.state.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n assertNumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n if (out.length < this.outputLen)\n throw new Error('Keccak: invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finish();\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) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (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}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = gen(0x06, 136, 256 / 8);\nexport const sha3_384 = gen(0x06, 104, 384 / 8);\nexport const sha3_512 = gen(0x06, 72, 512 / 8);\nexport const keccak_224 = 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 = gen(0x01, 136, 256 / 8);\nexport const keccak_384 = gen(0x01, 104, 384 / 8);\nexport const keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen !== undefined ? opts.dkLen : outputLen, true));\nexport const shake128 = genShake(0x1f, 168, 128 / 8);\nexport const shake256 = genShake(0x1f, 136, 256 / 8);\n","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\nexport function keccak256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","import { SHA2 } from './_sha2.js';\nimport { wrapConstructor } from './utils.js';\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\nconst Rho = new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = Uint8Array.from({ length: 16 }, (_, i) => i);\nconst Pi = Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n for (let j of [idxL, idxR])\n j.push(j[i].map((k) => Rho[k]));\nconst shifts = [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = new Uint32Array([0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]);\nconst Kr = new Uint32Array([0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]);\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | (word >>> (32 - shift));\n// It's called f() in spec.\nfunction f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n else if (group === 1)\n return (x & y) | (~x & z);\n else if (group === 2)\n return (x | ~y) ^ z;\n else if (group === 3)\n return (x & z) | (y & ~z);\n else\n return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst BUF = new Uint32Array(16);\nexport class RIPEMD160 extends SHA2 {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + f(group, bl, cl, dl) + BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + f(rGroup, br, cr, dr) + BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n BUF.fill(0);\n }\n destroy() {\n this.destroyed = true;\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a hash function from 1990s.\n * @param message - msg that would be hashed\n */\nexport const ripemd160 = wrapConstructor(() => new RIPEMD160());\n","import { ripemd160 as noble_ripemd160 } from \"@noble/hashes/ripemd160\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _ripemd160 = function (data) {\n return noble_ripemd160(data);\n};\nlet __ripemd160 = _ripemd160;\nexport function ripemd160(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__ripemd160(data));\n}\nripemd160._ = _ripemd160;\nripemd160.lock = function () { locked = true; };\nripemd160.register = function (func) {\n if (locked) {\n throw new TypeError(\"ripemd160 is locked\");\n }\n __ripemd160 = func;\n};\nObject.freeze(ripemd160);\n//# sourceMappingURL=ripemd160.js.map","import { pbkdf2Sync } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _pbkdf2 = function (password, salt, iterations, keylen, algo) {\n return pbkdf2Sync(password, salt, iterations, keylen, algo);\n};\nlet __pbkdf2 = _pbkdf2;\nexport function pbkdf2(_password, _salt, iterations, keylen, algo) {\n const password = logger.getBytes(_password, \"password\");\n const salt = logger.getBytes(_salt, \"salt\");\n return hexlify(__pbkdf2(password, salt, iterations, keylen, algo));\n}\npbkdf2._ = _pbkdf2;\npbkdf2.lock = function () { locked = true; };\npbkdf2.register = function (func) {\n if (locked) {\n throw new Error(\"pbkdf2 is locked\");\n }\n __pbkdf2 = func;\n};\nObject.freeze(pbkdf2);\n//# sourceMappingURL=pbkdf2.js.map","import { randomBytes as crypto_random } from \"crypto\"; /*-browser*/\nlet locked = false;\nconst _randomBytes = function (length) {\n return new Uint8Array(crypto_random(length));\n};\nlet __randomBytes = _randomBytes;\nexport function randomBytes(length) {\n return __randomBytes(length);\n}\nrandomBytes._ = _randomBytes;\nrandomBytes.lock = function () { locked = true; };\nrandomBytes.register = function (func) {\n if (locked) {\n throw new Error(\"random is locked\");\n }\n __randomBytes = func;\n};\nObject.freeze(randomBytes);\n//# sourceMappingURL=random.js.map","import { sha256 } from './sha256.js';\nimport { pbkdf2 } from './pbkdf2.js';\nimport { assertNumber, asyncLoop, checkOpts, u32 } from './utils.js';\n// RFC 7914 Scrypt KDF\n// Left rotate for uint32\nconst rotl = (a, b) => (a << b) | (a >>> (32 - b));\n// The main Scrypt loop: uses Salsa extensively.\n// Six versions of the function were tried, this is the fastest one.\n// prettier-ignore\nfunction XorAndSalsa(prev, pi, input, ii, out, oi) {\n // Based on https://cr.yp.to/salsa20.html\n // Xor blocks\n let y00 = prev[pi++] ^ input[ii++], y01 = prev[pi++] ^ input[ii++];\n let y02 = prev[pi++] ^ input[ii++], y03 = prev[pi++] ^ input[ii++];\n let y04 = prev[pi++] ^ input[ii++], y05 = prev[pi++] ^ input[ii++];\n let y06 = prev[pi++] ^ input[ii++], y07 = prev[pi++] ^ input[ii++];\n let y08 = prev[pi++] ^ input[ii++], y09 = prev[pi++] ^ input[ii++];\n let y10 = prev[pi++] ^ input[ii++], y11 = prev[pi++] ^ input[ii++];\n let y12 = prev[pi++] ^ input[ii++], y13 = prev[pi++] ^ input[ii++];\n let y14 = prev[pi++] ^ input[ii++], y15 = prev[pi++] ^ input[ii++];\n // Save state to temporary variables (salsa)\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n // Main loop (salsa)\n for (let i = 0; i < 8; i += 2) {\n x04 ^= rotl(x00 + x12 | 0, 7);\n x08 ^= rotl(x04 + x00 | 0, 9);\n x12 ^= rotl(x08 + x04 | 0, 13);\n x00 ^= rotl(x12 + x08 | 0, 18);\n x09 ^= rotl(x05 + x01 | 0, 7);\n x13 ^= rotl(x09 + x05 | 0, 9);\n x01 ^= rotl(x13 + x09 | 0, 13);\n x05 ^= rotl(x01 + x13 | 0, 18);\n x14 ^= rotl(x10 + x06 | 0, 7);\n x02 ^= rotl(x14 + x10 | 0, 9);\n x06 ^= rotl(x02 + x14 | 0, 13);\n x10 ^= rotl(x06 + x02 | 0, 18);\n x03 ^= rotl(x15 + x11 | 0, 7);\n x07 ^= rotl(x03 + x15 | 0, 9);\n x11 ^= rotl(x07 + x03 | 0, 13);\n x15 ^= rotl(x11 + x07 | 0, 18);\n x01 ^= rotl(x00 + x03 | 0, 7);\n x02 ^= rotl(x01 + x00 | 0, 9);\n x03 ^= rotl(x02 + x01 | 0, 13);\n x00 ^= rotl(x03 + x02 | 0, 18);\n x06 ^= rotl(x05 + x04 | 0, 7);\n x07 ^= rotl(x06 + x05 | 0, 9);\n x04 ^= rotl(x07 + x06 | 0, 13);\n x05 ^= rotl(x04 + x07 | 0, 18);\n x11 ^= rotl(x10 + x09 | 0, 7);\n x08 ^= rotl(x11 + x10 | 0, 9);\n x09 ^= rotl(x08 + x11 | 0, 13);\n x10 ^= rotl(x09 + x08 | 0, 18);\n x12 ^= rotl(x15 + x14 | 0, 7);\n x13 ^= rotl(x12 + x15 | 0, 9);\n x14 ^= rotl(x13 + x12 | 0, 13);\n x15 ^= rotl(x14 + x13 | 0, 18);\n }\n // Write output (salsa)\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\nfunction BlockMix(input, ii, out, oi, r) {\n // The block B is r 128-byte chunks (which is equivalent of 2r 64-byte chunks)\n let head = oi + 0;\n let tail = oi + 16 * r;\n for (let i = 0; i < 16; i++)\n out[tail + i] = input[ii + (2 * r - 1) * 16 + i]; // X ← B[2r−1]\n for (let i = 0; i < r; i++, head += 16, ii += 16) {\n // We write odd & even Yi at same time. Even: 0bXXXXX0 Odd: 0bXXXXX1\n XorAndSalsa(out, tail, input, ii, out, head); // head[i] = Salsa(blockIn[2*i] ^ tail[i-1])\n if (i > 0)\n tail += 16; // First iteration overwrites tmp value in tail\n XorAndSalsa(out, head, input, (ii += 16), out, tail); // tail[i] = Salsa(blockIn[2*i+1] ^ head[i])\n }\n}\n// Common prologue and epilogue for sync/async functions\nfunction scryptInit(password, salt, _opts) {\n // Maxmem - 1GB+1KB by default\n const opts = checkOpts({\n dkLen: 32,\n asyncTick: 10,\n maxmem: 1024 ** 3 + 1024,\n }, _opts);\n const { N, r, p, dkLen, asyncTick, maxmem, onProgress } = opts;\n assertNumber(N);\n assertNumber(r);\n assertNumber(p);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n assertNumber(maxmem);\n if (onProgress !== undefined && typeof onProgress !== 'function')\n throw new Error('progressCb should be function');\n const blockSize = 128 * r;\n const blockSize32 = blockSize / 4;\n if (N <= 1 || (N & (N - 1)) !== 0 || N >= 2 ** (blockSize / 8) || N > 2 ** 32) {\n // NOTE: we limit N to be less than 2**32 because of 32 bit variant of Integrify function\n // There is no JS engines that allows alocate more than 4GB per single Uint8Array for now, but can change in future.\n throw new Error('Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32');\n }\n if (p < 0 || p > ((2 ** 32 - 1) * 32) / blockSize) {\n throw new Error('Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)');\n }\n if (dkLen < 0 || dkLen > (2 ** 32 - 1) * 32) {\n throw new Error('Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32');\n }\n const memUsed = blockSize * (N + p);\n if (memUsed > maxmem) {\n throw new Error(`Scrypt: parameters too large, ${memUsed} (128 * r * (N + p)) > ${maxmem} (maxmem)`);\n }\n // [B0...Bp−1] ← PBKDF2HMAC-SHA256(Passphrase, Salt, 1, blockSize*ParallelizationFactor)\n // Since it has only one iteration there is no reason to use async variant\n const B = pbkdf2(sha256, password, salt, { c: 1, dkLen: blockSize * p });\n const B32 = u32(B);\n // Re-used between parallel iterations. Array(iterations) of B\n const V = u32(new Uint8Array(blockSize * N));\n const tmp = u32(new Uint8Array(blockSize));\n let blockMixCb = () => { };\n if (onProgress) {\n const totalBlockMix = 2 * N * p;\n // Invoke callback if progress changes from 10.01 to 10.02\n // Allows to draw smooth progress bar on up to 8K screen\n const callbackPer = Math.max(Math.floor(totalBlockMix / 10000), 1);\n let blockMixCnt = 0;\n blockMixCb = () => {\n blockMixCnt++;\n if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix))\n onProgress(blockMixCnt / totalBlockMix);\n };\n }\n return { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick };\n}\nfunction scryptOutput(password, dkLen, B, V, tmp) {\n const res = pbkdf2(sha256, password, B, { c: 1, dkLen });\n B.fill(0);\n V.fill(0);\n tmp.fill(0);\n return res;\n}\n/**\n * Scrypt KDF from RFC 7914.\n * @param password - pass\n * @param salt - salt\n * @param opts - parameters\n * - `N` is cpu/mem work factor (power of 2 e.g. 2**18)\n * - `r` is block size (8 is common), fine-tunes sequential memory read size and performance\n * - `p` is parallelization factor (1 is common)\n * - `dkLen` is output key length in bytes e.g. 32.\n * - `asyncTick` - (default: 10) max time in ms for which async function can block execution\n * - `maxmem` - (default: `1024 ** 3 + 1024` aka 1GB+1KB). A limit that the app could use for scrypt\n * - `onProgress` - callback function that would be executed for progress report\n * @returns Derived key\n */\nexport function scrypt(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n for (let i = 0, pos = 0; i < N - 1; i++) {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n }\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n for (let i = 0; i < N; i++) {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n }\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n/**\n * Scrypt KDF from RFC 7914.\n */\nexport async function scryptAsync(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n let pos = 0;\n await asyncLoop(N - 1, asyncTick, (i) => {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n });\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n await asyncLoop(N, asyncTick, (i) => {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n });\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n","import { scrypt as _nobleSync, scryptAsync as _nobleAsync } from \"@noble/hashes/scrypt\";\nimport { hexlify as H } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet lockedSync = false, lockedAsync = false;\nconst _scryptAsync = async function (passwd, salt, N, r, p, dkLen, onProgress) {\n return await _nobleAsync(passwd, salt, { N, r, p, dkLen, onProgress });\n};\nconst _scryptSync = function (passwd, salt, N, r, p, dkLen) {\n return _nobleSync(passwd, salt, { N, r, p, dkLen });\n};\nlet __scryptAsync = _scryptAsync;\nlet __scryptSync = _scryptSync;\nexport async function scrypt(_passwd, _salt, N, r, p, dkLen, progress) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(await __scryptAsync(passwd, salt, N, r, p, dkLen, progress));\n}\nscrypt._ = _scryptAsync;\nscrypt.lock = function () { lockedAsync = true; };\nscrypt.register = function (func) {\n if (lockedAsync) {\n throw new Error(\"scrypt is locked\");\n }\n __scryptAsync = func;\n};\nObject.freeze(scrypt);\nexport function scryptSync(_passwd, _salt, N, r, p, dkLen) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(__scryptSync(passwd, salt, N, r, p, dkLen));\n}\nscryptSync._ = _scryptSync;\nscryptSync.lock = function () { lockedSync = true; };\nscryptSync.register = function (func) {\n if (lockedSync) {\n throw new Error(\"scryptSync is locked\");\n }\n __scryptSync = func;\n};\nObject.freeze(scryptSync);\n//# sourceMappingURL=scrypt.js.map","import { createHash } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nconst _sha256 = function (data) {\n return createHash(\"sha256\").update(data).digest();\n};\nconst _sha512 = function (data) {\n return createHash(\"sha512\").update(data).digest();\n};\nlet __sha256 = _sha256;\nlet __sha512 = _sha512;\nlet locked256 = false, locked512 = false;\nexport function sha256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha256(data));\n}\nsha256._ = _sha256;\nsha256.lock = function () { locked256 = true; };\nsha256.register = function (func) {\n if (locked256) {\n throw new Error(\"sha256 is locked\");\n }\n __sha256 = func;\n};\nObject.freeze(sha256);\nexport function sha512(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha512(data));\n}\nsha512._ = _sha512;\nsha512.lock = function () { locked512 = true; };\nsha512.register = function (func) {\n if (locked512) {\n throw new Error(\"sha512 is locked\");\n }\n __sha512 = func;\n};\nObject.freeze(sha256);\n//# sourceMappingURL=sha2.js.map","// We import all these so we can export lock()\nimport { computeHmac } from \"./hmac.js\";\nimport { keccak256 } from \"./keccak.js\";\nimport { ripemd160 } from \"./ripemd160.js\";\nimport { pbkdf2 } from \"./pbkdf2.js\";\nimport { randomBytes } from \"./random.js\";\nimport { scrypt, scryptSync } from \"./scrypt.js\";\nimport { sha256, sha512 } from \"./sha2.js\";\nexport { computeHmac, randomBytes, keccak256, ripemd160, sha256, sha512, pbkdf2, scrypt, scryptSync };\nexport function lock() {\n computeHmac.lock();\n keccak256.lock();\n pbkdf2.lock();\n randomBytes.lock();\n ripemd160.lock();\n scrypt.lock();\n scryptSync.lock();\n sha256.lock();\n sha512.lock();\n}\n//# sourceMappingURL=index.js.map","export const version = \"@ethersproject/address@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { arrayify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\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 return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\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 let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\nexport function getAddress(address) {\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\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 return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\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 let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n return logger.throwArgumentError(\"invalid address\", \"address\", address);\n}\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/rlp@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { logger } from \"./logger.js\";\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n const data = Array.prototype.slice.call(logger.getBytes(object, \"object\"));\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 const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nconst nibbles = \"0123456789abcdef\";\nexport function encodeRlp(object) {\n let result = \"0x\";\n for (const v of _encode(object)) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0xf];\n }\n return result;\n}\n//# sourceMappingURL=encode.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction hexlifyByte(value) {\n let result = value.toString(16);\n while (result.length < 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length, offset\n });\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: 0, offset: 1\n });\n }\n const checkOffset = (offset) => {\n if (offset > data.length) {\n logger.throwError(\"data short segment too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: data.length, offset\n });\n }\n };\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n checkOffset(offset + 1 + length);\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\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 checkOffset(offset + 1 + length);\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlifyByte(data[offset]) };\n}\nexport function decodeRlp(_data) {\n const data = logger.getBytes(_data, \"data\");\n const decoded = _decode(data, 0);\n if (decoded.consumed !== data.length) {\n logger.throwArgumentError(\"unexpected junk after rlp payload\", \"data\", _data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=decode.js.map","import { concat, dataSlice } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { encodeRlp } from \"@ethersproject/rlp\";\nimport { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getCreateAddress(tx) {\n const from = getAddress(tx.from);\n const nonce = logger.getBigInt(tx.nonce, \"tx.nonce\");\n let nonceHex = nonce.toString(16);\n if (nonceHex === \"0\") {\n nonceHex = \"0x\";\n }\n else if (nonceHex.length % 2) {\n nonceHex = \"0x0\" + nonceHex;\n }\n else {\n nonceHex = \"0x\" + nonceHex;\n }\n return getAddress(dataSlice(keccak256(encodeRlp([from, nonceHex])), 12));\n}\nexport function getCreate2Address(_from, _salt, _initCodeHash) {\n const from = getAddress(_from);\n const salt = logger.getBytes(_salt, \"salt\");\n const initCodeHash = logger.getBytes(_initCodeHash, \"initCodeHash\");\n if (salt.length !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", _salt);\n }\n if (initCodeHash.length !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", _initCodeHash);\n }\n return getAddress(dataSlice(keccak256(concat([\"0xff\", from, salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=contract-address.js.map","import { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\n// Resolves an Ethereum address, ENS name or Addressable object,\n// throwing if the result is null; an explicit null returns null\n//export async function resolveAddress(target?: null, resolver?: null | NameResolver): Promise;\n//export async function resolveAddress(target: string | Addressable, resolver?: null | NameResolver): Promise;\n//export async function resolveAddress(target: null | undefined | string | Addressable, resolver?: null | NameResolver) {\nexport async function resolveAddress(target, resolver) {\n //if (target == null) { return null; }\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n if (resolver == null) {\n return logger.throwError(\"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n });\n }\n const result = await resolver.resolveName(target);\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n return logger.throwError(\"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n }\n return getAddress(result);\n }\n else if (isAddressable(target)) {\n const result = await target.getAddress();\n if (result == null) {\n logger.throwArgumentError(\"addressable resolved to null\", \"target\", target);\n }\n return getAddress(result);\n }\n return logger.throwArgumentError(\"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Typed_options;\nimport { defineProperties } from \"@ethersproject/properties\";\nconst _gaurd = {};\nfunction n(value, width) {\n let signed = false;\n if (width < 0) {\n signed = true;\n width *= -1;\n }\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `${signed ? \"\" : \"u\"}int${width}`, value, { signed, width });\n}\nfunction b(value, size) {\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `bytes${(size) ? size : \"\"}`, value, { size });\n}\nconst _typedSymbol = Symbol.for(\"_ethers_typed\");\nexport class Typed {\n constructor(gaurd, type, value, options = null) {\n _Typed_options.set(this, void 0);\n if (gaurd !== _gaurd) {\n throw new Error(\"private constructor\");\n }\n defineProperties(this, { _typedSymbol, type, value });\n __classPrivateFieldSet(this, _Typed_options, options, \"f\");\n // Check the value is valid\n this.format();\n }\n format() {\n if (this.type === \"array\") {\n throw new Error(\"\");\n }\n else if (this.type === \"dynamicArray\") {\n throw new Error(\"\");\n }\n else if (this.type === \"tuple\") {\n return `tuple(${this.value.map((v) => v.format()).join(\",\")})`;\n }\n return this.type;\n }\n defaultValue() {\n return 0;\n }\n minValue() {\n return 0;\n }\n maxValue() {\n return 0;\n }\n isBigInt() {\n return !!(this.type.match(/^u?int[0-9]+$/));\n }\n isData() {\n return (this.type.substring(0, 5) === \"bytes\");\n }\n isString() {\n return (this.type === \"string\");\n }\n get tupleName() {\n if (this.type !== \"tuple\") {\n throw TypeError(\"not a tuple\");\n }\n return __classPrivateFieldGet(this, _Typed_options, \"f\");\n }\n // Returns the length of this type as an array\n // - `null` indicates the length is unforced, it could be dynamic\n // - `-1` indicates the length is dynamic\n // - any other value indicates it is a static array and is its length\n get arrayLength() {\n if (this.type !== \"array\") {\n throw TypeError(\"not an array\");\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === true) {\n return -1;\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === false) {\n return (this.value).length;\n }\n return null;\n }\n static from(type, value) {\n return new Typed(_gaurd, type, value);\n }\n static uint8(v) { return n(v, 8); }\n static uint16(v) { return n(v, 16); }\n static uint24(v) { return n(v, 24); }\n static uint32(v) { return n(v, 32); }\n static uint40(v) { return n(v, 40); }\n static uint48(v) { return n(v, 46); }\n static uint56(v) { return n(v, 56); }\n static uint64(v) { return n(v, 64); }\n static uint72(v) { return n(v, 72); }\n static uint80(v) { return n(v, 80); }\n static uint88(v) { return n(v, 88); }\n static uint96(v) { return n(v, 96); }\n static uint104(v) { return n(v, 104); }\n static uint112(v) { return n(v, 112); }\n static uint120(v) { return n(v, 120); }\n static uint128(v) { return n(v, 128); }\n static uint136(v) { return n(v, 136); }\n static uint144(v) { return n(v, 144); }\n static uint152(v) { return n(v, 152); }\n static uint160(v) { return n(v, 160); }\n static uint168(v) { return n(v, 168); }\n static uint176(v) { return n(v, 176); }\n static uint184(v) { return n(v, 184); }\n static uint192(v) { return n(v, 192); }\n static uint200(v) { return n(v, 200); }\n static uint208(v) { return n(v, 208); }\n static uint216(v) { return n(v, 216); }\n static uint224(v) { return n(v, 224); }\n static uint232(v) { return n(v, 232); }\n static uint240(v) { return n(v, 240); }\n static uint248(v) { return n(v, 248); }\n static uint256(v) { return n(v, 256); }\n static uint(v) { return n(v, 256); }\n static int8(v) { return n(v, -8); }\n static int16(v) { return n(v, -16); }\n static int24(v) { return n(v, -24); }\n static int32(v) { return n(v, -32); }\n static int40(v) { return n(v, -40); }\n static int48(v) { return n(v, -46); }\n static int56(v) { return n(v, -56); }\n static int64(v) { return n(v, -64); }\n static int72(v) { return n(v, -72); }\n static int80(v) { return n(v, -80); }\n static int88(v) { return n(v, -88); }\n static int96(v) { return n(v, -96); }\n static int104(v) { return n(v, -104); }\n static int112(v) { return n(v, -112); }\n static int120(v) { return n(v, -120); }\n static int128(v) { return n(v, -128); }\n static int136(v) { return n(v, -136); }\n static int144(v) { return n(v, -144); }\n static int152(v) { return n(v, -152); }\n static int160(v) { return n(v, -160); }\n static int168(v) { return n(v, -168); }\n static int176(v) { return n(v, -176); }\n static int184(v) { return n(v, -184); }\n static int192(v) { return n(v, -192); }\n static int200(v) { return n(v, -200); }\n static int208(v) { return n(v, -208); }\n static int216(v) { return n(v, -216); }\n static int224(v) { return n(v, -224); }\n static int232(v) { return n(v, -232); }\n static int240(v) { return n(v, -240); }\n static int248(v) { return n(v, -248); }\n static int256(v) { return n(v, -256); }\n static int(v) { return n(v, -256); }\n static bytes(v) { return b(v); }\n static bytes1(v) { return b(v, 1); }\n static bytes2(v) { return b(v, 2); }\n static bytes3(v) { return b(v, 3); }\n static bytes4(v) { return b(v, 4); }\n static bytes5(v) { return b(v, 5); }\n static bytes6(v) { return b(v, 6); }\n static bytes7(v) { return b(v, 7); }\n static bytes8(v) { return b(v, 8); }\n static bytes9(v) { return b(v, 9); }\n static bytes10(v) { return b(v, 10); }\n static bytes11(v) { return b(v, 11); }\n static bytes12(v) { return b(v, 12); }\n static bytes13(v) { return b(v, 13); }\n static bytes14(v) { return b(v, 14); }\n static bytes15(v) { return b(v, 15); }\n static bytes16(v) { return b(v, 16); }\n static bytes17(v) { return b(v, 17); }\n static bytes18(v) { return b(v, 18); }\n static bytes19(v) { return b(v, 19); }\n static bytes20(v) { return b(v, 20); }\n static bytes21(v) { return b(v, 21); }\n static bytes22(v) { return b(v, 22); }\n static bytes23(v) { return b(v, 23); }\n static bytes24(v) { return b(v, 24); }\n static bytes25(v) { return b(v, 25); }\n static bytes26(v) { return b(v, 26); }\n static bytes27(v) { return b(v, 27); }\n static bytes28(v) { return b(v, 28); }\n static bytes29(v) { return b(v, 29); }\n static bytes30(v) { return b(v, 30); }\n static bytes31(v) { return b(v, 31); }\n static bytes32(v) { return b(v, 32); }\n static address(v) { return new Typed(_gaurd, \"address\", v); }\n static bool(v) { return new Typed(_gaurd, \"bool\", !!v); }\n static string(v) { return new Typed(_gaurd, \"string\", v); }\n static array(v, dynamic) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"array\", v, dynamic);\n }\n static tuple(v, name) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"tuple\", v, name);\n }\n static overrides(v) {\n return new Typed(_gaurd, \"overrides\", Object.assign({}, v));\n }\n static isTyped(value) {\n return (value && value._typedSymbol === _typedSymbol);\n }\n static dereference(value, type) {\n if (Typed.isTyped(value)) {\n if (value.type !== type) {\n throw new Error(`invalid type: expecetd ${type}, got ${value.type}`);\n }\n return value.value;\n }\n return value;\n }\n}\n_Typed_options = new WeakMap();\n//# sourceMappingURL=typed.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class AddressCoder extends Coder {\n constructor(localName) {\n super(\"address\", \"address\", localName, false);\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000\";\n }\n encode(writer, _value) {\n let value = Typed.dereference(_value, \"string\");\n try {\n value = getAddress(value);\n }\n catch (error) {\n return this._throwError(error.message, _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n return getAddress(toHex(reader.readValue(), 20));\n }\n}\n//# sourceMappingURL=address.js.map","import { Coder } from \"./abstract-coder.js\";\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n constructor(coder) {\n super(coder.name, coder.type, \"_\", coder.dynamic);\n this.coder = coder;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(writer, value) {\n return this.coder.encode(writer, value);\n }\n decode(reader) {\n return this.coder.decode(reader);\n }\n}\n//# sourceMappingURL=anonymous.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { isError } from \"@ethersproject/logger\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, Result, WordSize, Writer } from \"./abstract-coder.js\";\nimport { AnonymousCoder } from \"./anonymous.js\";\nexport function pack(writer, coders, values) {\n let arrayValues = [];\n if (Array.isArray(values)) {\n arrayValues = values;\n }\n else if (values && typeof (values) === \"object\") {\n let unique = {};\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n unique[name] = true;\n return values[name];\n });\n }\n else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n let staticWriter = new Writer();\n let dynamicWriter = new Writer();\n let updateFuncs = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n }\n else {\n coder.encode(staticWriter, value);\n }\n });\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\nexport function unpack(reader, coders) {\n let values = [];\n let keys = [];\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n coders.forEach((coder) => {\n let value = null;\n if (coder.dynamic) {\n let offset = reader.readIndex();\n let offsetReader = baseReader.subReader(offset);\n try {\n value = coder.decode(offsetReader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\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 }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n if (value == undefined) {\n throw new Error(\"investigate\");\n }\n values.push(value);\n keys.push(coder.localName || null);\n });\n return Result.fromItems(values, keys);\n}\nexport class ArrayCoder extends Coder {\n constructor(coder, length, localName) {\n const type = (coder.type + \"[\" + (length >= 0 ? length : \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n defineProperties(this, { coder, length });\n }\n defaultValue() {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n const result = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"array\");\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n let count = this.length;\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n logger.assertArgumentCount(value.length, count, \"coder array\" + (this.localName ? (\" \" + this.localName) : \"\"));\n let coders = [];\n for (let i = 0; i < value.length; i++) {\n coders.push(this.coder);\n }\n return pack(writer, coders, value);\n }\n decode(reader) {\n let count = this.length;\n if (count === -1) {\n count = reader.readIndex();\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 * WordSize > reader.dataLength) {\n logger.throwError(\"insufficient data length\", \"BUFFER_OVERRUN\", {\n buffer: reader.bytes,\n offset: count * WordSize,\n length: reader.dataLength\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) {\n coders.push(new AnonymousCoder(this.coder));\n }\n return unpack(reader, coders);\n }\n}\n//# sourceMappingURL=array.js.map","import { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class BooleanCoder extends Coder {\n constructor(localName) {\n super(\"bool\", \"bool\", localName, false);\n }\n defaultValue() {\n return false;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"bool\");\n return writer.writeValue(value ? 1 : 0);\n }\n decode(reader) {\n return !!reader.readValue();\n }\n}\n//# sourceMappingURL=boolean.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class DynamicBytesCoder extends Coder {\n constructor(type, localName) {\n super(type, type, localName, true);\n }\n defaultValue() {\n return \"0x\";\n }\n encode(writer, value) {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n decode(reader) {\n return reader.readBytes(reader.readIndex(), true);\n }\n}\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"bytes\", localName);\n }\n decode(reader) {\n return hexlify(super.decode(reader));\n }\n}\n//# sourceMappingURL=bytes.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class FixedBytesCoder extends Coder {\n constructor(size, localName) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n defineProperties(this, { size }, { size: \"number\" });\n }\n defaultValue() {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n encode(writer, _value) {\n let data = arrayify(Typed.dereference(_value, this.type));\n if (data.length !== this.size) {\n this._throwError(\"incorrect data length\", _value);\n }\n return writer.writeBytes(data);\n }\n decode(reader) {\n return hexlify(reader.readBytes(this.size));\n }\n}\n//# sourceMappingURL=fixed-bytes.js.map","import { Coder } from \"./abstract-coder.js\";\nconst Empty = new Uint8Array([]);\nexport class NullCoder extends Coder {\n constructor(localName) {\n super(\"null\", \"\", localName, false);\n }\n defaultValue() {\n return null;\n }\n encode(writer, value) {\n if (value != null) {\n this._throwError(\"not null\", value);\n }\n return writer.writeBytes(Empty);\n }\n decode(reader) {\n reader.readBytes(0);\n return null;\n }\n}\n//# sourceMappingURL=null.js.map","import { fromTwos, mask, toTwos } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, WordSize } from \"./abstract-coder.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nexport class NumberCoder extends Coder {\n constructor(size, signed, localName) {\n const name = ((signed ? \"int\" : \"uint\") + (size * 8));\n super(name, name, localName, false);\n defineProperties(this, { size, signed }, { size: \"number\", signed: \"boolean\" });\n }\n defaultValue() {\n return 0;\n }\n encode(writer, _value) {\n let value = logger.getBigInt(Typed.dereference(_value, this.type));\n // Check bounds are safe for encoding\n let maxUintValue = mask(BN_MAX_UINT256, WordSize * 8);\n if (this.signed) {\n let bounds = mask(maxUintValue, (this.size * 8) - 1);\n if (value > bounds || value < -(bounds + BN_1)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n }\n else if (value < BN_0 || value > mask(maxUintValue, this.size * 8)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n value = mask(toTwos(value, this.size * 8), this.size * 8);\n if (this.signed) {\n value = toTwos(fromTwos(value, this.size * 8), 8 * WordSize);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n let value = mask(reader.readValue(), this.size * 8);\n if (this.signed) {\n value = fromTwos(value, this.size * 8);\n }\n return value;\n }\n}\n//# sourceMappingURL=number.js.map","export const version = \"@ethersproject/strings@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\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 Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\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 Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\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) {\n break;\n }\n i++;\n }\n return i;\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 // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push((badCodepoint != null) ? badCodepoint : -1);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = logger.getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\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 }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\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 // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\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 // See above loop for invalid continuation byte\n if (res === null) {\n 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 // 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 // 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 result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\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 if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\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 return new Uint8Array(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\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 if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","import { zeroPadBytes } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nimport { toUtf8Bytes, toUtf8String } from \"./utf8.js\";\nexport function formatBytes32String(text) {\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n // Check we have room for null-termination\n if (bytes.length > 31) {\n throw new Error(\"bytes32 string must be less than 32 bytes\");\n }\n // Zero-pad (implicitly null-terminates)\n return zeroPadBytes(bytes, 32);\n}\nexport function parseBytes32String(_bytes) {\n const data = logger.getBytes(_bytes, \"bytes\");\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) {\n throw new Error(\"invalid bytes32 - not 32 bytes long\");\n }\n if (data[31] !== 0) {\n throw new Error(\"invalid bytes32 string - no null terminator\");\n }\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) {\n length--;\n }\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n//# sourceMappingURL=bytes32.js.map","import { logger } from \"./logger.js\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8.js\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"should not happen; bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, _func) {\n const func = _func || function (value) { return [parseInt(value, 16)]; };\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n const range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n if (range.s == null) {\n throw new Error(\"should not happenl bad range\");\n }\n return [codepoint + range.s];\n }\n const codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n const shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n const complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_PROHIBITED\", \"value\", value);\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_UNASSIGNED\", \"value\", value);\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n logger.throwArgumentError(\"invalid hyphen\", \"value\", value);\n }\n // IDNA: 4.2.4\n if (name.length > 63) {\n logger.throwArgumentError(\"too long\", \"value\", value);\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","import { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { Typed } from \"../typed.js\";\nimport { DynamicBytesCoder } from \"./bytes.js\";\nexport class StringCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"string\", localName);\n }\n defaultValue() {\n return \"\";\n }\n encode(writer, _value) {\n return super.encode(writer, toUtf8Bytes(Typed.dereference(_value, \"string\")));\n }\n decode(reader) {\n return toUtf8String(super.decode(reader));\n }\n}\n//# sourceMappingURL=string.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nimport { pack, unpack } from \"./array.js\";\nexport class TupleCoder extends Coder {\n constructor(coders, localName) {\n let dynamic = false;\n const types = [];\n coders.forEach((coder) => {\n if (coder.dynamic) {\n dynamic = true;\n }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n super(\"tuple\", type, localName, dynamic);\n defineProperties(this, { coders: Object.freeze(coders.slice()) });\n }\n defaultValue() {\n const values = [];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\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]) {\n accum[name] = 0;\n }\n accum[name]++;\n }\n return accum;\n }, {});\n // Add named values\n this.coders.forEach((coder, index) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) {\n return;\n }\n if (name === \"length\") {\n name = \"_length\";\n }\n if (values[name] != null) {\n return;\n }\n values[name] = values[index];\n });\n return Object.freeze(values);\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"tuple\");\n return pack(writer, this.coders, value);\n }\n decode(reader) {\n return unpack(reader, this.coders);\n }\n}\n//# sourceMappingURL=tuple.js.map","// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbiCoder_instances, _AbiCoder_getCoder;\nimport { logger } from \"./logger.js\";\nimport { Reader, Writer } from \"./coders/abstract-coder.js\";\nimport { AddressCoder } from \"./coders/address.js\";\nimport { ArrayCoder } from \"./coders/array.js\";\nimport { BooleanCoder } from \"./coders/boolean.js\";\nimport { BytesCoder } from \"./coders/bytes.js\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes.js\";\nimport { NullCoder } from \"./coders/null.js\";\nimport { NumberCoder } from \"./coders/number.js\";\nimport { StringCoder } from \"./coders/string.js\";\nimport { TupleCoder } from \"./coders/tuple.js\";\nimport { ParamType } from \"./fragments.js\";\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\nexport class AbiCoder {\n constructor() {\n _AbiCoder_instances.add(this);\n }\n getDefaultValue(types) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n encode(types, values) {\n logger.assertArgumentCount(values.length, types.length, \"types/values length mismatch\");\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n const writer = new Writer();\n coder.encode(writer, values);\n return writer.data;\n }\n decode(types, data, loose) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(new Reader(data, loose));\n }\n}\n_AbiCoder_instances = new WeakSet(), _AbiCoder_getCoder = function _AbiCoder_getCoder(param) {\n if (param.isArray()) {\n return new ArrayCoder(__classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, param.arrayChildren), param.arrayLength, param.name);\n }\n if (param.isTuple()) {\n return new TupleCoder(param.components.map((c) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, c)), param.name);\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 \"\":\n return new NullCoder(param.name);\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 // 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 return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n};\nexport const defaultAbiCoder = new AbiCoder();\n//# sourceMappingURL=abi-coder.js.map","import { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","export const version = \"@ethersproject/hash@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { nameprep, toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nconst Partition = new RegExp(\"^((.*)\\\\.)?([^.]+)$\");\nexport function isValidName(name) {\n try {\n const comps = name.split(\".\");\n for (let i = 0; i < comps.length; i++) {\n if (nameprep(comps[i]).length === 0) {\n throw new Error(\"empty\");\n }\n }\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let current = name;\n let result = Zeros;\n while (current.length) {\n const partition = current.match(Partition);\n if (partition == null || partition[2] === \"\") {\n return logger.throwArgumentError(\"invalid ENS name; missing component\", \"name\", name);\n }\n const label = toUtf8Bytes(nameprep(partition[3]));\n result = keccak256(concat([result, keccak256(label)]));\n current = partition[2] || \"\";\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid DNS name; not a string\", \"name\", name);\n }\n if (name === \"\") {\n return \"0x00\";\n }\n // @TODO: should we enforce the 255 octet limit?\n return concat(name.split(\".\").map((comp) => {\n if (comp === \"\") {\n logger.throwArgumentError(\"invalid DNS name; missing component\", \"name\", name);\n }\n // We jam in an _ prefix to fill in with the length later\n // Note: Nameprep throws if the component is over 63 bytes\n const bytes = toUtf8Bytes(\"_\" + nameprep(comp));\n bytes[0] = bytes.length - 1;\n return bytes;\n })) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","import { concat, dataLength, hexlify, zeroPadBytes, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 as _keccak256, sha256 as _sha256 } from \"@ethersproject/crypto\";\nimport { toTwos } from \"@ethersproject/math\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\nfunction _pack(type, value, isArray) {\n switch (type) {\n case \"address\":\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return logger.getBytes(value);\n case \"bool\":\n value = (!!value ? \"0x01\" : \"0x00\");\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n }\n let match = type.match(regexNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n return logger.throwArgumentError(\"invalid number type\", \"type\", type);\n }\n if (isArray) {\n size = 256;\n }\n value = toTwos(value, size);\n return logger.getBytes(zeroPadValue(value, size / 8));\n }\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n if (String(size) !== match[1] || size === 0 || size > 32) {\n return logger.throwArgumentError(\"invalid bytes type\", \"type\", type);\n }\n if (dataLength(value) !== size) {\n return logger.throwArgumentError(`invalid value for ${type}`, \"value\", value);\n }\n if (isArray) {\n return logger.getBytes(zeroPadBytes(value, 32));\n }\n return value;\n }\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(`invalid array length for ${type}`, \"value\", value);\n }\n const result = [];\n value.forEach(function (value) {\n result.push(_pack(baseType, value, true));\n });\n return logger.getBytes(concat(result));\n }\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n}\n// @TODO: Array Enum\nexport function solidityPacked(types, values) {\n if (types.length != values.length) {\n logger.throwArgumentError(\"wrong number of values; expected ${ types.length }\", \"values\", values);\n }\n const tight = [];\n types.forEach(function (type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\nexport function solidityPackedKeccak256(types, values) {\n return _keccak256(solidityPacked(types, values));\n}\nexport function solidityPackedSha256(types, values) {\n return _sha256(solidityPacked(types, values));\n}\n//# sourceMappingURL=solidity.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TypedDataEncoder_instances, _TypedDataEncoder_types, _TypedDataEncoder_fullTypes, _TypedDataEncoder_encoderCache, _TypedDataEncoder_getEncoder;\n//import { TypedDataDomain, TypedDataField } from \"@ethersproject/providerabstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { mask, toHex, toTwos } from \"@ethersproject/math\";\nimport { id } from \"./id.js\";\nimport { logger } from \"./logger.js\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst BN__1 = BigInt(-1);\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n;\n;\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return concat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = toHex(BN_1, 32);\nconst hexFalse = toHex(BN_0, 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n return logger.getBigInt(value, \"domain.chainId\");\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n const bytes = logger.getBytes(value, \"domain.salt\");\n if (bytes.length !== 32) {\n logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n return hexlify(bytes);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\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 const boundsUpper = mask(BN_MAX_UINT256, signed ? (width - 1) : width);\n const boundsLower = signed ? ((boundsUpper + BN_1) * BN__1) : BN_0;\n return function (_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < boundsLower || value > boundsUpper) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return toHex(toTwos(value, 256), 32);\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 return function (value) {\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 switch (type) {\n case \"address\": return function (value) {\n return zeroPadValue(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n _TypedDataEncoder_instances.add(this);\n _TypedDataEncoder_types.set(this, void 0);\n _TypedDataEncoder_fullTypes.set(this, void 0);\n _TypedDataEncoder_encoderCache.set(this, void 0);\n __classPrivateFieldSet(this, _TypedDataEncoder_types, JSON.stringify(types), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_fullTypes, new Map(), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_encoderCache, new Map(), \"f\");\n // Link struct types to their direct child structs\n const links = new Map();\n // Link structs to structs which contain them as a child\n const parents = new Map();\n // Link all subtypes within a given struct\n const subtypes = new Map();\n Object.keys(types).forEach((type) => {\n links.set(type, new Set());\n parents.set(type, []);\n subtypes.set(type, new Set());\n });\n for (const name in types) {\n const uniqueNames = new Set();\n for (const field of types[name]) {\n // Check each field has a unique name\n if (uniqueNames.has(field.name)) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames.add(field.name);\n // Get the base type (drop any array specifiers)\n const baseType = (field.type.match(/^([^\\x5b]*)(\\x5b|$)/))[1] || null;\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n continue;\n }\n if (!parents.has(baseType)) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents.get(baseType).push(name);\n links.get(name).add(baseType);\n }\n }\n // Deduce the primary type\n const primaryTypes = Array.from(parents.keys()).filter((n) => (parents.get(n).length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\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 defineProperties(this, { primaryType: primaryTypes[0] });\n // Check for circular type references\n function checkCircular(type, found) {\n if (found.has(type)) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found.add(type);\n for (const child of links.get(type)) {\n if (!parents.has(child)) {\n continue;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n for (const subtype of found) {\n subtypes.get(subtype).add(child);\n }\n }\n found.delete(type);\n }\n checkCircular(this.primaryType, new Set());\n // Compute each fully describe type\n for (const [name, set] of subtypes) {\n const st = Array.from(set);\n st.sort();\n __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").set(name, encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\"));\n }\n }\n get types() {\n return JSON.parse(__classPrivateFieldGet(this, _TypedDataEncoder_types, \"f\"));\n }\n getEncoder(type) {\n let encoder = __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").get(type);\n if (!encoder) {\n encoder = __classPrivateFieldGet(this, _TypedDataEncoder_instances, \"m\", _TypedDataEncoder_getEncoder).call(this, type);\n __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").set(type, encoder);\n }\n return encoder;\n }\n encodeType(name) {\n const result = __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(name);\n if (!result) {\n return logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => this._visit(subtype, v, callback));\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 return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\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 domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return concat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain, types, value, resolveName) {\n // Make a copy to isolate it from the object passed in\n domain = Object.assign({}, domain);\n // Look up all ENS names\n const ensCache = {};\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 // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = Object.assign({}, types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(logger.getBytes(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return logger.getBigInt(value).toString();\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 return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n_TypedDataEncoder_types = new WeakMap(), _TypedDataEncoder_fullTypes = new WeakMap(), _TypedDataEncoder_encoderCache = new WeakMap(), _TypedDataEncoder_instances = new WeakSet(), _TypedDataEncoder_getEncoder = function _TypedDataEncoder_getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(subtype)) {\n result = result.map(keccak256);\n }\n return keccak256(concat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(type));\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(type)) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return concat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n};\n//# sourceMappingURL=typed-data.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Interface_instances, _Interface_errors, _Interface_events, _Interface_functions, _Interface_abiCoder, _Interface_getFunction, _Interface_getEvent;\nimport { arrayify, concat, dataSlice, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { defaultAbiCoder } from \"./abi-coder.js\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder.js\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatType, Fragment, FunctionFragment, ParamType } from \"./fragments.js\";\nimport { logger } from \"./logger.js\";\nimport { Typed } from \"./typed.js\";\nexport { checkResultErrors, Result };\nexport class LogDescription {\n constructor(fragment, topic, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, signature, topic, args\n });\n }\n}\nexport class TransactionDescription {\n constructor(fragment, selector, args, value) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector, value\n });\n }\n}\nexport class ErrorDescription {\n constructor(fragment, selector, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector\n });\n }\n}\nexport class Indexed {\n constructor(hash) {\n defineProperties(this, { hash, _isIndexed: true });\n }\n static isIndexed(value) {\n return !!(value && value._isIndexed);\n }\n}\n// https://docs.soliditylang.org/en/v0.8.13/control-structures.html?highlight=panic#panic-via-assert-and-error-via-require\nconst PanicReasons = {\n \"0\": \"generic panic\",\n \"1\": \"assert(false)\",\n \"17\": \"arithmetic overflow\",\n \"18\": \"division or modulo by zero\",\n \"33\": \"enum overflow\",\n \"34\": \"invalid encoded storage byte array accessed\",\n \"49\": \"out-of-bounds array access; popping on an empty array\",\n \"50\": \"out-of-bounds access of an array or bytesN\",\n \"65\": \"out of memory\",\n \"81\": \"uninitialized function\",\n};\nconst BuiltinErrors = {\n \"0x08c379a0\": {\n signature: \"Error(string)\",\n name: \"Error\",\n inputs: [\"string\"],\n reason: (message) => {\n return `reverted with reason string ${JSON.stringify(message)}`;\n }\n },\n \"0x4e487b71\": {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n inputs: [\"uint256\"],\n reason: (code) => {\n let reason = \"unknown panic code\";\n if (code >= 0 && code <= 0xff && PanicReasons[code.toString()]) {\n reason = PanicReasons[code.toString()];\n }\n return `reverted with panic code 0x${code.toString(16)} (${reason})`;\n }\n }\n};\nexport class Interface {\n constructor(fragments) {\n _Interface_instances.add(this);\n _Interface_errors.set(this, void 0);\n _Interface_events.set(this, void 0);\n _Interface_functions.set(this, void 0);\n // #structs: Map;\n _Interface_abiCoder.set(this, void 0);\n let abi = [];\n if (typeof (fragments) === \"string\") {\n abi = JSON.parse(fragments);\n }\n else {\n abi = fragments;\n }\n __classPrivateFieldSet(this, _Interface_functions, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_errors, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_events, new Map(), \"f\");\n // this.#structs = new Map();\n defineProperties(this, {\n fragments: Object.freeze(abi.map((f) => Fragment.from(f)).filter((f) => (f != null))),\n });\n __classPrivateFieldSet(this, _Interface_abiCoder, this.getAbiCoder(), \"f\");\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket;\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 defineProperties(this, { deploy: fragment });\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = __classPrivateFieldGet(this, _Interface_functions, \"f\");\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = __classPrivateFieldGet(this, _Interface_events, \"f\");\n break;\n case \"error\":\n bucket = __classPrivateFieldGet(this, _Interface_errors, \"f\");\n break;\n default:\n return;\n }\n const signature = fragment.format();\n if (bucket.has(signature)) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n bucket.set(signature, fragment);\n });\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineProperties(this, {\n deploy: ConstructorFragment.fromString(\"constructor()\")\n });\n }\n }\n // @TODO: multi sig?\n format(format) {\n if (!format) {\n format = FormatType.full;\n }\n if (format === FormatType.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n const abi = this.fragments.map((f) => f.format(format));\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatType.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n return abi;\n }\n getAbiCoder() {\n return defaultAbiCoder;\n }\n getFunctionName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, null, false)).name;\n }\n getFunction(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, values || null, true);\n }\n getEventName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, null, false)).name;\n }\n getEvent(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, values || null, true);\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(key, values) {\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_errors, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching error\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_errors, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", key);\n }\n else if (matching.length > 1) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching errors\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_errors, \"f\").get(ErrorFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching error\", \"signature\", key);\n }\n // Get the 4-byte selector used by Solidity to identify a function\n getSelector(fragment) {\n /*\n if (typeof(fragment) === \"string\") {\n const matches: Array = [ ];\n\n try { matches.push(this.getFunction(fragment)); } catch (error) { }\n try { matches.push(this.getError(fragment)); } catch (_) { }\n\n if (matches.length === 0) {\n logger.throwArgumentError(\"unknown fragment\", \"key\", fragment);\n } else if (matches.length > 1) {\n logger.throwArgumentError(\"ambiguous fragment matches function and error\", \"key\", fragment);\n }\n\n fragment = matches[0];\n }\n */\n return dataSlice(id(fragment.format()), 0, 4);\n }\n // Get the 32-byte topic hash used by Solidity to identify an event\n getEventTopic(fragment) {\n //if (typeof(fragment) === \"string\") { fragment = this.getEvent(eventFragment); }\n return id(fragment.format());\n }\n _decodeParams(params, data) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(params, data);\n }\n _encodeParams(params, values) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(params, values);\n }\n encodeDeploy(values) {\n return this._encodeParams(this.deploy.inputs, values || []);\n }\n decodeErrorResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n encodeErrorResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match function ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n let message = \"invalid length for result data\";\n const bytes = arrayify(data);\n if ((bytes.length % 32) === 0) {\n try {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.outputs, bytes);\n }\n catch (error) {\n message = \"could not decode result data\";\n }\n }\n // Call returned data with no error, but the data is junk\n return logger.throwError(message, \"BAD_DATA\", {\n value: hexlify(bytes),\n info: { method: fragment.name, signature: fragment.format() }\n });\n }\n makeError(fragment, _data, tx) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n const data = logger.getBytes(_data);\n let args = undefined;\n if (tx) {\n try {\n args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, tx.data || \"0x\");\n }\n catch (error) {\n console.log(error);\n }\n }\n let errorArgs = undefined;\n let errorName = undefined;\n let errorSignature = undefined;\n let reason = \"unknown reason\";\n if (data.length === 0) {\n reason = \"missing error reason\";\n }\n else if ((data.length % 32) === 4) {\n const selector = hexlify(data.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n try {\n errorName = builtin.name;\n errorSignature = builtin.signature;\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(builtin.inputs, data.slice(4));\n reason = builtin.reason(...errorArgs);\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n else {\n reason = \"unknown custom error\";\n try {\n const error = this.getError(selector);\n errorName = error.name;\n errorSignature = error.format();\n reason = `custom error: ${errorSignature}`;\n try {\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(error.inputs, data.slice(4));\n }\n catch (error) {\n reason = `custom error: ${errorSignature} (coult not decode error data)`;\n }\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n }\n return logger.makeError(\"call revert exception\", \"CALL_EXCEPTION\", {\n data: hexlify(data), transaction: null,\n method: fragment.name, signature: fragment.format(), args,\n errorArgs, errorName, errorSignature, reason\n });\n }\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment, values) {\n if (typeof (functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n return hexlify(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(functionFragment.outputs, values || []));\n }\n /*\n spelunk(inputs: Array, values: ReadonlyArray, processfunc: (type: string, value: any) => Promise): Promise> {\n const promises: Array> = [ ];\n const process = function(type: ParamType, value: any): any {\n if (type.baseType === \"array\") {\n return descend(type.child\n }\n if (type. === \"address\") {\n }\n };\n \n const descend = function (inputs: Array, values: ReadonlyArray) {\n if (inputs.length !== values.length) { throw new Error(\"length mismatch\"); }\n \n };\n \n const result: Array = [ ];\n values.forEach((value, index) => {\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 */\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), \"UNEXPECTED_ARGUMENT\", {\n count: values.length,\n expectedCount: eventFragment.inputs.length\n });\n }\n const topics = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n const encodeTopic = (param, value) => {\n if (param.type === \"string\") {\n return id(value);\n }\n else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n // Check addresses are valid\n if (param.type === \"address\") {\n __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([\"address\"], [value]);\n }\n return zeroPadValue(hexlify(value), 32);\n //@TOOD should probably be return toHex(value, 32)\n };\n values.forEach((value, index) => {\n const param = eventFragment.inputs[index];\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 if (value == null) {\n topics.push(null);\n }\n else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n }\n else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n }\n else {\n topics.push(encodeTopic(param, value));\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n }\n encodeEventLog(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n const topics = [];\n const dataTypes = [];\n const dataValues = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\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 }\n else if (param.type === \"bytes\") {\n topics.push(keccak256(value));\n }\n else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n }\n else {\n topics.push(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([param.type], [value]));\n }\n }\n else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n return {\n data: __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(dataTypes, dataValues),\n topics: topics\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment, data, topics) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (topics != null && !eventFragment.anonymous) {\n const eventTopic = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== eventTopic) {\n logger.throwArgumentError(\"fragment/topic mismatch\", \"topics[0]\", topics[0]);\n }\n topics = topics.slice(1);\n }\n const indexed = [];\n const nonIndexed = [];\n const dynamic = [];\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 }\n else {\n indexed.push(param);\n dynamic.push(false);\n }\n }\n else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n const resultIndexed = (topics != null) ? __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(indexed, concat(topics)) : null;\n const resultNonIndexed = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(nonIndexed, data, true);\n //const result: (Array & { [ key: string ]: any }) = [ ];\n const values = [];\n const keys = [];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n let value = null;\n if (param.indexed) {\n if (resultIndexed == null) {\n value = new Indexed(null);\n }\n else if (dynamic[index]) {\n value = new Indexed(resultIndexed[indexedIndex++]);\n }\n else {\n try {\n value = resultIndexed[indexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n }\n else {\n try {\n value = resultNonIndexed[nonIndexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n values.push(value);\n keys.push(param.name || null);\n });\n return Result.fromItems(values, keys);\n }\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx) {\n const data = logger.getBytes(tx.data, \"tx.data\");\n const value = logger.getBigInt((tx.value != null) ? tx.value : 0, \"tx.value\");\n const fragment = this.getFunction(hexlify(data.slice(0, 4)));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, data.slice(4));\n return new TransactionDescription(fragment, this.getSelector(fragment), args, value);\n }\n // @TODO\n //parseCallResult(data: BytesLike): ??\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log) {\n const fragment = this.getEvent(log.topics[0]);\n if (!fragment || fragment.anonymous) {\n 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 return new LogDescription(fragment, this.getEventTopic(fragment), this.decodeEventLog(fragment, log.data, log.topics));\n }\n parseError(data) {\n const hexData = hexlify(data);\n const fragment = this.getError(dataSlice(hexData, 0, 4));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, dataSlice(hexData, 4));\n return new ErrorDescription(fragment, this.getSelector(fragment), args);\n }\n static from(value) {\n // Already an Interface, which is immutable\n if (value instanceof Interface) {\n return value;\n }\n // JSON\n if (typeof (value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n // Maybe an interface from an older version, or from a symlinked copy\n if (typeof (value.format) === \"function\") {\n return new Interface(value.format(FormatType.json));\n }\n // Array of fragments\n return new Interface(value);\n }\n}\n_Interface_errors = new WeakMap(), _Interface_events = new WeakMap(), _Interface_functions = new WeakMap(), _Interface_abiCoder = new WeakMap(), _Interface_instances = new WeakSet(), _Interface_getFunction = function _Interface_getFunction(key, values, forceUnique) {\n // Selector\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_functions, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching function\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_functions, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n const lastValue = (values.length > 0) ? values[values.length - 1] : null;\n let valueLength = values.length;\n let allowOptions = true;\n if (Typed.isTyped(lastValue) && lastValue.type === \"overrides\") {\n allowOptions = false;\n valueLength--;\n }\n // Remove all matches that don't have a compatible length. The args\n // may contain an overrides, so the match may have n or n - 1 parameters\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs.length;\n if (inputs !== valueLength && (!allowOptions || inputs !== valueLength - 1)) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // We are past the inputs\n if (j >= inputs.length) {\n if (values[j].type === \"overrides\") {\n continue;\n }\n matching.splice(i, 1);\n break;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n // We found a single matching signature with an overrides, but the\n // last value is something that cannot possibly be an options\n if (matching.length === 1 && values && values.length !== matching[0].inputs.length) {\n const lastArg = values[values.length - 1];\n if (lastArg == null || Array.isArray(lastArg) || typeof (lastArg) !== \"object\") {\n matching.splice(0, 1);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n logger.throwArgumentError(`multiple matching functions (i.e. ${matchStr})`, \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_functions, \"f\").get(FunctionFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching function\", \"signature\", key);\n}, _Interface_getEvent = function _Interface_getEvent(key, values, forceUnique) {\n // EventTopic\n if (isHexString(key)) {\n const eventTopic = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_events, \"f\").values()) {\n if (eventTopic === this.getEventTopic(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching event\", \"eventTopic\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_events, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n // Remove all matches that don't have a compatible length.\n for (let i = matching.length - 1; i >= 0; i--) {\n if (matching[i].inputs.length < values.length) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching events\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_events, \"f\").get(EventFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching event\", \"signature\", key);\n};\n//# sourceMappingURL=interface.js.map","export const version = \"@ethersproject/web@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchResponse_props, _FetchResponse_error;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties, getStore } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\n;\nexport class FetchResponse {\n constructor(statusCode, statusMessage, headers, body, request) {\n _FetchResponse_props.set(this, void 0);\n _FetchResponse_error.set(this, void 0);\n __classPrivateFieldSet(this, _FetchResponse_props, {\n statusCode,\n statusMessage,\n headers: Object.freeze(Object.assign({}, Object.keys(headers).reduce((accum, k) => {\n accum[k.toLowerCase()] = headers[k];\n return accum;\n }, {}))),\n body: ((body == null) ? null : new Uint8Array(body)),\n request: (request || null),\n }, \"f\");\n __classPrivateFieldSet(this, _FetchResponse_error, { message: \"\" }, \"f\");\n }\n toString() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return ``;\n }\n get statusCode() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusCode\"); }\n get statusMessage() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusMessage\"); }\n get headers() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"headers\"); }\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? null : new Uint8Array(body);\n }\n get bodyText() {\n try {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? \"\" : toUtf8String(body);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid UTF-8 data\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyText\", info: { response: this }\n });\n }\n }\n get bodyJson() {\n try {\n return JSON.parse(this.bodyText);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid JSON\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyJson\", info: { response: this }\n });\n }\n }\n [(_FetchResponse_props = new WeakMap(), _FetchResponse_error = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n makeServerError(message, error) {\n let statusMessage;\n if (!message) {\n message = `${this.statusCode} ${this.statusMessage}`;\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${message})`;\n }\n else {\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${message})`;\n }\n const response = new FetchResponse(599, statusMessage, this.headers, this.body, getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\") || undefined);\n __classPrivateFieldSet(response, _FetchResponse_error, { message, error }, \"f\");\n return response;\n }\n throwThrottleError(message, stall) {\n if (stall == null) {\n stall = 1000;\n }\n if (typeof (stall) !== \"number\" || !Number.isInteger(stall) || stall < 0) {\n logger.throwArgumentError(\"invalid stall timeout\", \"stall\", stall);\n }\n const error = new Error(message || \"throttling requests\");\n defineProperties(error, { stall, throttle: true });\n throw error;\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n hasBody() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body != null);\n }\n get request() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\"); }\n ok() {\n return (__classPrivateFieldGet(this, _FetchResponse_error, \"f\").message === \"\" && this.statusCode >= 200 && this.statusCode < 300);\n }\n assertOk() {\n if (this.ok()) {\n return;\n }\n let { message, error } = __classPrivateFieldGet(this, _FetchResponse_error, \"f\");\n if (message === \"\") {\n message = `server response ${this.statusCode} ${this.statusMessage}`;\n }\n logger.throwError(message, \"SERVER_ERROR\", {\n request: (this.request || \"unknown request\"), response: this, error\n });\n }\n}\n//# sourceMappingURL=response.js.map","import { logger } from \"./logger.js\";\nimport { FetchResponse } from \"./response.js\";\nexport async function getUrl(req, timeout) {\n const protocol = req.url.split(\":\")[0].toLowerCase();\n if (protocol !== \"http\" && protocol !== \"https\") {\n logger.throwError(`unsupported protocol ${protocol}`, \"UNSUPPORTED_OPERATION\", {\n info: { protocol },\n operation: \"request\"\n });\n }\n if (req.credentials && !req.allowInsecureAuthentication) {\n logger.throwError(\"insecure authorized connections unsupported\", \"UNSUPPORTED_OPERATION\", {\n operation: \"request\"\n });\n }\n const init = {\n method: req.method,\n headers: new Headers(Array.from(req)),\n body: req.body || undefined,\n };\n const resp = await fetch(req.url, init);\n const headers = {};\n resp.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n const body = new Uint8Array(await resp.arrayBuffer());\n return new FetchResponse(resp.status, resp.statusText, headers, body, req);\n}\n//# sourceMappingURL=get-url-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchRequest_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nfunction check(value, type, name) {\n if (typeof (value) !== type) {\n throw new Error(`invalid ${name}`);\n }\n return value;\n}\nexport class FetchRequest {\n constructor(url) {\n _FetchRequest_props.set(this, void 0);\n __classPrivateFieldSet(this, _FetchRequest_props, {\n allowInsecure: false,\n gzip: false,\n headers: {},\n method: \"\",\n timeout: 300,\n url: check(url, \"string\", \"url\")\n }, \"f\");\n }\n // URL\n get url() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\"); }\n set url(url) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\", check(url, \"string\", \"url\"));\n }\n // Body\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body == null) {\n return null;\n }\n if (this.isFrozen()) {\n return new Uint8Array(body);\n }\n return body;\n }\n set body(body) {\n if (body == null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", undefined);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", undefined);\n }\n else if (typeof (body) === \"string\") {\n // @TODO: utf8-check\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(body));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"text/plain\");\n }\n else if (body instanceof Uint8Array) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", body);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/octet-stream\");\n }\n else if (typeof (body) === \"object\") {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(JSON.stringify(body)));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/json\");\n }\n else {\n throw new Error(\"invalid body\");\n }\n }\n hasBody() {\n return (getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\") != null);\n }\n // Method (default: GET with no body, POST with a body)\n get method() {\n const method = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\");\n if (method) {\n return method.toUpperCase();\n }\n if (this.body) {\n return \"POST\";\n }\n return \"GET\";\n }\n set method(method) {\n if (method == null) {\n method = \"\";\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\", check(method, \"string\", \"method\"));\n }\n // Headers (automatically fills content-type if not explicitly set)\n get headers() {\n const headers = Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\"));\n const bodyType = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\");\n if (this.credentials) { /* TODO */ }\n ;\n if (this.allowGzip) {\n headers[\"accept-encoding\"] = \"gzip\";\n }\n if (headers[\"content-type\"] == null && bodyType) {\n headers[\"content-type\"] = bodyType;\n }\n if (this.body) {\n headers[\"content-length\"] = String(this.body.length);\n }\n return Object.freeze(headers);\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n setHeader(key, value) {\n const headers = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\");\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", headers);\n headers[check(key, \"string\", \"key\").toLowerCase()] = String(value);\n }\n clearHeaders() {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", {});\n }\n [(_FetchRequest_props = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n // Configure an Authorization header\n get credentials() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\") || null;\n }\n setCredentials(username, password) {\n if (username.match(/:/)) {\n logger.throwArgumentError(\"invalid basic authentication username\", \"username\", \"[REDACTED]\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\", `${username}:${password}`);\n // @TODO:\n //const auth = username + \":\" + password;\n //this.setHeader(\"authorization\", \"Basic \" + base64Encode(toUtf8Bytes(auth)))\n //this.setHeader(\"authorization\", \"Basic TODO:\" + auth);\n }\n // Configure the request to allow gzipped responses\n get allowGzip() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\");\n }\n set allowGzip(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\", !!value);\n }\n // Allow credentials to be sent over an insecure (non-HTTPS) channel\n get allowInsecureAuthentication() {\n return !!getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\");\n }\n set allowInsecureAuthentication(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\", check(value, \"boolean\", \"allowInsecureAuthentication\"));\n }\n // Timeout (seconds)\n get timeout() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\"); }\n set timeout(timeout) {\n timeout = check(timeout, \"number\", \"timeout\");\n if (timeout <= 0) {\n throw new Error(\"invalid timerout\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\", timeout);\n }\n redirect(location) {\n // Redirection; for now we only support absolute locataions\n const current = this.url.split(\":\")[0].toLowerCase();\n const target = location.split(\":\")[0].toLowerCase();\n if (this.method !== \"GET\" || (current === \"https\" && target === \"http\") ||\n !location.match(/^https?:/)) {\n return logger.throwError(`unsupported redirect`, \"UNSUPPORTED_OPERATION\", {\n operation: `redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(location)})`\n });\n }\n // Create a copy of this request, with a new URL\n const req = new FetchRequest(location);\n req.method = \"GET\";\n req.allowGzip = this.allowGzip;\n req.timeout = this.timeout;\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"body\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\"));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Do not forward credentials unless on the same domain; only absolute\n //req.allowInsecure = false;\n // paths are currently supported; may want a way to specify to forward?\n //setStore(req.#props, \"creds\", getStore(this.#pros, \"creds\"));\n return req;\n }\n clone() {\n const clone = new FetchRequest(this.url);\n // Preserve \"default method\" (i.e. null)\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"method\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\"));\n // Preserve \"default body\" with type, copying the Uint8Array is present\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"body\", (body == null) ? undefined : new Uint8Array(body));\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Preserve \"default headers\"\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n // Credentials is readonly, so we copy internally\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"creds\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\"));\n if (this.allowGzip) {\n clone.allowGzip = true;\n }\n clone.timeout = this.timeout;\n if (this.allowInsecureAuthentication) {\n clone.allowInsecureAuthentication = true;\n }\n return clone;\n }\n freeze() {\n // Copy the body so any changes to previous access do not modify it\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body != null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", new Uint8Array(body));\n }\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\").headers);\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n }\n}\n//# sourceMappingURL=request.js.map","import { decodeBase64 } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { getUrl } from \"./get-url.js\"; /*-browser*/\nimport { logger } from \"./logger.js\";\nimport { FetchRequest } from \"./request.js\";\nimport { FetchResponse } from \"./response.js\";\nasync function delay(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\n// @TODO: Add option for global preflightRequest?\nfunction getTime() { return (new Date()).getTime(); }\nfunction unpercent(value) {\n value = value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n });\n return toUtf8Bytes(value);\n}\nlet lockGateways = false;\nlet ipfsGateway = \"https:/\\/gateway.ipfs.io/\";\nlet arGateway = \"https:/\\/gateway.ar.io/\";\nexport async function fetchData(connection) {\n const conn = (typeof (connection) === \"string\") ? {\n request: new FetchRequest(connection)\n } : (connection instanceof FetchRequest) ? {\n request: connection\n } : Object.assign({}, connection);\n if (conn.request == null) {\n return logger.throwArgumentError(\"missing request\", \"connection\", connection);\n }\n let req = conn.request.clone().freeze();\n switch (conn.request.url.split(\":\")[0]) {\n case \"data\": {\n const match = req.url.match(/^data:([^;:]*)?(;base64)?,(.*)$/i);\n if (match) {\n try {\n const headers = {\n \"content-type\": (match[1] ? match[1] : \"text/plain\")\n };\n const body = (match[2] ? decodeBase64(match[3]) : unpercent(match[3]));\n return new FetchResponse(200, \"OK\", headers, body, req.clone());\n }\n catch (error) {\n return new FetchResponse(400, \"BAD REQUEST (invalid base64 encoded data)\", {}, null, req.clone());\n }\n }\n return new FetchResponse(500, \"INTERNAL SERVER ERROR (unsupported dara URI)\", {}, null, req.clone());\n }\n case \"ipfs\":\n case \"ipns\":\n case \"ar\":\n throw new Error(\"not implemented yet\");\n console.log(\"FF\", arGateway, ipfsGateway);\n case \"http\":\n case \"https\":\n break;\n default:\n throw new Error(\"unsupported scheme\");\n }\n const attempts = (conn.throttleLimit != null) ? conn.throttleLimit : 12;\n if (!Number.isInteger(attempts) || attempts < 1) {\n return logger.throwArgumentError(\"invalid throttleLimit\", \"connection\", connection);\n }\n const slotInterval = (conn.throttleSlotInterval != null) ? conn.throttleSlotInterval : 100;\n //logger.assertInteger(slotInterval, \"connection.throttleSlotInterval\", connection.throttleSlotInterval);\n if (!Number.isInteger(slotInterval) || attempts < 0) {\n return logger.throwArgumentError(\"invalid throttleSlotInterval\", \"connection\", connection);\n }\n const retryFunc = (conn.throttleRetry != null) ? conn.throttleRetry : null;\n if (retryFunc && typeof (retryFunc) !== \"function\") {\n return logger.throwArgumentError(\"invalid throttleRetry callback\", \"connection\", connection);\n }\n const preflightRequest = conn.preflightRequest || null;\n if (preflightRequest && typeof (preflightRequest) !== \"function\") {\n return logger.throwArgumentError(\"invalid preflightRequest callback\", \"connection\", connection);\n }\n const processResponse = conn.processResponse || null;\n if (processResponse && typeof (processResponse) !== \"function\") {\n return logger.throwArgumentError(\"invalid processResponse callback\", \"connection\", connection);\n }\n // Start time of this fetch (for timeouts)\n const t0 = getTime();\n let response = null;\n for (let a = 0; a < attempts; a++) {\n let request = req.clone();\n if (preflightRequest) {\n request = (await preflightRequest(request.freeze())).clone();\n }\n const remainingTime = getTime() - t0;\n if (remainingTime < 0) {\n return logger.throwError(\"timeout\", \"TIMEOUT\", { operation: \"request\", reason: \"timeout\", request });\n }\n response = await getUrl(request, remainingTime);\n // Retry logic (server forced)\n if (a < attempts) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Try following the redirect; the request will through if the\n // type of redirect is not supported\n try {\n req = request.redirect(response.headers.location || \"\");\n continue;\n }\n catch (error) { }\n ;\n // Things won't get any better on another attempt; abort\n return response;\n }\n else if (response.statusCode === 429) {\n if (retryFunc == null || (await retryFunc(request.freeze(), response, a))) {\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof (retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n await delay(parseInt(retryAfter));\n }\n else {\n await delay(slotInterval * Math.trunc(Math.random() * Math.pow(2, a)));\n }\n continue;\n }\n }\n }\n // Optional post-processing response; also allows trapping\n // HTTP status errors and doing \"something different\",\n // including any further throttling.\n if (processResponse) {\n try {\n return await processResponse(request, response);\n }\n catch (error) {\n // response.throwThrottleError\n if (error.throttle && typeof (error.stall) === \"number\") {\n if (a < attempts) {\n await delay(error.stall);\n continue;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\", error);\n }\n // Something went wrong during processing; throw a 5xx server error\n response.makeServerError(\"error in post-processing function\", error).assertOk();\n }\n }\n return response;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\");\n}\nfetchData.lock = function () {\n lockGateways = true;\n};\n// @TODO: Allow a master Gateway function\nfetchData.setGateway = function (gateway) {\n};\nfetchData.setIpfsGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setIpfsGateway\"\n });\n }\n ipfsGateway = gateway;\n};\nfetchData.setArGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setArGateway\"\n });\n }\n arGateway = gateway;\n};\n//# sourceMappingURL=fetch-data.js.map","export const version = \"@ethersproject/providers@6.0.0-beta.5\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _a, _EnsResolver_supports2544, _EnsResolver_getResolver;\nimport { concat, dataSlice, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { encodeBase58, toArray, toNumber } from \"@ethersproject/math\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData } from \"@ethersproject/web\";\nimport { logger } from \"./logger.js\";\nconst BN_1 = BigInt(1);\nconst Empty = new Uint8Array([]);\nconst HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n const offset = toNumber(dataSlice(result, start, start + 32));\n const length = toNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n}\nfunction parseString(result, start) {\n try {\n const bytes = parseBytes(result, start);\n if (bytes != null) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(Empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\n// @TODO: This should use the fetch-data:ipfs gateway\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link) {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n }\n else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n }\n else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n return `https:/\\/gateway.ipfs.io/ipfs/${link}`;\n}\n;\n;\nexport class MulticoinProviderPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n validate(proivder) {\n return this;\n }\n supportsCoinType(coinType) {\n return false;\n }\n async encodeAddress(coinType, address) {\n throw new Error(\"unsupported coin\");\n }\n async decodeAddress(coinType, data) {\n throw new Error(\"unsupported coin\");\n }\n}\nconst BasicMulticoinPluginId = \"org.ethers.provider-prugins.basicmulticoin\";\nexport class BasicMulticoinProviderPlugin extends MulticoinProviderPlugin {\n constructor() {\n super(BasicMulticoinPluginId);\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];\nexport class EnsResolver {\n constructor(provider, address, name) {\n // For EIP-2544 names, the ancestor that provided the resolver\n _EnsResolver_supports2544.set(this, void 0);\n defineProperties(this, { provider, address, name });\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n }\n async supportsWildcard() {\n if (!__classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\")) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n __classPrivateFieldSet(this, _EnsResolver_supports2544, this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return (logger.getBigInt(result) === BN_1);\n }).catch((error) => {\n if (error.code === \"CALL_EXCEPTION\") {\n return false;\n }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n throw error;\n }), \"f\");\n }\n return await __classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\");\n }\n async _fetch(selector, parameters = \"0x\") {\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const addrData = concat([selector, namehash(this.name), parameters]);\n const tx = {\n to: this.address,\n enableCcipRead: true,\n data: addrData\n };\n // Wildcard support; use EIP-2544 to resolve the request\n let wrapped = false;\n if (await this.supportsWildcard()) {\n wrapped = true;\n // selector(\"resolve(bytes,bytes)\")\n tx.data = concat([\"0x9061b923\", encodeBytes([dnsEncode(this.name), addrData])]);\n }\n try {\n let data = await this.provider.call(tx);\n if ((logger.getBytes(data).length % 32) === 4) {\n return logger.throwError(\"resolver threw error\", \"CALL_EXCEPTION\", {\n transaction: tx, data\n });\n }\n if (wrapped) {\n return parseBytes(data, 0);\n }\n return data;\n }\n catch (error) {\n if (error.code !== \"CALL_EXCEPTION\") {\n throw error;\n }\n }\n return null;\n }\n async getAddress(coinType = 60) {\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n // No address\n if (result === \"0x\" || result === HashZero) {\n return null;\n }\n const network = await this.provider.getNetwork();\n return network.formatter.callAddress(result);\n }\n catch (error) {\n if (error.code === \"CALL_EXCEPTION\") {\n return null;\n }\n throw error;\n }\n }\n let coinPlugin = null;\n for (const plugin of this.provider.plugins) {\n if (!(plugin instanceof MulticoinProviderPlugin)) {\n continue;\n }\n if (plugin.supportsCoinType(coinType)) {\n coinPlugin = plugin;\n break;\n }\n }\n if (coinPlugin == null) {\n return null;\n }\n // keccak256(\"addr(bytes32,uint256\")\n const data = parseBytes((await this._fetch(\"0xf1cb7e06\", numPad(coinType))) || \"0x\", 0);\n // No address\n if (data == null || data === \"0x\") {\n return null;\n }\n // Compute the address\n const address = await coinPlugin.encodeAddress(coinType, data);\n if (address != null) {\n return address;\n }\n return logger.throwError(`invalid coin data`, \"UNSUPPORTED_OPERATION\", {\n operation: `getAddress(${coinType})`,\n info: { coinType, data }\n });\n }\n async getText(key) {\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\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 const calldata = logger.getBytes(concat([numPad(64), numPad(keyBytes.length), keyBytes]));\n const hexBytes = parseBytes((await this._fetch(\"0x59d1d43c\", bytesPad(calldata))) || \"0x\", 0);\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n return toUtf8String(hexBytes);\n }\n async getContentHash() {\n // keccak256(\"contenthash()\")\n const hexBytes = parseBytes((await this._fetch(\"0xbc1c58d1\")) || \"0x\", 0);\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n // IPFS (CID: 1, Type: 70=DAG-PB, 72=libp2p-key)\n const ipfs = hexBytes.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const scheme = (ipfs[1] === \"e3010170\") ? \"ipfs\" : \"ipns\";\n const length = parseInt(ipfs[4], 16);\n if (ipfs[5].length === length * 2) {\n return `${scheme}:/\\/${encodeBase58(\"0x\" + ipfs[2])}`;\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 && swarm[1].length === 64) {\n return `bzz:/\\/${swarm[1]}`;\n }\n return logger.throwError(`invalid or unsupported content hash data`, \"UNSUPPORTED_OPERATION\", {\n operation: \"getContentHash()\",\n info: { data: hexBytes }\n });\n }\n async getAvatar() {\n return (await this._getAvatar()).url;\n }\n async _getAvatar() {\n const linkage = [{ type: \"name\", value: 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) {\n linkage.push({ type: \"!avatar\", value: \"\" });\n throw new Error(\"!avatar\");\n }\n linkage.push({ type: \"avatar\", value: avatar });\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) {\n continue;\n }\n const scheme = match[1].toLowerCase();\n switch (scheme) {\n case \"https\":\n case \"data\":\n linkage.push({ type: \"url\", value: avatar });\n return { linkage, url: avatar };\n case \"ipfs\": {\n const url = getIpfsLink(avatar);\n linkage.push({ type: \"ipfs\", value: avatar });\n linkage.push({ type: \"url\", value: url });\n return { linkage, url };\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, value: avatar });\n // The owner of this name\n const owner = await this.getAddress();\n if (owner == null) {\n linkage.push({ type: \"!owner\", value: \"\" });\n throw new Error(\"!owner\");\n }\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) {\n linkage.push({ type: `!${scheme}caip`, value: (match[2] || \"\") });\n throw new Error(\"!caip\");\n }\n const formatter = (await this.provider.getNetwork()).formatter;\n const addr = formatter.address(comps[0]);\n const tokenId = numPad(comps[1]);\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = formatter.callAddress(await this.provider.call({\n to: addr, data: concat([\"0x6352211e\", tokenId])\n }));\n if (owner !== tokenOwner) {\n linkage.push({ type: \"!owner\", value: tokenOwner });\n throw new Error(\"!owner\");\n }\n linkage.push({ type: \"owner\", value: tokenOwner });\n }\n else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = logger.getBigInt(await this.provider.call({\n to: addr, data: concat([\"0x00fdd58e\", zeroPadValue(owner, 32), tokenId])\n }));\n if (!balance) {\n linkage.push({ type: \"!balance\", value: \"0\" });\n throw new Error(\"!balance\");\n }\n linkage.push({ type: \"balance\", value: balance.toString() });\n }\n // Call the token contract for the metadata URL\n const tx = {\n to: comps[0],\n data: concat([selector, tokenId])\n };\n let metadataUrl = parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) {\n linkage.push({ type: \"!metadata-url\", value: \"\" });\n throw new Error(\"!metadata-url\");\n }\n linkage.push({ type: \"metadata-url-base\", value: metadataUrl });\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", hexlify(tokenId).substring(2));\n linkage.push({ type: \"metadata-url-expanded\", value: metadataUrl });\n }\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n linkage.push({ type: \"metadata-url\", value: metadataUrl });\n // Get the token metadata\n let metadata = {};\n const response = await fetchData(metadataUrl);\n response.assertOk();\n try {\n metadata = response.bodyJson;\n }\n catch (error) {\n try {\n linkage.push({ type: \"!metadata\", value: response.bodyText });\n }\n catch (error) {\n const bytes = response.body;\n if (bytes) {\n linkage.push({ type: \"!metadata\", value: hexlify(bytes) });\n }\n throw error;\n }\n throw error;\n }\n if (!metadata) {\n linkage.push({ type: \"!metadata\", value: \"\" });\n throw new Error(\"!metadata\");\n }\n linkage.push({ type: \"metadata\", value: JSON.stringify(metadata) });\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof (imageUrl) !== \"string\") {\n linkage.push({ type: \"!imageUrl\", value: \"\" });\n throw new Error(\"!imageUrl\");\n }\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n }\n else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) {\n linkage.push({ type: \"!imageUrl-ipfs\", value: imageUrl });\n throw new Error(\"!imageUrl-ipfs\");\n }\n linkage.push({ type: \"imageUrl-ipfs\", value: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n linkage.push({ type: \"url\", value: imageUrl });\n return { linkage, url: imageUrl };\n }\n }\n }\n }\n catch (error) {\n console.log(\"EE\", error);\n }\n return { linkage, url: null };\n }\n static async fromName(provider, name) {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") {\n return null;\n }\n // Optimization since the eth node cannot change and does\n // not have a wildcar resolver\n if (name !== \"eth\" && currentName === \"eth\") {\n return null;\n }\n // Check the current node for a resolver\n const addr = await __classPrivateFieldGet(EnsResolver, _a, \"m\", _EnsResolver_getResolver).call(EnsResolver, provider, currentName);\n // Found a resolver!\n if (addr != null) {\n const resolver = new EnsResolver(provider, addr, name);\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) {\n return null;\n }\n return resolver;\n }\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n }\n}\n_a = EnsResolver, _EnsResolver_supports2544 = new WeakMap(), _EnsResolver_getResolver = async function _EnsResolver_getResolver(provider, name) {\n const network = await provider.getNetwork();\n const ensPlugin = network.getPlugin(\"org.ethers.plugins.ens\");\n // No ENS...\n if (!ensPlugin) {\n return logger.throwError(\"network does not support ENS\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getResolver\", info: { network: network.name }\n });\n }\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await provider.call({\n to: ensPlugin.address,\n data: concat([\"0x0178b8bf\", namehash(name)]),\n enableCcipRead: true\n });\n const addr = network.formatter.callAddress(addrData);\n if (addr === dataSlice(HashZero, 0, 20)) {\n return null;\n }\n return addr;\n }\n catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32),\n // so probably a link error\n throw error;\n }\n return null;\n};\n//# sourceMappingURL=ens-resolver.js.map","export const version = \"@ethersproject/signing-key@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Signature_props;\nimport { concat, dataLength, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n// Constants\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst _guard = {};\nconst Zero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nexport class Signature {\n constructor(guard, r, s, v) {\n _Signature_props.set(this, void 0);\n logger.assertPrivate(guard, _guard, \"Signature\");\n __classPrivateFieldSet(this, _Signature_props, { r, s, v, networkV: null }, \"f\");\n }\n get r() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\"); }\n set r(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\", hexlify(value));\n }\n get s() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\"); }\n set s(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n else if (logger.getBytes(value)[0] & 0x80) {\n logger.throwArgumentError(\"non-canonical s\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\", hexlify(value));\n }\n get v() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\"); }\n set v(value) {\n const v = logger.getNumber(value, \"value\");\n if (v !== 27 && v !== 28) {\n throw new Error(\"@TODO\");\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\", v);\n }\n get networkV() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"networkV\"); }\n get legacyChainId() {\n const v = this.networkV;\n if (v == null) {\n return null;\n }\n return Signature.getChainId(v);\n }\n get yParity() {\n if (this.v === 27) {\n return 0;\n }\n return 1;\n /*\n // When v is 0 or 1 it is the recid directly\n if (this.v.isZero()) { return 0; }\n if (this.v.eq(1)) { return 1; }\n\n // Otherwise, odd (e.g. 27) is 0 and even (e.g. 28) is 1\n return this.v.and(1).isZero() ? 1: 0;\n */\n }\n get yParityAndS() {\n // The EIP-2098 compact representation\n const yParityAndS = logger.getBytes(this.s);\n if (this.yParity) {\n yParityAndS[0] |= 0x80;\n }\n return hexlify(yParityAndS);\n }\n get compactSerialized() {\n return concat([this.r, this.yParityAndS]);\n }\n get serialized() {\n return concat([this.r, this.s, (this.yParity ? \"0x1c\" : \"0x1b\")]);\n }\n [(_Signature_props = new WeakMap(), Symbol.for('nodejs.util.inspect.custom'))]() {\n return `Signature { r: \"${this.r}\", s: \"${this.s}\", yParity: ${this.yParity}, networkV: ${this.networkV} }`;\n }\n clone() {\n const clone = new Signature(_guard, this.r, this.s, this.v);\n if (this.networkV) {\n setStore(__classPrivateFieldGet(clone, _Signature_props, \"f\"), \"networkV\", this.networkV);\n }\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n }\n toJSON() {\n const networkV = this.networkV;\n return {\n _type: \"signature\",\n networkV: ((networkV != null) ? networkV.toString() : null),\n r: this.r, s: this.s, v: this.v,\n };\n }\n static create() {\n return new Signature(_guard, Zero, Zero, 27);\n }\n // Get the chain ID from an EIP-155 v\n static getChainId(v) {\n const bv = logger.getBigInt(v, \"v\");\n // The v is not an EIP-155 v, so it is the unspecified chain ID\n if ((bv == BN_27) || (bv == BN_28)) {\n return BN_0;\n }\n // Bad value for an EIP-155 v\n if (bv < BN_35) {\n logger.throwArgumentError(\"invalid EIP-155 v\", \"v\", v);\n }\n return (bv - BN_35) / BN_2;\n }\n // Get the EIP-155 v transformed for a given chainId\n static getChainIdV(chainId, v) {\n return (logger.getBigInt(chainId) * BN_2) + BigInt(35 + v - 27);\n }\n // Convert an EIP-155 v into a normalized v\n static getNormalizedV(v) {\n const bv = logger.getBigInt(v);\n if (bv == BN_0) {\n return 27;\n }\n if (bv == BN_1) {\n return 28;\n }\n // Otherwise, EIP-155 v means odd is 27 and even is 28\n return (bv & BN_1) ? 27 : 28;\n }\n static from(sig) {\n const throwError = (message) => {\n return logger.throwArgumentError(message, \"signature\", sig);\n };\n if (typeof (sig) === \"string\") {\n const bytes = logger.getBytes(sig, \"signature\");\n if (bytes.length === 64) {\n const r = hexlify(bytes.slice(0, 32));\n const s = bytes.slice(32, 64);\n const v = (s[0] & 0x80) ? 28 : 27;\n s[0] &= 0x7f;\n return new Signature(_guard, r, hexlify(s), v);\n }\n if (dataLength(sig) !== 65) {\n const r = hexlify(sig.slice(0, 32));\n const s = bytes.slice(32, 64);\n if (s[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n const v = Signature.getNormalizedV(bytes[64]);\n return new Signature(_guard, r, hexlify(s), v);\n }\n return throwError(\"invlaid raw signature length\");\n }\n if (sig instanceof Signature) {\n return sig.clone();\n }\n // Get r\n const r = sig.r;\n if (r == null) {\n throwError(\"missing r\");\n }\n if (!isHexString(r, 32)) {\n throwError(\"invalid r\");\n }\n // Get s; by any means necessary (we check consistency below)\n const s = (function (s, yParityAndS) {\n if (s != null) {\n if (!isHexString(s, 32)) {\n throwError(\"invalid s\");\n }\n return s;\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n const bytes = logger.getBytes(yParityAndS);\n bytes[0] &= 0x7f;\n return hexlify(bytes);\n }\n return throwError(\"missing s\");\n })(sig.s, sig.yParityAndS);\n if (logger.getBytes(s)[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n // Get v; by any means necessary (we check consistency below)\n const { networkV, v } = (function (_v, yParityAndS, yParity) {\n if (_v != null) {\n const v = logger.getBigInt(_v);\n return {\n networkV: ((v >= BN_35) ? v : undefined),\n v: Signature.getNormalizedV(v)\n };\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n return { v: ((logger.getBytes(yParityAndS)[0] & 0x80) ? 28 : 27) };\n }\n if (yParity != null) {\n switch (yParity) {\n case 0: return { v: 27 };\n case 1: return { v: 28 };\n }\n return throwError(\"invalid yParity\");\n }\n return throwError(\"missing v\");\n })(sig.v, sig.yParityAndS, sig.yParity);\n const result = new Signature(_guard, r, s, v);\n if (networkV) {\n setStore(__classPrivateFieldGet(result, _Signature_props, \"f\"), \"networkV\", networkV);\n }\n // If multiple of v, yParity, yParityAndS we given, check they match\n if (\"yParity\" in sig && sig.yParity !== result.yParity) {\n throwError(\"yParity mismatch\");\n }\n else if (\"yParityAndS\" in sig && sig.yParityAndS !== result.yParityAndS) {\n throwError(\"yParityAndS mismatch\");\n }\n return result;\n }\n}\n//# sourceMappingURL=signature.js.map","/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst POW_2_256 = _2n ** BigInt(256);\nconst CURVE = {\n a: _0n,\n b: BigInt(7),\n P: POW_2_256 - _2n ** BigInt(32) - BigInt(977),\n n: POW_2_256 - BigInt('432420386565659656852420866394968145599'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n};\nexport { CURVE };\nfunction weistrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 ** _2n);\n const B = mod(Y1 ** _2n);\n const C = mod(B ** _2n);\n const D = mod(_2n * (mod((X1 + B) ** _2n) - A - C));\n const E = mod(_3n * A);\n const F = mod(E ** _2n);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H ** _2n);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r ** _2n - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n let n = normalizeScalar(scalar);\n const G = JacobianPoint.BASE;\n const P0 = JacobianPoint.ZERO;\n if (n === _0n)\n return P0;\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.ZERO;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) {\n let pr = precomputes[offset];\n if (window % 2)\n pr = pr.negate();\n f = f.add(pr);\n }\n else {\n let cached = precomputes[offset + Math.abs(wbits) - 1];\n if (wbits < 0)\n cached = cached.negate();\n p = p.add(cached);\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ = invert(this.z)) {\n const { x, y, z } = this;\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weistrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, 33));\n const y = bytesToNumber(bytes.subarray(33, 65));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n return this.fromCompressedHex(bytes);\n }\n if (len === 65 && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n msgHash = ensureBytes(msgHash);\n const h = truncateHash(msgHash);\n const { r, s } = normalizeSignature(signature);\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Cannot recover signature: invalid recovery bit');\n }\n if (h === _0n)\n throw new Error('Cannot recover signature: msgHash cannot be 0');\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(r));\n const { n } = CURVE;\n const rinv = invert(r, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.y & _1n ? '03' : '02';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weistrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nexport class Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = isUint8a(hex);\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = isUint8a(hex);\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n }\n toDERRawBytes(isCompressed = false) {\n return hexToBytes(this.toDERHex(isCompressed));\n }\n toDERHex(isCompressed = false) {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n if (isCompressed)\n return sHex;\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const rLen = numberToHexUnpadded(rHex.length / 2);\n const sLen = numberToHexUnpadded(sHex.length / 2);\n const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nfunction concatBytes(...arrays) {\n if (!arrays.every(isUint8a))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nfunction isUint8a(bytes) {\n return bytes instanceof Uint8Array;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nfunction numTo32bStr(num) {\n if (num > POW_2_256)\n throw new Error('Expected number < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n return hexToBytes(numTo32bStr(num));\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst POW_2_128 = _2n ** BigInt(128);\nfunction splitScalarEndo(k) {\n const { n } = CURVE;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n const { n } = CURVE;\n const byteLength = hash.length;\n const delta = byteLength * 8 - 256;\n let h = bytesToNumber(hash);\n if (delta > 0)\n h = h >> BigInt(delta);\n if (h >= n)\n h -= n;\n return h;\n}\nclass HmacDrbg {\n constructor() {\n this.v = new Uint8Array(32).fill(1);\n this.k = new Uint8Array(32).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n if (typeof utils.hmacSha256Sync !== 'function')\n throw new Error('utils.hmacSha256Sync is undefined, you need to set it');\n const res = utils.hmacSha256Sync(this.k, ...values);\n if (res instanceof Promise)\n throw new Error('To use sync sign(), ensure utils.hmacSha256 is sync');\n return res;\n }\n incr() {\n if (this.counter >= 1000) {\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n }\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n this.v = await this.hmac(this.v);\n return this.v;\n }\n generateSync() {\n this.incr();\n this.v = this.hmacSync(this.v);\n return this.v;\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n const k = bytesToNumber(kBytes);\n if (!isWithinCurveOrder(k))\n return;\n const { n } = CURVE;\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(invert(k, n) * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n const sig = new Signature(r, s);\n const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 64)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (isUint8a(key)) {\n if (key.length !== 32)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isPub(item) {\n const arr = isUint8a(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === 33 || len === 65;\n if (str)\n return len === 66 || len === 130;\n if (item instanceof Point)\n return true;\n return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n const hex = numTo32bStr(num);\n return hexToBytes(hex);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = utils.randomBytes(32);\n const e = ensureBytes(extraEntropy);\n if (e.length !== 32)\n throw new Error('sign: Expected 32 bytes of extra data');\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n let { sig, recovery } = recSig;\n const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n if (canonical && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n await drbg.reseed(seed);\n while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n drbg.reseedSync(seed);\n while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n if (h === _0n)\n return false;\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nasync function taggedHash(tag, ...messages) {\n const tagB = new Uint8Array(tag.split('').map((c) => c.charCodeAt(0)));\n const tagH = await utils.sha256(tagB);\n const h = await utils.sha256(concatBytes(tagH, tagH, ...messages));\n return bytesToNumber(h);\n}\nasync function createChallenge(x, P, message) {\n const rx = numTo32b(x);\n const t = await taggedHash('BIP0340/challenge', rx, P.toRawX(), message);\n return mod(t, CURVE.n);\n}\nfunction hasEvenY(point) {\n return (point.y & _1n) === _0n;\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nasync function schnorrSign(message, privateKey, auxRand = utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n const { n } = CURVE;\n const m = ensureBytes(message);\n const d0 = normalizePrivateKey(privateKey);\n const rand = ensureBytes(auxRand);\n if (rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n const P = Point.fromPrivateKey(d0);\n const d = hasEvenY(P) ? d0 : n - d0;\n const t0h = await taggedHash('BIP0340/aux', rand);\n const t = d ^ t0h;\n const k0h = await taggedHash('BIP0340/nonce', numTo32b(t), P.toRawX(), m);\n const k0 = mod(k0h, n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const R = Point.fromPrivateKey(k0);\n const k = hasEvenY(R) ? k0 : n - k0;\n const e = await createChallenge(R.x, P, m);\n const sig = new SchnorrSignature(R.x, mod(k + e * d, n)).toRawBytes();\n const isValid = await schnorrVerify(sig, m, P.toRawX());\n if (!isValid)\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n let sig;\n try {\n sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n const m = ensureBytes(message);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const e = await createChallenge(r, P, m);\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !hasEvenY(R) || R.x !== r)\n return false;\n return true;\n}\nexport const schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n if (hash.length < 40 || hash.length > 1024)\n throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n const num = mod(bytesToNumber(hash), CURVE.n);\n if (num === _0n || num === _1n)\n throw new Error('Invalid private key');\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => {\n return utils.hashToPrivateKey(utils.randomBytes(40));\n },\n bytesToHex,\n mod,\n sha256: async (message) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', message.buffer);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n return Uint8Array.from(createHash('sha256').update(message).digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n};\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SigningKey_privateKey;\nimport * as secp256k1 from \"@noble/secp256k1\";\nimport { arrayify, concat, dataLength, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac } from \"@ethersproject/crypto\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"./signature.js\";\nimport { logger } from \"./logger.js\";\n// Make noble-secp256k1 sync\nsecp256k1.utils.hmacSha256Sync = function (key, ...messages) {\n return arrayify(computeHmac(\"sha256\", key, concat(messages)));\n};\nexport class SigningKey {\n constructor(privateKey) {\n _SigningKey_privateKey.set(this, void 0);\n logger.assertArgument((dataLength(privateKey) === 32), \"invalid private key length\", \"privateKey\", \"[REDACTED]\");\n __classPrivateFieldSet(this, _SigningKey_privateKey, hexlify(privateKey), \"f\");\n }\n get privateKey() { return __classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"); }\n get publicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")); }\n get compressedPublicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"), true); }\n sign(digest) {\n logger.assertArgument((dataLength(digest) === 32), \"invalid digest length\", \"digest\", digest);\n const [sigDer, recid] = secp256k1.signSync(arrayify(digest), arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), {\n recovered: true,\n canonical: true\n });\n const sig = secp256k1.Signature.fromHex(sigDer);\n return Signature.from({\n r: toHex(\"0x\" + sig.r.toString(16), 32),\n s: toHex(\"0x\" + sig.s.toString(16), 32),\n v: (recid ? 0x1c : 0x1b)\n }).freeze();\n }\n computeShardSecret(other) {\n const pubKey = SigningKey.computePublicKey(other);\n return hexlify(secp256k1.getSharedSecret(arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), pubKey));\n }\n static computePublicKey(key, compressed) {\n let bytes = logger.getBytes(key, \"key\");\n if (bytes.length === 32) {\n const pubKey = secp256k1.getPublicKey(bytes, !!compressed);\n return hexlify(pubKey);\n }\n if (bytes.length === 64) {\n const pub = new Uint8Array(65);\n pub[0] = 0x04;\n pub.set(bytes, 1);\n bytes = pub;\n }\n const point = secp256k1.Point.fromHex(bytes);\n return hexlify(point.toRawBytes(compressed));\n }\n static recoverPublicKey(digest, signature) {\n const sig = Signature.from(signature);\n const der = secp256k1.Signature.fromCompact(arrayify(concat([sig.r, sig.s]))).toDERRawBytes();\n const pubKey = secp256k1.recoverPublicKey(arrayify(digest), der, sig.yParity);\n if (pubKey != null) {\n return hexlify(pubKey);\n }\n return logger.throwArgumentError(\"invalid signautre for digest\", \"signature\", signature);\n }\n static _addPoints(p0, p1, compressed) {\n const pub0 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p0).substring(2));\n const pub1 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p1).substring(2));\n return \"0x\" + pub0.add(pub1).toHex(!!compressed);\n }\n}\n_SigningKey_privateKey = new WeakMap();\n/*\nconst key = new SigningKey(\"0x1234567890123456789012345678901234567890123456789012345678901234\");\nconsole.log(key);\nconsole.log(key.sign(\"0x1234567890123456789012345678901234567890123456789012345678901234\"));\n{\n const privKey = \"0x1234567812345678123456781234567812345678123456781234567812345678\";\n const signingKey = new SigningKey(privKey);\n console.log(\"0\", signingKey, signingKey.publicKey, signingKey.publicKeyCompressed);\n\n let pubKey = SigningKey.computePublicKey(privKey);\n let pubKeyComp = SigningKey.computePublicKey(privKey, true);\n let pubKeyRaw = \"0x\" + SigningKey.computePublicKey(privKey).substring(4);\n console.log(\"A\", pubKey, pubKeyComp);\n\n let a = SigningKey.computePublicKey(pubKey);\n let b = SigningKey.computePublicKey(pubKey, true);\n console.log(\"B\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyComp);\n b = SigningKey.computePublicKey(pubKeyComp, true);\n console.log(\"C\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyRaw);\n b = SigningKey.computePublicKey(pubKeyRaw, true);\n console.log(\"D\", a, b);\n\n const digest = \"0x1122334411223344112233441122334411223344112233441122334411223344\";\n const sig = signingKey.sign(digest);\n console.log(\"SS\", sig, sig.r, sig.s, sig.yParity);\n\n console.log(\"R\", SigningKey.recoverPublicKey(digest, sig));\n}\n*/\n//# sourceMappingURL=signing-key.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { dataLength } from \"@ethersproject/bytes\";\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (dataLength(storageKey) !== 32) {\n //logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }>\n throw new Error(\"\");\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n //logger.throwArgumentError(\"access list expected to be [ address, storageKeys[>\n throw new Error(\"\");\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = 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//# sourceMappingURL=accesslist.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nexport function computeAddress(key) {\n const publicKey = SigningKey.computePublicKey(key, false);\n return getAddress(keccak256(\"0x\" + publicKey.substring(4)).substring(26));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(SigningKey.recoverPublicKey(digest, signature));\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/transaction@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Transaction_props;\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toArray } from \"@ethersproject/math\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { decodeRlp, encodeRlp } from \"@ethersproject/rlp\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"./accesslist.js\";\nimport { recoverAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst BN_MAX_UINT = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleData(value, param) {\n try {\n return hexlify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid data\", param, value);\n }\n}\nfunction handleAccessList(value, param) {\n try {\n return accessListify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid accessList\", param, value);\n }\n}\nfunction handleNumber(_value, param) {\n if (_value === \"0x\") {\n return 0;\n }\n return logger.getNumber(_value, param);\n}\nfunction handleUint(_value, param) {\n if (_value === \"0x\") {\n return BN_0;\n }\n const value = logger.getBigInt(_value, param);\n if (value > BN_MAX_UINT) {\n logger.throwArgumentError(\"value exceeds uint size\", param, value);\n }\n return value;\n}\nfunction formatNumber(_value, name) {\n const value = logger.getBigInt(_value, \"value\");\n const result = toArray(value);\n if (result.length > 32) {\n logger.throwArgumentError(`value too large`, `tx.${name}`, value);\n }\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _parseLegacy(data) {\n const fields = decodeRlp(data);\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 6)) {\n return logger.throwArgumentError(\"invalid field count for legacy transaction\", \"data\", data);\n }\n const tx = {\n type: 0,\n nonce: handleNumber(fields[0], \"nonce\"),\n gasPrice: handleUint(fields[1], \"gasPrice\"),\n gasLimit: handleUint(fields[2], \"gasLimit\"),\n to: handleAddress(fields[3]),\n value: handleUint(fields[4], \"value\"),\n data: handleData(fields[5], \"dta\"),\n chainId: BN_0\n };\n // Legacy unsigned transaction\n if (fields.length === 6) {\n return tx;\n }\n const v = handleUint(fields[6], \"v\");\n const r = handleUint(fields[7], \"r\");\n const s = handleUint(fields[8], \"s\");\n if (r === BN_0 && s === BN_0) {\n // EIP-155 unsigned transaction\n tx.chainId = v;\n }\n else {\n // Compute the EIP-155 chain ID (or 0 for legacy)\n let chainId = (v - BN_35) / BN_2;\n if (chainId < BN_0) {\n chainId = BN_0;\n }\n tx.chainId = chainId;\n // Signed Legacy Transaction\n if (chainId === BN_0 && (v < BN_27 || v > BN_28)) {\n logger.throwArgumentError(\"non-canonical legacy v\", \"v\", fields[6]);\n }\n tx.signature = Signature.from({\n r: zeroPadValue(fields[7], 32),\n s: zeroPadValue(fields[8], 32),\n v\n });\n tx.hash = keccak256(data);\n }\n return tx;\n}\nfunction _serializeLegacy(tx, sig) {\n const fields = [\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n ];\n let chainId = BN_0;\n if (tx.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = logger.getBigInt(tx.chainId, \"tx.chainId\");\n // We have a chainId in the tx and an EIP-155 v in the signature,\n // make sure they agree with each other\n if (sig && sig.networkV != null && sig.legacyChainId !== chainId) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n }\n else if (sig) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n const legacy = sig.legacyChainId;\n if (legacy != null) {\n chainId = legacy;\n }\n }\n // Requesting an unsigned transaction\n if (!sig) {\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== BN_0) {\n fields.push(toArray(chainId));\n fields.push(\"0x\");\n fields.push(\"0x\");\n }\n return encodeRlp(fields);\n }\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = BigInt(27 + sig.yParity);\n if (chainId !== BN_0) {\n v = Signature.getChainIdV(chainId, sig.v);\n }\n else if (BigInt(sig.v) !== v) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n fields.push(toArray(v));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n return encodeRlp(fields);\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n let yParity;\n try {\n yParity = handleNumber(fields[0], \"yParity\");\n if (yParity !== 0 && yParity !== 1) {\n throw new Error(\"bad yParity\");\n }\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid yParity\", \"yParity\", fields[0]);\n }\n const r = zeroPadValue(fields[1], 32);\n const s = zeroPadValue(fields[2], 32);\n const signature = Signature.from({ r, s, yParity });\n tx.signature = signature;\n}\nfunction _parseEip1559(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 12)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 2\", \"data\", hexlify(data));\n }\n const maxPriorityFeePerGas = handleUint(fields[2], \"maxPriorityFeePerGas\");\n const maxFeePerGas = handleUint(fields[3], \"maxFeePerGas\");\n const tx = {\n type: 2,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleUint(fields[4], \"gasLimit\"),\n to: handleAddress(fields[5]),\n value: handleUint(fields[6], \"value\"),\n data: handleData(fields[7], \"data\"),\n accessList: handleAccessList(fields[8], \"accessList\"),\n };\n // Unsigned EIP-1559 Transaction\n if (fields.length === 9) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _serializeEip1559(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(tx.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"yParity\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x02\", encodeRlp(fields)]);\n}\nfunction _parseEip2930(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 8 && fields.length !== 11)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 1\", \"data\", hexlify(data));\n }\n const tx = {\n type: 1,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n gasPrice: handleUint(fields[2], \"gasPrice\"),\n gasLimit: handleUint(fields[3], \"gasLimit\"),\n to: handleAddress(fields[4]),\n value: handleUint(fields[5], \"value\"),\n data: handleData(fields[6], \"data\"),\n accessList: handleAccessList(fields[7], \"accessList\")\n };\n // Unsigned EIP-2930 Transaction\n if (fields.length === 8) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(8), _serializeEip2930);\n return tx;\n}\nfunction _serializeEip2930(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"recoveryParam\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x01\", encodeRlp(fields)]);\n}\nexport class Transaction {\n constructor() {\n _Transaction_props.set(this, void 0);\n __classPrivateFieldSet(this, _Transaction_props, {\n type: null,\n to: null,\n nonce: 0,\n gasLimit: BigInt(0),\n gasPrice: null,\n maxPriorityFeePerGas: null,\n maxFeePerGas: null,\n data: \"0x\",\n value: BigInt(0),\n chainId: BigInt(0),\n sig: null,\n accessList: null\n }, \"f\");\n }\n // A type of null indicates the type will be populated automatically\n get type() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\"); }\n get typeName() {\n switch (this.type) {\n case 0: return \"legacy\";\n case 1: return \"eip-2930\";\n case 2: return \"eip-1559\";\n }\n return null;\n }\n set type(value) {\n switch (value) {\n case null:\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", null);\n break;\n case 0:\n case \"legacy\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 0);\n break;\n case 1:\n case \"berlin\":\n case \"eip-2930\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 1);\n break;\n case 2:\n case \"london\":\n case \"eip-1559\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 2);\n break;\n default:\n throw new Error(`unsupported transaction type`);\n }\n }\n get to() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\"); }\n set to(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\", (value == null) ? null : getAddress(value));\n }\n get nonce() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\"); }\n set nonce(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\", logger.getNumber(value, \"value\")); }\n get gasLimit() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\"); }\n set gasLimit(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\", logger.getBigInt(value)); }\n get gasPrice() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\");\n if (value == null && (this.type === 0 || this.type === 1)) {\n return BN_0;\n }\n return value;\n }\n set gasPrice(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\", (value == null) ? null : logger.getBigInt(value, \"gasPrice\"));\n }\n get maxPriorityFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxPriorityFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxPriorityFeePerGas\"));\n }\n get maxFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxFeePerGas\"));\n }\n get data() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\"); }\n set data(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\", hexlify(value)); }\n get value() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\"); }\n set value(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\", logger.getBigInt(value, \"value\"));\n }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\", logger.getBigInt(value)); }\n get signature() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\") || null; }\n set signature(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\", (value == null) ? null : Signature.from(value));\n }\n get accessList() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\") || null;\n if (value == null && (this.type === 1 || this.type === 2)) {\n return [];\n }\n return value;\n }\n set accessList(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\", (value == null) ? null : accessListify(value));\n }\n get hash() {\n if (this.signature == null) {\n throw new Error(\"cannot hash unsigned transaction; maybe you meant .unsignedHash\");\n }\n return keccak256(this.serialized);\n }\n get unsignedHash() {\n return keccak256(this.unsignedSerialized);\n }\n get from() {\n if (this.signature == null) {\n return null;\n }\n return recoverAddress(this.unsignedSerialized, this.signature);\n }\n get fromPublicKey() {\n if (this.signature == null) {\n return null;\n }\n // use ecrecover\n return \"\";\n }\n isSigned() {\n return this.signature != null;\n }\n get serialized() {\n if (this.signature == null) {\n throw new Error(\"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized\");\n }\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this, this.signature);\n case 1:\n return _serializeEip2930(this, this.signature);\n case 2:\n return _serializeEip1559(this, this.signature);\n }\n throw new Error(\"unsupported type\");\n }\n get unsignedSerialized() {\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this);\n case 1:\n return _serializeEip2930(this);\n case 2:\n return _serializeEip1559(this);\n }\n throw new Error(\"unsupported type\");\n }\n // Validates properties and lists possible types this transaction adheres to\n inferTypes() {\n // Checks that there are no conflicting properties set\n const hasGasPrice = this.gasPrice != null;\n const hasFee = (this.maxFeePerGas != null || this.maxPriorityFeePerGas != null);\n const hasAccessList = (this.accessList != null);\n //if (hasGasPrice && hasFee) {\n // throw new Error(\"transaction cannot have gasPrice and maxFeePerGas\");\n //}\n if (this.maxFeePerGas != null && this.maxPriorityFeePerGas != null) {\n if (this.maxFeePerGas < this.maxPriorityFeePerGas) {\n throw new Error(\"priorityFee cannot be more than maxFee\");\n }\n }\n //if (this.type === 2 && hasGasPrice) {\n // throw new Error(\"eip-1559 transaction cannot have gasPrice\");\n //}\n if ((this.type === 0 || this.type === 1) && hasFee) {\n throw new Error(\"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas\");\n }\n if (this.type === 0 && hasAccessList) {\n throw new Error(\"legacy transaction cannot have accessList\");\n }\n const types = [];\n // Explicit type\n if (this.type != null) {\n types.push(this.type);\n }\n else {\n if (hasFee) {\n types.push(2);\n }\n else if (hasGasPrice) {\n types.push(1);\n if (!hasAccessList) {\n types.push(0);\n }\n }\n else if (hasAccessList) {\n types.push(1);\n types.push(2);\n }\n else {\n types.push(0);\n types.push(1);\n types.push(2);\n }\n }\n types.sort();\n return types;\n }\n isLegacy() { return (this.type === 0); }\n isBerlin() { return (this.type === 1); }\n isLondon() { return (this.type === 2); }\n clone() {\n return Transaction.from(this);\n }\n freeze() {\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").sig = (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig.clone().freeze());\n }\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").accessList = Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList.map((set) => {\n Object.freeze(set.storageKeys);\n return Object.freeze(set);\n }));\n }\n Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n }\n static from(tx) {\n if (typeof (tx) === \"string\") {\n const payload = arrayify(tx);\n if (payload[0] >= 0x7f) { // @TODO: > vs >= ??\n return Transaction.from(_parseLegacy(payload));\n }\n switch (payload[0]) {\n case 1: return Transaction.from(_parseEip2930(payload));\n case 2: return Transaction.from(_parseEip1559(payload));\n }\n throw new Error(\"unsupported transaction type\");\n }\n const result = new Transaction();\n if (tx.type != null) {\n result.type = tx.type;\n }\n if (tx.to != null) {\n result.to = tx.to;\n }\n if (tx.nonce != null) {\n result.nonce = tx.nonce;\n }\n if (tx.gasLimit != null) {\n result.gasLimit = tx.gasLimit;\n }\n if (tx.gasPrice != null) {\n result.gasPrice = tx.gasPrice;\n }\n if (tx.maxPriorityFeePerGas != null) {\n result.maxPriorityFeePerGas = tx.maxPriorityFeePerGas;\n }\n if (tx.maxFeePerGas != null) {\n result.maxFeePerGas = tx.maxFeePerGas;\n }\n if (tx.data != null) {\n result.data = tx.data;\n }\n if (tx.value != null) {\n result.value = tx.value;\n }\n if (tx.chainId != null) {\n result.chainId = tx.chainId;\n }\n if (tx.signature != null) {\n result.signature = Signature.from(tx.signature);\n }\n if (tx.accessList != null) {\n result.accessList = tx.accessList;\n }\n if (tx.hash != null) {\n if (result.isSigned()) {\n if (result.hash !== tx.hash) {\n throw new Error(\"hash mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a hashs\");\n }\n }\n if (tx.from != null) {\n if (result.isSigned()) {\n if (result.from.toLowerCase() !== (tx.from || \"\").toLowerCase()) {\n throw new Error(\"from mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a from\");\n }\n }\n return result;\n }\n}\n_Transaction_props = new WeakMap();\n//# sourceMappingURL=transaction.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Block_transactions, _TransactionReceipt_logs;\n//import { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\n// -----------------------\nfunction getValue(value) {\n if (value == null) {\n return null;\n }\n return value;\n}\nfunction toJson(value) {\n if (value == null) {\n return null;\n }\n return value.toString();\n}\n// @TODO? implements Required\nexport class FeeData {\n constructor(gasPrice, maxFeePerGas, maxPriorityFeePerGas) {\n defineProperties(this, {\n gasPrice: getValue(gasPrice),\n maxFeePerGas: getValue(maxFeePerGas),\n maxPriorityFeePerGas: getValue(maxPriorityFeePerGas)\n });\n }\n toJSON() {\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = this;\n return {\n _type: \"FeeData\",\n gasPrice: toJson(gasPrice),\n maxFeePerGas: toJson(maxFeePerGas),\n maxPriorityFeePerGas: toJson(maxPriorityFeePerGas),\n };\n }\n}\n;\nexport function copyRequest(req) {\n const result = {};\n // These could be addresses, ENS names or Addressables\n if (req.to) {\n result.to = req.to;\n }\n if (req.from) {\n result.from = req.from;\n }\n if (req.data) {\n result.data = hexlify(req.data);\n }\n const bigIntKeys = \"chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value\".split(/,/);\n for (const key in bigIntKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getBigInt(req[key], `request.${key}`);\n }\n const numberKeys = \"type,nonce\".split(/,/);\n for (const key in numberKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getNumber(req[key], `request.${key}`);\n }\n if (req.accessList) {\n result.accessList = accessListify(req.accessList);\n }\n if (\"blockTag\" in req) {\n result.blockTag = req.blockTag;\n }\n if (\"enableCcipRead\" in req) {\n result.enableCcipReadEnabled = !!req.enableCcipRead;\n }\n if (\"customData\" in req) {\n result.customData = req.customData;\n }\n return result;\n}\n;\nexport class Block {\n constructor(block, provider) {\n _Block_transactions.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _Block_transactions, Object.freeze(block.transactions.map((tx) => {\n if (typeof (tx) !== \"string\" && tx.provider !== provider) {\n throw new Error(\"provider mismatch\");\n }\n return tx;\n })), \"f\");\n ;\n defineProperties(this, {\n provider,\n hash: getValue(block.hash),\n number: block.number,\n timestamp: block.timestamp,\n parentHash: block.parentHash,\n nonce: block.nonce,\n difficulty: block.difficulty,\n gasLimit: block.gasLimit,\n gasUsed: block.gasUsed,\n miner: block.miner,\n extraData: block.extraData,\n baseFeePerGas: getValue(block.baseFeePerGas)\n });\n }\n get transactions() { return __classPrivateFieldGet(this, _Block_transactions, \"f\"); }\n //connect(provider: Provider): Block {\n // return new Block(this, provider);\n //}\n toJSON() {\n const { baseFeePerGas, difficulty, extraData, gasLimit, gasUsed, hash, miner, nonce, number, parentHash, timestamp, transactions } = this;\n return {\n _type: \"Block\",\n baseFeePerGas: toJson(baseFeePerGas),\n difficulty: toJson(difficulty),\n extraData,\n gasLimit: toJson(gasLimit),\n gasUsed: toJson(gasUsed),\n hash, miner, nonce, number, parentHash, timestamp,\n transactions,\n };\n }\n [(_Block_transactions = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return {\n value: this.transactions[index++], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get length() { return this.transactions.length; }\n get date() {\n if (this.timestamp == null) {\n return null;\n }\n return new Date(this.timestamp * 1000);\n }\n async getTransaction(index) {\n const tx = this.transactions[index];\n if (tx == null) {\n throw new Error(\"no such tx\");\n }\n if (typeof (tx) === \"string\") {\n return (await this.provider.getTransaction(tx));\n }\n else {\n return tx;\n }\n }\n isMined() { return !!this.hash; }\n isLondon() { return !!this.baseFeePerGas; }\n orphanedEvent() {\n if (!this.isMined()) {\n throw new Error(\"\");\n }\n return createOrphanedBlockFilter(this);\n }\n}\nexport class Log {\n constructor(log, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n const topics = Object.freeze(log.topics.slice());\n defineProperties(this, {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n removed: log.removed,\n address: log.address,\n data: log.data,\n topics,\n index: log.index,\n transactionIndex: log.transactionIndex,\n });\n }\n //connect(provider: Provider): Log {\n // return new Log(this, provider);\n //}\n toJSON() {\n const { address, blockHash, blockNumber, data, index, removed, topics, transactionHash, transactionIndex } = this;\n return {\n _type: \"log\",\n address, blockHash, blockNumber, data, index,\n removed, topics, transactionHash, transactionIndex\n };\n }\n async getBlock() {\n return (await this.provider.getBlock(this.blockHash));\n }\n async getTransaction() {\n return (await this.provider.getTransaction(this.transactionHash));\n }\n async getTransactionReceipt() {\n return (await this.provider.getTransactionReceipt(this.transactionHash));\n }\n removedEvent() {\n return createRemovedLogFilter(this);\n }\n}\nexport class TransactionReceipt {\n constructor(tx, provider) {\n _TransactionReceipt_logs.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _TransactionReceipt_logs, Object.freeze(tx.logs.map((log) => {\n if (provider !== log.provider) {\n //return log.connect(provider);\n throw new Error(\"provider mismatch\");\n }\n return log;\n })), \"f\");\n defineProperties(this, {\n provider,\n to: tx.to,\n from: tx.from,\n contractAddress: tx.contractAddress,\n hash: tx.hash,\n index: tx.index,\n blockHash: tx.blockHash,\n blockNumber: tx.blockNumber,\n logsBloom: tx.logsBloom,\n gasUsed: tx.gasUsed,\n cumulativeGasUsed: tx.cumulativeGasUsed,\n gasPrice: (tx.effectiveGasPrice || tx.gasPrice),\n byzantium: tx.byzantium,\n status: tx.status,\n root: tx.root\n });\n }\n get logs() { return __classPrivateFieldGet(this, _TransactionReceipt_logs, \"f\"); }\n //connect(provider: Provider): TransactionReceipt {\n // return new TransactionReceipt(this, provider);\n //}\n toJSON() {\n const { to, from, contractAddress, hash, index, blockHash, blockNumber, logsBloom, logs, byzantium, status, root } = this;\n return {\n _type: \"TransactionReceipt\",\n blockHash, blockNumber, byzantium, contractAddress,\n cumulativeGasUsed: toJson(this.cumulativeGasUsed),\n from,\n gasPrice: toJson(this.gasPrice),\n gasUsed: toJson(this.gasUsed),\n hash, index, logs, logsBloom, root, status, to\n };\n }\n get length() { return this.logs.length; }\n [(_TransactionReceipt_logs = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return { value: this.logs[index++], done: false };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get fee() {\n return this.gasUsed * this.gasPrice;\n }\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.hash);\n if (tx == null) {\n throw new Error(\"TODO\");\n }\n return tx;\n }\n async confirmations() {\n return (await this.provider.getBlockNumber()) - this.blockNumber + 1;\n }\n removedEvent() {\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transction cannot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"reorderedEvent(other)\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\n;\nexport class TransactionResponse {\n constructor(tx, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n this.blockNumber = (tx.blockNumber != null) ? tx.blockNumber : null;\n this.blockHash = (tx.blockHash != null) ? tx.blockHash : null;\n this.hash = tx.hash;\n this.index = tx.index;\n this.type = tx.type;\n this.from = tx.from;\n this.to = tx.to || null;\n this.gasLimit = tx.gasLimit;\n this.nonce = tx.nonce;\n this.data = tx.data;\n this.value = tx.value;\n this.gasPrice = tx.gasPrice;\n this.maxPriorityFeePerGas = (tx.maxPriorityFeePerGas != null) ? tx.maxPriorityFeePerGas : null;\n this.maxFeePerGas = (tx.maxFeePerGas != null) ? tx.maxFeePerGas : null;\n this.chainId = tx.chainId;\n this.signature = tx.signature;\n this.accessList = (tx.accessList != null) ? tx.accessList : null;\n }\n //connect(provider: Provider): TransactionResponse {\n // return new TransactionResponse(this, provider);\n //}\n toJSON() {\n const { blockNumber, blockHash, index, hash, type, to, from, nonce, data, signature, accessList } = this;\n return {\n _type: \"TransactionReceipt\",\n accessList, blockNumber, blockHash,\n chainId: toJson(this.chainId),\n data, from,\n gasLimit: toJson(this.gasLimit),\n gasPrice: toJson(this.gasPrice),\n hash,\n maxFeePerGas: toJson(this.maxFeePerGas),\n maxPriorityFeePerGas: toJson(this.maxPriorityFeePerGas),\n nonce, signature, to, index, type,\n value: toJson(this.value),\n };\n }\n async getBlock() {\n let blockNumber = this.blockNumber;\n if (blockNumber == null) {\n const tx = await this.getTransaction();\n if (tx) {\n blockNumber = tx.blockNumber;\n }\n }\n if (blockNumber == null) {\n return null;\n }\n const block = this.provider.getBlock(blockNumber);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n return this.provider.getTransaction(this.hash);\n }\n async wait(confirms) {\n return this.provider.waitForTransaction(this.hash, confirms);\n }\n isMined() {\n return (this.blockHash != null);\n }\n isLegacy() {\n return (this.type === 0);\n }\n isBerlin() {\n return (this.type === 1);\n }\n isLondon() {\n return (this.type === 2);\n }\n removedEvent() {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\nfunction createOrphanedBlockFilter(block) {\n return { orphan: \"drop-block\", hash: block.hash, number: block.number };\n}\nfunction createReorderedTransactionFilter(tx, other) {\n return { orphan: \"reorder-transaction\", tx, other };\n}\nfunction createRemovedTransactionFilter(tx) {\n return { orphan: \"drop-transaction\", tx };\n}\nfunction createRemovedLogFilter(log) {\n return { orphan: \"drop-log\", log: {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n address: log.address,\n data: log.data,\n topics: Object.freeze(log.topics.slice()),\n index: log.index\n } };\n}\nfunction fail() {\n throw new Error(\"this provider should not be used\");\n}\nclass DummyProvider {\n get provider() { return this; }\n async getNetwork() { return fail(); }\n async getFeeData() { return fail(); }\n async estimateGas(tx) { return fail(); }\n async call(tx) { return fail(); }\n async resolveName(name) { return fail(); }\n // State\n async getBlockNumber() { return fail(); }\n // Account\n async getBalanceOf(address, blockTag) {\n return fail();\n }\n async getTransactionCountOf(address, blockTag) {\n return fail();\n }\n async getCode(address, blockTag) {\n return fail();\n }\n async getStorageAt(address, position, blockTag) {\n return fail();\n }\n // Write\n async broadcastTransaction(signedTx) { return fail(); }\n // Queries\n async getBlock(blockHashOrBlockTag) {\n return fail();\n }\n async getBlockWithTransactions(blockHashOrBlockTag) {\n return fail();\n }\n async getTransaction(hash) {\n return fail();\n }\n async getTransactionReceipt(hash) {\n return fail();\n }\n // Bloom-filter Queries\n async getLogs(filter) {\n return fail();\n }\n // ENS\n async lookupAddress(address) {\n return fail();\n }\n async waitForTransaction(hash, confirms, timeout) {\n return fail();\n }\n async waitForBlock(blockTag) {\n return fail();\n }\n // EventEmitterable\n async on(event, listener) { return fail(); }\n async once(event, listener) { return fail(); }\n async emit(event, ...args) { return fail(); }\n async listenerCount(event) { return fail(); }\n async listeners(event) { return fail(); }\n async off(event, listener) { return fail(); }\n async removeAllListeners(event) { return fail(); }\n async addListener(event, listener) { return fail(); }\n async removeListener(event, listener) { return fail(); }\n}\n// A singleton provider instance that can be used as a placeholder. This\n// allows API that have a Provider added later to not require a null check.\nexport const dummyProvider = new DummyProvider();\n//# sourceMappingURL=provider.js.map","// Belongs to Networks; requires abstract-provider\n// provider requires abstract-provider and network\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Formatter_format, _Formatter_baseBlock;\n/**\n * Formatter\n *\n * This is responsibile for converting much of the various\n * loose network values into a concrete ethers-ready value.\n *\n * For example, converting addresses to checksum addresses,\n * validating a hash is 32 bytes, and so on.\n *\n * By sub-classing this class and providing it in a custom\n * Network object this allows exotic (non-Ethereum) networks\n * to be fairly simple to adapt to ethers.\n */\nimport { getAddress, getCreateAddress } from \"@ethersproject/address\";\nimport { dataLength, dataSlice, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { Block, Log, TransactionReceipt, TransactionResponse } from \"./provider.js\";\nimport { logger } from \"./logger.js\";\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n//export type AccessListSet = { address: string, storageKeys: Array };\n//export type AccessList = Array;\n//export type AccessListish = AccessList |\n// Array<[ string, Array ]> |\n// Record>;\nfunction stringify(value) {\n if (typeof (value) !== \"string\") {\n throw new Error(\"invalid string\");\n }\n return value;\n}\nexport class Formatter {\n constructor() {\n _Formatter_format.set(this, void 0);\n _Formatter_baseBlock.set(this, void 0);\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 number = this.number.bind(this);\n const uint256 = this.uint256.bind(this);\n const topics = this.arrayOf(hash);\n __classPrivateFieldSet(this, _Formatter_format, {\n address,\n bigNumber,\n blockTag,\n data,\n hash,\n number,\n uint256,\n topics,\n filter: this.object({\n fromBlock: this.allowNull(blockTag, undefined),\n toBlock: this.allowNull(blockTag, undefined),\n blockHash: this.allowNull(hash, undefined),\n address: this.allowNull(address, undefined),\n topics: this.allowNull(topics, undefined)\n }),\n transactionRequest: this.object({\n from: this.allowNull(address),\n type: this.allowNull(number),\n to: this.allowNull(address),\n nonce: this.allowNull(number),\n gasLimit: this.allowNull(uint256),\n gasPrice: this.allowNull(uint256),\n maxFeePerGas: this.allowNull(uint256),\n maxPriorityFeePerGas: this.allowNull(uint256),\n data: this.allowNull(data),\n value: this.allowNull(uint256),\n }),\n transactionResponse: this.object({\n hash: hash,\n index: number,\n type: this.allowNull(number, 0),\n // These can be null for pending blocks\n blockHash: this.allowNull(hash),\n blockNumber: this.allowNull(number),\n // For Legacy transactions, this comes from the v\n chainId: this.allowNull(number),\n from: address,\n to: this.address,\n gasLimit: bigNumber,\n gasPrice: this.allowNull(bigNumber),\n maxFeePerGas: this.allowNull(bigNumber),\n maxPriorityFeePerGas: this.allowNull(bigNumber),\n value: bigNumber,\n data: data,\n nonce: number,\n r: hash,\n s: hash,\n v: number,\n accessList: this.allowNull(this.accessList)\n }, {\n index: [\"transactionIndex\"]\n }),\n }, \"f\");\n __classPrivateFieldSet(this, _Formatter_baseBlock, this.object({\n number: number,\n hash: this.allowNull(hash, null),\n timestamp: number,\n parentHash: hash,\n nonce: this.allowNull(stringify, \"0x0000000000000000\"),\n difficulty: bigNumber,\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n miner: this.allowNull(address, \"0x0000000000000000000000000000000000000000\"),\n extraData: stringify,\n baseFeePerGas: this.allowNull(bigNumber),\n }), \"f\");\n }\n // An address\n address(value) {\n return getAddress(value);\n }\n // An address from a call result; may be zero-padded\n callAddress(value) {\n if (dataLength(value) !== 32 || dataSlice(value, 0, 12) !== \"0x000000000000000000000000\") {\n logger.throwArgumentError(\"invalid call address\", \"value\", value);\n }\n return this.address(dataSlice(value, 12));\n }\n // An address from a transaction (e.g. { from: string, nonce: number })\n contractAddress(value) {\n return getCreateAddress({\n from: this.address(value.from),\n nonce: logger.getNumber(value.nonce, \"value.nonce\")\n });\n }\n // Block Tag\n blockTag(value) {\n if (value == null) {\n return \"latest\";\n }\n switch (value) {\n case \"earliest\":\n return \"0x0\";\n case \"latest\":\n case \"pending\":\n return value;\n }\n if (typeof (value) === \"number\" || (isHexString(value) && dataLength(value) < 32)) {\n return quantity(value);\n }\n return logger.throwArgumentError(\"invalid blockTag\", \"value\", value);\n }\n // Block objects\n block(value, provider) {\n const params = __classPrivateFieldGet(this, _Formatter_baseBlock, \"f\").call(this, value);\n params.transactions = value.transactions.map((t) => this.hash(t));\n return new Block(params, provider);\n }\n blockWithTransactions(value, provider) {\n throw new Error();\n }\n // Transactions\n transactionRequest(value, provider) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionRequest(value);\n }\n transactionResponse(value, provider) {\n value = Object.assign({}, value);\n // @TODO: Use the remap feature\n if (value.data == null && value.input != null) {\n value.data = value.input;\n }\n if (value.gasLimit == null && value.gas) {\n value.gasLimit = value.gas;\n }\n value = __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionResponse(value);\n const sig = Signature.from({ r: value.r, s: value.s, v: value.v });\n value.signature = sig;\n if (value.chainId == null) {\n value.chainId = sig.legacyChainId;\n }\n return new TransactionResponse(value, provider);\n }\n // Receipts\n log(value, provider) {\n const log = this.object({\n address: this.address,\n blockHash: this.hash,\n blockNumber: this.number,\n data: this.data,\n index: this.number,\n removed: this.boolean,\n topics: this.topics,\n transactionHash: this.hash,\n transactionIndex: this.number,\n }, {\n index: [\"logIndex\"]\n })(value);\n return new Log(log, provider);\n }\n receipt(value, provider) {\n const receipt = this.object({\n blockHash: this.hash,\n blockNumber: this.number,\n contractAddress: this.allowNull(this.address),\n cumulativeGasUsed: this.bigNumber,\n from: this.address,\n gasUsed: this.bigNumber,\n logs: this.arrayOf((v) => (this.log(v, provider))),\n logsBloom: this.data,\n root: this.allowNull(this.data),\n status: this.allowNull(this.number),\n to: this.address,\n gasPrice: this.allowNull(this.bigNumber),\n hash: this.hash,\n index: this.number,\n type: this.allowNull(this.number, 0),\n }, {\n hash: [\"transactionHash\"],\n gasPrice: [\"effectiveGasPrice\"],\n index: [\"transactionIndex\"]\n })(value);\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (receipt.root != null) {\n if (receipt.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = parseInt(receipt.root);\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (receipt.status != null && receipt.status !== value) {\n return logger.throwError(\"alt-root-status/status mismatch\", \"BAD_DATA\", {\n value: { root: receipt.root, status: receipt.status }\n });\n }\n receipt.status = value;\n delete receipt.root;\n }\n else {\n return logger.throwError(\"invalid alt-root-status\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n else if (!isHexString(receipt.root, 32)) {\n // Must be a valid bytes32\n return logger.throwError(\"invalid receipt root hash\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n //receipt.byzantium = (receipt.root == null);\n return new TransactionReceipt(receipt, provider);\n }\n // Fitlers\n topics(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").topics(value);\n }\n filter(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").filter(value);\n }\n filterLog(value) {\n console.log(\"ME\", value);\n return null;\n }\n // Converts a serialized transaction to a TransactionResponse\n transaction(value) {\n throw new Error();\n }\n // Useful utility formatters functions, which if need be use the\n // methods within the formatter to ensure internal compatibility\n // Access List; converts an AccessListish to an AccessList\n accessList(value) {\n return accessListify(value);\n }\n // Converts falsish values to a specific value, otherwise use the formatter. Calls preserve `this`.\n allowFalsish(format, ifFalse) {\n return ((value) => {\n if (!value) {\n return ifFalse;\n }\n return format.call(this, value);\n });\n }\n // Allows null, optionally replacing it with a default value. Calls preserve `this`.\n allowNull(format, ifNull) {\n return ((value) => {\n if (value == null) {\n return ifNull;\n }\n return format.call(this, value);\n });\n }\n // Requires an Array satisfying the formatter. Calls preserves `this`.\n arrayOf(format) {\n return ((array) => {\n if (!Array.isArray(array)) {\n throw new Error(\"not an array\");\n }\n return array.map((i) => format.call(this, i));\n });\n }\n // Requires a value which is a value BigNumber\n bigNumber(value) {\n return logger.getBigInt(value, \"value\");\n }\n uint256(value) {\n const result = this.bigNumber(value);\n if (result < 0 || result > BN_MAX_UINT256) {\n logger.throwArgumentError(\"invalid uint256\", \"value\", value);\n }\n return result;\n }\n // Requires a value which is a value boolean or string equivalent\n boolean(value) {\n switch (value) {\n case true:\n case \"true\":\n return true;\n case false:\n case \"false\":\n return false;\n }\n return logger.throwArgumentError(`invalid boolean; ${JSON.stringify(value)}`, \"value\", value);\n }\n // Requires a value which is a valid hexstring. If dataOrLength is true,\n // the length must be even (i.e. a datahexstring) or if it is a number,\n // specifies teh number of bytes value must represent\n _hexstring(dataOrLength) {\n if (dataOrLength == null) {\n dataOrLength = false;\n }\n return (function (value) {\n if (isHexString(value, dataOrLength)) {\n return value.toLowerCase();\n }\n throw new Error(\"bad hexstring\");\n });\n }\n data(value) {\n if (dataLength(value) == null) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return value;\n }\n // Requires a network-native hash\n hash(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").data(value);\n }\n // Requires a valid number, within the IEEE 754 safe range\n number(value) {\n return logger.getNumber(value);\n }\n // Requires an object which matches a fleet of other formatters\n // Any FormatFunc may return `undefined` to have the value omitted\n // from the result object. Calls preserve `this`.\n object(format, altNames) {\n return ((value) => {\n const result = {};\n for (const key in format) {\n let srcKey = key;\n if (altNames && key in altNames && !(srcKey in value)) {\n for (const altKey of altNames[key]) {\n if (altKey in value) {\n srcKey = altKey;\n break;\n }\n }\n }\n try {\n const nv = format[key].call(this, value[srcKey]);\n if (nv !== undefined) {\n result[key] = nv;\n }\n }\n catch (error) {\n const message = (error instanceof Error) ? error.message : \"not-an-error\";\n logger.throwError(`invalid value for value.${key} (${message})`, \"BAD_DATA\", { value });\n }\n }\n return result;\n });\n }\n // Requires a value which matches a network-native storage slot\n storageSlot(value) {\n return toHex(logger.getBigInt(value), 32);\n }\n}\n_Formatter_format = new WeakMap(), _Formatter_baseBlock = new WeakMap();\n//# sourceMappingURL=formatter.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\nconst EnsAddress = \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\";\nexport class NetworkPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n clone() {\n return new NetworkPlugin(this.name);\n }\n validate(network) {\n return this;\n }\n}\nexport class GasCostPlugin extends NetworkPlugin {\n constructor(effectiveBlock = 0, costs) {\n super(`org.ethers.plugins.gas-cost#${(effectiveBlock || 0)}`);\n const props = { effectiveBlock };\n function set(name, nullish) {\n let value = (costs || {})[name];\n if (value == null) {\n value = nullish;\n }\n if (typeof (value) !== \"number\") {\n logger.throwArgumentError(`invalud value for ${name}`, \"costs\", costs);\n }\n props[name] = value;\n }\n set(\"txBase\", 21000);\n set(\"txCreate\", 32000);\n set(\"txDataZero\", 4);\n set(\"txDataNonzero\", 16);\n set(\"txAccessListStorageKey\", 1900);\n set(\"txAccessListAddress\", 2400);\n defineProperties(this, props);\n }\n clone() {\n return new GasCostPlugin(this.effectiveBlock, this);\n }\n}\n// Networks shoudl use this plugin to specify the contract address\n// and network necessary to resolve ENS names.\nexport class EnsPlugin extends NetworkPlugin {\n constructor(address, targetNetwork) {\n super(\"org.ethers.plugins.ens\");\n defineProperties(this, {\n address: (address || EnsAddress),\n targetNetwork: ((targetNetwork == null) ? 1 : targetNetwork)\n });\n }\n clone() {\n return new EnsPlugin(this.address, this.targetNetwork);\n }\n validate(network) {\n network.formatter.address(this.address);\n return this;\n }\n}\nexport class MaxPriorityFeePlugin extends NetworkPlugin {\n constructor(priorityFee) {\n super(\"org.ethers.plugins.max-priority-fee\");\n defineProperties(this, {\n priorityFee: logger.getBigInt(priorityFee)\n });\n }\n async getPriorityFee(provider) {\n return this.priorityFee;\n }\n clone() {\n return new MaxPriorityFeePlugin(this.priorityFee);\n }\n}\n//# sourceMappingURL=plugins-network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Network_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { Formatter } from \"./formatter.js\";\nimport { logger } from \"./logger.js\";\nimport { EnsPlugin, GasCostPlugin } from \"./plugins-network.js\";\n/* * * *\n// Networks which operation against an L2 can use this plugin to\n// specify how to access L1, for the purpose of resolving ENS,\n// for example.\nexport class LayerOneConnectionPlugin extends NetworkPlugin {\n readonly provider!: Provider;\n// @TODO: Rename to ChainAccess and allow for connecting to any chain\n constructor(provider: Provider) {\n super(\"org.ethers.plugins.layer-one-connection\");\n defineProperties(this, { provider });\n }\n\n clone(): LayerOneConnectionPlugin {\n return new LayerOneConnectionPlugin(this.provider);\n }\n}\n*/\n/* * * *\nexport class PriceOraclePlugin extends NetworkPlugin {\n readonly address!: string;\n\n constructor(address: string) {\n super(\"org.ethers.plugins.price-oracle\");\n defineProperties(this, { address });\n }\n\n clone(): PriceOraclePlugin {\n return new PriceOraclePlugin(this.address);\n }\n}\n*/\n// Networks or clients with a higher need for security (such as clients\n// that may automatically make CCIP requests without user interaction)\n// can use this plugin to anonymize requests or intercept CCIP requests\n// to notify and/or receive authorization from the user\n/* * * *\nexport type FetchDataFunc = (req: Frozen) => Promise;\nexport class CcipPreflightPlugin extends NetworkPlugin {\n readonly fetchData!: FetchDataFunc;\n\n constructor(fetchData: FetchDataFunc) {\n super(\"org.ethers.plugins.ccip-preflight\");\n defineProperties(this, { fetchData });\n }\n\n clone(): CcipPreflightPlugin {\n return new CcipPreflightPlugin(this.fetchData);\n }\n}\n*/\nconst Networks = new Map();\nconst defaultFormatter = new Formatter();\nexport class Network {\n constructor(name, _chainId, formatter) {\n _Network_props.set(this, void 0);\n const chainId = logger.getBigInt(_chainId);\n if (formatter == null) {\n formatter = defaultFormatter;\n }\n const plugins = new Map();\n __classPrivateFieldSet(this, _Network_props, { name, chainId, formatter, plugins }, \"f\");\n }\n toJSON() {\n return { name: this.name, chainId: this.chainId };\n }\n get name() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\"); }\n set name(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\", value); }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\", logger.getBigInt(value, \"chainId\")); }\n get formatter() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\"); }\n set formatter(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\", value); }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _Network_props, \"f\").plugins.values());\n }\n attachPlugin(plugin) {\n if (this.isFrozen()) {\n throw new Error(\"frozen\");\n }\n if (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _Network_props, \"f\").plugins.set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(name)) || null;\n }\n // Gets a list of Plugins which match basename, ignoring any fragment\n getPlugins(basename) {\n return (this.plugins.filter((p) => (p.name.split(\"#\")[0] === basename)));\n }\n clone() {\n const clone = new Network(this.name, this.chainId, this.formatter);\n this.plugins.forEach((plugin) => {\n clone.attachPlugin(plugin.clone());\n });\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Network_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Network_props, \"f\"));\n }\n computeIntrinsicGas(tx) {\n const costs = this.getPlugin(\"org.ethers.gas-cost\") || (new GasCostPlugin());\n let gas = costs.txBase;\n if (tx.to == null) {\n gas += costs.txCreate;\n }\n if (tx.data) {\n for (let i = 2; i < tx.data.length; i += 2) {\n if (tx.data.substring(i, i + 2) === \"00\") {\n gas += costs.txDataZero;\n }\n else {\n gas += costs.txDataNonzero;\n }\n }\n }\n if (tx.accessList) {\n const accessList = this.formatter.accessList(tx.accessList);\n for (const addr in accessList) {\n gas += costs.txAccessListAddress + costs.txAccessListStorageKey * accessList[addr].storageKeys.length;\n }\n }\n return gas;\n }\n static from(network) {\n // Default network\n if (network == null) {\n return Network.from(\"homestead\");\n }\n // Canonical name or chain ID\n if (typeof (network) === \"number\") {\n network = BigInt(network);\n }\n if (typeof (network) === \"string\" || typeof (network) === \"bigint\") {\n const networkFunc = Networks.get(network);\n if (networkFunc) {\n return networkFunc();\n }\n if (typeof (network) === \"bigint\") {\n return new Network(\"unknown\", network);\n }\n logger.throwArgumentError(\"unknown network\", \"network\", network);\n }\n // Clonable with network-like abilities\n if (typeof (network.clone) === \"function\") {\n const clone = network.clone();\n //if (typeof(network.name) !== \"string\" || typeof(network.chainId) !== \"number\") {\n //}\n return clone;\n }\n // Networkish\n if (typeof (network) === \"object\") {\n if (typeof (network.name) !== \"string\" || typeof (network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network object name or chainId\", \"network\", network);\n }\n const custom = new Network((network.name), (network.chainId));\n if (network.ensAddress || network.ensNetwork != null) {\n custom.attachPlugin(new EnsPlugin(network.ensAddress, network.ensNetwork));\n }\n //if ((network).layerOneConnection) {\n // custom.attachPlugin(new LayerOneConnectionPlugin((network).layerOneConnection));\n //}\n return custom;\n }\n return logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n static register(nameOrChainId, networkFunc) {\n if (typeof (nameOrChainId) === \"number\") {\n nameOrChainId = BigInt(nameOrChainId);\n }\n const existing = Networks.get(nameOrChainId);\n if (existing) {\n logger.throwArgumentError(`conflicting network for ${JSON.stringify(existing.name)}`, \"nameOrChainId\", nameOrChainId);\n }\n Networks.set(nameOrChainId, networkFunc);\n }\n}\n_Network_props = new WeakMap();\n//# sourceMappingURL=network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PollingBlockSubscriber_instances, _PollingBlockSubscriber_provider, _PollingBlockSubscriber_poller, _PollingBlockSubscriber_interval, _PollingBlockSubscriber_blockNumber, _PollingBlockSubscriber_poll, _OnBlockSubscriber_provider, _OnBlockSubscriber_poll, _PollingOrphanSubscriber_filter, _PollingTransactionSubscriber_hash, _PollingEventSubscriber_instances, _PollingEventSubscriber_provider, _PollingEventSubscriber_filter, _PollingEventSubscriber_poller, _PollingEventSubscriber_blockNumber, _PollingEventSubscriber_poll;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport function getPollingSubscriber(provider, event) {\n if (event === \"block\") {\n return new PollingBlockSubscriber(provider);\n }\n if (isHexString(event, 32)) {\n return new PollingTransactionSubscriber(provider, event);\n }\n return logger.throwError(\"unsupported polling event\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getPollingSubscriber\", info: { event }\n });\n}\n// @TODO: refactor this\nexport class PollingBlockSubscriber {\n constructor(provider) {\n _PollingBlockSubscriber_instances.add(this);\n _PollingBlockSubscriber_provider.set(this, void 0);\n _PollingBlockSubscriber_poller.set(this, void 0);\n _PollingBlockSubscriber_interval.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingBlockSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, 4000, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\"); }\n set pollingInterval(value) { __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, value, \"f\"); }\n start() {\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber already running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).call(this);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n }\n stop() {\n if (!__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber not running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._clearTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\"));\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingBlockSubscriber_provider = new WeakMap(), _PollingBlockSubscriber_poller = new WeakMap(), _PollingBlockSubscriber_interval = new WeakMap(), _PollingBlockSubscriber_blockNumber = new WeakMap(), _PollingBlockSubscriber_instances = new WeakSet(), _PollingBlockSubscriber_poll = async function _PollingBlockSubscriber_poll() {\n const blockNumber = await __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").getBlockNumber();\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n return;\n }\n // @TODO: Put a cap on the maximum number of events per loop?\n if (blockNumber !== __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\")) {\n for (let b = __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") + 1; b <= blockNumber; b++) {\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").emit(\"block\", b);\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n};\nexport class OnBlockSubscriber {\n constructor(provider) {\n _OnBlockSubscriber_provider.set(this, void 0);\n _OnBlockSubscriber_poll.set(this, void 0);\n __classPrivateFieldSet(this, _OnBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _OnBlockSubscriber_poll, (blockNumber) => {\n this._poll(blockNumber, __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\"));\n }, \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"sub-classes must override this\");\n }\n start() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\").call(this, -2);\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n pause(dropWhilePaused) { this.stop(); }\n resume() { this.start(); }\n}\n_OnBlockSubscriber_provider = new WeakMap(), _OnBlockSubscriber_poll = new WeakMap();\nexport class PollingOrphanSubscriber extends OnBlockSubscriber {\n constructor(provider, filter) {\n super(provider);\n _PollingOrphanSubscriber_filter.set(this, void 0);\n __classPrivateFieldSet(this, _PollingOrphanSubscriber_filter, copy(filter), \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"@TODO\");\n console.log(__classPrivateFieldGet(this, _PollingOrphanSubscriber_filter, \"f\"));\n }\n}\n_PollingOrphanSubscriber_filter = new WeakMap();\nexport class PollingTransactionSubscriber extends OnBlockSubscriber {\n constructor(provider, hash) {\n super(provider);\n _PollingTransactionSubscriber_hash.set(this, void 0);\n __classPrivateFieldSet(this, _PollingTransactionSubscriber_hash, hash, \"f\");\n }\n async _poll(blockNumber, provider) {\n const tx = await provider.getTransactionReceipt(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"));\n if (tx) {\n provider.emit(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"), tx);\n }\n }\n}\n_PollingTransactionSubscriber_hash = new WeakMap();\nexport class PollingEventSubscriber {\n constructor(provider, filter) {\n _PollingEventSubscriber_instances.add(this);\n _PollingEventSubscriber_provider.set(this, void 0);\n _PollingEventSubscriber_filter.set(this, void 0);\n _PollingEventSubscriber_poller.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingEventSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingEventSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_filter, copy(filter), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_poller, __classPrivateFieldGet(this, _PollingEventSubscriber_instances, \"m\", _PollingEventSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n start() {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getBlockNumber().then((blockNumber) => {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n });\n }\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingEventSubscriber_provider = new WeakMap(), _PollingEventSubscriber_filter = new WeakMap(), _PollingEventSubscriber_poller = new WeakMap(), _PollingEventSubscriber_blockNumber = new WeakMap(), _PollingEventSubscriber_instances = new WeakSet(), _PollingEventSubscriber_poll = async function _PollingEventSubscriber_poll(blockNumber) {\n // The initial block hasn't been determined yet\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n return;\n }\n const filter = copy(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"));\n filter.fromBlock = __classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") + 1;\n filter.toBlock = blockNumber;\n const logs = await __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getLogs(filter);\n // No logs could just mean the node has not indexed them yet,\n // so we keep a sliding window of 60 blocks to keep scanning\n if (logs.length === 0) {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") < blockNumber - 60) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber - 60, \"f\");\n }\n return;\n }\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n for (const log of logs) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").emit(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"), log);\n }\n};\n//# sourceMappingURL=subscriber-polling.js.map","// @TODO\n// Event coalescence\n// When we register an event with an async value (e.g. address is a Signer\n// or ENS name), we need to add it immeidately for the Event API, but also\n// need time to resolve the address. Upon resolving the address, we need to\n// migrate the listener to the static event. We also need to maintain a map\n// of Signer/ENS name to address so we can sync respond to listenerCount.\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractProvider_instances, _AbstractProvider_subs, _AbstractProvider_plugins, _AbstractProvider_pausedState, _AbstractProvider_networkPromise, _AbstractProvider_anyNetwork, _AbstractProvider_performCache, _AbstractProvider_nextTimer, _AbstractProvider_timers, _AbstractProvider_disableCcipRead, _AbstractProvider_perform, _AbstractProvider_call, _AbstractProvider_getBlock, _AbstractProvider_hasSub, _AbstractProvider_getSub;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { concat, dataLength, dataSlice, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { toArray } from \"@ethersproject/math\";\nimport { defineProperties, EventPayload, resolveProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { EnsResolver } from \"./ens-resolver.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { FeeData } from \"./provider.js\";\nimport { PollingBlockSubscriber, PollingEventSubscriber, PollingOrphanSubscriber, PollingTransactionSubscriber } from \"./subscriber-polling.js\";\n// Constants\nconst BN_2 = BigInt(2);\nconst MAX_CCIP_REDIRECTS = 10;\nfunction getTag(prefix, value) {\n return prefix + \":\" + JSON.stringify(value, (k, v) => {\n if (typeof (v) === \"bigint\") {\n return `bigint:${v.toString()}`;\n }\n if (typeof (v) === \"string\") {\n return v.toLowerCase();\n }\n // Sort object keys\n if (typeof (v) === \"object\" && !Array.isArray(v)) {\n const keys = Object.keys(v);\n keys.sort();\n return keys.reduce((accum, key) => {\n accum[key] = v[key];\n return accum;\n }, {});\n }\n return v;\n });\n}\nexport class UnmanagedSubscriber {\n constructor(name) { defineProperties(this, { name }); }\n start() { }\n stop() { }\n pause(dropWhilePaused) { }\n resume() { }\n}\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\n// Normalize a ProviderEvent into a Subscription\n// @TODO: Make events sync if possible; like block\n//function getSyncSubscription(_event: ProviderEvent): Subscription {\n//}\nasync function getSubscription(_event, provider) {\n if (_event == null) {\n throw new Error(\"invalid event\");\n }\n // Normalize topic array info an EventFilter\n if (Array.isArray(_event)) {\n _event = { topics: _event };\n }\n if (typeof (_event) === \"string\") {\n switch (_event) {\n case \"block\":\n case \"pending\":\n case \"debug\":\n case \"network\": {\n return { type: _event, tag: _event };\n }\n }\n }\n if (isHexString(_event, 32)) {\n const hash = _event.toLowerCase();\n return { type: \"transaction\", tag: getTag(\"tx\", { hash }), hash };\n }\n if (_event.orphan) {\n const event = _event;\n // @TODO: Should lowercase and whatnot things here instead of copy...\n return { type: \"orphan\", tag: getTag(\"orphan\", event), filter: copy(event) };\n }\n if ((_event.address || _event.topics)) {\n const event = _event;\n const filter = {\n topics: ((event.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n }))\n };\n if (event.address) {\n const addresses = [];\n const promises = [];\n const addAddress = (addr) => {\n if (isHexString(addr)) {\n addresses.push(addr);\n }\n else {\n promises.push((async () => {\n addresses.push(await resolveAddress(addr, provider));\n })());\n }\n };\n if (Array.isArray(event.address)) {\n event.address.forEach(addAddress);\n }\n else {\n addAddress(event.address);\n }\n if (promises.length) {\n await Promise.all(promises);\n }\n filter.address = concisify(addresses.map((a) => a.toLowerCase()));\n }\n return { filter, tag: getTag(\"event\", filter), type: \"event\" };\n }\n return logger.throwArgumentError(\"unknown ProviderEvent\", \"event\", _event);\n}\nfunction getTime() { return (new Date()).getTime(); }\nexport function copyRequest(tx) {\n // @TODO: copy the copy from contracts and use it from this\n return tx;\n}\nexport class AbstractProvider {\n // @TODO: This should be a () => Promise so network can be\n // done when needed; or rely entirely on _detectNetwork?\n constructor(_network) {\n _AbstractProvider_instances.add(this);\n _AbstractProvider_subs.set(this, void 0);\n _AbstractProvider_plugins.set(this, void 0);\n // null=unpaused, true=paused+dropWhilePaused, false=paused\n _AbstractProvider_pausedState.set(this, void 0);\n _AbstractProvider_networkPromise.set(this, void 0);\n _AbstractProvider_anyNetwork.set(this, void 0);\n _AbstractProvider_performCache.set(this, void 0);\n _AbstractProvider_nextTimer.set(this, void 0);\n _AbstractProvider_timers.set(this, void 0);\n _AbstractProvider_disableCcipRead.set(this, void 0);\n if (_network === \"any\") {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, true, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n else if (_network) {\n const network = Network.from(_network);\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(network), \"f\");\n setTimeout(() => { this.emit(\"network\", network, null); }, 0);\n }\n else {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n __classPrivateFieldSet(this, _AbstractProvider_performCache, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_plugins, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_nextTimer, 0, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_timers, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, false, \"f\");\n }\n get provider() { return this; }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").values());\n }\n attachPlugin(plugin) {\n if (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(name)) || null;\n }\n set disableCcipRead(value) { __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, !!value, \"f\"); }\n get disableCcipRead() { return __classPrivateFieldGet(this, _AbstractProvider_disableCcipRead, \"f\"); }\n async ccipReadFetch(tx, calldata, urls) {\n if (this.disableCcipRead || urls.length === 0 || tx.to == null) {\n return null;\n }\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n const errorMessages = [];\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\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 //const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n // value.status = response.statusCode;\n // return value;\n //});\n const request = new FetchRequest(href);\n if (url.indexOf(\"{data}\") === -1) {\n request.body = { data, sender };\n }\n let errorMessage = \"unknown error\";\n const resp = await fetchData(request);\n try {\n const result = resp.bodyJson;\n if (result.data) {\n return result.data;\n }\n if (result.message) {\n errorMessage = result.message;\n }\n }\n catch (error) { }\n // 4xx indicates the result is not present; stop\n if (resp.statusCode >= 400 && resp.statusCode < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${errorMessage}`, \"OFFCHAIN_FAULT\", {\n reason: \"404_MISSING_RESOURCE\",\n transaction: tx, info: { url, errorMessage }\n });\n }\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n return logger.throwError(`error encountered during CCIP fetch: ${errorMessages.map((m) => JSON.stringify(m)).join(\", \")}`, \"OFFCHAIN_FAULT\", {\n reason: \"500_SERVER_ERROR\",\n transaction: tx, info: { urls, errorMessages }\n });\n }\n _wrapTransaction(tx, hash, blockNumber) {\n return tx;\n }\n _detectNetwork() {\n return logger.throwError(\"sub-classes must implement this\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_detectNetwork\"\n });\n }\n async _perform(req) {\n return logger.throwError(`unsupported method: ${req.method}`, \"UNSUPPORTED_OPERATION\", {\n operation: req.method,\n info: req\n });\n }\n // State\n async getBlockNumber() {\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getBlockNumber\" }), \"%response\");\n }\n async _getAddress(address) {\n if (typeof (address) === \"string\") {\n return address;\n }\n return await address.getAddress();\n }\n async _getBlockTag(blockTag) {\n const network = await this.getNetwork();\n if (typeof (blockTag) === \"number\" && Number.isSafeInteger(blockTag) && blockTag < 0) {\n //let blockNumber = await this._getApproxBlockNumber(500);\n let blockNumber = await this.getBlockNumber();\n blockNumber += blockTag;\n if (blockNumber < 0) {\n blockNumber = 0;\n }\n return network.formatter.blockTag(blockNumber);\n }\n return network.formatter.blockTag(blockTag);\n }\n async getNetwork() {\n // No explicit network was set and this is our first time\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") == null) {\n // Detect the current network (shared with all calls)\n const detectNetwork = this._detectNetwork().then((network) => {\n this.emit(\"network\", network, null);\n return network;\n }, (error) => {\n // Reset the networkPromise on failure, so we will try again\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === detectNetwork) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n throw error;\n });\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, detectNetwork, \"f\");\n return await detectNetwork;\n }\n const networkPromise = __classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\");\n const [expected, actual] = await Promise.all([\n networkPromise,\n this._detectNetwork() // The actual connected network\n ]);\n if (expected.chainId !== actual.chainId) {\n if (__classPrivateFieldGet(this, _AbstractProvider_anyNetwork, \"f\")) {\n // The \"any\" network can change, so notify listeners\n this.emit(\"network\", actual, expected);\n // Update the network if something else hasn't already changed it\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === networkPromise) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(actual), \"f\");\n }\n }\n else {\n // Otherwise, we do not allow changes to the underlying network\n logger.throwError(`network changed: ${expected.chainId} => ${actual.chainId} `, \"NETWORK_ERROR\", {\n event: \"changed\"\n });\n }\n }\n return expected.clone().freeze();\n }\n async getFeeData() {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: ((async () => {\n try {\n const gasPrice = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getGasPrice\" });\n return logger.getBigInt(gasPrice, \"%response\");\n }\n catch (error) { }\n return null;\n })())\n });\n let maxFeePerGas = null, maxPriorityFeePerGas = null;\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 maxPriorityFeePerGas = BigInt(\"1500000000\");\n // Allow a network to override their maximum priority fee per gas\n const priorityFeePlugin = (await this.getNetwork()).getPlugin(\"org.ethers.plugins.max-priority-fee\");\n if (priorityFeePlugin) {\n maxPriorityFeePerGas = await priorityFeePlugin.getPriorityFee(this);\n }\n maxFeePerGas = (block.baseFeePerGas * BN_2) + maxPriorityFeePerGas;\n }\n return new FeeData(gasPrice, maxFeePerGas, maxPriorityFeePerGas);\n }\n async _getTransaction(_request) {\n const network = await this.getNetwork();\n // Fill in any addresses\n const request = Object.assign({}, _request, await resolveProperties({\n to: (_request.to ? resolveAddress(_request.to, this) : undefined),\n from: (_request.from ? resolveAddress(_request.from, this) : undefined),\n }));\n return network.formatter.transactionRequest(request);\n }\n async estimateGas(_tx) {\n const transaction = await this._getTransaction(_tx);\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"estimateGas\", transaction\n }), \"%response\");\n }\n async call(_tx) {\n const { tx, blockTag } = await resolveProperties({\n tx: this._getTransaction(_tx),\n blockTag: this._getBlockTag(_tx.blockTag)\n });\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, tx, blockTag, _tx.enableCcipRead ? 0 : -1);\n }\n // Account\n async getBalanceOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBalance\", address, blockTag\n }), \"%response\");\n }\n async getTransactionCountOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getTransactionCount\", address, blockTag\n }), \"%response\");\n }\n async getCode(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getCode\", address, blockTag\n }));\n }\n async getStorageAt(_address, _position, _blockTag) {\n const position = logger.getBigInt(_position);\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getStorageAt\", address, position, blockTag\n }));\n }\n // Write\n async broadcastTransaction(signedTx) {\n throw new Error();\n return {};\n }\n // Queries\n async getBlock(block) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, false);\n if (params == null) {\n return null;\n }\n return format.block(params, this);\n }\n async getBlockWithTransactions(block) {\n const format = (await this.getNetwork()).formatter;\n const params = __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, true);\n if (params == null) {\n return null;\n }\n return format.blockWithTransactions(params, this);\n }\n async getTransaction(hash) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n return format.transactionResponse(params, this);\n }\n async getTransactionReceipt(hash) {\n const format = (await this.getNetwork()).formatter;\n const receipt = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransactionReceipt\", hash });\n if (receipt == null) {\n return null;\n }\n // Some backends did not backfill the effectiveGasPrice into old transactions\n // in the receipt, so we look it up manually and inject it.\n if (receipt.gasPrice == null && receipt.effectiveGasPrice == null) {\n const tx = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n receipt.effectiveGasPrice = tx.gasPrice;\n }\n return format.receipt(receipt, this);\n }\n async _getFilter(filter) {\n // Create a canonical representation of the topics\n const topics = (filter.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const blockHash = (\"blockHash\" in filter) ? filter.blockHash : undefined;\n const lookup = {};\n // Addresses could be async (ENS names or Addressables)\n if (filter.address) {\n if (Array.isArray(filter.address)) {\n lookup.address = Promise.all(filter.address.map((a) => resolveAddress(a, this)));\n }\n else {\n lookup.address = resolveAddress(filter.address, this);\n }\n }\n // Block Tags could be async (i.e. relative)\n const addBlockTag = (key) => {\n if (filter[key] == null) {\n return;\n }\n lookup[key] = this._getBlockTag(filter[key]);\n };\n addBlockTag(\"fromBlock\");\n addBlockTag(\"toBlock\");\n // Wait for all properties to resolve\n const result = await resolveProperties(lookup);\n // Make sure things are canonical\n if (Array.isArray(result.address)) {\n result.address.sort();\n }\n result.topics = topics;\n if (blockHash) {\n if (filter.fromBlock || filter.toBlock) {\n throw new Error(\"invalid filter\");\n }\n result.blockHash = blockHash;\n }\n return result;\n }\n // Bloom-filter Queries\n async getLogs(_filter) {\n const { network, filter } = await resolveProperties({\n network: this.getNetwork(),\n filter: this._getFilter(_filter)\n });\n return (await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getLogs\", filter })).map((l) => {\n return network.formatter.log(l, this);\n });\n }\n // ENS\n _getProvider(chainId) {\n return logger.throwError(\"provider cannot connect to target network\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_getProvider()\"\n });\n }\n async getResolver(name) {\n return await EnsResolver.fromName(this, name);\n }\n async getAvatar(name) {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAvatar();\n }\n return null;\n }\n async resolveName(name) {\n if (typeof (name) === \"string\") {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAddress();\n }\n }\n else {\n const address = await name.getAddress();\n if (address == null) {\n return logger.throwArgumentError(\"Addressable returned no address\", \"name\", name);\n }\n return address;\n }\n return null;\n }\n async lookupAddress(address) {\n throw new Error();\n //return \"TODO\";\n }\n async waitForTransaction(hash, confirms = 1, timeout) {\n if (confirms === 0) {\n return this.getTransactionReceipt(hash);\n }\n return new Promise(async (resolve, reject) => {\n let timer = null;\n const listener = (async (blockNumber) => {\n try {\n const receipt = await this.getTransactionReceipt(hash);\n if (receipt != null) {\n if (blockNumber - receipt.blockNumber + 1 >= confirms) {\n resolve(receipt);\n this.off(\"block\", listener);\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n return;\n }\n }\n }\n catch (error) {\n console.log(\"EEE\", error);\n }\n this.once(\"block\", listener);\n });\n if (timeout != null) {\n timer = setTimeout(() => {\n if (timer == null) {\n return;\n }\n timer = null;\n this.off(\"block\", listener);\n reject(logger.makeError(\"timeout\", \"TIMEOUT\", { reason: \"timeout\" }));\n }, timeout);\n }\n listener(await this.getBlockNumber());\n });\n }\n async waitForBlock(blockTag) {\n throw new Error();\n //return new Block({ }, this);\n }\n _clearTimeout(timerId) {\n const timer = __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").get(timerId);\n if (!timer) {\n return;\n }\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n }\n _setTimeout(_func, timeout = 0) {\n var _a, _b;\n const timerId = (__classPrivateFieldSet(this, _AbstractProvider_nextTimer, (_b = __classPrivateFieldGet(this, _AbstractProvider_nextTimer, \"f\"), _a = _b++, _b), \"f\"), _a);\n const func = () => {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n _func();\n };\n if (this.paused) {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer: null, func, time: timeout });\n }\n else {\n const timer = setTimeout(func, timeout);\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer, func, time: getTime() });\n }\n return timerId;\n }\n _forEachSubscriber(func) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n func(sub.subscriber);\n }\n }\n // Event API; sub-classes should override this; any supported\n // event filter will have been munged into an EventFilter\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"debug\":\n case \"network\":\n return new UnmanagedSubscriber(sub.type);\n case \"block\":\n return new PollingBlockSubscriber(this);\n case \"event\":\n return new PollingEventSubscriber(this, sub.filter);\n case \"transaction\":\n return new PollingTransactionSubscriber(this, sub.hash);\n case \"orphan\":\n return new PollingOrphanSubscriber(this, sub.filter);\n }\n throw new Error(`unsupported event: ${sub.type}`);\n }\n _recoverSubscriber(oldSub, newSub) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n if (sub.subscriber === oldSub) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n sub.subscriber = newSub;\n if (sub.started) {\n newSub.start();\n }\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n newSub.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n break;\n }\n }\n }\n async on(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: false });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async once(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: true });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async emit(event, ...args) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event, args);\n if (!sub) {\n return false;\n }\n ;\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const payload = new EventPayload(this, (once ? null : listener), event);\n try {\n listener.call(this, ...args, payload);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n let total = 0;\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n let result = [];\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (!listener || sub.listeners.length === 0) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const { tag, started, subscriber } = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n else {\n for (const [tag, { started, subscriber }] of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\")) {\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return this.off(event, listener);\n }\n // Sub-classes should override this to shutdown any sockets, etc.\n // but MUST call this super.shutdown.\n async shutdown() {\n // Stop all listeners\n this.removeAllListeners();\n // Shut down all tiemrs\n for (const timerId of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").keys()) {\n this._clearTimeout(timerId);\n }\n }\n get paused() { return (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null); }\n pause(dropWhilePaused) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == !!dropWhilePaused) {\n return;\n }\n return logger.throwError(\"cannot change pause type; resume first\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause\"\n });\n }\n this._forEachSubscriber((s) => s.pause(dropWhilePaused));\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, !!dropWhilePaused, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Clear the timer\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n // Remaining time needed for when we become unpaused\n timer.time = getTime() - timer.time;\n }\n }\n resume() {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == null) {\n return;\n }\n this._forEachSubscriber((s) => s.resume());\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Remaining time when we were paused\n let timeout = timer.time;\n if (timeout < 0) {\n timeout = 0;\n }\n // Start time (in cause paused, so we con compute remaininf time)\n timer.time = getTime();\n // Start the timer\n setTimeout(timer.func, timeout);\n }\n }\n}\n_AbstractProvider_subs = new WeakMap(), _AbstractProvider_plugins = new WeakMap(), _AbstractProvider_pausedState = new WeakMap(), _AbstractProvider_networkPromise = new WeakMap(), _AbstractProvider_anyNetwork = new WeakMap(), _AbstractProvider_performCache = new WeakMap(), _AbstractProvider_nextTimer = new WeakMap(), _AbstractProvider_timers = new WeakMap(), _AbstractProvider_disableCcipRead = new WeakMap(), _AbstractProvider_instances = new WeakSet(), _AbstractProvider_perform = \n// Shares multiple identical requests made during the same 250ms\nasync function _AbstractProvider_perform(req) {\n // Create a tag\n const tag = getTag(req.method, req);\n let perform = __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag);\n if (!perform) {\n perform = this._perform(req);\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").set(tag, perform);\n setTimeout(() => {\n if (__classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag) === perform) {\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").delete(tag);\n }\n }, 250);\n }\n return await perform;\n}, _AbstractProvider_call = async function _AbstractProvider_call(tx, blockTag, attempt) {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", \"OFFCHAIN_FAULT\", {\n reason: \"TOO_MANY_REDIRECTS\",\n transaction: Object.assign({}, tx, { blockTag, enableCcipRead: true })\n });\n }\n const transaction = copyRequest(tx);\n try {\n return hexlify(await this._perform({ method: \"call\", transaction, blockTag }));\n }\n catch (error) {\n // CCIP Read OffchainLookup\n if (!this.disableCcipRead && isCallException(error) && attempt >= 0 && blockTag === \"latest\" && transaction.to != null && dataSlice(error.data, 0, 4) === \"0x556f1830\") {\n const data = error.data;\n const txSender = await resolveAddress(transaction.to, this);\n // Parse the CCIP Read Arguments\n let ccipArgs;\n try {\n ccipArgs = parseOffchainLookup(dataSlice(error.data, 4));\n }\n catch (error) {\n return logger.throwError(error.message, \"OFFCHAIN_FAULT\", {\n reason: \"BAD_DATA\",\n transaction, info: { data }\n });\n }\n // Check the sender of the OffchainLookup matches the transaction\n if (ccipArgs.sender.toLowerCase() !== txSender.toLowerCase()) {\n return logger.throwError(\"CCIP Read sender mismatch\", \"CALL_EXCEPTION\", {\n data, transaction,\n errorSignature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n errorName: \"OffchainLookup\",\n errorArgs: ccipArgs.errorArgs\n });\n }\n const ccipResult = await this.ccipReadFetch(transaction, ccipArgs.calldata, ccipArgs.urls);\n if (ccipResult == null) {\n return logger.throwError(\"CCIP Read failed to fetch data\", \"OFFCHAIN_FAULT\", {\n reason: \"FETCH_FAILED\",\n transaction, info: { data: error.data, errorArgs: ccipArgs.errorArgs }\n });\n }\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, {\n to: txSender,\n data: concat([\n ccipArgs.selector, encodeBytes([ccipResult, ccipArgs.extraData])\n ]),\n }, blockTag, attempt + 1);\n }\n throw error;\n }\n}, _AbstractProvider_getBlock = async function _AbstractProvider_getBlock(block, includeTransactions) {\n const format = (await this.getNetwork()).formatter;\n if (isHexString(block, 32)) {\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockHash: block, includeTransactions\n });\n }\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockTag: format.blockTag(block), includeTransactions\n });\n}, _AbstractProvider_hasSub = async function _AbstractProvider_hasSub(event, emitArgs) {\n let sub = await getSubscription(event, this);\n // This is a log that is removing an existing log; we actually want\n // to emit an orphan event for the removed log\n if (sub.type === \"event\" && emitArgs && emitArgs.length > 0 && emitArgs[0].removed === true) {\n sub = await getSubscription({ orphan: \"drop-log\", log: emitArgs[0] }, this);\n }\n return __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(sub.tag) || null;\n}, _AbstractProvider_getSub = async function _AbstractProvider_getSub(event) {\n const subscription = await getSubscription(event, this);\n // Prevent tampering with our tag in any subclass' _getSubscriber\n const tag = subscription.tag;\n let sub = __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(tag);\n if (!sub) {\n const subscriber = this._getSubscriber(subscription);\n const addressableMap = new WeakMap();\n const nameMap = new Map();\n sub = { subscriber, tag, addressableMap, nameMap, started: false, listeners: [] };\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").set(tag, sub);\n }\n return sub;\n};\nfunction _parseString(result, start) {\n try {\n const bytes = _parseBytes(result, start);\n if (bytes) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction _parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n try {\n const offset = logger.getNumber(dataSlice(result, start, start + 32));\n const length = logger.getNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\nconst empty = new Uint8Array([]);\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\nconst zeros = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseOffchainLookup(data) {\n const result = {\n sender: \"\", urls: [], calldata: \"\", selector: \"\", extraData: \"\", errorArgs: []\n };\n if (dataLength(data) < 5 * 32) {\n throw new Error(\"insufficient OffchainLookup data\");\n }\n const sender = dataSlice(data, 0, 32);\n if (dataSlice(sender, 0, 12) !== dataSlice(zeros, 0, 12)) {\n throw new Error(\"corrupt OffchainLookup sender\");\n }\n result.sender = dataSlice(sender, 12);\n // Read the URLs from the response\n try {\n const urls = [];\n const urlsOffset = logger.getNumber(dataSlice(data, 32, 64));\n const urlsLength = logger.getNumber(dataSlice(data, urlsOffset, urlsOffset + 32));\n const urlsData = dataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n throw new Error(\"abort\");\n }\n urls.push(url);\n }\n result.urls = urls;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup urls\");\n }\n // Get the CCIP calldata to forward\n try {\n const calldata = _parseBytes(data, 64);\n if (calldata == null) {\n throw new Error(\"abort\");\n }\n result.calldata = calldata;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup calldata\");\n }\n // Get the callbackSelector (bytes4)\n if (dataSlice(data, 100, 128) !== dataSlice(zeros, 0, 28)) {\n throw new Error(\"corrupt OffchainLookup callbaackSelector\");\n }\n result.selector = dataSlice(data, 96, 100);\n // Get the extra data to send back to the contract as context\n try {\n const extraData = _parseBytes(data, 128);\n if (extraData == null) {\n throw new Error(\"abort\");\n }\n result.extraData = extraData;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup extraData\");\n }\n result.errorArgs = \"sender,urls,calldata,selector,extraData\".split(/,/).map((k) => result[k]);\n return result;\n}\n//# sourceMappingURL=abstract-provider.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AbstractSigner_instances, _AbstractSigner_checkProvider, _AbstractSigner_fromify, _VoidSigner_instances, _VoidSigner_throwUnsupported, _WrappedSigner_signer;\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class AbstractSigner {\n constructor(provider) {\n _AbstractSigner_instances.add(this);\n defineProperties(this, { provider: (provider || null) });\n }\n async getBalance(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getBalance\").getBalanceOf(await this.getAddress(), blockTag);\n }\n async getTransactionCount(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getTransactionCount\").getTransactionCountOf(await this.getAddress(), blockTag);\n }\n async estimateGas(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"estimateGas\").estimateGas(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async call(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"call\").call(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async populateTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"populateTransaction\");\n //let pop: Deferrable = Object.assign({ }, tx);\n let pop = Object.assign({}, tx);\n if (pop.to != null) {\n pop.to = provider.resolveName(pop.to).then((to) => {\n if (to == null) {\n return logger.throwArgumentError(\"transaction to ENS name not configured\", \"tx.to\", pop.to);\n }\n return to;\n });\n }\n if (pop.from != null) {\n const from = pop.from;\n pop.from = Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n return logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n return address;\n });\n }\n if (pop.nonce == null) {\n pop.nonce = this.getTransactionCount();\n }\n pop = resolveProperties(pop);\n if (pop.gasLimit == null) {\n pop.gasLimit = provider.estimateGas(pop);\n }\n pop = resolveProperties(pop);\n //@TODO: Copy logic from AbstractSigner in v5\n return await resolveProperties(pop);\n }\n async resolveName(name) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"resolveName\");\n return await provider.resolveName(name);\n }\n async sendTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"sendTransaction\");\n const txObj = Transaction.from(await this.populateTransaction(tx));\n return await provider.broadcastTransaction(await this.signTransaction(txObj));\n }\n}\n_AbstractSigner_instances = new WeakSet(), _AbstractSigner_checkProvider = function _AbstractSigner_checkProvider(operation) {\n if (this.provider) {\n return this.provider;\n }\n return logger.throwError(\"missing provider\", \"UNSUPPORTED_OPERATION\", { operation });\n}, _AbstractSigner_fromify = async function _AbstractSigner_fromify(tx) {\n tx = Object.assign({}, tx);\n const actions = [];\n if (tx.from != null) {\n const from = tx.from;\n actions.push(Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n tx.from = address;\n }));\n }\n await Promise.all(actions);\n return tx;\n};\nexport class VoidSigner extends AbstractSigner {\n constructor(address, provider) {\n super(provider);\n _VoidSigner_instances.add(this);\n defineProperties(this, { address });\n }\n async getAddress() { return this.address; }\n connect(provider) {\n return new VoidSigner(this.address, provider);\n }\n async signTransaction(tx) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"transactions\", \"signTransaction\");\n }\n async signMessage(message) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"messages\", \"signMessage\");\n }\n async signTypedData(domain, types, value) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"typed-data\", \"signTypedData\");\n }\n}\n_VoidSigner_instances = new WeakSet(), _VoidSigner_throwUnsupported = function _VoidSigner_throwUnsupported(suffix, operation) {\n return logger.throwError(`VoidSigner cannot sign ${suffix}`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n};\nexport class WrappedSigner extends AbstractSigner {\n //get provider(): null | Provider { return this.#signer.provider; }\n constructor(signer) {\n super(signer.provider);\n _WrappedSigner_signer.set(this, void 0);\n __classPrivateFieldSet(this, _WrappedSigner_signer, signer, \"f\");\n }\n async getAddress() {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").getAddress();\n }\n connect(provider) {\n return new WrappedSigner(__classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").connect(provider));\n }\n async signTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTransaction(tx);\n }\n async sendTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").sendTransaction(tx);\n }\n async signMessage(message) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signMessage(message);\n }\n async signTypedData(domain, types, value) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTypedData(domain, types, value);\n }\n}\n_WrappedSigner_signer = new WeakMap();\n//# sourceMappingURL=abstract-signer.js.map","// Show the throttle message only once\nconst shown = new Set();\nexport function showThrottleMessage(service) {\n if (shown.has(service)) {\n return;\n }\n shown.add(service);\n console.log(\"========= NOTICE =========\");\n console.log(`Request-Rate Exceeded for ${service} (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//# sourceMappingURL=community.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FilterIdSubscriber_instances, _FilterIdSubscriber_provider, _FilterIdSubscriber_filterIdPromise, _FilterIdSubscriber_poller, _FilterIdSubscriber_network, _FilterIdSubscriber_poll, _FilterIdSubscriber_teardown, _FilterIdEventSubscriber_event;\nimport { PollingEventSubscriber } from \"./subscriber-polling.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport class FilterIdSubscriber {\n constructor(provider) {\n _FilterIdSubscriber_instances.add(this);\n _FilterIdSubscriber_provider.set(this, void 0);\n _FilterIdSubscriber_filterIdPromise.set(this, void 0);\n _FilterIdSubscriber_poller.set(this, void 0);\n _FilterIdSubscriber_network.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_poller, __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, null, \"f\");\n }\n _subscribe(provider) {\n throw new Error(\"subclasses must override this\");\n }\n _emitResults(provider, result) {\n throw new Error(\"subclasses must override this\");\n }\n _recover(provider) {\n throw new Error(\"subclasses must override this\");\n }\n start() { __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).call(this, -2); }\n stop() {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n if (dropWhilePaused) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n resume() { this.start(); }\n}\n_FilterIdSubscriber_provider = new WeakMap(), _FilterIdSubscriber_filterIdPromise = new WeakMap(), _FilterIdSubscriber_poller = new WeakMap(), _FilterIdSubscriber_network = new WeakMap(), _FilterIdSubscriber_instances = new WeakSet(), _FilterIdSubscriber_poll = async function _FilterIdSubscriber_poll(blockNumber) {\n try {\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\") == null) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, this._subscribe(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")), \"f\");\n }\n const filterId = await __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterId == null) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")._recoverSubscriber(this, this._recover(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")));\n return;\n }\n const network = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").getNetwork();\n if (!__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\")) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, network, \"f\");\n }\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\").chainId !== network.chainId) {\n throw new Error(\"chaid changed\");\n }\n const result = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_getFilterChanges\", [filterId]);\n await this._emitResults(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\"), result);\n }\n catch (error) {\n console.log(\"@TODO\", error);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").once(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n}, _FilterIdSubscriber_teardown = function _FilterIdSubscriber_teardown() {\n const filterIdPromise = __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterIdPromise) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n filterIdPromise.then((filterId) => {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_uninstallFilter\", [filterId]);\n });\n }\n};\nexport class FilterIdEventSubscriber extends FilterIdSubscriber {\n constructor(provider, filter) {\n super(provider);\n _FilterIdEventSubscriber_event.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdEventSubscriber_event, copy(filter), \"f\");\n }\n _recover(provider) {\n return new PollingEventSubscriber(provider, __classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"));\n }\n async _subscribe(provider) {\n const filterId = await provider.send(\"eth_newFilter\", [__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\")]);\n console.log(\"____SUB\", filterId);\n return filterId;\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n const log = network.formatter.log(result, provider);\n provider.emit(__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"), log);\n }\n }\n}\n_FilterIdEventSubscriber_event = new WeakMap();\nexport class FilterIdPendingSubscriber extends FilterIdSubscriber {\n async _subscribe(provider) {\n return await provider.send(\"eth_newPendingTransactionFilter\", []);\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n provider.emit(\"pending\", network.formatter.hash(result));\n }\n }\n}\n//# sourceMappingURL=subscriber-filterid.js.map","// @TODO:\n// - Add the batching API\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _JsonRpcApiProvider_nextId, _JsonRpcApiProvider_options, _JsonRpcProvider_connect, _JsonRpcProvider_pollingInterval;\n// https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/ethereum/eth1.0-apis/assembled-spec/openrpc.json&uiSchema%5BappBar%5D%5Bui:splitView%5D=true&uiSchema%5BappBar%5D%5Bui:input%5D=false&uiSchema%5BappBar%5D%5Bui:examplesDropdown%5D=false\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { TypedDataEncoder } from \"@ethersproject/hash\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { AbstractProvider, UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { FilterIdEventSubscriber, FilterIdPendingSubscriber } from \"./subscriber-filterid.js\";\nimport { logger } from \"./logger.js\";\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nconst Primitive = \"bigint,boolean,function,number,string,symbol\".split(/,/g);\n//const Methods = \"getAddress,then\".split(/,/g);\nfunction deepCopy(value) {\n if (value == null || Primitive.indexOf(typeof (value)) >= 0) {\n return value;\n }\n // Keep any Addressable\n if (typeof (value.getAddress) === \"function\") {\n return value;\n }\n if (Array.isArray(value)) {\n return (value.map(deepCopy));\n }\n if (typeof (value) === \"object\") {\n return Object.keys(value).reduce((accum, key) => {\n accum[key] = value[key];\n return accum;\n }, {});\n }\n throw new Error(`should not happen: ${value} (${typeof (value)})`);\n}\nfunction getLowerCase(value) {\n if (value) {\n return value.toLowerCase();\n }\n return value;\n}\nfunction isPollable(value) {\n return (value && typeof (value.pollingInterval) === \"number\");\n}\nconst defaultOptions = {\n // Default to use filter ID (the FilterIdSubscriber will\n // fallback onto polling if subscription fails)\n polling: false,\n // Maximum batch size (in bytes)\n batchMaxSize: (1 << 20),\n // How long to wait before dispatching a new batch\n batchStallTime: 250,\n};\n// @TODO: Unchecked Signers\nexport class JsonRpcSigner {\n constructor(provider, address) {\n defineProperties(this, { provider, address });\n }\n connect(provider) {\n return logger.throwError(\"cannot reconnect JsonRpcSigner\", \"UNSUPPORTED_OPERATION\", {\n operation: \"signer.connect\"\n });\n }\n async getAddress() {\n return this.address;\n }\n async getNetwork() {\n return await this.provider.getNetwork();\n }\n async getFeeData() {\n return await this.provider.getFeeData();\n }\n async estimateGas(tx) {\n return await this.provider.estimateGas(tx);\n }\n async call(tx) {\n return await this.provider.call(tx);\n }\n async resolveName(name) {\n return await this.provider.resolveName(name);\n }\n async getBalance(blockTag) {\n return await this.provider.getBalanceOf(this.address);\n }\n async getTransactionCount(blockTag) {\n return await this.provider.getTransactionCountOf(this.address);\n }\n // Returns just the hash of the transaction after sent, which is what\n // the bare JSON-RPC API does;\n async sendUncheckedTransaction(_tx) {\n const tx = deepCopy(_tx);\n const promises = [];\n // Make sure the from matches the sender\n if (tx.from) {\n const _from = tx.from;\n promises.push((async () => {\n const from = await resolveAddress(_from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n })());\n }\n else {\n tx.from = this.address;\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 (tx.gasLimit == null) {\n promises.push((async () => {\n tx.gasLimit = await this.provider.estimateGas(Object.assign(Object.assign({}, tx), { from: this.address }));\n })());\n }\n // The address may be an ENS name or Addressable\n if (tx.to != null) {\n const _to = tx.to;\n promises.push((async () => {\n tx.to = await resolveAddress(_to, this.provider);\n })());\n }\n // Wait until all of our properties are filled in\n if (promises.length) {\n await Promise.all(promises);\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return this.provider.send(\"eth_sendTransaction\", [hexTx]);\n }\n async sendTransaction(tx) {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider.getBlockNumber();\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(tx);\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 (new Promise((resolve, reject) => {\n const timeouts = [1000, 100];\n const checkTx = async () => {\n // Try getting the transaction\n const tx = await this.provider.getTransaction(hash);\n if (tx != null) {\n resolve(this.provider._wrapTransaction(tx, hash, blockNumber));\n return;\n }\n // Wait another 4 seconds\n this.provider._setTimeout(() => { checkTx(); }, timeouts.pop() || 4000);\n };\n checkTx();\n }));\n }\n async signTransaction(_tx) {\n const tx = deepCopy(_tx);\n // Make sure the from matches the sender\n if (tx.from) {\n const from = await resolveAddress(tx.from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n return logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n }\n else {\n tx.from = this.address;\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return await this.provider.send(\"eth_sign_Transaction\", [hexTx]);\n }\n async signMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"personal_sign\", [\n hexlify(message), this.address.toLowerCase()\n ]);\n }\n async signTypedData(domain, types, _value) {\n const value = deepCopy(_value);\n // Populate any ENS names (in-place)\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (value) => {\n const address = await resolveAddress(value);\n if (address == null) {\n return logger.throwArgumentError(\"TypedData does not support null address\", \"value\", value);\n }\n return address;\n });\n return await this.provider.send(\"eth_signTypedData_v4\", [\n this.address.toLowerCase(),\n JSON.stringify(TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n }\n async unlock(password) {\n return this.provider.send(\"personal_unlockAccount\", [\n this.address.toLowerCase(), password, null\n ]);\n }\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n async _legacySignMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"eth_sign\", [\n this.address.toLowerCase(), hexlify(message)\n ]);\n }\n}\nexport class JsonRpcApiProvider extends AbstractProvider {\n constructor(network) {\n super(network);\n _JsonRpcApiProvider_nextId.set(this, void 0);\n _JsonRpcApiProvider_options.set(this, void 0);\n __classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, 1, \"f\");\n __classPrivateFieldSet(this, _JsonRpcApiProvider_options, Object.assign({}, defaultOptions), \"f\");\n }\n _getOptions(key) {\n return __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key];\n }\n _setOptions(options) {\n // Validate all the options\n for (const _key in options) {\n const key = _key;\n const value = options[key];\n if (typeof (value) !== typeof (__classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key])) {\n return logger.throwArgumentError(\"invalid option value\", `options.${key}`, value);\n }\n }\n // Update the values\n for (const _key in options) {\n const key = _key;\n __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key] = (options[key]);\n }\n }\n prepareRequest(method, params) {\n var _a, _b;\n return {\n method, params, id: (__classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, (_b = __classPrivateFieldGet(this, _JsonRpcApiProvider_nextId, \"f\"), _a = _b++, _b), \"f\"), _a), jsonrpc: \"2.0\"\n };\n }\n // Sends the payload to the backend\n //async sendPayload(payload: any): Promise {\n // throw new Error(\"sub-class must implement this\");\n //}\n async send(method, params) {\n // @TODO: This should construct and queue the payload\n throw new Error(\"sub-class must implement this\");\n }\n async getSigner(address = 0) {\n const network = await this.getNetwork();\n const accounts = await this.send(\"eth_accounts\", []);\n // Account index\n if (typeof (address) === \"number\") {\n if (address > accounts.length) {\n throw new Error(\"no such account\");\n }\n return new JsonRpcSigner(this, accounts[address]);\n }\n // Account address\n address = network.formatter.address(address);\n for (const account of accounts) {\n if (network.formatter.address(account) === account) {\n return new JsonRpcSigner(this, account);\n }\n }\n throw new Error(\"invalid account\");\n }\n // Sub-classes can override this; it detects the *actual* network we\n // are connected to\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" })));\n }\n _getSubscriber(sub) {\n // Pending Filters aren't availble via polling\n if (sub.type === \"pending\") {\n return new FilterIdPendingSubscriber(this);\n }\n if (sub.type === \"event\") {\n return new FilterIdEventSubscriber(this, sub.filter);\n }\n // Orphaned Logs are handled automatically, by the filter, since\n // logs with removed are emitted by it\n if (sub.type === \"orphan\" && sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"orphan\");\n }\n return super._getSubscriber(sub);\n }\n getRpcTransaction(tx) {\n const result = {};\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n let dstKey = key;\n if (key === \"gasLimit\") {\n dstKey = \"gas\";\n }\n result[dstKey] = quantity(tx[key]);\n });\n // Make sure addresses and data are lowercase\n [\"from\", \"to\", \"data\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n result[key] = hexlify(tx[key]);\n });\n // Normalize the access list object\n if (tx.accessList) {\n result[\"accessList\"] = accessListify(tx.accessList);\n }\n return result;\n }\n getRpcRequest(req) {\n switch (req.method) {\n case \"chainId\":\n return { method: \"eth_chainId\", args: [] };\n case \"getBlockNumber\":\n return { method: \"eth_blockNumber\", args: [] };\n case \"getGasPrice\":\n return { method: \"eth_gasPrice\", args: [] };\n case \"getBalance\":\n return {\n method: \"eth_getBalance\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getTransactionCount\":\n return {\n method: \"eth_getTransactionCount\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getCode\":\n return {\n method: \"eth_getCode\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getStorageAt\":\n return {\n method: \"eth_getStorageAt\",\n args: [\n getLowerCase(req.address),\n (\"0x\" + req.position.toString(16)),\n req.blockTag\n ]\n };\n case \"sendTransaction\":\n return {\n method: \"eth_sendRawTransaction\",\n args: [req.signedTransaction]\n };\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return {\n method: \"eth_getBlockByNumber\",\n args: [req.blockTag, !!req.includeTransactions]\n };\n }\n else if (\"blockHash\" in req) {\n return {\n method: \"eth_getBlockByHash\",\n args: [req.blockHash, !!req.includeTransactions]\n };\n }\n break;\n case \"getTransaction\":\n return {\n method: \"eth_getTransactionByHash\",\n args: [req.hash]\n };\n case \"getTransactionReceipt\":\n return {\n method: \"eth_getTransactionReceipt\",\n args: [req.hash]\n };\n case \"call\":\n return {\n method: \"eth_call\",\n args: [this.getRpcTransaction(req.transaction), req.blockTag]\n };\n case \"estimateGas\": {\n return {\n method: \"eth_estimateGas\",\n args: [this.getRpcTransaction(req.transaction)]\n };\n }\n case \"getLogs\":\n if (req.filter && req.filter.address != null) {\n if (Array.isArray(req.filter.address)) {\n req.filter.address = req.filter.address.map(getLowerCase);\n }\n else {\n req.filter.address = getLowerCase(req.filter.address);\n }\n }\n return { method: \"eth_getLogs\", args: [req.filter] };\n }\n return null;\n }\n getRpcError(method, args, error) {\n if (method === \"eth_call\") {\n const result = spelunkData(error);\n if (result) {\n // @TODO: Extract errorSignature, errorName, errorArgs, reason if\n // it is Error(string) or Panic(uint25)\n return logger.makeError(\"execution reverted during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: result.data,\n transaction: args[0]\n });\n }\n return logger.makeError(\"missing revert data during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: \"0x\", transaction: args[0], info: { error }\n });\n }\n if (method === \"eth_estimateGas\") {\n }\n const message = JSON.stringify(spelunkMessage(error));\n if (message.match(/insufficient funds|base fee exceeds gas limit/)) {\n return logger.makeError(\"insufficient funds for intrinsic transaction cost\", \"INSUFFICIENT_FUNDS\", {\n transaction: args[0]\n });\n }\n if (message.match(/nonce/) && message.match(/too low/)) {\n return logger.makeError(\"nonce has already been used\", \"NONCE_EXPIRED\", {\n transaction: args[0]\n });\n }\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction/) && message.match(/underpriced/)) {\n return logger.makeError(\"replacement fee too low\", \"REPLACEMENT_UNDERPRICED\", {\n transaction: args[0]\n });\n }\n if (message.match(/only replay-protected/)) {\n return logger.makeError(\"legacy pre-eip-155 transactions not supported\", \"UNSUPPORTED_OPERATION\", {\n operation: method, info: { transaction: args[0] }\n });\n }\n if (method === \"estimateGas\" && message.match(/gas required exceeds allowance|always failing transaction|execution reverted/)) {\n return logger.makeError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", \"UNPREDICTABLE_GAS_LIMIT\", {\n transaction: args[0]\n });\n }\n return error;\n }\n async _perform(req) {\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 (req.method === \"call\" || req.method === \"estimateGas\") {\n let tx = req.transaction;\n if (tx && tx.type != null && logger.getBigInt(tx.type)) {\n // If there are no EIP-1559 properties, it might be non-EIP-a559\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 req = Object.assign({}, req, {\n transaction: Object.assign({}, tx, { type: undefined })\n });\n }\n }\n }\n }\n const request = this.getRpcRequest(req);\n if (request != null) {\n this.emit(\"debug\", { type: \"sendRequest\", request });\n try {\n const result = await this.send(request.method, request.args);\n //console.log(\"RR\", result);\n this.emit(\"debug\", { type: \"getResponse\", result });\n return result;\n }\n catch (error) {\n this.emit(\"debug\", { type: \"getError\", error });\n throw this.getRpcError(request.method, request.args, error);\n }\n }\n return super._perform(req);\n }\n}\n_JsonRpcApiProvider_nextId = new WeakMap(), _JsonRpcApiProvider_options = new WeakMap();\nexport class JsonRpcProvider extends JsonRpcApiProvider {\n constructor(url, network) {\n if (url == null) {\n url = \"http:/\\/localhost:8545\";\n }\n super(network);\n _JsonRpcProvider_connect.set(this, void 0);\n _JsonRpcProvider_pollingInterval.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, { request: new FetchRequest(url) }, \"f\");\n }\n else {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, Object.assign({}, url), \"f\");\n __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request = __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request.clone();\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, 4000, \"f\");\n }\n async send(method, params) {\n params = copy(params);\n // Configure a POST connection for the requested method\n const connection = Object.assign({}, __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\"));\n connection.request = connection.request.clone();\n connection.request.body = this.prepareRequest(method, params);\n const response = await fetchData(connection);\n response.assertOk();\n const result = response.bodyJson;\n if (\"error\" in result) {\n return logger.throwError(\"error from JSON-RPC\", \"UNKNOWN_ERROR\", {\n result\n });\n }\n return result.result;\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\"); }\n set pollingInterval(value) {\n if (!Number.isInteger(value) || value < 0) {\n throw new Error(\"invalid interval\");\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, value, \"f\");\n this._forEachSubscriber((sub) => {\n if (isPollable(sub)) {\n sub.pollingInterval = __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\");\n }\n });\n }\n}\n_JsonRpcProvider_connect = new WeakMap(), _JsonRpcProvider_pollingInterval = new WeakMap();\n// This class should only be used when it is not possible for the\n// underlying network to change, such as with INFURA. If you are\n// using MetaMask or some other client which allows users to change\n// their network DO NOT USE THIS. Bad things will happen.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n constructor(url, network) {\n super(url, network);\n defineProperties(this, { network });\n }\n async _detectNetwork() {\n return this.network;\n }\n}\nfunction spelunkData(value) {\n if (value == null) {\n return null;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\" && value.message.match(\"reverted\") && isHexString(value.data)) {\n return { message: value.message, data: value.data };\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n const result = spelunkData(value[key]);\n if (result) {\n return result;\n }\n }\n return null;\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return spelunkData(JSON.parse(value));\n }\n catch (error) { }\n }\n return null;\n}\nfunction _spelunkMessage(value, result) {\n if (value == null) {\n return;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\") {\n result.push(value.message);\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n _spelunkMessage(value[key], result);\n }\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return _spelunkMessage(JSON.parse(value), result);\n }\n catch (error) { }\n }\n}\nfunction spelunkMessage(value) {\n const result = [];\n _spelunkMessage(value, result);\n return result;\n}\n//# sourceMappingURL=provider-jsonrpc.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth\";\n case \"matic\":\n return \"rpc.ankr.com/polygon\";\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AnkrProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const connection = AnkrProvider.getConnection(network, apiKey);\n super(connection, network);\n defineProperties(this, { apiKey });\n // Ankr does not support filterId, so we force polling\n super._setOptions({ polling: true });\n }\n _getProvider(chainId) {\n try {\n return new AnkrProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"AnkrProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=provider-ankr.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.alchemyapi.io\";\n case \"ropsten\":\n return \"eth-ropsten.alchemyapi.io\";\n case \"rinkeby\":\n return \"eth-rinkeby.alchemyapi.io\";\n case \"goerli\":\n return \"eth-goerli.alchemyapi.io\";\n case \"kovan\":\n return \"eth-kovan.alchemyapi.io\";\n case \"matic\":\n return \"polygon-mainnet.g.alchemy.com\";\n case \"maticmum\":\n return \"polygon-mumbai.g.alchemy.com\";\n case \"arbitrum\":\n return \"arb-mainnet.g.alchemy.com\";\n case \"arbitrum-rinkeby\":\n return \"arb-rinkeby.g.alchemy.com\";\n case \"optimism\":\n return \"opt-mainnet.g.alchemy.com\";\n case \"optimism-kovan\":\n return \"opt-kovan.g.alchemy.com\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AlchemyProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n super(AlchemyProvider.getConnection(network, apiKey), network);\n defineProperties(this, { apiKey });\n }\n _getProvider(chainId) {\n try {\n return new AlchemyProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v2/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"alchemy\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n}\n//# sourceMappingURL=provider-alchemy.js.map","import { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nexport class CloudflareProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\") {\n const network = Network.from(_network);\n if (network.name !== \"homestead\") {\n return logger.throwArgumentError(\"unsupported network\", \"network\", _network);\n }\n super(\"https:/\\/cloudflare-eth.com/\", network);\n }\n}\n//# sourceMappingURL=provider-cloudflare.js.map","import { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { isError } from \"@ethersproject/logger\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nif (false) {\n console.log(isHexString, isError);\n} // @TODO\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { NetworkPlugin } from \"./plugins-network.js\";\nimport { logger } from \"./logger.js\";\nconst defaultApiKey = \"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB\";\nconst EtherscanPluginId = \"org.ethers.plugins.etherscan\";\nexport class EtherscanPlugin extends NetworkPlugin {\n constructor(baseUrl, communityApiKey) {\n super(EtherscanPluginId);\n //if (communityApiKey == null) { communityApiKey = null; }\n defineProperties(this, { baseUrl, communityApiKey });\n }\n clone() {\n return new EtherscanPlugin(this.baseUrl, this.communityApiKey);\n }\n}\nexport class EtherscanProvider extends AbstractProvider {\n constructor(_network, apiKey) {\n super();\n const network = Network.from(_network);\n if (apiKey == null) {\n const plugin = network.getPlugin(EtherscanPluginId);\n if (plugin) {\n apiKey = plugin.communityApiKey;\n }\n else {\n apiKey = defaultApiKey;\n }\n }\n defineProperties(this, { apiKey, network });\n // Test that the network is supported by Etherscan\n this.getBaseUrl();\n }\n getBaseUrl() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return plugin.baseUrl;\n }\n switch (this.network.name) {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"ropsten\":\n return \"https:/\\/api-ropsten.etherscan.io\";\n case \"rinkeby\":\n return \"https:/\\/api-rinkeby.etherscan.io\";\n case \"kovan\":\n return \"https:/\\/api-kovan.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n default:\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network);\n }\n getUrl(module, params) {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${key}=${value}`;\n }\n return accum;\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${this.apiKey}` : \"\");\n return `${this.getBaseUrl()}/api?module=${module}${query}${apiKey}`;\n }\n getPostUrl() {\n return `${this.getBaseUrl()}/api`;\n }\n getPostData(module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n async detectNetwork() {\n return this.network;\n }\n async fetch(module, params, post) {\n const url = (post ? this.getPostUrl() : this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params) : null);\n /*\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n */\n const request = new FetchRequest(url);\n const connection = {\n request,\n throttleSlotInterval: 1000,\n processResponse: async (request, response) => {\n const result = response.hasBody() ? JSON.parse(toUtf8String(response.body)) : {};\n const throttle = ((typeof (result.result) === \"string\") ? result.result : \"\").toLowerCase().indexOf(\"rate limit\") >= 0;\n if (module === \"proxy\") {\n // This JSON response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && throttle) {\n response.throwThrottleError(result.result);\n }\n }\n else {\n if (throttle) {\n response.throwThrottleError(result.result);\n }\n }\n return response;\n },\n };\n if (payload) {\n request.setHeader(\"content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n request.body = Object.keys(payload).map((k) => `${k}=${payload[k]}`).join(\"&\");\n }\n const response = await fetchData(connection);\n response.assertOk();\n if (!response.hasBody()) {\n throw new Error();\n }\n /*\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n */\n const result = JSON.parse(toUtf8String(response.body));\n if (module === \"proxy\") {\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n if (result.error) {\n // @TODO: not any\n const error = new Error(result.error.message || \"unknown error\");\n if (result.error.code) {\n error.code = result.error.code;\n }\n if (result.error.data) {\n error.data = result.error.data;\n }\n throw error;\n }\n return result.result;\n }\n else {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n if (result.status != 1 || result.message != \"OK\") {\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n // if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n // error.throttleRetry = true;\n // }\n throw error;\n }\n return result.result;\n }\n }\n // The transaction has already been sanitized by the calls in Provider\n _getTransactionPostData(transaction) {\n const result = {};\n for (let key in transaction) {\n if (transaction[key] == null) {\n continue;\n }\n let value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = quantity(hexlify(value));\n }\n else if (key === \"accessList\") {\n value = \"[\" + this.network.formatter.accessList(value).map((set) => {\n return `{address:\"${set.address}\",storageKeys:[\"${set.storageKeys.join('\",\"')}\"]}`;\n }).join(\",\") + \"]\";\n }\n else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n }\n _checkError(req, error, transaction) {\n /*\n let body = \"\";\n if (isError(error, Logger.Errors.SERVER_ERROR) && error.response && error.response.hasBody()) {\n body = toUtf8String(error.response.body);\n }\n console.log(body);\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\" && body) {\n \n // Etherscan keeps changing their string\n if (body.match(/reverted/i) || body.match(/VM execution error/i)) {\n \n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n if (!isHexString(data)) { data = \"0x\"; }\n \n logger.throwError(\"call exception\", Logger.Errors.CALL_EXCEPTION, {\n error, data\n });\n }\n }\n \n // Get the message from any nested error structure\n let message = error.message;\n if (isError(error, Logger.Errors.SERVER_ERROR)) {\n if (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 }\n message = (message || \"\").toLowerCase();\n \n // \"Insufficient funds. The account you tried to send transaction from\n // does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.Errors.INSUFFICIENT_FUNDS, {\n error, transaction, info: { method }\n });\n }\n \n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.Errors.NONCE_EXPIRED, {\n error, transaction, info: { method }\n });\n }\n \n // \"Transaction gas price is too low. There is another transaction with\n // same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.Errors.REPLACEMENT_UNDERPRICED, {\n error, transaction, info: { method }\n });\n }\n \n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.Errors.UNPREDICTABLE_GAS_LIMIT, {\n error, transaction, info: { method }\n });\n }\n */\n throw error;\n }\n async _detectNetwork() {\n return this.network;\n }\n async _perform(req) {\n switch (req.method) {\n case \"chainId\":\n return this.network.chainId;\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: req.address,\n position: req.position,\n tag: req.blockTag\n });\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: req.signedTransaction\n }, true).catch((error) => {\n return this._checkError(req, error, req.signedTransaction);\n });\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: req.blockTag,\n boolean: (req.includeTransactions ? \"true\" : \"false\")\n });\n }\n return logger.throwError(\"getBlock by blockHash not supported by Etherscan\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getBlock(blockHash)\"\n });\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: req.hash\n });\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: req.hash\n });\n case \"call\": {\n if (req.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n case \"estimateGas\": {\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n /*\n case \"getLogs\": {\n // Needs to complain if more than one address is passed in\n const args: Record = { action: \"getLogs\" }\n \n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n \n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n \n if (params.filter.address) {\n args.address = params.filter.address;\n }\n \n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.Errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.Errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n \n const logs: Array = await this.fetch(\"logs\", args);\n \n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n \n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n \n log.blockHash = blocks[log.blockNumber];\n }\n \n return logs;\n }\n */\n default:\n break;\n }\n return super._perform(req);\n }\n async getNetwork() {\n return this.network;\n }\n async getEtherPrice() {\n if (this.network.name !== \"homestead\") {\n return 0.0;\n }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n }\n isCommunityResource() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return (plugin.communityApiKey === this.apiKey);\n }\n return (defaultApiKey === this.apiKey);\n }\n}\n/*\n(async function() {\n const provider = new EtherscanProvider();\n console.log(provider);\n console.log(await provider.getBlockNumber());\n / *\n provider.on(\"block\", (b) => {\n console.log(\"BB\", b);\n });\n console.log(await provider.getTransactionReceipt(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\"));\n\n provider.once(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\", (tx) => {\n console.log(\"TT\", tx);\n });\n * /\n try {\n console.log(await provider.getBlock(100));\n } catch (error) {\n console.log(error);\n }\n\n try {\n console.log(await provider.getBlock(13821768));\n } catch (error) {\n console.log(error);\n }\n\n})();\n*/\n//# sourceMappingURL=provider-etherscan.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultProjectId = \"84842078b09946638c03157f83405213\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"mainnet.infura.io\";\n case \"ropsten\":\n return \"ropsten.infura.io\";\n case \"rinkeby\":\n return \"rinkeby.infura.io\";\n case \"kovan\":\n return \"kovan.infura.io\";\n case \"goerli\":\n return \"goerli.infura.io\";\n case \"matic\":\n return \"polygon-mainnet.infura.io\";\n case \"maticmum\":\n return \"polygon-mumbai.infura.io\";\n case \"optimism\":\n return \"optimism-mainnet.infura.io\";\n case \"optimism-kovan\":\n return \"optimism-kovan.infura.io\";\n case \"arbitrum\":\n return \"arbitrum-mainnet.infura.io\";\n case \"arbitrum-rinkeby\":\n return \"arbitrum-rinkeby.infura.io\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class InfuraProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", projectId, projectSecret) {\n const network = Network.from(_network);\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const connection = InfuraProvider.getConnection(network, projectId, projectSecret);\n super(connection, network);\n defineProperties(this, { projectId, projectSecret });\n }\n _getProvider(chainId) {\n try {\n return new InfuraProvider(chainId, this.projectId, this.projectSecret);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, projectId, projectSecret) {\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v3/${projectId}`);\n request.allowGzip = true;\n if (projectSecret) {\n request.setCredentials(\"\", projectSecret);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (projectId === defaultProjectId) {\n showThrottleMessage(\"InfuraProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\n//# sourceMappingURL=provider-infura.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\n// These are load-balancer-based application IDs\nconst defaultAppIds = {\n homestead: \"6004bcd10040261633ade990\",\n ropsten: \"6004bd4d0040261633ade991\",\n rinkeby: \"6004bda20040261633ade994\",\n goerli: \"6004bd860040261633ade992\",\n};\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.gateway.pokt.network\";\n case \"ropsten\":\n return \"eth-ropsten.gateway.pokt.network\";\n case \"rinkeby\":\n return \"eth-rinkeby.gateway.pokt.network\";\n case \"goerli\":\n return \"eth-goerli.gateway.pokt.network\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nfunction normalizeApiKey(network, _appId, applicationSecretKey, loadBalancer) {\n loadBalancer = !!loadBalancer;\n let community = false;\n let applicationId = _appId;\n if (applicationId == null) {\n applicationId = defaultAppIds[network.name];\n if (applicationId == null) {\n logger.throwArgumentError(\"network does not support default applicationId\", \"applicationId\", _appId);\n }\n loadBalancer = true;\n community = true;\n }\n else if (applicationId === defaultAppIds[network.name]) {\n loadBalancer = true;\n community = true;\n }\n if (applicationSecretKey == null) {\n applicationSecretKey = null;\n }\n return { applicationId, applicationSecretKey, community, loadBalancer };\n}\nexport class PocketProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", _appId, _secretKey, _loadBalancer) {\n const network = Network.from(_network);\n const { applicationId, applicationSecretKey, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n const connection = PocketProvider.getConnection(network, applicationId, applicationSecretKey, loadBalancer);\n super(connection, network);\n defineProperties(this, { applicationId, applicationSecretKey, loadBalancer });\n }\n static getConnection(network, _appId, _secretKey, _loadBalancer) {\n const { applicationId, applicationSecretKey, community, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n let url = `https:/\\/${getHost(network.name)}/v1/`;\n if (loadBalancer) {\n url += \"lb/\";\n }\n url += applicationId;\n const request = new FetchRequest(url);\n request.allowGzip = true;\n if (applicationSecretKey) {\n request.setCredentials(\"\", applicationSecretKey);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (community) {\n showThrottleMessage(\"PocketProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.applicationId === defaultAppIds[this.network.name]);\n }\n}\n//# sourceMappingURL=provider-pocket.js.map","export function shuffle(array) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n}\n//# sourceMappingURL=shuffle.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FallbackProvider_instances, _FallbackProvider_configs, _FallbackProvider_height, _FallbackProvider_initialSyncPromise, _FallbackProvider_getNextConfig, _FallbackProvider_addRunner, _FallbackProvider_initialSync, _FallbackProvider_checkQuorum, _FallbackProvider_waitForQuorum;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { shuffle } from \"./shuffle.js\";\n//const BN_0 = BigInt(\"0\");\nconst BN_1 = BigInt(\"1\");\nconst BN_2 = BigInt(\"2\");\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\nfunction getTime() { return (new Date()).getTime(); }\n;\nconst defaultConfig = { stallTimeout: 400, priority: 1, weight: 1 };\nconst defaultState = {\n blockNumber: -2, requests: 0, lateResponses: 0, errorResponses: 0,\n outOfSync: -1, unsupportedEvents: 0, rollingDuration: 0, score: 0,\n _network: null, _updateNumber: null, _totalTime: 0\n};\nasync function waitForSync(config, blockNumber) {\n while (config.blockNumber < 0 || config.blockNumber < blockNumber) {\n if (!config._updateNumber) {\n config._updateNumber = (async () => {\n const blockNumber = await config.provider.getBlockNumber();\n if (blockNumber > config.blockNumber) {\n config.blockNumber = blockNumber;\n }\n config._updateNumber = null;\n })();\n }\n await config._updateNumber;\n config.outOfSync++;\n }\n}\n// Normalizes a result to a string that can be used to compare against\n// other results using normal string equality\nfunction normalize(network, value, req) {\n switch (req.method) {\n case \"chainId\":\n return logger.getBigInt(value).toString();\n case \"getBlockNumber\":\n return logger.getNumber(value).toString();\n case \"getGasPrice\":\n return logger.getBigInt(value).toString();\n case \"getBalance\":\n return logger.getBigInt(value).toString();\n case \"getTransactionCount\":\n return logger.getNumber(value).toString();\n case \"getCode\":\n return hexlify(value);\n case \"getStorageAt\":\n return hexlify(value);\n case \"getBlock\":\n if (req.includeTransactions) {\n return JSON.stringify(network.formatter.blockWithTransactions(value));\n }\n return JSON.stringify(network.formatter.block(value));\n case \"getTransaction\":\n return JSON.stringify(network.formatter.transactionResponse(value));\n case \"getTransactionReceipt\":\n return JSON.stringify(network.formatter.receipt(value));\n case \"call\":\n return hexlify(value);\n case \"estimateGas\":\n return logger.getBigInt(value).toString();\n case \"getLogs\":\n return JSON.stringify(value.map((v) => network.formatter.log(v)));\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}\n// This strategy picks the highest wieght result, as long as the weight is\n// equal to or greater than quorum\nfunction checkQuorum(quorum, results) {\n const tally = new Map();\n for (const { result, normal, weight } of results) {\n const t = tally.get(normal) || { result, weight: 0 };\n t.weight += weight;\n tally.set(normal, t);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n if (weight >= quorum && weight > bestWeight) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\n/*\nfunction getMean(results: Array): bigint {\n const total = results.reduce((a, r) => (a + BigInt(r.result)), BN_0);\n return total / BigInt(results.length);\n}\n*/\nfunction getMedian(results) {\n // Get the sorted values\n const values = results.map((r) => BigInt(r.result));\n values.sort((a, b) => ((a < b) ? -1 : (b > a) ? 1 : 0));\n const mid = values.length / 2;\n // Odd-length; take the middle value\n if (values.length % 2) {\n return values[mid];\n }\n // Even length; take the ceiling of the mean of the center two values\n return (values[mid - 1] + values[mid] + BN_1) / BN_2;\n}\nfunction getFuzzyMode(quorum, results) {\n if (quorum === 1) {\n return logger.getNumber(getMedian(results), \"%internal\");\n }\n const tally = new Map();\n const add = (result, weight) => {\n const t = tally.get(result) || { result, weight: 0 };\n t.weight += weight;\n tally.set(result, t);\n };\n for (const { weight, result } of results) {\n const r = logger.getNumber(result);\n add(r - 1, weight);\n add(r, weight);\n add(r + 1, weight);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n // Use this result, if this result meets quorum and has either:\n // - a better weight\n // - or equal weight, but the result is larger\n if (weight >= quorum && (weight > bestWeight || (bestResult != null && weight === bestWeight && result > bestResult))) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\nexport class FallbackProvider extends AbstractProvider {\n constructor(providers, network) {\n super(network);\n _FallbackProvider_instances.add(this);\n _FallbackProvider_configs.set(this, void 0);\n _FallbackProvider_height.set(this, void 0);\n _FallbackProvider_initialSyncPromise.set(this, void 0);\n __classPrivateFieldSet(this, _FallbackProvider_configs, providers.map((p) => {\n if (p instanceof AbstractProvider) {\n return Object.assign({ provider: p }, defaultConfig, defaultState);\n }\n else {\n return Object.assign({}, defaultConfig, p, defaultState);\n }\n }), \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_height, -2, \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, null, \"f\");\n this.quorum = 2; //Math.ceil(providers.length / 2);\n this.eventQuorum = 1;\n this.eventWorkers = 1;\n if (this.quorum > __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").reduce((a, c) => (a + c.weight), 0)) {\n logger.throwArgumentError(\"quorum exceed provider wieght\", \"quorum\", this.quorum);\n }\n }\n // @TOOD: Copy these and only return public values\n get providerConfigs() {\n return __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n }\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" }))).freeze();\n }\n async _perform(req) {\n await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_initialSync).call(this);\n // Bootstrap enough to meet quorum\n const running = new Set();\n for (let i = 0; i < this.quorum; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n const result = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n for (const runner of running) {\n runner.done = true;\n }\n return result;\n }\n}\n_FallbackProvider_configs = new WeakMap(), _FallbackProvider_height = new WeakMap(), _FallbackProvider_initialSyncPromise = new WeakMap(), _FallbackProvider_instances = new WeakSet(), _FallbackProvider_getNextConfig = function _FallbackProvider_getNextConfig(configs) {\n // Shuffle the states, sorted by priority\n const allConfigs = __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n shuffle(allConfigs);\n allConfigs.sort((a, b) => (b.priority - a.priority));\n for (const config of allConfigs) {\n if (configs.indexOf(config) === -1) {\n return config;\n }\n }\n return null;\n}, _FallbackProvider_addRunner = function _FallbackProvider_addRunner(running, req) {\n const config = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_getNextConfig).call(this, Array.from(running).map((r) => r.config));\n if (config == null) {\n return null;\n }\n const result = {};\n const runner = {\n config, result, didBump: false, done: false,\n perform: null, staller: null\n };\n const now = getTime();\n runner.perform = (async () => {\n try {\n config.requests++;\n result.result = await config.provider._perform(req);\n }\n catch (error) {\n config.errorResponses++;\n result.error = error;\n }\n if (runner.done) {\n config.lateResponses++;\n }\n const dt = (getTime() - now);\n config._totalTime += dt;\n config.rollingDuration = 0.95 * config.rollingDuration + 0.05 * dt;\n runner.perform = null;\n })();\n runner.staller = (async () => {\n await stall(config.stallTimeout);\n runner.staller = null;\n })();\n running.add(runner);\n return runner;\n}, _FallbackProvider_initialSync = \n// Initializes the blockNumber and network for each runner and\n// blocks until initialized\nasync function _FallbackProvider_initialSync() {\n let initialSync = __classPrivateFieldGet(this, _FallbackProvider_initialSyncPromise, \"f\");\n if (!initialSync) {\n const promises = [];\n __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").forEach((config) => {\n promises.push(waitForSync(config, 0));\n promises.push((async () => {\n config._network = await config.provider.getNetwork();\n })());\n });\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, initialSync = (async () => {\n // Wait for all providers to have a block number and network\n await Promise.all(promises);\n // Check all the networks match\n let chainId = null;\n for (const config of __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\")) {\n const network = (config._network);\n if (chainId == null) {\n chainId = network.chainId;\n }\n else if (network.chainId !== chainId) {\n logger.throwError(\"cannot mix providers on different networks\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FallbackProvider\"\n });\n }\n }\n })(), \"f\");\n }\n await initialSync;\n}, _FallbackProvider_checkQuorum = async function _FallbackProvider_checkQuorum(running, req) {\n // Get all the result objects\n const results = [];\n for (const runner of running) {\n if (\"result\" in runner.result) {\n const result = runner.result.result;\n results.push({\n result,\n normal: normalize((runner.config._network), result, req),\n weight: runner.config.weight\n });\n }\n }\n // Are there enough results to event meet quorum?\n if (results.reduce((a, r) => (a + r.weight), 0) < this.quorum) {\n return undefined;\n }\n switch (req.method) {\n case \"getBlockNumber\": {\n // We need to get the bootstrap block height\n if (__classPrivateFieldGet(this, _FallbackProvider_height, \"f\") === -2) {\n const height = Math.ceil(logger.getNumber(getMedian(__classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").map((c) => ({\n result: c.blockNumber,\n normal: logger.getNumber(c.blockNumber).toString(),\n weight: c.weight\n }))), \"%internal\"));\n __classPrivateFieldSet(this, _FallbackProvider_height, height, \"f\");\n }\n const mode = getFuzzyMode(this.quorum, results);\n if (mode === undefined) {\n return undefined;\n }\n if (mode > __classPrivateFieldGet(this, _FallbackProvider_height, \"f\")) {\n __classPrivateFieldSet(this, _FallbackProvider_height, mode, \"f\");\n }\n return __classPrivateFieldGet(this, _FallbackProvider_height, \"f\");\n }\n case \"getGasPrice\":\n case \"estimateGas\":\n return getMedian(results);\n case \"getBlock\":\n // Pending blocks are mempool dependant and already\n // quite untrustworthy\n if (\"blockTag\" in req && req.blockTag === \"pending\") {\n return results[0].result;\n }\n return checkQuorum(this.quorum, results);\n case \"chainId\":\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n case \"getLogs\":\n return checkQuorum(this.quorum, results);\n case \"call\":\n // @TODO: Check errors\n return checkQuorum(this.quorum, results);\n case \"sendTransaction\":\n throw new Error(\"TODO\");\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}, _FallbackProvider_waitForQuorum = async function _FallbackProvider_waitForQuorum(running, req) {\n if (running.size === 0) {\n throw new Error(\"no runners?!\");\n }\n // Any promises that are interesting to watch for; an expired stall\n // or a successful perform\n const interesting = [];\n //const results: Array = [ ];\n //const errors: Array = [ ];\n let newRunners = 0;\n for (const runner of running) {\n // @TODO: use runner.perfom != null\n /*\n if (\"result\" in runner.result) {\n results.push(runner.result.result);\n } else if (\"error\" in runner.result) {\n errors.push(runner.result.error);\n }\n*/\n // No responses, yet; keep an eye on it\n if (runner.perform) {\n interesting.push(runner.perform);\n }\n // Still stalling...\n if (runner.staller) {\n interesting.push(runner.staller);\n continue;\n }\n // This runner has already triggered another runner\n if (runner.didBump) {\n continue;\n }\n // Got a response (result or error) or stalled; kick off another runner\n runner.didBump = true;\n newRunners++;\n }\n // Check for quorum\n /*\n console.log({ results, errors } );\n if (results.length >= this.quorum) {\n return results[0];\n }\n\n if (errors.length >= this.quorum) {\n return errors[0];\n }\n */\n const value = await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_checkQuorum).call(this, running, req);\n if (value !== undefined) {\n if (value instanceof Error) {\n throw value;\n }\n return value;\n }\n // Add any new runners, because a staller timed out or a result\n // or error response came in.\n for (let i = 0; i < newRunners; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n if (interesting.length === 0) {\n throw new Error(\"quorum not met\");\n // return logger.throwError(\"failed to meet quorum\", \"\", {\n // });\n }\n // Wait for someone to either complete its perform or trigger a stall\n await Promise.race(interesting);\n return await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n};\n//# sourceMappingURL=provider-fallback.js.map","function getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst _WebSocket = getGlobal().WebSocket;\nexport { _WebSocket as WebSocket };\n//# sourceMappingURL=ws-browser.js.map","/**\n * SocketProvider\n *\n * Generic long-lived socket provider.\n *\n * Sub-classing notes\n * - a sub-class MUST call the `_start()` method once connected\n * - a sub-class MUST override the `_write(string)` method\n * - a sub-class MUST call `_processMessage(string)` for each message\n */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SocketSubscriber_provider, _SocketSubscriber_filter, _SocketSubscriber_filterId, _SocketSubscriber_paused, _SocketSubscriber_emitPromise, _SocketEventSubscriber_logFilter, _SocketEventSubscriber_formatter, _SocketProvider_callbacks, _SocketProvider_ready, _SocketProvider_subs, _SocketProvider_pending;\nimport { UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { JsonRpcApiProvider } from \"./provider-jsonrpc.js\";\nexport class SocketSubscriber {\n constructor(provider, filter) {\n _SocketSubscriber_provider.set(this, void 0);\n _SocketSubscriber_filter.set(this, void 0);\n _SocketSubscriber_filterId.set(this, void 0);\n _SocketSubscriber_paused.set(this, void 0);\n _SocketSubscriber_emitPromise.set(this, void 0);\n __classPrivateFieldSet(this, _SocketSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n get filter() { return JSON.parse(__classPrivateFieldGet(this, _SocketSubscriber_filter, \"f\")); }\n start() {\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_subscribe\", this.filter).then((filterId) => {\n ;\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\")._register(filterId, this);\n return filterId;\n }), \"f\");\n }\n stop() {\n (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\")).then((filterId) => {\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_unsubscribe\", [filterId]);\n });\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n }\n // @TODO: pause should trap the current blockNumber, unsub, and on resume use getLogs\n // and resume\n pause(dropWhilePaused) {\n if (!dropWhilePaused) {\n logger.throwError(\"preserve logs while paused not supported by SocketSubscriber yet\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause(false)\"\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_paused, !!dropWhilePaused, \"f\");\n }\n resume() {\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n }\n _handleMessage(message) {\n if (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\") == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _SocketSubscriber_paused, \"f\") === null) {\n let emitPromise = __classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\");\n if (emitPromise == null) {\n emitPromise = this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n }\n else {\n emitPromise = emitPromise.then(async () => {\n await this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, emitPromise.then(() => {\n if (__classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\") === emitPromise) {\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n }), \"f\");\n }\n }\n async _emit(provider, message) {\n throw new Error(\"sub-classes must implemente this; _emit\");\n }\n}\n_SocketSubscriber_provider = new WeakMap(), _SocketSubscriber_filter = new WeakMap(), _SocketSubscriber_filterId = new WeakMap(), _SocketSubscriber_paused = new WeakMap(), _SocketSubscriber_emitPromise = new WeakMap();\nexport class SocketBlockSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newHeads\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"block\", parseInt(message.number));\n }\n}\nexport class SocketPendingSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newPendingTransactions\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"pending\", message);\n }\n}\nexport class SocketEventSubscriber extends SocketSubscriber {\n constructor(provider, filter) {\n super(provider, [\"logs\", filter]);\n _SocketEventSubscriber_logFilter.set(this, void 0);\n _SocketEventSubscriber_formatter.set(this, void 0);\n __classPrivateFieldSet(this, _SocketEventSubscriber_logFilter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketEventSubscriber_formatter, provider.getNetwork().then((network) => network.formatter), \"f\");\n }\n get logFilter() { return JSON.parse(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\")); }\n async _emit(provider, message) {\n const formatter = await __classPrivateFieldGet(this, _SocketEventSubscriber_formatter, \"f\");\n provider.emit(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\"), formatter.log(message, provider));\n }\n}\n_SocketEventSubscriber_logFilter = new WeakMap(), _SocketEventSubscriber_formatter = new WeakMap();\nexport class SocketProvider extends JsonRpcApiProvider {\n constructor(network) {\n super(network);\n _SocketProvider_callbacks.set(this, void 0);\n _SocketProvider_ready.set(this, void 0);\n // Maps each filterId to its subscriber\n _SocketProvider_subs.set(this, void 0);\n // If any events come in before a subscriber has finished\n // registering, queue them\n _SocketProvider_pending.set(this, void 0);\n __classPrivateFieldSet(this, _SocketProvider_callbacks, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_ready, false, \"f\");\n __classPrivateFieldSet(this, _SocketProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_pending, new Map(), \"f\");\n }\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"close\":\n return new UnmanagedSubscriber(\"close\");\n case \"block\":\n return new SocketBlockSubscriber(this);\n case \"pending\":\n return new SocketPendingSubscriber(this);\n case \"event\":\n return new SocketEventSubscriber(this, sub.filter);\n case \"orphan\":\n // Handled auto-matically within AbstractProvider\n // when the log.removed = true\n if (sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"drop-log\");\n }\n }\n return super._getSubscriber(sub);\n }\n _register(filterId, subscriber) {\n __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").set(filterId, subscriber);\n const pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending) {\n for (const message of pending) {\n subscriber._handleMessage(message);\n }\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").delete(filterId);\n }\n }\n async send(method, params) {\n const payload = this.prepareRequest(method, params);\n const promise = new Promise((resolve, reject) => {\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").set(payload.id, { payload, resolve, reject });\n });\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n await this._write(JSON.stringify(payload));\n }\n return await promise;\n }\n // Sub-classes must call this once they are connected\n async _start() {\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n return;\n }\n __classPrivateFieldSet(this, _SocketProvider_ready, true, \"f\");\n for (const { payload } of __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").values()) {\n await this._write(JSON.stringify(payload));\n }\n }\n // Sub-classes must call this for each message\n async _processMessage(message) {\n const result = JSON.parse(message);\n if (\"id\" in result) {\n const promise = __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").get(result.id);\n if (!promise) {\n console.log(\"Weird... Response for not a thing we sent\");\n return;\n }\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").delete(result.id);\n if (\"error\" in result) {\n const { message, code, data } = result.error;\n const error = logger.makeError(message || \"unkonwn error\", \"SERVER_ERROR\", {\n request: `ws:${JSON.stringify(promise.payload)}`,\n info: { code, data }\n });\n promise.reject(error);\n }\n else {\n promise.resolve(result.result);\n }\n }\n else if (result.method === \"eth_subscription\") {\n const filterId = result.params.subscription;\n const subscriber = __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").get(filterId);\n if (subscriber) {\n subscriber._handleMessage(result.params.result);\n }\n else {\n let pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending == null) {\n pending = [];\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").set(filterId, pending);\n }\n pending.push(result.params.result);\n }\n }\n }\n async _write(message) {\n throw new Error(\"sub-classes must override this\");\n }\n}\n_SocketProvider_callbacks = new WeakMap(), _SocketProvider_ready = new WeakMap(), _SocketProvider_subs = new WeakMap(), _SocketProvider_pending = new WeakMap();\n//# sourceMappingURL=provider-socket.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WebSocketProvider_websocket;\nimport { WebSocket } from \"ws\"; /*-browser*/\nimport { SocketProvider } from \"./provider-socket.js\";\nexport class WebSocketProvider extends SocketProvider {\n constructor(url, network) {\n super(network);\n _WebSocketProvider_websocket.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, new WebSocket(url), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, url, \"f\");\n }\n this.websocket.onopen = () => {\n this._start();\n };\n this.websocket.onmessage = (message) => {\n this._processMessage(message.data);\n };\n }\n get websocket() { return __classPrivateFieldGet(this, _WebSocketProvider_websocket, \"f\"); }\n async _write(message) {\n this.websocket.send(message);\n }\n}\n_WebSocketProvider_websocket = new WeakMap();\n//# sourceMappingURL=provider-websocket.js.map","import { AnkrProvider } from \"./provider-ankr.js\";\nimport { AlchemyProvider } from \"./provider-alchemy.js\";\nimport { CloudflareProvider } from \"./provider-cloudflare.js\";\nimport { EtherscanProvider } from \"./provider-etherscan.js\";\nimport { InfuraProvider } from \"./provider-infura.js\";\nimport { PocketProvider } from \"./provider-pocket.js\";\nimport { FallbackProvider } from \"./provider-fallback.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nimport { WebSocketProvider } from \"./provider-websocket.js\";\nfunction isWebSocketLike(value) {\n return (value && typeof (value.send) === \"function\" &&\n typeof (value.close) === \"function\");\n}\nexport function getDefaultProvider(network, options) {\n if (options == null) {\n options = {};\n }\n if (typeof (network) === \"string\" && network.match(/^https?:/)) {\n return new JsonRpcProvider(network);\n }\n if (typeof (network) === \"string\" && network.match(/^wss?:/) || isWebSocketLike(network)) {\n return new WebSocketProvider(network);\n }\n const providers = [];\n if (options.alchemy !== \"-\") {\n try {\n providers.push(new AlchemyProvider(network, options.alchemy));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.ankr !== \"-\") {\n try {\n providers.push(new AnkrProvider(network, options.ankr));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.cloudflare !== \"-\") {\n try {\n providers.push(new CloudflareProvider(network));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.etherscan !== \"-\") {\n try {\n providers.push(new EtherscanProvider(network, options.etherscan));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.infura !== \"-\") {\n try {\n let projectId = options.infura;\n let projectSecret = undefined;\n if (typeof (projectId) === \"object\") {\n projectSecret = projectId.projectSecret;\n projectId = projectId.projectId;\n }\n providers.push(new InfuraProvider(network, projectId, projectSecret));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.pocket !== \"-\") {\n try {\n let appId = options.pocket;\n let secretKey = undefined;\n let loadBalancer = undefined;\n if (typeof (appId) === \"object\") {\n loadBalancer = !!appId.loadBalancer;\n secretKey = appId.secretKey;\n appId = appId.appId;\n }\n providers.push(new PocketProvider(network, appId, secretKey, loadBalancer));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (providers.length === 0) {\n throw new Error(\"TODO\");\n }\n if (providers.length === 1) {\n return providers[0];\n }\n return new FallbackProvider(providers);\n}\n//# sourceMappingURL=default-provider.js.map","const IpcSocketProvider = undefined;\nexport { IpcSocketProvider };\n//# sourceMappingURL=provider-ipcsocket-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ContractTransactionReceipt_interface, _ContractTransactionResponse_interface;\nimport { defineProperties, EventPayload } from \"@ethersproject/properties\";\nimport { Log, TransactionReceipt, TransactionResponse } from \"@ethersproject/providers\";\nexport class EventLog extends Log {\n constructor(log, iface, fragment) {\n super(log, log.provider);\n const args = iface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, interface: iface });\n }\n get eventName() { return this.fragment.name; }\n get eventSignature() { return this.fragment.format(); }\n}\nexport class ContractTransactionReceipt extends TransactionReceipt {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionReceipt_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionReceipt_interface, iface, \"f\");\n }\n get logs() {\n return super.logs.map((log) => {\n const fragment = log.topics.length ? __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\").getEvent(log.topics[0]) : null;\n if (fragment) {\n return new EventLog(log, __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\"), fragment);\n }\n else {\n return log;\n }\n });\n }\n}\n_ContractTransactionReceipt_interface = new WeakMap();\nexport class ContractTransactionResponse extends TransactionResponse {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionResponse_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionResponse_interface, iface, \"f\");\n }\n async wait(confirms) {\n const receipt = await super.wait();\n if (receipt == null) {\n return null;\n }\n return new ContractTransactionReceipt(__classPrivateFieldGet(this, _ContractTransactionResponse_interface, \"f\"), this.provider, receipt);\n }\n}\n_ContractTransactionResponse_interface = new WeakMap();\nexport class ContractEventPayload extends EventPayload {\n constructor(contract, listener, filter, fragment, _log) {\n super(contract, listener, filter);\n const log = new EventLog(_log, contract.interface, fragment);\n const args = contract.interface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, log });\n }\n get eventName() {\n return this.fragment.name;\n }\n get eventSignature() {\n return this.fragment.format();\n }\n async getBlock() {\n return await this.log.getBlock();\n }\n async getTransaction() {\n return await this.log.getTransaction();\n }\n async getTransactionReceipt() {\n return await this.log.getTransactionReceipt();\n }\n}\n//# sourceMappingURL=wrappers.js.map","export const version = \"@ethersproject/contract@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PreparedTopicFilter_filter;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { Interface, Typed } from \"@ethersproject/abi\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { copyRequest } from \"@ethersproject/providers\";\nimport { ContractEventPayload, ContractTransactionResponse, EventLog } from \"./wrappers.js\";\nimport { logger } from \"./logger.js\";\nfunction canCall(value) {\n return (value && typeof (value.call) === \"function\");\n}\nfunction canEstimate(value) {\n return (value && typeof (value.estimateGas) === \"function\");\n}\nfunction canResolve(value) {\n return (value && typeof (value.resolveName) === \"function\");\n}\nfunction canSend(value) {\n return (value && typeof (value.sendTransaction) === \"function\");\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\nclass PreparedTopicFilter {\n constructor(contract, fragment, args) {\n _PreparedTopicFilter_filter.set(this, void 0);\n defineProperties(this, { fragment });\n if (fragment.inputs.length < args.length) {\n throw new Error(\"too many arguments\");\n }\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(contract.runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n __classPrivateFieldSet(this, _PreparedTopicFilter_filter, (async function () {\n const resolvedArgs = await Promise.all(fragment.inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n return contract.interface.encodeFilterTopics(fragment, resolvedArgs);\n })(), \"f\");\n }\n getTopicFilter() {\n return __classPrivateFieldGet(this, _PreparedTopicFilter_filter, \"f\");\n }\n}\n_PreparedTopicFilter_filter = new WeakMap();\n// A = Arguments passed in as a tuple\n// R = The result type of the call (i.e. if only one return type,\n// the qualified type, otherwise Result)\n// D = The type the default call will return (i.e. R for view/pure,\n// TransactionResponse otherwise)\n//export interface ContractMethod = Array, R = any, D extends R | ContractTransactionResponse = ContractTransactionResponse> {\nfunction _WrappedMethodBase() {\n return Function;\n}\nfunction getRunner(value, feature) {\n if (value == null) {\n return null;\n }\n if (typeof (value[feature]) === \"function\") {\n return value;\n }\n if (value.provider && typeof (value.provider[feature]) === \"function\") {\n return value.provider;\n }\n return null;\n}\nfunction getProvider(value) {\n if (value == null) {\n return null;\n }\n return value.provider || null;\n}\nexport async function copyOverrides(arg) {\n // Create a shallow copy (we'll deep-ify anything needed during normalizing)\n const overrides = copyRequest(Typed.dereference(arg, \"overrides\"));\n // Some sanity checking; these are what these methods adds\n //if ((overrides).to) {\n if (overrides.to) {\n logger.throwArgumentError(\"cannot override to\", \"overrides.to\", overrides.to);\n }\n else if (overrides.data) {\n logger.throwArgumentError(\"cannot override data\", \"overrides.data\", overrides.data);\n }\n // Resolve any from\n if (overrides.from) {\n overrides.from = await resolveAddress(overrides.from);\n }\n return overrides;\n}\nexport async function resolveArgs(_runner, inputs, args) {\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(_runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n return await Promise.all(inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n}\nclass WrappedMethod extends _WrappedMethodBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getFunctionName(key),\n _contract: contract, _key: key\n });\n const proxy = new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n const fragment = target.getFragment(...args);\n if (fragment.constant) {\n return await target.staticCall(...args);\n }\n return await target.send(...args);\n },\n });\n return proxy;\n }\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n get fragment() {\n return this._contract.interface.getFunction(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getFunction(this._key, args);\n }\n async populateTransaction(...args) {\n const fragment = this.getFragment(...args);\n // If an overrides was passed in, copy it and normalize the values\n let overrides = {};\n if (fragment.inputs.length + 1 === args.length) {\n overrides = await copyOverrides(args.pop());\n }\n if (fragment.inputs.length !== args.length) {\n throw new Error(\"internal error: fragment inputs doesn't match arguments; should not happen\");\n }\n const resolvedArgs = await resolveArgs(this._contract.runner, fragment.inputs, args);\n return Object.assign({}, overrides, await resolveProperties({\n to: this._contract.getAddress(),\n data: this._contract.interface.encodeFunctionData(fragment, resolvedArgs)\n }));\n }\n async staticCall(...args) {\n const result = await this.staticCallResult(...args);\n if (result.length === 1) {\n return result[0];\n }\n return result;\n }\n async send(...args) {\n const runner = this._contract.runner;\n if (!canSend(runner)) {\n return logger.throwError(\"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", {\n operation: \"sendTransaction\"\n });\n }\n const tx = await runner.sendTransaction(await this.populateTransaction(...args));\n const provider = getProvider(this._contract.runner);\n return new ContractTransactionResponse(this._contract.interface, provider, tx);\n }\n async estimateGas(...args) {\n const runner = getRunner(this._contract.runner, \"estimateGas\");\n if (!canEstimate(runner)) {\n return logger.throwError(\"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", {\n operation: \"estimateGas\"\n });\n }\n return await runner.estimateGas(await this.populateTransaction(...args));\n }\n async staticCallResult(...args) {\n const runner = getRunner(this._contract.runner, \"call\");\n if (!canCall(runner)) {\n return logger.throwError(\"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", {\n operation: \"call\"\n });\n }\n const fragment = this.getFragment(...args);\n const tx = await this.populateTransaction(...args);\n let result = \"0x\";\n try {\n result = await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error)) {\n throw this._contract.interface.makeError(fragment, error.data, tx);\n }\n throw error;\n }\n return this._contract.interface.decodeFunctionResult(fragment, result);\n }\n}\nfunction _WrappedEventBase() {\n return Function;\n}\nclass WrappedEvent extends _WrappedEventBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getEventName(key),\n _contract: contract, _key: key\n });\n return new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n return new PreparedTopicFilter(contract, target.getFragment(...args), args);\n },\n });\n }\n // Only works on non-ambiguous keys\n get fragment() {\n return this._contract.interface.getEvent(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getEvent(this._key, args);\n }\n}\n;\n// The combination of TypeScrype, Private Fields and Proxies makes\n// the world go boom; so we hide variables with some trickery keeping\n// a symbol attached to each BaseContract which its sub-class (even\n// via a Proxy) can reach and use to look up its internal values.\nconst internal = Symbol.for(\"_ethersInternal_contract\");\nconst internalValues = new WeakMap();\nfunction setInternal(contract, values) {\n internalValues.set(contract[internal], values);\n}\nfunction getInternal(contract) {\n return internalValues.get(contract[internal]);\n}\nfunction isDeferred(value) {\n return (value && typeof (value) === \"object\" && (\"getTopicFilter\" in value) &&\n (typeof (value.getTopicFilter) === \"function\") && value.fragment);\n}\nasync function getSubTag(contract, event) {\n let fragment;\n let topics;\n if (Array.isArray(event)) {\n // Topics; e.g. `[ \"0x1234...89ab\" ]`\n fragment = contract.interface.getEvent(event[0]);\n topics = event;\n }\n else if (typeof (event) === \"string\") {\n // Event name (name or signature); `\"Transfer\"`\n fragment = contract.interface.getEvent(event);\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else if (isDeferred(event)) {\n // Deferred Topic Filter; e.g. `contract.filter.Transfer(from)`\n fragment = event.fragment;\n topics = await event.getTopicFilter();\n }\n else if (\"fragment\" in event) {\n // ContractEvent; e.g. `contract.filter.Transfer`\n fragment = event.fragment;\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else {\n console.log(event);\n throw new Error(\"TODO\");\n }\n // Normalize topics and sort TopicSets\n topics = topics.map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const tag = topics.map((t) => {\n if (t == null) {\n return \"null\";\n }\n if (Array.isArray(t)) {\n return t.join(\"|\");\n }\n return t;\n }).join(\"&\");\n return { fragment, tag, topics };\n}\nasync function hasSub(contract, event) {\n const { subs } = getInternal(contract);\n return subs.get((await getSubTag(contract, event)).tag) || null;\n}\nasync function getSub(contract, event) {\n // Make sure our runner can actually subscribe to events\n const provider = getProvider(contract.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not support subscribing\", \"UNSUPPORTED_OPERATION\", {\n operation: \"on\"\n });\n }\n const { fragment, tag, topics } = await getSubTag(contract, event);\n const { addr, subs } = getInternal(contract);\n let sub = subs.get(tag);\n if (!sub) {\n const address = (addr ? addr : contract);\n const filter = { address, topics };\n const listener = (log) => {\n const payload = new ContractEventPayload(contract, null, event, fragment, log);\n emit(contract, event, payload.args, payload);\n };\n let started = false;\n const start = () => {\n if (started) {\n return;\n }\n provider.on(filter, listener);\n started = true;\n };\n const stop = () => {\n if (!started) {\n return;\n }\n provider.off(filter, listener);\n started = false;\n };\n sub = { tag, listeners: [], start, stop };\n subs.set(tag, sub);\n }\n return sub;\n}\nasync function _emit(contract, event, args, payload) {\n await lastEmit;\n const sub = await hasSub(contract, event);\n if (!sub) {\n return false;\n }\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const passArgs = args.slice();\n if (payload) {\n passArgs.push(new ContractEventPayload(contract, (once ? null : listener), event, payload.fragment, payload.log));\n }\n try {\n listener.call(contract, ...passArgs);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n}\n// We use this to ensure one emit resolves before firing the next to\n// ensure correct ordering (note this cannot throw and just adds the\n// notice to the event queu using setTimeout).\nlet lastEmit = Promise.resolve();\nasync function emit(contract, event, args, payload) {\n try {\n await lastEmit;\n }\n catch (error) { }\n const resultPromise = _emit(contract, event, args, payload);\n lastEmit = resultPromise;\n return await resultPromise;\n}\nconst passProperties = [\"then\"];\nexport class BaseContract {\n constructor(target, abi, runner = null, _deployTx) {\n const iface = Interface.from(abi);\n defineProperties(this, { target, runner, interface: iface });\n Object.defineProperty(this, internal, { value: {} });\n let addrPromise;\n let addr = null;\n let deployTx = null;\n if (_deployTx) {\n const provider = getProvider(runner);\n deployTx = new ContractTransactionResponse(this.interface, provider, _deployTx);\n }\n let subs = new Map();\n // Resolve the target as the address\n if (typeof (target) === \"string\") {\n if (isHexString(target)) {\n addr = target;\n addrPromise = Promise.resolve(target);\n }\n else {\n const resolver = getRunner(runner, \"resolveName\");\n if (!canResolve(resolver)) {\n throw logger.makeError(\"contract runner does not support name resolution\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\"\n });\n }\n addrPromise = resolver.resolveName(target).then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n }\n else {\n addrPromise = target.getAddress().then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n // Set our private values\n setInternal(this, { addrPromise, addr, deployTx, subs });\n // Add the event filters\n const filters = new Proxy({}, {\n get: (target, _prop, receiver) => {\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = this.getEvent(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract event: ${prop}`);\n }\n });\n defineProperties(this, { filters });\n // Return a Proxy that will respond to functions\n return new Proxy(this, {\n get: (target, _prop, receiver) => {\n if (_prop in target || passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = target.getFunction(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract method: ${prop}`);\n }\n });\n }\n async getAddress() { return await getInternal(this).addrPromise; }\n async getDeployedCode() {\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getDeployedCode\"\n });\n }\n const code = await provider.getCode(await this.getAddress());\n if (code === \"0x\") {\n return null;\n }\n return code;\n }\n async waitForDeployment() {\n // We have the deployement transaction; just use that (throws if deployement fails)\n const deployTx = this.deploymentTransaction();\n if (deployTx) {\n await deployTx.wait();\n return this;\n }\n // Check for code\n const code = await this.getDeployedCode();\n if (code != null) {\n return this;\n }\n // Make sure we can subscribe to a provider event\n const provider = getProvider(this.runner);\n if (provider == null) {\n return logger.throwError(\"contract runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"waitForDeployment\"\n });\n }\n return new Promise((resolve, reject) => {\n const checkCode = async () => {\n try {\n const code = await this.getDeployedCode();\n if (code != null) {\n return resolve(this);\n }\n provider.once(\"block\", checkCode);\n }\n catch (error) {\n reject(error);\n }\n };\n checkCode();\n });\n }\n deploymentTransaction() {\n return getInternal(this).deployTx;\n }\n getFunction(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedMethod(this, key));\n }\n getEvent(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedEvent(this, key));\n }\n async queryTransaction(hash) {\n // Is this useful?\n throw new Error(\"@TODO\");\n }\n async queryFilter(event, fromBlock = 0, toBlock = \"latest\") {\n const { addr, addrPromise } = getInternal(this);\n const address = (addr ? addr : (await addrPromise));\n const { fragment, topics } = await getSubTag(this, event);\n const filter = { address, topics, fromBlock, toBlock };\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not have a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"queryFilter\"\n });\n }\n return (await provider.getLogs(filter)).map((log) => {\n return new EventLog(log, this.interface, fragment);\n });\n }\n async on(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: false });\n sub.start();\n return this;\n }\n async once(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: true });\n sub.start();\n return this;\n }\n async emit(event, ...args) {\n return await emit(this, event, args, null);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n const { subs } = getInternal(this);\n let total = 0;\n for (const { listeners } of subs.values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n const { subs } = getInternal(this);\n let result = [];\n for (const { listeners } of subs.values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (listener == null || sub.listeners.length === 0) {\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n else {\n const { subs } = getInternal(this);\n for (const { tag, stop } of subs.values()) {\n stop();\n subs.delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return await this.off(event, listener);\n }\n static buildClass(abi) {\n class CustomContract extends BaseContract {\n constructor(address, runner = null) {\n super(address, abi, runner);\n }\n }\n return CustomContract;\n }\n ;\n static from(target, abi, runner = null) {\n const contract = new this(target, abi, runner);\n return contract;\n }\n}\nfunction _ContractBase() {\n return BaseContract;\n}\nexport class Contract extends _ContractBase() {\n}\n//# sourceMappingURL=contract.js.map","const subsChrs = \" !#$%&'()*+,-./<=>?@[]^_`{|}~\";\nconst Word = /^[a-z]*$/i;\nfunction unfold(words, sep) {\n let initial = 97;\n return words.reduce((accum, word) => {\n if (word === sep) {\n initial++;\n }\n else if (word.match(Word)) {\n accum.push(String.fromCharCode(initial) + word);\n }\n else {\n initial = 97;\n accum.push(word);\n }\n return accum;\n }, []);\n}\nexport function decode(data, subs) {\n // Replace all the substitutions with their expanded form\n for (let i = subsChrs.length - 1; i >= 0; i--) {\n data = data.split(subsChrs[i]).join(subs.substring(2 * i, 2 * i + 2));\n }\n // Get all tle clumps; each suffix, first-increment and second-increment\n const clumps = [];\n const leftover = data.replace(/(:|([0-9])|([A-Z][a-z]*))/g, (all, item, semi, word) => {\n if (semi) {\n for (let i = parseInt(semi); i >= 0; i--) {\n clumps.push(\";\");\n }\n }\n else {\n clumps.push(item.toLowerCase());\n }\n return \"\";\n });\n if (leftover) {\n throw new Error(`leftovers: ${JSON.stringify(leftover)}`);\n }\n return unfold(unfold(clumps, \";\"), \":\");\n}\nexport function decodeOwl(data) {\n if (data[0] !== \"0\") {\n throw TypeError(\"unsupported auwl data\");\n }\n return decode(data.substring(1 + 2 * subsChrs.length), data.substring(1, 1 + 2 * subsChrs.length));\n}\n//# sourceMappingURL=decode-owl.js.map","export const version = \"@ethersproject/wordlists@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { defineProperties } from \"@ethersproject/properties\";\nexport class Wordlist {\n constructor(locale) {\n defineProperties(this, { locale });\n }\n // Subclasses may override this\n split(mnemonic) {\n return mnemonic.toLowerCase().split(/ +/g);\n }\n // Subclasses may override this\n join(words) {\n return words.join(\" \");\n }\n}\n//# sourceMappingURL=wordlist.js.map","// Use the encode-latin.js script to create the necessary\n// data files to be consumed by this class\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwl_instances, _WordlistOwl_data, _WordlistOwl_checksum, _WordlistOwl_words, _WordlistOwl_loadWords;\nimport { id } from \"@ethersproject/hash\";\nimport { decodeOwl } from \"./decode-owl.js\";\nimport { logger } from \"./logger.js\";\nimport { Wordlist } from \"./wordlist.js\";\nexport class WordlistOwl extends Wordlist {\n constructor(locale, data, checksum) {\n super(locale);\n _WordlistOwl_instances.add(this);\n _WordlistOwl_data.set(this, void 0);\n _WordlistOwl_checksum.set(this, void 0);\n _WordlistOwl_words.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwl_data, data, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_checksum, checksum, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_words, null, \"f\");\n }\n get _data() { return __classPrivateFieldGet(this, _WordlistOwl_data, \"f\"); }\n _decodeWords() {\n return decodeOwl(__classPrivateFieldGet(this, _WordlistOwl_data, \"f\"));\n }\n getWord(index) {\n const words = __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this);\n if (index < 0 || index >= words.length) {\n logger.throwArgumentError(`invalid word index: ${index}`, \"index\", index);\n }\n return words[index];\n }\n getWordIndex(word) {\n return __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this).indexOf(word);\n }\n}\n_WordlistOwl_data = new WeakMap(), _WordlistOwl_checksum = new WeakMap(), _WordlistOwl_words = new WeakMap(), _WordlistOwl_instances = new WeakSet(), _WordlistOwl_loadWords = function _WordlistOwl_loadWords() {\n if (__classPrivateFieldGet(this, _WordlistOwl_words, \"f\") == null) {\n const words = this._decodeWords();\n // Verify the computed list matches the official list\n const checksum = id(words.join(\"\\n\") + \"\\n\");\n /* c8 ignore start */\n if (checksum !== __classPrivateFieldGet(this, _WordlistOwl_checksum, \"f\")) {\n throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);\n }\n /* c8 ignore stop */\n __classPrivateFieldSet(this, _WordlistOwl_words, words, \"f\");\n }\n return __classPrivateFieldGet(this, _WordlistOwl_words, \"f\");\n};\n//# sourceMappingURL=wordlist-owl.js.map","import { WordlistOwl } from \"./wordlist-owl.js\";\nconst words = \"0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-EgSe0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-PM&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryFN Noc|PutQuirySSue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurEAyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOgAyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NNGradeHoldOnP Set1BOng::Rd3Ar~ow9UUngU`:3BraRo9NeO\";\nconst checksum = \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\";\nexport class LangEn extends WordlistOwl {\n constructor() { super(\"en\", words, checksum); }\n}\nexport const langEn = new LangEn();\n//# sourceMappingURL=lang-en.js.map","export const version = \"@ethersproject/wallet@6.0.0-beta.5\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { langEn as en } from \"./lang-en.js\";\nexport const wordlists = Object.freeze({\n en\n});\n//# sourceMappingURL=wordlists-en.js.map","const Base64 = \")!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_\";\nexport function decodeBits(width, data) {\n const maxValue = (1 << width) - 1;\n const result = [];\n let accum = 0, bits = 0, flood = 0;\n for (let i = 0; i < data.length; i++) {\n // Accumulate 6 bits of data\n accum = ((accum << 6) | Base64.indexOf(data[i]));\n bits += 6;\n // While we have enough for a word...\n while (bits >= width) {\n // ...read the word\n const value = (accum >> (bits - width));\n accum &= (1 << (bits - width)) - 1;\n bits -= width;\n // A value of 0 indicates we exceeded maxValue, it\n // floods over into the next value\n if (value === 0) {\n flood += maxValue;\n }\n else {\n result.push(value + flood);\n flood = 0;\n }\n }\n }\n return result;\n}\n//# sourceMappingURL=bit-reader.js.map","import { decodeBits } from \"./bit-reader.js\";\nimport { decodeOwl } from \"./decode-owl.js\";\nexport function decodeOwlA(data, accents) {\n let words = decodeOwl(data).join(\",\");\n // Inject the accents\n accents.split(/,/g).forEach((accent) => {\n const match = accent.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);\n if (!match) {\n throw new Error(\"internal error parsing accents\");\n }\n let posOffset = 0;\n const positions = decodeBits(parseInt(match[3]), match[4]);\n const charCode = parseInt(match[2]);\n const regex = new RegExp(`([${match[1]}])`, \"g\");\n words = words.replace(regex, (all, letter) => {\n const rem = --positions[posOffset];\n if (rem === 0) {\n letter = String.fromCharCode(letter.charCodeAt(0), charCode);\n posOffset++;\n }\n return letter;\n });\n });\n return words.split(\",\");\n}\n//# sourceMappingURL=decode-owla.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwlA_accent;\nimport { WordlistOwl } from \"./wordlist-owl.js\";\nimport { decodeOwlA } from \"./decode-owla.js\";\nexport class WordlistOwlA extends WordlistOwl {\n constructor(locale, data, accent, checksum) {\n super(locale, data, checksum);\n _WordlistOwlA_accent.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwlA_accent, accent, \"f\");\n }\n get _accent() { return __classPrivateFieldGet(this, _WordlistOwlA_accent, \"f\"); }\n _decodeWords() {\n return decodeOwlA(this._data, this._accent);\n }\n}\n_WordlistOwlA_accent = new WeakMap();\n//# sourceMappingURL=wordlist-owla.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { pbkdf2, sha256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { langEn } from \"@ethersproject/wordlists\";\nimport { logger } from \"./logger.js\";\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits) {\n return ((1 << bits) - 1) << (8 - bits) & 0xff;\n}\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits) {\n return ((1 << bits) - 1) & 0xff;\n}\nfunction mnemonicToEntropy(mnemonic, wordlist = langEn) {\n logger.assertNormalize(\"NFKD\");\n if (wordlist == null) {\n wordlist = langEn;\n }\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0 || words.length < 12 || words.length > 24) {\n logger.throwArgumentError(\"invalid mnemonic length\", \"mnemonic\", \"[ REDACTED ]\");\n }\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) {\n logger.throwArgumentError(`invalid mnemonic word at index ${i}`, \"mnemonic\", \"[ REDACTED ]\");\n }\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n const entropyBits = 32 * words.length / 3;\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n logger.throwArgumentError(\"invalid mnemonic checksum\", \"mnemonic\", \"[ REDACTED ]\");\n }\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\nfunction entropyToMnemonic(entropy, wordlist = langEn) {\n if ((entropy.length % 4) || entropy.length < 16 || entropy.length > 32) {\n logger.throwArgumentError(\"invalid entropy size\", \"entropy\", \"[ REDACTED ]\");\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n const indices = [0];\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n remainingBits -= 8;\n // This byte will complete an 11-bit index\n }\n else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n remainingBits += 3;\n }\n }\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = parseInt(sha256(entropy).substring(2, 4), 16) & getUpperMask(checksumBits);\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n return wordlist.join(indices.map((index) => wordlist.getWord(index)));\n}\nconst _guard = {};\nexport class Mnemonic {\n constructor(guard, entropy, phrase, password, wordlist) {\n if (password == null) {\n password = \"\";\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n logger.assertPrivate(guard, _guard, \"Mnemonic\");\n defineProperties(this, { phrase, password, wordlist, entropy });\n }\n computeSeed() {\n const salt = toUtf8Bytes(\"mnemonic\" + this.password, UnicodeNormalizationForm.NFKD);\n return pbkdf2(toUtf8Bytes(this.phrase, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n }\n static fromPhrase(phrase, password, wordlist) {\n // Normalize the case and space; throws if invalid\n const entropy = mnemonicToEntropy(phrase, wordlist);\n phrase = entropyToMnemonic(logger.getBytes(entropy), wordlist);\n return new Mnemonic(_guard, entropy, phrase, password, wordlist);\n }\n static fromEntropy(_entropy, password, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n const phrase = entropyToMnemonic(entropy, wordlist);\n return new Mnemonic(_guard, hexlify(entropy), phrase, password, wordlist);\n }\n static entropyToPhrase(_entropy, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n return entropyToMnemonic(entropy, wordlist);\n }\n static phraseToEntropy(phrase, wordlist) {\n return mnemonicToEntropy(phrase, wordlist);\n }\n static isValidMnemonic(phrase, wordlist) {\n try {\n mnemonicToEntropy(phrase, wordlist);\n return true;\n }\n catch (error) { }\n return false;\n }\n}\n//# sourceMappingURL=mnemonic.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _BaseWallet_signingKey;\nimport { getAddress, resolveAddress } from \"@ethersproject/address\";\nimport { hashMessage, TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { AbstractSigner } from \"@ethersproject/providers\";\nimport { computeAddress, Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class BaseWallet extends AbstractSigner {\n constructor(privateKey, provider) {\n super(provider);\n _BaseWallet_signingKey.set(this, void 0);\n __classPrivateFieldSet(this, _BaseWallet_signingKey, privateKey, \"f\");\n const address = computeAddress(this.signingKey.publicKey);\n defineProperties(this, { address });\n }\n // Store these in getters to reduce visibility in console.log\n get signingKey() { return __classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"); }\n get privateKey() { return this.signingKey.privateKey; }\n async getAddress() { return this.address; }\n connect(provider) {\n return new BaseWallet(__classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"), provider);\n }\n async signTransaction(_tx) {\n // Replace any Addressable or ENS name with an address\n const tx = Object.assign({}, _tx, await resolveProperties({\n to: (_tx.to ? resolveAddress(_tx.to, this.provider) : undefined),\n from: (_tx.from ? resolveAddress(_tx.from, this.provider) : undefined)\n }));\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"tx.from\", _tx.from);\n }\n delete tx.from;\n }\n // Build the transaction\n const btx = Transaction.from(tx);\n btx.signature = this.signingKey.sign(btx.unsignedHash);\n return btx.serialized;\n }\n async signMessage(message) {\n return this.signingKey.sign(hashMessage(message)).serialized;\n }\n async signTypedData(domain, types, value) {\n // Populate any ENS names\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (name) => {\n if (this.provider == null) {\n return logger.throwError(\"cannot resolve ENS names without a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n info: { name }\n });\n }\n const address = await this.provider.resolveName(name);\n if (address == null) {\n return logger.throwError(\"unconfigured ENS name\", \"UNCONFIGURED_NAME\", {\n value: name\n });\n }\n return address;\n });\n return this.signingKey.sign(TypedDataEncoder.hash(populated.domain, types, populated.value)).serialized;\n }\n}\n_BaseWallet_signingKey = new WeakMap();\n//# sourceMappingURL=base-wallet.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _a, _HDNodeWallet_fromSeed, _HDNodeWalletManager_root;\nimport { arrayify, concat, dataSlice, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac, randomBytes, ripemd160, sha256 } from \"@ethersproject/crypto\";\nimport { decodeBase58, encodeBase58, toBigInt, toHex } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { VoidSigner } from \"@ethersproject/providers\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { langEn } from \"@ethersproject/wordlists/lib/lang-en.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nimport { BaseWallet } from \"./base-wallet.js\";\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n// \"Bitcoin seed\"\nconst MasterSecret = new Uint8Array([66, 105, 116, 99, 111, 105, 110, 32, 115, 101, 101, 100]);\nconst HardenedBit = 0x80000000;\nconst N = BigInt(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\nconst Nibbles = \"0123456789abcdef\";\nfunction zpad(value, length) {\n let result = \"\";\n while (value) {\n result = Nibbles[value % 16] + result;\n value = Math.trunc(value / 16);\n }\n while (result.length < length * 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction encodeBase58Check(_value) {\n const value = logger.getBytes(_value);\n const check = dataSlice(sha256(sha256(value)), 0, 4);\n const bytes = concat([value, check]);\n return encodeBase58(bytes);\n}\nconst _guard = {};\nfunction ser_I(index, chainCode, publicKey, privateKey) {\n const data = new Uint8Array(37);\n if (index & HardenedBit) {\n if (privateKey == null) {\n return logger.throwError(\"cannot derive child of neutered node\", \"UNSUPPORTED_OPERATION\", {\n operation: \"deriveChild\"\n });\n }\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(privateKey), 1);\n }\n else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(publicKey));\n }\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) {\n data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff);\n }\n const I = arrayify(computeHmac(\"sha512\", chainCode, data));\n return { IL: I.slice(0, 32), IR: I.slice(32) };\n}\nfunction derivePath(node, path) {\n const components = path.split(\"/\");\n if (components.length === 0 || (components[0] === \"m\" && node.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n if (components[0] === \"m\") {\n components.shift();\n }\n let result = node;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(HardenedBit + index);\n }\n else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(index);\n }\n else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n return result;\n}\nexport class HDNodeWallet extends BaseWallet {\n constructor(guard, signingKey, parentFingerprint, chainCode, path, index, depth, mnemonic, provider) {\n super(signingKey, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeWallet\");\n defineProperties(this, { publicKey: signingKey.compressedPublicKey });\n const fingerprint = dataSlice(ripemd160(sha256(this.publicKey)), 0, 4);\n defineProperties(this, {\n parentFingerprint, fingerprint,\n chainCode, path, index, depth\n });\n defineProperties(this, { mnemonic });\n }\n connect(provider) {\n return new HDNodeWallet(_guard, this.signingKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.mnemonic, provider);\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488ADE4\", zpad(this.depth, 1), this.parentFingerprint,\n zpad(this.index, 4), this.chainCode,\n concat([\"0x00\", this.privateKey])\n ]));\n }\n hasPath() { return (this.path != null); }\n neuter() {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.provider);\n }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, this.privateKey);\n const ki = new SigningKey(toHex((toBigInt(IL) + BigInt(this.privateKey)) % N, 32));\n return new HDNodeWallet(_guard, ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.mnemonic, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n static fromSeed(seed) {\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, seed, null);\n }\n static fromPhrase(phrase, password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromPhrase(phrase, password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromMnemonic(mnemonic, path = defaultPath) {\n if (!path) {\n path = defaultPath;\n }\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromExtendedKey(extendedKey) {\n const bytes = arrayify(decodeBase58(extendedKey)); // @TODO: redact\n if (bytes.length !== 82 || encodeBase58Check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[ REDACTED ]\");\n }\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\":\n case \"0x043587cf\": {\n const publicKey = hexlify(key);\n return new HDNodeVoidWallet(_guard, computeAddress(publicKey), publicKey, parentFingerprint, chainCode, null, index, depth, null);\n }\n // Private Key\n case \"0x0488ade4\":\n case \"0x04358394 \":\n if (key[0] !== 0) {\n break;\n }\n return new HDNodeWallet(_guard, new SigningKey(key.slice(1)), parentFingerprint, chainCode, null, index, depth, null, null);\n }\n return logger.throwArgumentError(\"invalid extended key prefix\", \"extendedKey\", \"[ REDACTED ]\");\n }\n static createRandom(password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromEntropy(randomBytes(16), password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n}\n_a = HDNodeWallet, _HDNodeWallet_fromSeed = function _HDNodeWallet_fromSeed(_seed, mnemonic) {\n const seed = logger.getBytes(_seed, \"seed\");\n if (seed.length < 16 || seed.length > 64) {\n throw new Error(\"invalid seed\");\n }\n const I = arrayify(computeHmac(\"sha512\", MasterSecret, seed));\n const signingKey = new SigningKey(hexlify(I.slice(0, 32)));\n return new HDNodeWallet(_guard, signingKey, \"0x00000000\", hexlify(I.slice(32)), \"m\", 0, 0, mnemonic, null);\n};\nexport class HDNodeVoidWallet extends VoidSigner {\n constructor(guard, address, publicKey, parentFingerprint, chainCode, path, index, depth, provider) {\n super(address, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeVoidWallet\");\n defineProperties(this, { publicKey });\n const fingerprint = dataSlice(ripemd160(sha256(publicKey)), 0, 4);\n defineProperties(this, {\n publicKey, fingerprint, parentFingerprint, chainCode, path, index, depth\n });\n }\n connect(provider) {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, provider);\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488B21E\",\n zpad(this.depth, 1),\n this.parentFingerprint,\n zpad(this.index, 4),\n this.chainCode,\n this.publicKey,\n ]));\n }\n hasPath() { return (this.path != null); }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, null);\n const Ki = SigningKey._addPoints(IL, this.publicKey, true);\n const address = computeAddress(Ki);\n return new HDNodeVoidWallet(_guard, address, Ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n}\nexport class HDNodeWalletManager {\n constructor(phrase, password = \"\", path = \"m/44'/60'/0'/0\", locale = langEn) {\n _HDNodeWalletManager_root.set(this, void 0);\n __classPrivateFieldSet(this, _HDNodeWalletManager_root, HDNodeWallet.fromPhrase(phrase, password, path, locale), \"f\");\n }\n getSigner(index = 0) {\n return __classPrivateFieldGet(this, _HDNodeWalletManager_root, \"f\").deriveChild(index);\n }\n}\n_HDNodeWalletManager_root = new WeakMap();\nexport function getAccountPath(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index < 0 || index >= HardenedBit) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${index}'/0/0`;\n}\n//# sourceMappingURL=hdwallet.js.map","/*! MIT License. Copyright 2015-2022 Richard Moore . See LICENSE.txt. */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AES_key, _AES_Kd, _AES_Ke;\n// Number of rounds by keysize\nconst numberOfRounds = { 16: 10, 24: 12, 32: 14 };\n// Round constant words\nconst rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n// S-box and Inverse S-box (S is for Substitution)\nconst S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\nconst Si = [0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n// Transformations for encryption\nconst T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\nconst T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\nconst T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\nconst T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n// Transformations for decryption\nconst T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\nconst T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\nconst T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\nconst T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n// Transformations for decryption key expansion\nconst U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\nconst U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\nconst U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\nconst U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\nfunction convertToInt32(bytes) {\n const result = [];\n for (let i = 0; i < bytes.length; i += 4) {\n result.push((bytes[i] << 24) | (bytes[i + 1] << 16) | (bytes[i + 2] << 8) | bytes[i + 3]);\n }\n return result;\n}\nexport class AES {\n constructor(key) {\n _AES_key.set(this, void 0);\n _AES_Kd.set(this, void 0);\n _AES_Ke.set(this, void 0);\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n __classPrivateFieldSet(this, _AES_key, new Uint8Array(key), \"f\");\n const rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new TypeError('invalid key size (must be 16, 24 or 32 bytes)');\n }\n // encryption round keys\n __classPrivateFieldSet(this, _AES_Ke, [], \"f\");\n // decryption round keys\n __classPrivateFieldSet(this, _AES_Kd, [], \"f\");\n for (let i = 0; i <= rounds; i++) {\n __classPrivateFieldGet(this, _AES_Ke, \"f\").push([0, 0, 0, 0]);\n __classPrivateFieldGet(this, _AES_Kd, \"f\").push([0, 0, 0, 0]);\n }\n const roundKeyCount = (rounds + 1) * 4;\n const KC = this.key.length / 4;\n // convert the key into ints\n const tk = convertToInt32(this.key);\n // copy values into round key arrays\n let index;\n for (let i = 0; i < KC; i++) {\n index = i >> 2;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[index][i % 4] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - index][i % 4] = tk[i];\n }\n // key expansion (fips-197 section 5.2)\n let rconpointer = 0;\n let t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (let i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n }\n else {\n for (let i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n tk[KC / 2] ^= (S[tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n for (let i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n // copy values into round key arrays\n let i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][c] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - r][c] = tk[i++];\n t++;\n }\n }\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (let r = 1; r < rounds; r++) {\n for (let c = 0; c < 4; c++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[tt & 0xFF]);\n }\n }\n }\n get key() { return __classPrivateFieldGet(this, _AES_key, \"f\").slice(); }\n encrypt(plaintext) {\n if (plaintext.length != 16) {\n throw new TypeError('invalid plaintext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Ke, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(plaintext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Ke, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T1[(t[i] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[t[(i + 3) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Ke, \"f\")[rounds][i];\n result[4 * i] = (S[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[t[(i + 3) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n decrypt(ciphertext) {\n if (ciphertext.length != 16) {\n throw new TypeError('invalid ciphertext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Kd, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(ciphertext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Kd, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T5[(t[i] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[t[(i + 1) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds][i];\n result[4 * i] = (Si[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[t[(i + 1) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n}\n_AES_key = new WeakMap(), _AES_Kd = new WeakMap(), _AES_Ke = new WeakMap();\n//# sourceMappingURL=aes.js.map","import { AES } from \"./aes.js\";\nexport class ModeOfOperation {\n constructor(name, key, cls) {\n if (cls && !(this instanceof cls)) {\n throw new Error(`${name} must be instantiated with \"new\"`);\n }\n Object.defineProperties(this, {\n aes: { enumerable: true, value: new AES(key) },\n name: { enumerable: true, value: name }\n });\n }\n}\n//# sourceMappingURL=mode.js.map","// Cipher Block Chaining\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CBC_iv, _CBC_lastBlock;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CBC extends ModeOfOperation {\n constructor(key, iv) {\n super(\"ECC\", key, CBC);\n _CBC_iv.set(this, void 0);\n _CBC_lastBlock.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CBC_iv, \"f\")); }\n encrypt(plaintext) {\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext.length);\n for (let i = 0; i < plaintext.length; i += 16) {\n for (let j = 0; j < 16; j++) {\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] ^= plaintext[i + j];\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.aes.encrypt(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\")), \"f\");\n ciphertext.set(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\"), i);\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n const plaintext = new Uint8Array(ciphertext.length);\n for (let i = 0; i < ciphertext.length; i += 16) {\n const block = this.aes.decrypt(ciphertext.subarray(i, i + 16));\n for (let j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j];\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] = ciphertext[i + j];\n }\n }\n return plaintext;\n }\n}\n_CBC_iv = new WeakMap(), _CBC_lastBlock = new WeakMap();\n//# sourceMappingURL=mode-cbc.js.map","// Cipher Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CFB_instances, _CFB_iv, _CFB_shiftRegister, _CFB_shift;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CFB extends ModeOfOperation {\n constructor(key, iv, segmentSize = 8) {\n super(\"CFB\", key, CFB);\n _CFB_instances.add(this);\n _CFB_iv.set(this, void 0);\n _CFB_shiftRegister.set(this, void 0);\n // This library currently only handles byte-aligned segmentSize\n if (!Number.isInteger(segmentSize) || (segmentSize % 8)) {\n throw new TypeError(\"invalid segmentSize\");\n }\n Object.defineProperties(this, {\n segmentSize: { enumerable: true, value: segmentSize }\n });\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CFB_shiftRegister, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CFB_iv, \"f\")); }\n encrypt(plaintext) {\n if (8 * plaintext.length % this.segmentSize) {\n throw new TypeError(\"invalid plaintext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n ciphertext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (8 * ciphertext.length % this.segmentSize) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const plaintext = new Uint8Array(ciphertext);\n for (let i = 0; i < plaintext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return plaintext;\n }\n}\n_CFB_iv = new WeakMap(), _CFB_shiftRegister = new WeakMap(), _CFB_instances = new WeakSet(), _CFB_shift = function _CFB_shift(data) {\n const segmentSize = this.segmentSize / 8;\n // Shift the register\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").subarray(segmentSize));\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(data.subarray(0, segmentSize), 16 - segmentSize);\n};\n//# sourceMappingURL=mode-cfb.js.map","// Counter Mode\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CTR_remaining, _CTR_remainingIndex, _CTR_counter;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CTR extends ModeOfOperation {\n constructor(key, initialValue) {\n super(\"CTR\", key, CTR);\n // Remaining bytes for the one-time pad\n _CTR_remaining.set(this, void 0);\n _CTR_remainingIndex.set(this, void 0);\n // The current counter\n _CTR_counter.set(this, void 0);\n __classPrivateFieldSet(this, _CTR_counter, new Uint8Array(16), \"f\");\n __classPrivateFieldGet(this, _CTR_counter, \"f\").fill(0);\n __classPrivateFieldSet(this, _CTR_remaining, __classPrivateFieldGet(this, _CTR_counter, \"f\"), \"f\"); // This will be discarded immediately\n __classPrivateFieldSet(this, _CTR_remainingIndex, 16, \"f\");\n if (initialValue == null) {\n initialValue = 1;\n }\n if (typeof (initialValue) === \"number\") {\n this.setCounterValue(initialValue);\n }\n else {\n this.setCounterBytes(initialValue);\n }\n }\n get counter() { return new Uint8Array(__classPrivateFieldGet(this, _CTR_counter, \"f\")); }\n setCounterValue(value) {\n if (!Number.isInteger(value) || value < 0 || value > Number.MAX_SAFE_INTEGER) {\n throw new TypeError(\"invalid counter initial integer value\");\n }\n for (let index = 15; index >= 0; --index) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[index] = value % 256;\n value = Math.floor(value / 256);\n }\n }\n setCounterBytes(value) {\n if (value.length !== 16) {\n throw new TypeError(\"invalid counter initial Uint8Array value length\");\n }\n __classPrivateFieldGet(this, _CTR_counter, \"f\").set(value);\n }\n increment() {\n for (let i = 15; i >= 0; i--) {\n if (__classPrivateFieldGet(this, _CTR_counter, \"f\")[i] === 255) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i] = 0;\n }\n else {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i]++;\n break;\n }\n }\n }\n encrypt(plaintext) {\n var _a, _b;\n const crypttext = new Uint8Array(plaintext);\n for (let i = 0; i < crypttext.length; i++) {\n if (__classPrivateFieldGet(this, _CTR_remainingIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _CTR_remaining, this.aes.encrypt(__classPrivateFieldGet(this, _CTR_counter, \"f\")), \"f\");\n __classPrivateFieldSet(this, _CTR_remainingIndex, 0, \"f\");\n this.increment();\n }\n crypttext[i] ^= __classPrivateFieldGet(this, _CTR_remaining, \"f\")[__classPrivateFieldSet(this, _CTR_remainingIndex, (_b = __classPrivateFieldGet(this, _CTR_remainingIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return crypttext;\n }\n decrypt(ciphertext) {\n return this.encrypt(ciphertext);\n }\n}\n_CTR_remaining = new WeakMap(), _CTR_remainingIndex = new WeakMap(), _CTR_counter = new WeakMap();\n//# sourceMappingURL=mode-ctr.js.map","// Output Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _OFB_iv, _OFB_lastPrecipher, _OFB_lastPrecipherIndex;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class OFB extends ModeOfOperation {\n constructor(key, iv) {\n super(\"OFB\", key, OFB);\n _OFB_iv.set(this, void 0);\n _OFB_lastPrecipher.set(this, void 0);\n _OFB_lastPrecipherIndex.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.iv, \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 16, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _OFB_iv, \"f\")); }\n encrypt(plaintext) {\n var _a, _b;\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i++) {\n if (__classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.aes.encrypt(__classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")), \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 0, \"f\");\n }\n ciphertext[i] ^= __classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")[__classPrivateFieldSet(this, _OFB_lastPrecipherIndex, (_b = __classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n return this.encrypt(ciphertext);\n }\n}\n_OFB_iv = new WeakMap(), _OFB_lastPrecipher = new WeakMap(), _OFB_lastPrecipherIndex = new WeakMap();\n//# sourceMappingURL=mode-ofb.js.map","export function pkcs7Pad(data) {\n const padder = 16 - (data.length % 16);\n const result = new Uint8Array(data.length + padder);\n result.set(data);\n for (let i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n}\nexport function pkcs7Strip(data) {\n if (data.length < 16) {\n throw new TypeError('PKCS#7 invalid length');\n }\n const padder = data[data.length - 1];\n if (padder > 16) {\n throw new TypeError('PKCS#7 padding byte out of range');\n }\n const length = data.length - padder;\n for (let i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new TypeError('PKCS#7 invalid padding byte');\n }\n }\n return new Uint8Array(data.subarray(0, length));\n}\n//# sourceMappingURL=padding.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\nimport { logger } from \"./logger.js\";\nexport function looseArrayify(hexString) {\n if (typeof (hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\nexport function zpad(value, length) {\n value = String(value);\n while (value.length < length) {\n value = '0' + value;\n }\n return value;\n}\nexport function getPassword(password) {\n if (typeof (password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\nexport function spelunk(object, _path) {\n const match = _path.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);\n if (match == null) {\n return logger.throwArgumentError(\"invalid path\", \"path\", _path);\n }\n const path = match[1];\n const type = match[3];\n const reqd = (match[4] === \"!\");\n let cur = object;\n for (const comp of path.toLowerCase().split('.')) {\n // Search for a child object with a case-insensitive matching key\n if (Array.isArray(cur)) {\n if (!comp.match(/^[0-9]+$/)) {\n break;\n }\n cur = cur[parseInt(comp)];\n }\n else if (typeof (cur) === \"object\") {\n let found = null;\n for (const key in cur) {\n if (key.toLowerCase() === comp) {\n found = cur[key];\n break;\n }\n }\n cur = found;\n }\n else {\n cur = null;\n }\n if (cur == null) {\n break;\n }\n }\n if (reqd && cur == null) {\n logger.throwArgumentError(\"missing required value\", \"path\", path);\n }\n if (type && cur != null) {\n if (type === \"int\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9]+$/)) {\n return parseInt(cur);\n }\n else if (Number.isSafeInteger(cur)) {\n return cur;\n }\n }\n if (type === \"number\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9.]*$/)) {\n return parseFloat(cur);\n }\n }\n if (type === \"data\") {\n if (typeof (cur) === \"string\") {\n return looseArrayify(cur);\n }\n }\n if (type === \"array\" && Array.isArray(cur)) {\n return cur;\n }\n if (type === typeof (cur)) {\n return cur;\n }\n logger.throwArgumentError(`wrong type found for ${type} `, \"path\", path);\n }\n return cur;\n}\n/*\nexport function follow(object: any, path: string): null | string {\n let currentChild = object;\n\n for (const comp of path.toLowerCase().split('/')) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comp) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n if (matchingChild === null) { return null; }\n\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// \"path/to/something:type!\"\nexport function followRequired(data: any, path: string): string {\n const value = follow(data, path);\n if (value != null) { return value; }\n return logger.throwArgumentError(\"invalid value\", `data:${ path }`,\n JSON.stringify(data));\n}\n*/\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes) {\n const bytes = logger.getBytes(randomBytes, \"randomBytes\");\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const value = hexlify(bytes);\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n//# sourceMappingURL=utils.js.map","import { CBC, pkcs7Strip } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { pbkdf2 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, looseArrayify, spelunk } from \"./utils.js\";\nexport function isCrowdsaleJson(json) {\n try {\n const data = JSON.parse(json);\n if (data.encseed) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\n// See: https://github.com/ethereum/pyethsaletool\nexport function decryptCrowdsaleJson(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n // Ethereum Address\n const address = getAddress(spelunk(data, \"ethaddr:string!\"));\n // Encrypted Seed\n const encseed = looseArrayify(spelunk(data, \"encseed:string!\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n // Decrypt the seed\n const aesCbc = new CBC(key, iv);\n const seed = pkcs7Strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n return { address, privateKey: id(seedHex) };\n}\n//# sourceMappingURL=json-crowdsale.js.map","import { CTR } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256, pbkdf2, randomBytes, scrypt, scryptSync } from \"@ethersproject/crypto\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, spelunk, uuidV4, zpad } from \"./utils.js\";\nimport { version } from \"./_version.js\";\nconst defaultPath = \"m/44'/60'/0'/0/0\";\nexport function isKeystoreJson(json) {\n try {\n const data = JSON.parse(json);\n const version = ((data.version != null) ? parseInt(data.version) : 0);\n if (version === 3) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\nfunction decrypt(data, key, ciphertext) {\n const cipher = spelunk(data, \"crypto.cipher:string\");\n if (cipher === \"aes-128-ctr\") {\n const iv = spelunk(data, \"crypto.cipherparams.iv:data!\");\n const aesCtr = new CTR(key, iv);\n return hexlify(aesCtr.decrypt(ciphertext));\n }\n return logger.throwError(\"unsupported cipher\", \"UNSUPPORTED_OPERATION\", {\n operation: \"decrypt\"\n });\n}\nfunction getAccount(data, _key) {\n const key = logger.getBytes(_key);\n const ciphertext = spelunk(data, \"crypto.ciphertext:data!\");\n const computedMAC = hexlify(keccak256(concat([key.slice(16, 32), ciphertext]))).substring(2);\n if (computedMAC !== spelunk(data, \"crypto.mac:string!\").toLowerCase()) {\n return logger.throwArgumentError(\"incorrect password\", \"password\", \"[ REDACTED ]\");\n }\n const privateKey = decrypt(data, key.slice(0, 16), ciphertext);\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") {\n check = \"0x\" + check;\n }\n if (getAddress(check) !== address) {\n logger.throwArgumentError(\"keystore address/privateKey mismatch\", \"address\", data.address);\n }\n }\n const account = { address, privateKey };\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n const version = spelunk(data, \"x-ethers.version:string\");\n if (version === \"0.1\") {\n const mnemonicKey = key.slice(32, 64);\n const mnemonicCiphertext = spelunk(data, \"x-ethers.mnemonicCiphertext:data!\");\n const mnemonicIv = spelunk(data, \"x-ethers.mnemonicCounter:data!\");\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n account.mnemonic = {\n path: (spelunk(data, \"x-ethers.path:string\") || defaultPath),\n locale: (spelunk(data, \"x-ethers.locale:string\") || \"en\"),\n entropy: hexlify(arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext)))\n };\n }\n return account;\n}\nfunction getKdfParams(data) {\n const kdf = spelunk(data, \"crypto.kdf:string\");\n if (kdf && typeof (kdf) === \"string\") {\n const throwError = function (name, value) {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n };\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const N = spelunk(data, \"crypto.kdfparams.n:int!\");\n const r = spelunk(data, \"crypto.kdfparams.r:int!\");\n const p = spelunk(data, \"crypto.kdfparams.p:int!\");\n // Check for all required parameters\n if (!N || !r || !p) {\n return throwError(\"kdf\", kdf);\n }\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) {\n return throwError(\"N\", N);\n }\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n return throwError(\"dklen\", dkLen);\n }\n return { name: \"scrypt\", salt, N, r, p, dkLen: 64 };\n }\n else if (kdf.toLowerCase() === \"pbkdf2\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const prf = spelunk(data, \"crypto.kdfparams.prf:string!\");\n const algorithm = prf.split(\"-\").pop();\n if (algorithm !== \"sha256\" && algorithm !== \"sha512\") {\n return throwError(\"prf\", prf);\n }\n const count = spelunk(data, \"crypto.kdfparams.c:int!\");\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return { name: \"pbkdf2\", salt, count, dkLen, algorithm };\n }\n }\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\nexport function decryptKeystoreJsonSync(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = scryptSync(password, salt, N, r, p, dkLen);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport async function decryptKeystoreJson(json, _password, progress) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n if (progress) {\n progress(0);\n await stall(0);\n }\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n if (progress) {\n progress(1);\n await stall(0);\n }\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = await scrypt(password, salt, N, r, p, dkLen, progress);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nexport async function encryptKeystoreJson(account, password, options, progressCallback) {\n // Check the address matches the private key\n //if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n // throw new Error(\"address/privateKey mismatch\");\n //}\n // Check the mnemonic (if any) matches the private key\n /*\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n */\n // The options are optional, so adjust the call as needed\n if (typeof (options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n const privateKey = logger.getBytes(account.privateKey, \"privateKey\");\n const passwordBytes = getPassword(password);\n /*\n let mnemonic: null | Mnemonic = null;\n let entropy: Uint8Array = null\n let path: string = null;\n let locale: string = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n mnemonic = Mnemonic.from(\n }\n */\n // Check/generate the salt\n const salt = (options.salt != null) ? logger.getBytes(options.salt, \"options.slat\") : randomBytes(32);\n // Override initialization vector\n const iv = (options.iv != null) ? logger.getBytes(options.iv, \"options.iv\") : randomBytes(16);\n if (iv.length !== 16) {\n logger.throwArgumentError(\"invalid options.iv\", \"options.iv\", options.iv);\n }\n // Override the uuid\n const uuidRandom = (options.uuid != null) ? logger.getBytes(options.uuid, \"options.uuid\") : randomBytes(16);\n if (uuidRandom.length !== 16) {\n logger.throwArgumentError(\"invalid options.uuid\", \"options.uuid\", options.iv);\n }\n if (uuidRandom.length !== 16) {\n throw new Error(\"invalid uuid\");\n }\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) {\n N = options.scrypt.N;\n }\n if (options.scrypt.r) {\n r = options.scrypt.r;\n }\n if (options.scrypt.p) {\n p = options.scrypt.p;\n }\n }\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n const _key = await scrypt(passwordBytes, salt, N, r, p, 64, progressCallback);\n const key = arrayify(_key);\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n // Encrypt the private key\n const aesCtr = new CTR(derivedKey, iv);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]));\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n Crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (account.mnemonic) {\n const client = (options.client != null) ? options.client : `ethers/${version}`;\n const path = account.mnemonic.path || defaultPath;\n const locale = account.mnemonic.locale || \"en\";\n const mnemonicKey = key.slice(32, 64);\n const entropy = logger.getBytes(account.mnemonic.entropy, \"account.mnemonic.entropy\");\n const mnemonicIv = randomBytes(16);\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\");\n const gethFilename = (\"UTC--\" + timestamp + \"--\" + data.address);\n data[\"x-ethers\"] = {\n client, gethFilename, path, locale,\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n version: \"0.1\"\n };\n }\n return JSON.stringify(data);\n}\n//# sourceMappingURL=json-keystore.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Wallet_mnemonic;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { randomBytes } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { BaseWallet } from \"./base-wallet.js\";\nimport { HDNodeWallet } from \"./hdwallet.js\";\nimport { decryptCrowdsaleJson, isCrowdsaleJson } from \"./json-crowdsale.js\";\nimport { decryptKeystoreJson, decryptKeystoreJsonSync, isKeystoreJson } from \"./json-keystore.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nfunction tryWallet(value) {\n try {\n if (!value || !value.signingKey) {\n return null;\n }\n const key = trySigningKey(value.signingKey);\n if (key == null || computeAddress(key.publicKey) !== value.address) {\n return null;\n }\n if (value.mnemonic) {\n const wallet = HDNodeWallet.fromMnemonic(value.mnemonic);\n if (wallet.privateKey !== key.privateKey) {\n return null;\n }\n }\n return value;\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\n// Try using value as mnemonic to derive the defaultPath HDodeWallet\nfunction tryMnemonic(value) {\n try {\n if (value == null || typeof (value.phrase) !== \"string\" ||\n typeof (value.password) !== \"string\" ||\n value.wordlist == null) {\n return null;\n }\n return HDNodeWallet.fromPhrase(value.phrase, value.password, null, value.wordlist);\n }\n catch (error) {\n console.log(error);\n }\n return null;\n}\nfunction trySigningKey(value) {\n try {\n if (!value || !isHexString(value.privateKey, 32)) {\n return null;\n }\n const key = value.privateKey;\n if (SigningKey.computePublicKey(key) !== value.publicKey) {\n return null;\n }\n return new SigningKey(key);\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport class Wallet extends BaseWallet {\n constructor(key, provider) {\n let signingKey = null;\n let mnemonic = null;\n // A normal private key\n if (typeof (key) === \"string\") {\n signingKey = new SigningKey(key);\n }\n // Try Wallet\n if (signingKey == null) {\n const wallet = tryWallet(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // Try Mnemonic, with the defaultPath wallet\n if (signingKey == null) {\n const wallet = tryMnemonic(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // A signing key\n if (signingKey == null) {\n signingKey = trySigningKey(key);\n }\n if (signingKey == null) {\n logger.throwArgumentError(\"invalid key\", \"key\", \"[ REDACTED ]\");\n }\n super(signingKey, provider);\n _Wallet_mnemonic.set(this, void 0);\n __classPrivateFieldSet(this, _Wallet_mnemonic, mnemonic, \"f\");\n }\n // Store this in a getter to reduce visibility in console.log\n get mnemonic() { return __classPrivateFieldGet(this, _Wallet_mnemonic, \"f\"); }\n connect(provider) {\n return new Wallet(this, provider);\n }\n async encrypt(password, options, progressCallback) {\n throw new Error(\"TODO\");\n }\n encryptSync(password, options) {\n throw new Error(\"TODO\");\n }\n static async fromEncryptedJson(json, password, progress) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = await decryptKeystoreJson(json, password, progress);\n }\n else if (isCrowdsaleJson(json)) {\n if (progress) {\n progress(0);\n await stall(0);\n }\n account = decryptCrowdsaleJson(json, password);\n if (progress) {\n progress(1);\n await stall(0);\n }\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static fromEncryptedJsonSync(json, password) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = decryptKeystoreJsonSync(json, password);\n }\n else if (isCrowdsaleJson(json)) {\n account = decryptCrowdsaleJson(json, password);\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static createRandom(provider, password, wordlist) {\n return new Wallet(Mnemonic.fromEntropy(randomBytes(16), password, wordlist), provider);\n }\n static fromMnemonic(mnemonic, provider) {\n return new Wallet(mnemonic, provider);\n }\n static fromPhrase(phrase, provider, password = \"\", wordlist) {\n return new Wallet(Mnemonic.fromPhrase(phrase, password, wordlist), provider);\n }\n}\n_Wallet_mnemonic = new WeakMap();\n//# sourceMappingURL=wallet.js.map","export const version = \"ethers@6.0.0-beta.6\";\n//# sourceMappingURL=_version.js.map"],"names":["__classPrivateFieldSet","this","__classPrivateFieldGet","version","maxValue","logger","regexNumber","_guard","internal","nibbles","BN_0","BN_1","zeros","passProperties","getValue","pbkdf2","sha256","u64.split","u64.rotrSH","u64.shrSH","u64.rotrSL","u64.shrSL","u64.rotrBH","u64.rotrBL","u64.add4L","u64.add4H","u64.add5L","u64.add5H","u64.add","u64.add3L","u64.add3H","sha512","getGlobal","crypto","randomBytes","locked","_0n","_1n","_2n","u64.rotlBH","u64.rotlSH","u64.rotlBL","u64.rotlSL","rotl","ripemd160","noble_ripemd160","crypto_random","scrypt","_nobleAsync","_nobleSync","H","Empty","BN_MAX_UINT256","_keccak256","_sha256","getTime","_a","numPad","bytesPad","encodeBytes","BN_2","BN_27","BN_28","BN_35","Signature","secp256k1.utils","secp256k1.signSync","secp256k1.Signature","secp256k1.getSharedSecret","secp256k1.getPublicKey","secp256k1.Point","secp256k1.recoverPublicKey","copyRequest","copy","concisify","defaultApiKey","getHost","stall","WebSocket","en","defaultPath"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,iBAAiB,CAAC,KAAK,EAAE;AAC/C,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,IAAI,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK;AAC/C,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAQD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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AAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/E,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE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EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG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AO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,OAAO,CAAC,CAAC,E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C,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AAChE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AAClD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AAC3D,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;AAChC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AACzC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AACzC,IAAI,EAAE,C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,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3gD,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5gD;AACA,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG;AACA,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG;AACA,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5gG,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAA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"} \ No newline at end of file diff --git a/packages/ethers/dist/ethers.min.js b/packages/ethers/dist/ethers.min.js index 407a0f939..6da8806fc 100644 --- a/packages/ethers/dist/ethers.min.js +++ b/packages/ethers/dist/ethers.min.js @@ -1,6 +1,6 @@ -async function t(t){const e=Object.keys(t);return(await Promise.all(e.map((e=>Promise.resolve(t[e]))))).reduce(((t,r,n)=>(t[e[n]]=r,t)),{})}function e(t,e){const r=e.split("|").map((t=>t.trim()));for(let n=0;n{try{if("test"!=="test".normalize(e))throw new Error("bad");if("NFD"===e){const t=String.fromCharCode(233).normalize("NFD");if(t!==String.fromCharCode(101,769))throw new Error("broken")}t.push(e)}catch(t){}return t}),[]);function v(t,e,r){Object.defineProperty(t,e,{enumerable:!0,writable:!1,value:r})}const E=9007199254740991,A={};A.INVALID_ARGUMENT=TypeError,A.NUMERIC_FAULT=RangeError,A.BUFFER_OVERRUN=RangeError;class T{constructor(t){h.add(this),v(this,"version",t||"_")}makeError(t,e,r){{const s=[];if(r)for(const t in r){const e=r[t];try{s.push(t+"="+JSON.stringify(e))}catch(n){s.push(t+"=[could not serialize object]")}}s.push(`code=${e}`),s.push(`version=${this.version}`),s.length&&(t+=" ("+s.join(", ")+")")}const n=new(A[e]||Error)(t);if(v(n,"code",e),r)for(const t in r)v(n,t,r[t]);return n}throwError(t,e,r){throw this.makeError(t,e,r)}throwArgumentError(t,e,r){return this.throwError(t,"INVALID_ARGUMENT",{argument:e,value:r})}assert(t,e,r,n){t||this.throwError(e,r||"UNKNOWN_ERROR",n)}assertArgument(t,e,r,n){return this.assert(t,e,"INVALID_ARGUMENT",{argument:r,value:n})}assertIntegerArgument(t,e,r,n){let s=null;"number"!=typeof e?s="expected a number":Number.isInteger(e)?(null!=r&&en)&&(s="value is out of range"):s="invalid integer",s&&this.throwArgumentError(s,t,e)}assertSafeUint53(t,e){this.assertArgument("number"==typeof t,"invalid number","value",t),null==e&&(e="value not safe");const r="assertSafeInteger";this.assert(t>=0&&t<9007199254740991,e,"NUMERIC_FAULT",{operation:r,fault:"out-of-safe-range",value:t}),this.assert(t%1==0,e,"NUMERIC_FAULT",{operation:r,fault:"non-integer",value:t})}assertNormalize(t){-1===b.indexOf(t)&&this.throwError("platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:t}})}assertPrivate(t,e,r=""){if(t!==e){let t=r,e="new";r&&(t+=".",e+=" "+r),this.throwError(`private constructor; use ${t}from* methods`,"UNSUPPORTED_OPERATION",{operation:e})}}assertArgumentCount(t,e,r=""){r&&(r=": "+r),this.assert(t>=e,"missing arguemnt"+r,"MISSING_ARGUMENT",{count:t,expectedCount:e}),this.assert(t>=e,"too many arguemnts"+r,"UNEXPECTED_ARGUMENT",{count:t,expectedCount:e})}getBytes(t,e){return w(this,h,"m",f).call(this,t,e,!1)}getBytesCopy(t,e){return w(this,h,"m",f).call(this,t,e,!0)}getNumber(t,e){switch(typeof t){case"bigint":return(t<-E||t>E)&&this.throwArgumentError("overflow",e||"value",t),Number(t);case"number":return Number.isInteger(t)?(t<-E||t>E)&&this.throwArgumentError("overflow",e||"value",t):this.throwArgumentError("underflow",e||"value",t),t;case"string":try{return this.getNumber(BigInt(t),e)}catch(r){this.throwArgumentError(`invalid numeric string: ${r.message}`,e||"value",t)}}return this.throwArgumentError("invalid numeric value",e||"value",t)}getBigInt(t,e){switch(typeof t){case"bigint":return t;case"number":return Number.isInteger(t)?(t<-E||t>E)&&this.throwArgumentError("overflow",e||"value",t):this.throwArgumentError("underflow",e||"value",t),BigInt(t);case"string":try{return BigInt(t)}catch(r){this.throwArgumentError(`invalid BigNumberish string: ${r.message}`,e||"value",t)}}return this.throwArgumentError("invalid BigNumberish value",e||"value",t)}debug(...t){w(this,h,"m",d).call(this,p.DEBUG,t)}info(...t){w(this,h,"m",d).call(this,p.INFO,t)}warn(...t){w(this,h,"m",d).call(this,p.WARNING,t)}static globalLogger(){return y||(y=new T("@ethersproject/logger@6.0.0-beta.3")),y}static setLogLevel(t){const e=g[t.toLowerCase()];null!=e?m=e:T.globalLogger().warn("invalid log level - "+t)}}h=new WeakSet,f=function(t,e,r){if(t instanceof Uint8Array)return r?new Uint8Array(t):t;if("string"==typeof t&&t.match(/^0x([0-9a-f][0-9a-f])*$/i)){const e=new Uint8Array((t.length-2)/2);let r=2;for(let n=0;ng[r]||console.log.apply(console,e)},T.LogLevels=p;const k=new T("@ethersproject/abi@6.0.0-beta.3");var P,N,x,O,I,S,R,B=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},_=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function C(t){const e=new Set;return t.forEach((t=>e.add(t))),Object.freeze(e)}!function(t){t.sighash="sighash",t.minimal="minimal",t.full="full",t.json="json"}(R||(R={}));const F="constant external internal payable private public pure view",U=C(F.split(" ")),L="constructor error event function struct",D=C(L.split(" ")),M="calldata memory storage payable indexed",G=C(M.split(" ")),j=C([L,M,"tuple returns",F].join(" ").split(" ")),$={"(":"OPEN_PAREN",")":"CLOSE_PAREN","[":"OPEN_BRACKET","]":"CLOSE_BRACKET",",":"COMMA","@":"AT"},z=new RegExp("^(\\s*)"),W=new RegExp("^([0-9]+)"),H=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)"),V=new RegExp("^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))");class K{constructor(t){P.add(this),N.set(this,void 0),x.set(this,void 0),B(this,N,0,"f"),B(this,x,t.slice(),"f")}get offset(){return _(this,N,"f")}get length(){return _(this,x,"f").length-_(this,N,"f")}clone(){return new K(_(this,x,"f"))}reset(){B(this,N,0,"f")}popKeyword(t){const e=this.peek();if("KEYWORD"!==e.type||!t.has(e.text))throw new Error(`expected keyword ${e.text}`);return this.pop().text}popType(t){if(this.peek().type!==t)throw new Error(`expected ${t}; got ${JSON.stringify(this.peek())}`);return this.pop().text}popParen(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=_(this,P,"m",O).call(this,_(this,N,"f")+1,t.match+1);return B(this,N,t.match+1,"f"),e}popParams(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=[];for(;_(this,N,"f")=_(this,x,"f").length)throw new Error("out-of-bounds");return _(this,x,"f")[_(this,N,"f")]}peekKeyword(t){const e=this.peekType("KEYWORD");return null!=e&&t.has(e)?e:null}peekType(t){if(0===this.length)return null;const e=this.peek();return e.type===t?e.text:null}pop(){var t;const e=this.peek();return B(this,N,(t=_(this,N,"f"),++t),"f"),e}toString(){const t=[];for(let e=_(this,N,"f");e<_(this,x,"f").length;e++){const r=_(this,x,"f")[e];t.push(`${r.type}:${r.text}`)}return``}}function J(t){const e=[],r=e=>{const r=i0&&"NUMBER"===e[e.length-1].type){const r=e.pop().text;t=r+t,e[e.length-1].value=k.getNumber(r)}if(0===e.length||"BRACKET"!==e[e.length-1].type)throw new Error("missing opening bracket");e[e.length-1].text+=t}}else if(a=o.match(H),a){if(c.text=a[1],i+=c.text.length,j.has(c.text)){c.type="KEYWORD";continue}if(c.text.match(V)){c.type="TYPE";continue}c.type="ID"}else{if(a=o.match(W),!a)throw new Error(`unexpected token ${JSON.stringify(o[0])} at position ${i}`);c.text=a[1],c.type="NUMBER",i+=c.text.length}}return new K(e.map((t=>Object.freeze(t))))}function q(t,e){let r=[];for(const n in e.keys())t.has(n)&&r.push(n);if(r.length>1)throw new Error(`conflicting types: ${r.join(", ")}`)}function X(t,e){if(e.peekKeyword(D)){const r=e.pop().text;if(r!==t)throw new Error(`expected ${t}, got ${r}`)}return e.popType("ID")}function Y(t,e){const r=new Set;for(;;){const n=t.peekType("KEYWORD");if(null==n||e&&!e.has(n))break;if(t.pop(),r.has(n))throw new Error(`duplicate keywords: ${JSON.stringify(n)}`);r.add(n)}return Object.freeze(r)}function Z(t,e){return t.popParams().map((t=>it.fromTokens(t,e)))}function Q(t){if(t.peekType("AT")){if(t.pop(),t.peekType("NUMBER"))return k.getBigInt(t.pop().text);throw new Error("invalid gas")}return null}function tt(t){if(t.length)throw new Error(`unexpected tokens: ${t.toString()}`)}N=new WeakMap,x=new WeakMap,P=new WeakSet,O=function(t=0,e=0){return new K(_(this,x,"f").slice(t,e).map((e=>Object.freeze(Object.assign({},e,{match:e.match-t,linkBack:e.linkBack-t,linkNext:e.linkNext-t})))))};const et=new RegExp(/^(.*)\[([0-9]*)\]$/);function rt(t){const e=t.match(V);if(!e)return k.throwArgumentError("invalid type","type",t);if("uint"===t)return"uint256";if("int"===t)return"int256";if(e[2]){const r=parseInt(e[2]);(0===r||r>32)&&k.throwArgumentError("invalid bytes length","type",t)}else if(e[3]){const r=parseInt(e[3]);(0===r||r>256||r%8)&&k.throwArgumentError("invalid numeric width","type",t)}return t}const nt={},st=Symbol.for("_ethers_internal");class it{constructor(t,e,n,s,i,o,a,c){if(I.add(this),k.assertPrivate(t,nt,"ParamType"),Object.defineProperty(this,st,{value:"_ParamTypeInternal"}),o&&(o=Object.freeze(o.slice())),"array"===s){if(null==a||null==c)throw new Error("")}else if(null!=a||null!=c)throw new Error("");if("tuple"===s){if(null==o)throw new Error("")}else if(null!=o)throw new Error("");r(this,{name:e,type:n,baseType:s,indexed:i,components:o,arrayLength:a,arrayChildren:c})}format(t=R.sighash){if(R[t]||k.throwArgumentError("invalid format type","format",t),t===R.json){let e={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(e.indexed=this.indexed),this.isTuple()&&(e.components=this.components.map((e=>JSON.parse(e.format(t))))),JSON.stringify(e)}let e="";return this.isArray()?(e+=this.arrayChildren.format(t),e+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`):this.isTuple()?(t!==R.sighash&&(e+=this.type),e+="("+this.components.map((e=>e.format(t))).join(t===R.full?", ":",")+")"):e+=this.type,t!==R.sighash&&(!0===this.indexed&&(e+=" indexed"),t===R.full&&this.name&&(e+=" "+this.name)),e}static isArray(t){return t&&"array"===t.baseType}isArray(){return"array"===this.baseType}isTuple(){return"tuple"===this.baseType}isIndexable(){return null!=this.indexed}walk(t,e){if(this.isArray()){if(!Array.isArray(t))throw new Error("invlaid array value");if(-1!==this.arrayLength&&t.length!==this.arrayLength)throw new Error("array is wrong length");return t.map((t=>this.arrayChildren.walk(t,e)))}if(this.isTuple()){if(!Array.isArray(t))throw new Error("invlaid tuple value");if(t.length!==this.components.length)throw new Error("array is wrong length");return t.map(((t,r)=>this.components[r].walk(t,e)))}return e(this.type,t)}async walkAsync(t,e){const r=[],n=[t];return _(this,I,"m",S).call(this,r,t,e,(t=>{n[0]=t})),r.length&&await Promise.all(r),n[0]}static from(t,e){if(it.isParamType(t))return t;if("string"==typeof t)return it.fromTokens(J(t),e);if(t instanceof K)return it.fromTokens(t,e);const r=t.name;!r||"string"==typeof r&&r.match(H)||k.throwArgumentError("invalid name","obj.name",r);let n=t.indexed;null!=n&&(e||k.throwArgumentError("parameter cannot be indexed","obj.indexed",t.indexed),n=!!n);let s=t.type,i=s.match(et);if(i){const e=i[2],o=it.from({type:i[1],components:t.components});return new it(nt,r,s,"array",n,null,e,o)}if("tuple("===s.substring(0,5)||"("===s[0]){const e=null!=t.components?t.components.map((t=>it.from(t))):null;return new it(nt,r,s,"tuple",n,e,null,null)}return s=rt(t.type),new it(nt,r,s,s,n,null,null,null)}static fromObject(t,e){throw new Error("@TODO")}static fromTokens(t,e){let r="",n="",s=null;Y(t,C(["tuple"])).has("tuple")||t.peekType("OPEN_PAREN")?(n="tuple",s=t.popParams().map((t=>it.from(t))),r=`tuple(${s.map((t=>t.format())).join(",")})`):(r=rt(t.popType("TYPE")),n=r);let i=null,o=null;for(;t.length&&t.peekType("BRACKET");){const e=t.pop();i=new it(nt,"",r,n,null,s,o,i),o=e.value,r+=e.text,n="array",s=null}let a=null;if(Y(t,G).has("indexed")){if(!e)throw new Error("");a=!0}const c=t.peekType("ID")?t.pop().text:"";if(t.length)throw new Error("leftover tokens");return new it(nt,c,r,n,a,s,o,i)}static isParamType(t){return t&&"_ParamTypeInternal"===t[st]}}var ot;I=new WeakSet,S=function t(e,r,n,s){if(this.isArray()){if(!Array.isArray(r))throw new Error("invlaid array value");if(-1!==this.arrayLength&&r.length!==this.arrayLength)throw new Error("array is wrong length");const i=this.arrayChildren,o=r.slice();return o.forEach(((r,s)=>{_(i,I,"m",t).call(i,e,r,n,(t=>{o[s]=t}))})),void s(o)}if(this.isTuple()){const i=this.components;let o;if(Array.isArray(r))o=r.slice();else{if(null==r||"object"!=typeof r)throw new Error("invlaid tuple value");o=i.map((t=>{if(!t.name)throw new Error("cannot use object value with unnamed components");if(!(t.name in r))throw new Error(`missing value for component ${t.name}`);return r[t.name]}))}if(r.length!==this.components.length)throw new Error("array is wrong length");return o.forEach(((r,s)=>{var a;_(a=i[s],I,"m",t).call(a,e,r,n,(t=>{o[s]=t}))})),void s(o)}const i=n(this.type,r);i.then?e.push(async function(){s(await i)}()):s(i)},function(t){t.constructor="constructor",t.error="error",t.event="event",t.function="function",t.struct="struct"}(ot||(ot={}));class at{constructor(t,e,n){k.assertPrivate(t,nt,"Fragment"),r(this,{type:e,inputs:n=Object.freeze(n.slice())})}static from(t){if("string"==typeof t)return this.fromString(t);if(t instanceof K)return this.fromTokens(t);if("object"==typeof t)return this.fromObject(t);throw new Error(`unsupported type: ${t}`)}static fromObject(t){switch(t.type){case"constructor":return ft.fromObject(t);case"error":return ut.fromObject(t);case"event":return ht.fromObject(t);case"function":return dt.fromObject(t);case"struct":return pt.fromObject(t)}throw new Error("not implemented yet")}static fromString(t){try{at.from(JSON.parse(t))}catch(t){}return at.fromTokens(J(t))}static fromTokens(t){const e=t.popKeyword(D);switch(e){case"constructor":return ft.fromTokens(t);case"error":return ut.fromTokens(t);case"event":return ht.fromTokens(t);case"function":return dt.fromTokens(t);case"struct":return pt.fromTokens(t)}throw new Error(`unsupported type: ${e}`)}static isConstructor(t){return t&&"constructor"===t.type}static isError(t){return t&&"error"===t.type}static isEvent(t){return t&&"event"===t.type}static isFunction(t){return t&&"function"===t.type}static isStruct(t){return t&&"struct"===t.type}}class ct extends at{constructor(t,e,n,s){super(t,e,s),s=Object.freeze(s.slice()),r(this,{name:n})}}function lt(t,e){return"("+e.map((e=>e.format(t))).join(t===R.full?", ":",")+")"}class ut extends ct{constructor(t,e,r){super(t,ot.error,e,r)}format(t=R.sighash){if(R[t]||k.throwArgumentError("invalid format type","format",t),t===R.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[];return t!==R.sighash&&e.push("error"),e.push(this.name+lt(t,this.inputs)),e.join(" ")}static fromString(t){return ut.fromTokens(J(t))}static fromTokens(t){const e=X("error",t),r=Z(t);return tt(t),new ut(nt,e,r)}}class ht extends ct{constructor(t,e,n,s){super(t,ot.event,e,n),r(this,{anonymous:s})}format(t=R.sighash){if(R[t]||k.throwArgumentError("invalid format type","format",t),t===R.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[];return t!==R.sighash&&e.push("event"),e.push(this.name+lt(t,this.inputs)),t!==R.sighash&&this.anonymous&&e.push("anonymous"),e.join(" ")}static fromString(t){return ht.fromTokens(J(t))}static fromTokens(t){const e=X("event",t),r=Z(t,!0),n=!!Y(t,C(["anonymous"])).has("anonymous");return tt(t),new ht(nt,e,r,n)}}class ft extends at{constructor(t,e,n,s,i){super(t,e,n),r(this,{payable:s,gas:i})}format(t=R.sighash){if(R[t]||k.throwArgumentError("invalid format type","format",t),t===R.sighash&&k.throwError("cannot format a constructor for sighash","UNSUPPORTED_OPERATION",{operation:"format(sighash)"}),t===R.json)return JSON.stringify({type:"constructor",stateMutability:this.payable?"payable":"undefined",payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[`constructor${lt(t,this.inputs)}`];return e.push(this.payable?"payable":"nonpayable"),null!=this.gas&&e.push(`@${this.gas.toString()}`),e.join(" ")}static fromString(t){return ft.fromTokens(J(t))}static fromObject(t){throw new Error("TODO")}static fromTokens(t){Y(t,C(["constructor"]));const e=Z(t),r=!!Y(t,C(["payable"])).has("payable"),n=Q(t);return tt(t),new ft(nt,ot.constructor,e,r,n)}}class dt extends ct{constructor(t,e,n,s,i,o){super(t,ot.function,e,s);r(this,{constant:"view"===n||"pure"===n,gas:o,outputs:i=Object.freeze(i.slice()),payable:"payable"===n,stateMutability:n})}format(t=R.sighash){if(R[t]||k.throwArgumentError("invalid format type","format",t),t===R.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map((e=>JSON.parse(e.format(t)))),outputs:this.outputs.map((e=>JSON.parse(e.format(t))))});const e=[];return t!==R.sighash&&e.push("function"),e.push(this.name+lt(t,this.inputs)),t!==R.sighash&&("nonpayable"!==this.stateMutability&&e.push(this.stateMutability),this.outputs&&this.outputs.length&&(e.push("returns"),e.push(lt(t,this.outputs))),null!=this.gas&&e.push(`@${this.gas.toString()}`)),e.join(" ")}static fromString(t){return dt.fromTokens(J(t))}static fromTokens(t){const e=X("function",t),r=Z(t),n=function(t){let e=Y(t,U);return q(e,C("constant payable nonpayable".split(" "))),q(e,C("pure view payable nonpayable".split(" "))),e.has("view")?"view":e.has("pure")?"pure":e.has("payable")?"payable":e.has("nonpayable")?"nonpayable":e.has("constant")?"view":"nonpayable"}(t);let s=[];Y(t,C(["returns"])).has("returns")&&(s=Z(t));const i=Q(t);return tt(t),new dt(nt,e,n,r,s,i)}}class pt extends ct{format(){throw new Error("@TODO")}static fromString(t){return pt.fromTokens(J(t))}static fromTokens(t){const e=X("struct",t),r=Z(t);return tt(t),new pt(nt,ot.struct,e,r)}}const wt=new T("@ethersproject/math@6.0.0-beta.3"),gt=BigInt(0);function mt(t){if(t instanceof Uint8Array){let e="0x0";for(const r of t)e+="0123456789abcdef"[r>>4],e+="0123456789abcdef"[15&r];return BigInt(e)}return wt.getBigInt(t,"value")}function yt(t){const e=mt(t);return(e<-9007199254740991||e>9007199254740991)&&wt.throwArgumentError("overflow","value",t),Number(e)}function bt(t,e){const r=wt.getBigInt(t,"value");if(r<0)throw new Error("cannot convert negative value to hex");let n=r.toString(16);if(null==e)n.length%2&&(n="0"+n);else{const t=wt.getNumber(e,"width");if(2*t>n-At){return-((~r&(At<256||t%1)&&wt.throwArgumentError("invalid decimal length","decimals",t),BigInt("1"+Ct.substring(0,t))}function Ut(t,e){null==e&&(e=18);let r=wt.getBigInt(t,"value");const n=Ft(wt.getNumber(e,"decimals")),s=String(n),i=r<0;i&&(r*=Bt);let o=String(r%n);for(;o.length1&&"0"===o.substring(o.length-1);)o=o.substring(0,o.length-1);let a=String(r/n);return 1!==s.length&&(a+="."+o),i&&(a="-"+a),a}function Lt(t,e){null==e&&(e=18);const r=Ft(wt.getNumber(e,"decimals"));"string"==typeof t&&t.match(/^-?[0-9.]+$/)||wt.throwArgumentError("invalid decimal value","value",t);const n="-"===t.substring(0,1);n&&(t=t.substring(1)),"."===t&&wt.throwArgumentError("missing value","value",t);const s=t.split(".");s.length>2&&wt.throwArgumentError("too many decimal points","value",t);let i=s[0]||"0",o=s[1]||"0";for(;"0"===o[o.length-1];)o=o.substring(0,o.length-1);for(o.length>String(r).length-1&&_t("fractional component exceeds decimals","underflow","parseFixed"),""===o&&(o="0");o.lengthnull==t[e]?n:(typeof t[e]!==r&&wt.throwArgumentError("invalid fixed format ("+e+" not "+r+")","format."+e,t[e]),t[e]);e=s("signed","boolean",e),r=s("width","number",r),n=s("decimals","number",n)}return r%8&&wt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",r),n>80&&wt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new Dt(Rt,e,r,n)}}class Mt{constructor(t,e,r,n){Nt.add(this),xt.set(this,void 0),t!==Rt&&wt.throwError("cannot use FixedNumber constructor; use FixedNumber.from","UNSUPPORTED_OPERATION",{operation:"new FixedFormat"}),this.format=Dt.from(n),It(this,xt,r,"f"),this._isFixedNumber=!0,Object.freeze(this)}addUnsafe(t){St(this,Nt,"m",Ot).call(this,t);const e=Lt(St(this,xt,"f"),this.format.decimals),r=Lt(St(t,xt,"f"),t.format.decimals);return Mt.fromValue(e+r,this.format.decimals,this.format)}subUnsafe(t){St(this,Nt,"m",Ot).call(this,t);const e=Lt(St(this,xt,"f"),this.format.decimals),r=Lt(St(t,xt,"f"),t.format.decimals);return Mt.fromValue(e-r,this.format.decimals,this.format)}mulUnsafe(t){St(this,Nt,"m",Ot).call(this,t);const e=Lt(St(this,xt,"f"),this.format.decimals),r=Lt(St(t,xt,"f"),t.format.decimals);return Mt.fromValue(e*r/this.format._multiplier,this.format.decimals,this.format)}divUnsafe(t){St(this,Nt,"m",Ot).call(this,t);const e=Lt(St(this,xt,"f"),this.format.decimals),r=Lt(St(t,xt,"f"),t.format.decimals);return Mt.fromValue(e*this.format._multiplier/r,this.format.decimals,this.format)}floor(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=Mt.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return this.isNegative()&&r&&(e=e.subUnsafe(Gt.toFormat(e.format))),e}ceiling(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=Mt.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return!this.isNegative()&&r&&(e=e.addUnsafe(Gt.toFormat(e.format))),e}round(t){null==t&&(t=0);const e=this.toString().split(".");if(1===e.length&&e.push("0"),(t<0||t>80||t%1)&&wt.throwArgumentError("invalid decimal count","decimals",t),e[1].length<=t)return this;const r=Mt.from("1"+Ct.substring(0,t),this.format),n=jt.toFormat(this.format);return this.mulUnsafe(r).addUnsafe(n).floor().divUnsafe(r)}isZero(){return"0.0"===St(this,xt,"f")||"0"===St(this,xt,"f")}isNegative(){return"-"===St(this,xt,"f")[0]}toString(){return St(this,xt,"f")}toHexString(t){throw new Error("TODO")}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return Mt.fromString(St(this,xt,"f"),t)}static fromValue(t,e=0,r="fixed"){return Mt.fromString(Ut(t,e),Dt.from(r))}static fromString(t,e="fixed"){const r=Dt.from(e),n=Lt(t,r.decimals);!r.signed&&n<0&&_t("unsigned value cannot be negative","overflow","value",t);const s=r.signed?bt(kt(n,r.width)):bt(n,r.width/8),i=Ut(n,r.decimals);return new Mt(Rt,s,i,r)}static fromBytes(t,e="fixed"){const r=wt.getBytes(t,"value"),n=Dt.from(e);if(r.length>n.width/8)throw new Error("overflow");let s=mt(r);n.signed&&(s=Tt(s,n.width));const i=bt(kt(s,(n.signed?0:1)+n.width)),o=Ut(s,n.decimals);return new Mt(Rt,i,o,n)}static from(t,e){if("string"==typeof t)return Mt.fromString(t,e);if(t instanceof Uint8Array)return Mt.fromBytes(t,e);try{return Mt.fromValue(t,0,e)}catch(t){if("INVALID_ARGUMENT"!==t.code)throw t}return wt.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!(!t||!t._isFixedNumber)}}xt=new WeakMap,Nt=new WeakSet,Ot=function(t){this.format.name!==t.format.name&&wt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)};const Gt=Mt.from(1),jt=Mt.from("0.5"),$t="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";let zt=null;function Wt(t){if(null==zt){zt={};for(let t=0;t<$t.length;t++)zt[$t[t]]=BigInt(t)}const e=zt[t];return null==e&&wt.throwArgumentError("invalid base58 value","letter",t),e}const Ht=BigInt(0),Vt=BigInt(58);function Kt(t){let e=mt(wt.getBytes(t)),r="";for(;e;)r=$t[Number(e%Vt)]+r,e/=Vt;return r}function Jt(t){let e=Ht;for(let r=0;r>=ne;return 0===e.length&&e.push(0),new Uint8Array(e)}if((e=t)&&"function"==typeof e.toHexString)return ie(t.toHexString());var e;if("string"==typeof t){let e=t;if(!e.match(/^0x[0-9a-f]*$/i))throw new RangeError(`invalid hex data string (${JSON.stringify(t)})`);const r=[];for(let t=2;t>4]+"0123456789abcdef"[15&n]}return r}function ue(t){let e=le(ie(t)).substring(2);for(;"0"===e.substring(0,1);)e=e.substring(1);return""===e&&(e="0"),"0x"+e}function he(t){return"0x"+t.map((t=>le(t).substring(2))).join("")}function fe(t){return te(t,!0)?(t.length-2)/2:oe(t).length}function de(t,e,r){const n=oe(t);return null!=r&&r>n.length&&re.throwError("cannot slice beyond data bounds","BUFFER_OVERRUN",{buffer:n,length:n.length,offset:r}),le(n.slice(null==e?0:e,null==r?n.length:r))}function pe(t){let e=le(t).substring(2);for(;"00"==e.substring(0,2);)e=e.substring(2);return"0x"+e}function we(t,e,r){const n=oe(t);e{null!=t&&(Se(this,be,"f").has(t)?Se(this,be,"f").get(t).push(e):Se(this,be,"f").set(t,[e]))})),Object.freeze(this),new Proxy(this,{get:(t,e,r)=>{if("string"==typeof e){if(e.match(/^[0-9]+$/)){const r=k.getNumber(e,"%index");if(r<0||r>=this.length)throw new RangeError("out of result range");const n=t[r];return n instanceof Error&&Se(this,ye,"m",ve).call(this,`index ${r}`,n),n}if(e in t||Be.indexOf(e)>=0)return Reflect.get(t,e,r);if(!(e in t))return t.getValue(e)}return Reflect.get(t,e,r)}})}slice(t,e){null==t&&(t=0),null==e&&(e=this.length);const r=[];for(let n=t;n32&&k.throwError("value out-of-bounds","BUFFER_OVERRUN",{buffer:e,length:32,offset:e.length}),32!==e.length&&(e=ie(he([Re.slice(e.length%32),e]))),e}be=new WeakMap,ye=new WeakSet,ve=function(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);throw r.error=e,r};class Ue{constructor(t,e,n,s){r(this,{name:t,type:e,localName:n,dynamic:s},{name:"string",type:"string",localName:"string",dynamic:"boolean"})}_throwError(t,e){return k.throwArgumentError(t,this.localName,e)}}class Le{constructor(){Ee.add(this),Ae.set(this,void 0),Te.set(this,void 0),Ie(this,Ae,[],"f"),Ie(this,Te,0,"f")}get data(){return he(Se(this,Ae,"f"))}get length(){return Se(this,Te,"f")}appendWriter(t){return Se(this,Ee,"m",ke).call(this,ie(t.data))}writeBytes(t){let e=ie(t);const r=e.length%32;return r&&(e=ie(he([e,Re.slice(r)]))),Se(this,Ee,"m",ke).call(this,e)}writeValue(t){return Se(this,Ee,"m",ke).call(this,Fe(t))}writeUpdatableValue(){const t=Se(this,Ae,"f").length;return Se(this,Ae,"f").push(Re),Ie(this,Te,Se(this,Te,"f")+32,"f"),e=>{Se(this,Ae,"f")[t]=Fe(e)}}}Ae=new WeakMap,Te=new WeakMap,Ee=new WeakSet,ke=function(t){return Se(this,Ae,"f").push(t),Ie(this,Te,Se(this,Te,"f")+t.length,"f"),t.length};class De{constructor(t,e){Pe.add(this),Ne.set(this,void 0),xe.set(this,void 0),r(this,{allowLoose:!!e}),Ie(this,Ne,ie(t),"f"),Ie(this,xe,0,"f")}get data(){return le(Se(this,Ne,"f"))}get dataLength(){return Se(this,Ne,"f").length}get consumed(){return Se(this,xe,"f")}get bytes(){return new Uint8Array(Se(this,Ne,"f"))}subReader(t){return new De(Se(this,Ne,"f").slice(Se(this,xe,"f")+t),this.allowLoose)}readBytes(t,e){let r=Se(this,Pe,"m",Oe).call(this,0,t,!!e);return Ie(this,xe,Se(this,xe,"f")+r.length,"f"),r.slice(0,t)}readValue(){return mt(this.readBytes(32))}readIndex(){return yt(this.readBytes(32))}}Ne=new WeakMap,xe=new WeakMap,Pe=new WeakSet,Oe=function(t,e,r){let n=32*Math.ceil(e/32);return Se(this,xe,"f")+n>Se(this,Ne,"f").length&&(this.allowLoose&&r&&Se(this,xe,"f")+e<=Se(this,Ne,"f").length?n=e:k.throwError("data out-of-bounds","BUFFER_OVERRUN",{buffer:ie(Se(this,Ne,"f")),length:Se(this,Ne,"f").length,offset:Se(this,xe,"f")+n})),Se(this,Ne,"f").slice(Se(this,xe,"f"),Se(this,xe,"f")+n)}; +async function t(t){const e=Object.keys(t);return(await Promise.all(e.map((e=>Promise.resolve(t[e]))))).reduce(((t,r,n)=>(t[e[n]]=r,t)),{})}function e(t,e){const r=e.split("|").map((t=>t.trim()));for(let n=0;n{try{if("test"!=="test".normalize(e))throw new Error("bad");if("NFD"===e){const t=String.fromCharCode(233).normalize("NFD");if(t!==String.fromCharCode(101,769))throw new Error("broken")}t.push(e)}catch(t){}return t}),[]);function v(t,e,r){Object.defineProperty(t,e,{enumerable:!0,writable:!1,value:r})}const E=9007199254740991,A={};A.INVALID_ARGUMENT=TypeError,A.NUMERIC_FAULT=RangeError,A.BUFFER_OVERRUN=RangeError;class T{constructor(t){h.add(this),v(this,"version",t||"_")}makeError(t,e,r){{const s=[];if(r)for(const t in r){const e=r[t];try{s.push(t+"="+JSON.stringify(e))}catch(n){s.push(t+"=[could not serialize object]")}}s.push(`code=${e}`),s.push(`version=${this.version}`),s.length&&(t+=" ("+s.join(", ")+")")}const n=new(A[e]||Error)(t);if(v(n,"code",e),r)for(const t in r)v(n,t,r[t]);return n}throwError(t,e,r){throw this.makeError(t,e,r)}throwArgumentError(t,e,r){return this.throwError(t,"INVALID_ARGUMENT",{argument:e,value:r})}assert(t,e,r,n){t||this.throwError(e,r||"UNKNOWN_ERROR",n)}assertArgument(t,e,r,n){return this.assert(t,e,"INVALID_ARGUMENT",{argument:r,value:n})}assertIntegerArgument(t,e,r,n){let s=null;"number"!=typeof e?s="expected a number":Number.isInteger(e)?(null!=r&&en)&&(s="value is out of range"):s="invalid integer",s&&this.throwArgumentError(s,t,e)}assertSafeUint53(t,e){this.assertArgument("number"==typeof t,"invalid number","value",t),null==e&&(e="value not safe");const r="assertSafeInteger";this.assert(t>=0&&t<9007199254740991,e,"NUMERIC_FAULT",{operation:r,fault:"out-of-safe-range",value:t}),this.assert(t%1==0,e,"NUMERIC_FAULT",{operation:r,fault:"non-integer",value:t})}assertNormalize(t){-1===b.indexOf(t)&&this.throwError("platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:t}})}assertPrivate(t,e,r=""){if(t!==e){let t=r,e="new";r&&(t+=".",e+=" "+r),this.throwError(`private constructor; use ${t}from* methods`,"UNSUPPORTED_OPERATION",{operation:e})}}assertArgumentCount(t,e,r=""){r&&(r=": "+r),this.assert(t>=e,"missing arguemnt"+r,"MISSING_ARGUMENT",{count:t,expectedCount:e}),this.assert(t>=e,"too many arguemnts"+r,"UNEXPECTED_ARGUMENT",{count:t,expectedCount:e})}getBytes(t,e){return w(this,h,"m",f).call(this,t,e,!1)}getBytesCopy(t,e){return w(this,h,"m",f).call(this,t,e,!0)}getNumber(t,e){switch(typeof t){case"bigint":return(t<-E||t>E)&&this.throwArgumentError("overflow",e||"value",t),Number(t);case"number":return Number.isInteger(t)?(t<-E||t>E)&&this.throwArgumentError("overflow",e||"value",t):this.throwArgumentError("underflow",e||"value",t),t;case"string":try{return this.getNumber(BigInt(t),e)}catch(r){this.throwArgumentError(`invalid numeric string: ${r.message}`,e||"value",t)}}return this.throwArgumentError("invalid numeric value",e||"value",t)}getBigInt(t,e){switch(typeof t){case"bigint":return t;case"number":return Number.isInteger(t)?(t<-E||t>E)&&this.throwArgumentError("overflow",e||"value",t):this.throwArgumentError("underflow",e||"value",t),BigInt(t);case"string":try{return BigInt(t)}catch(r){this.throwArgumentError(`invalid BigNumberish string: ${r.message}`,e||"value",t)}}return this.throwArgumentError("invalid BigNumberish value",e||"value",t)}debug(...t){w(this,h,"m",d).call(this,p.DEBUG,t)}info(...t){w(this,h,"m",d).call(this,p.INFO,t)}warn(...t){w(this,h,"m",d).call(this,p.WARNING,t)}static globalLogger(){return y||(y=new T("@ethersproject/logger@6.0.0-beta.4")),y}static setLogLevel(t){const e=g[t.toLowerCase()];null!=e?m=e:T.globalLogger().warn("invalid log level - "+t)}}h=new WeakSet,f=function(t,e,r){if(t instanceof Uint8Array)return r?new Uint8Array(t):t;if("string"==typeof t&&t.match(/^0x([0-9a-f][0-9a-f])*$/i)){const e=new Uint8Array((t.length-2)/2);let r=2;for(let n=0;ng[r]||console.log.apply(console,e)},T.LogLevels=p;const k=new T("@ethersproject/abi@6.0.0-beta.3");var P,N,x,O,I,S,R,B=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},_=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function C(t){const e=new Set;return t.forEach((t=>e.add(t))),Object.freeze(e)}!function(t){t.sighash="sighash",t.minimal="minimal",t.full="full",t.json="json"}(R||(R={}));const F="constant external internal payable private public pure view",U=C(F.split(" ")),L="constructor error event function struct",D=C(L.split(" ")),M="calldata memory storage payable indexed",j=C(M.split(" ")),G=C([L,M,"tuple returns",F].join(" ").split(" ")),$={"(":"OPEN_PAREN",")":"CLOSE_PAREN","[":"OPEN_BRACKET","]":"CLOSE_BRACKET",",":"COMMA","@":"AT"},z=new RegExp("^(\\s*)"),W=new RegExp("^([0-9]+)"),H=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)"),V=new RegExp("^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))");class K{constructor(t){P.add(this),N.set(this,void 0),x.set(this,void 0),B(this,N,0,"f"),B(this,x,t.slice(),"f")}get offset(){return _(this,N,"f")}get length(){return _(this,x,"f").length-_(this,N,"f")}clone(){return new K(_(this,x,"f"))}reset(){B(this,N,0,"f")}popKeyword(t){const e=this.peek();if("KEYWORD"!==e.type||!t.has(e.text))throw new Error(`expected keyword ${e.text}`);return this.pop().text}popType(t){if(this.peek().type!==t)throw new Error(`expected ${t}; got ${JSON.stringify(this.peek())}`);return this.pop().text}popParen(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=_(this,P,"m",O).call(this,_(this,N,"f")+1,t.match+1);return B(this,N,t.match+1,"f"),e}popParams(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=[];for(;_(this,N,"f")=_(this,x,"f").length)throw new Error("out-of-bounds");return _(this,x,"f")[_(this,N,"f")]}peekKeyword(t){const e=this.peekType("KEYWORD");return null!=e&&t.has(e)?e:null}peekType(t){if(0===this.length)return null;const e=this.peek();return e.type===t?e.text:null}pop(){var t;const e=this.peek();return B(this,N,(t=_(this,N,"f"),++t),"f"),e}toString(){const t=[];for(let e=_(this,N,"f");e<_(this,x,"f").length;e++){const r=_(this,x,"f")[e];t.push(`${r.type}:${r.text}`)}return``}}function J(t){const e=[],r=e=>{const r=i0&&"NUMBER"===e[e.length-1].type){const r=e.pop().text;t=r+t,e[e.length-1].value=k.getNumber(r)}if(0===e.length||"BRACKET"!==e[e.length-1].type)throw new Error("missing opening bracket");e[e.length-1].text+=t}}else if(a=o.match(H),a){if(c.text=a[1],i+=c.text.length,G.has(c.text)){c.type="KEYWORD";continue}if(c.text.match(V)){c.type="TYPE";continue}c.type="ID"}else{if(a=o.match(W),!a)throw new Error(`unexpected token ${JSON.stringify(o[0])} at position ${i}`);c.text=a[1],c.type="NUMBER",i+=c.text.length}}return new K(e.map((t=>Object.freeze(t))))}function q(t,e){let r=[];for(const n in e.keys())t.has(n)&&r.push(n);if(r.length>1)throw new Error(`conflicting types: ${r.join(", ")}`)}function X(t,e){if(e.peekKeyword(D)){const r=e.pop().text;if(r!==t)throw new Error(`expected ${t}, got ${r}`)}return e.popType("ID")}function Y(t,e){const r=new Set;for(;;){const n=t.peekType("KEYWORD");if(null==n||e&&!e.has(n))break;if(t.pop(),r.has(n))throw new Error(`duplicate keywords: ${JSON.stringify(n)}`);r.add(n)}return Object.freeze(r)}function Z(t,e){return t.popParams().map((t=>it.fromTokens(t,e)))}function Q(t){if(t.peekType("AT")){if(t.pop(),t.peekType("NUMBER"))return k.getBigInt(t.pop().text);throw new Error("invalid gas")}return null}function tt(t){if(t.length)throw new Error(`unexpected tokens: ${t.toString()}`)}N=new WeakMap,x=new WeakMap,P=new WeakSet,O=function(t=0,e=0){return new K(_(this,x,"f").slice(t,e).map((e=>Object.freeze(Object.assign({},e,{match:e.match-t,linkBack:e.linkBack-t,linkNext:e.linkNext-t})))))};const et=new RegExp(/^(.*)\[([0-9]*)\]$/);function rt(t){const e=t.match(V);if(!e)return k.throwArgumentError("invalid type","type",t);if("uint"===t)return"uint256";if("int"===t)return"int256";if(e[2]){const r=parseInt(e[2]);(0===r||r>32)&&k.throwArgumentError("invalid bytes length","type",t)}else if(e[3]){const r=parseInt(e[3]);(0===r||r>256||r%8)&&k.throwArgumentError("invalid numeric width","type",t)}return t}const nt={},st=Symbol.for("_ethers_internal");class it{constructor(t,e,n,s,i,o,a,c){if(I.add(this),k.assertPrivate(t,nt,"ParamType"),Object.defineProperty(this,st,{value:"_ParamTypeInternal"}),o&&(o=Object.freeze(o.slice())),"array"===s){if(null==a||null==c)throw new Error("")}else if(null!=a||null!=c)throw new Error("");if("tuple"===s){if(null==o)throw new Error("")}else if(null!=o)throw new Error("");r(this,{name:e,type:n,baseType:s,indexed:i,components:o,arrayLength:a,arrayChildren:c})}format(t=R.sighash){if(R[t]||k.throwArgumentError("invalid format type","format",t),t===R.json){let e={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(e.indexed=this.indexed),this.isTuple()&&(e.components=this.components.map((e=>JSON.parse(e.format(t))))),JSON.stringify(e)}let e="";return this.isArray()?(e+=this.arrayChildren.format(t),e+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`):this.isTuple()?(t!==R.sighash&&(e+=this.type),e+="("+this.components.map((e=>e.format(t))).join(t===R.full?", ":",")+")"):e+=this.type,t!==R.sighash&&(!0===this.indexed&&(e+=" indexed"),t===R.full&&this.name&&(e+=" "+this.name)),e}static isArray(t){return t&&"array"===t.baseType}isArray(){return"array"===this.baseType}isTuple(){return"tuple"===this.baseType}isIndexable(){return null!=this.indexed}walk(t,e){if(this.isArray()){if(!Array.isArray(t))throw new Error("invlaid array value");if(-1!==this.arrayLength&&t.length!==this.arrayLength)throw new Error("array is wrong length");return t.map((t=>this.arrayChildren.walk(t,e)))}if(this.isTuple()){if(!Array.isArray(t))throw new Error("invlaid tuple value");if(t.length!==this.components.length)throw new Error("array is wrong length");return t.map(((t,r)=>this.components[r].walk(t,e)))}return e(this.type,t)}async walkAsync(t,e){const r=[],n=[t];return _(this,I,"m",S).call(this,r,t,e,(t=>{n[0]=t})),r.length&&await Promise.all(r),n[0]}static from(t,e){if(it.isParamType(t))return t;if("string"==typeof t)return it.fromTokens(J(t),e);if(t instanceof K)return it.fromTokens(t,e);const r=t.name;!r||"string"==typeof r&&r.match(H)||k.throwArgumentError("invalid name","obj.name",r);let n=t.indexed;null!=n&&(e||k.throwArgumentError("parameter cannot be indexed","obj.indexed",t.indexed),n=!!n);let s=t.type,i=s.match(et);if(i){const e=i[2],o=it.from({type:i[1],components:t.components});return new it(nt,r,s,"array",n,null,e,o)}if("tuple("===s.substring(0,5)||"("===s[0]){const e=null!=t.components?t.components.map((t=>it.from(t))):null;return new it(nt,r,s,"tuple",n,e,null,null)}return s=rt(t.type),new it(nt,r,s,s,n,null,null,null)}static fromObject(t,e){throw new Error("@TODO")}static fromTokens(t,e){let r="",n="",s=null;Y(t,C(["tuple"])).has("tuple")||t.peekType("OPEN_PAREN")?(n="tuple",s=t.popParams().map((t=>it.from(t))),r=`tuple(${s.map((t=>t.format())).join(",")})`):(r=rt(t.popType("TYPE")),n=r);let i=null,o=null;for(;t.length&&t.peekType("BRACKET");){const e=t.pop();i=new it(nt,"",r,n,null,s,o,i),o=e.value,r+=e.text,n="array",s=null}let a=null;if(Y(t,j).has("indexed")){if(!e)throw new Error("");a=!0}const c=t.peekType("ID")?t.pop().text:"";if(t.length)throw new Error("leftover tokens");return new it(nt,c,r,n,a,s,o,i)}static isParamType(t){return t&&"_ParamTypeInternal"===t[st]}}var ot;I=new WeakSet,S=function t(e,r,n,s){if(this.isArray()){if(!Array.isArray(r))throw new Error("invlaid array value");if(-1!==this.arrayLength&&r.length!==this.arrayLength)throw new Error("array is wrong length");const i=this.arrayChildren,o=r.slice();return o.forEach(((r,s)=>{_(i,I,"m",t).call(i,e,r,n,(t=>{o[s]=t}))})),void s(o)}if(this.isTuple()){const i=this.components;let o;if(Array.isArray(r))o=r.slice();else{if(null==r||"object"!=typeof r)throw new Error("invlaid tuple value");o=i.map((t=>{if(!t.name)throw new Error("cannot use object value with unnamed components");if(!(t.name in r))throw new Error(`missing value for component ${t.name}`);return r[t.name]}))}if(r.length!==this.components.length)throw new Error("array is wrong length");return o.forEach(((r,s)=>{var a;_(a=i[s],I,"m",t).call(a,e,r,n,(t=>{o[s]=t}))})),void s(o)}const i=n(this.type,r);i.then?e.push(async function(){s(await i)}()):s(i)},function(t){t.constructor="constructor",t.error="error",t.event="event",t.function="function",t.struct="struct"}(ot||(ot={}));class at{constructor(t,e,n){k.assertPrivate(t,nt,"Fragment"),r(this,{type:e,inputs:n=Object.freeze(n.slice())})}static from(t){if("string"==typeof t)return this.fromString(t);if(t instanceof K)return this.fromTokens(t);if("object"==typeof t)return this.fromObject(t);throw new Error(`unsupported type: ${t}`)}static fromObject(t){switch(t.type){case"constructor":return ft.fromObject(t);case"error":return ut.fromObject(t);case"event":return ht.fromObject(t);case"function":return dt.fromObject(t);case"struct":return pt.fromObject(t)}throw new Error("not implemented yet")}static fromString(t){try{at.from(JSON.parse(t))}catch(t){}return at.fromTokens(J(t))}static fromTokens(t){const e=t.popKeyword(D);switch(e){case"constructor":return ft.fromTokens(t);case"error":return ut.fromTokens(t);case"event":return ht.fromTokens(t);case"function":return dt.fromTokens(t);case"struct":return pt.fromTokens(t)}throw new Error(`unsupported type: ${e}`)}static isConstructor(t){return t&&"constructor"===t.type}static isError(t){return t&&"error"===t.type}static isEvent(t){return t&&"event"===t.type}static isFunction(t){return t&&"function"===t.type}static isStruct(t){return t&&"struct"===t.type}}class ct extends at{constructor(t,e,n,s){super(t,e,s),s=Object.freeze(s.slice()),r(this,{name:n})}}function lt(t,e){return"("+e.map((e=>e.format(t))).join(t===R.full?", ":",")+")"}class ut extends ct{constructor(t,e,r){super(t,ot.error,e,r)}format(t=R.sighash){if(R[t]||k.throwArgumentError("invalid format type","format",t),t===R.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[];return t!==R.sighash&&e.push("error"),e.push(this.name+lt(t,this.inputs)),e.join(" ")}static fromString(t){return ut.fromTokens(J(t))}static fromTokens(t){const e=X("error",t),r=Z(t);return tt(t),new ut(nt,e,r)}}class ht extends ct{constructor(t,e,n,s){super(t,ot.event,e,n),r(this,{anonymous:s})}format(t=R.sighash){if(R[t]||k.throwArgumentError("invalid format type","format",t),t===R.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[];return t!==R.sighash&&e.push("event"),e.push(this.name+lt(t,this.inputs)),t!==R.sighash&&this.anonymous&&e.push("anonymous"),e.join(" ")}static fromString(t){return ht.fromTokens(J(t))}static fromTokens(t){const e=X("event",t),r=Z(t,!0),n=!!Y(t,C(["anonymous"])).has("anonymous");return tt(t),new ht(nt,e,r,n)}}class ft extends at{constructor(t,e,n,s,i){super(t,e,n),r(this,{payable:s,gas:i})}format(t=R.sighash){if(R[t]||k.throwArgumentError("invalid format type","format",t),t===R.sighash&&k.throwError("cannot format a constructor for sighash","UNSUPPORTED_OPERATION",{operation:"format(sighash)"}),t===R.json)return JSON.stringify({type:"constructor",stateMutability:this.payable?"payable":"undefined",payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[`constructor${lt(t,this.inputs)}`];return e.push(this.payable?"payable":"nonpayable"),null!=this.gas&&e.push(`@${this.gas.toString()}`),e.join(" ")}static fromString(t){return ft.fromTokens(J(t))}static fromObject(t){throw new Error("TODO")}static fromTokens(t){Y(t,C(["constructor"]));const e=Z(t),r=!!Y(t,C(["payable"])).has("payable"),n=Q(t);return tt(t),new ft(nt,ot.constructor,e,r,n)}}class dt extends ct{constructor(t,e,n,s,i,o){super(t,ot.function,e,s);r(this,{constant:"view"===n||"pure"===n,gas:o,outputs:i=Object.freeze(i.slice()),payable:"payable"===n,stateMutability:n})}format(t=R.sighash){if(R[t]||k.throwArgumentError("invalid format type","format",t),t===R.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map((e=>JSON.parse(e.format(t)))),outputs:this.outputs.map((e=>JSON.parse(e.format(t))))});const e=[];return t!==R.sighash&&e.push("function"),e.push(this.name+lt(t,this.inputs)),t!==R.sighash&&("nonpayable"!==this.stateMutability&&e.push(this.stateMutability),this.outputs&&this.outputs.length&&(e.push("returns"),e.push(lt(t,this.outputs))),null!=this.gas&&e.push(`@${this.gas.toString()}`)),e.join(" ")}static fromString(t){return dt.fromTokens(J(t))}static fromTokens(t){const e=X("function",t),r=Z(t),n=function(t){let e=Y(t,U);return q(e,C("constant payable nonpayable".split(" "))),q(e,C("pure view payable nonpayable".split(" "))),e.has("view")?"view":e.has("pure")?"pure":e.has("payable")?"payable":e.has("nonpayable")?"nonpayable":e.has("constant")?"view":"nonpayable"}(t);let s=[];Y(t,C(["returns"])).has("returns")&&(s=Z(t));const i=Q(t);return tt(t),new dt(nt,e,n,r,s,i)}}class pt extends ct{format(){throw new Error("@TODO")}static fromString(t){return pt.fromTokens(J(t))}static fromTokens(t){const e=X("struct",t),r=Z(t);return tt(t),new pt(nt,ot.struct,e,r)}}const wt=new T("@ethersproject/math@6.0.0-beta.3"),gt=BigInt(0);function mt(t){if(t instanceof Uint8Array){let e="0x0";for(const r of t)e+="0123456789abcdef"[r>>4],e+="0123456789abcdef"[15&r];return BigInt(e)}return wt.getBigInt(t,"value")}function yt(t){const e=mt(t);return(e<-9007199254740991||e>9007199254740991)&&wt.throwArgumentError("overflow","value",t),Number(e)}function bt(t,e){const r=wt.getBigInt(t,"value");if(r<0)throw new Error("cannot convert negative value to hex");let n=r.toString(16);if(null==e)n.length%2&&(n="0"+n);else{const t=wt.getNumber(e,"width");if(2*t>n-At){return-((~r&(At<256||t%1)&&wt.throwArgumentError("invalid decimal length","decimals",t),BigInt("1"+Ct.substring(0,t))}function Ut(t,e){null==e&&(e=18);let r=wt.getBigInt(t,"value");const n=Ft(wt.getNumber(e,"decimals")),s=String(n),i=r<0;i&&(r*=Bt);let o=String(r%n);for(;o.length1&&"0"===o.substring(o.length-1);)o=o.substring(0,o.length-1);let a=String(r/n);return 1!==s.length&&(a+="."+o),i&&(a="-"+a),a}function Lt(t,e){null==e&&(e=18);const r=Ft(wt.getNumber(e,"decimals"));"string"==typeof t&&t.match(/^-?[0-9.]+$/)||wt.throwArgumentError("invalid decimal value","value",t);const n="-"===t.substring(0,1);n&&(t=t.substring(1)),"."===t&&wt.throwArgumentError("missing value","value",t);const s=t.split(".");s.length>2&&wt.throwArgumentError("too many decimal points","value",t);let i=s[0]||"0",o=s[1]||"0";for(;"0"===o[o.length-1];)o=o.substring(0,o.length-1);for(o.length>String(r).length-1&&_t("fractional component exceeds decimals","underflow","parseFixed"),""===o&&(o="0");o.lengthnull==t[e]?n:(typeof t[e]!==r&&wt.throwArgumentError("invalid fixed format ("+e+" not "+r+")","format."+e,t[e]),t[e]);e=s("signed","boolean",e),r=s("width","number",r),n=s("decimals","number",n)}return r%8&&wt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",r),n>80&&wt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new Dt(Rt,e,r,n)}}class Mt{constructor(t,e,r,n){Nt.add(this),xt.set(this,void 0),t!==Rt&&wt.throwError("cannot use FixedNumber constructor; use FixedNumber.from","UNSUPPORTED_OPERATION",{operation:"new FixedFormat"}),this.format=Dt.from(n),It(this,xt,r,"f"),this._isFixedNumber=!0,Object.freeze(this)}addUnsafe(t){St(this,Nt,"m",Ot).call(this,t);const e=Lt(St(this,xt,"f"),this.format.decimals),r=Lt(St(t,xt,"f"),t.format.decimals);return Mt.fromValue(e+r,this.format.decimals,this.format)}subUnsafe(t){St(this,Nt,"m",Ot).call(this,t);const e=Lt(St(this,xt,"f"),this.format.decimals),r=Lt(St(t,xt,"f"),t.format.decimals);return Mt.fromValue(e-r,this.format.decimals,this.format)}mulUnsafe(t){St(this,Nt,"m",Ot).call(this,t);const e=Lt(St(this,xt,"f"),this.format.decimals),r=Lt(St(t,xt,"f"),t.format.decimals);return Mt.fromValue(e*r/this.format._multiplier,this.format.decimals,this.format)}divUnsafe(t){St(this,Nt,"m",Ot).call(this,t);const e=Lt(St(this,xt,"f"),this.format.decimals),r=Lt(St(t,xt,"f"),t.format.decimals);return Mt.fromValue(e*this.format._multiplier/r,this.format.decimals,this.format)}floor(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=Mt.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return this.isNegative()&&r&&(e=e.subUnsafe(jt.toFormat(e.format))),e}ceiling(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=Mt.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return!this.isNegative()&&r&&(e=e.addUnsafe(jt.toFormat(e.format))),e}round(t){null==t&&(t=0);const e=this.toString().split(".");if(1===e.length&&e.push("0"),(t<0||t>80||t%1)&&wt.throwArgumentError("invalid decimal count","decimals",t),e[1].length<=t)return this;const r=Mt.from("1"+Ct.substring(0,t),this.format),n=Gt.toFormat(this.format);return this.mulUnsafe(r).addUnsafe(n).floor().divUnsafe(r)}isZero(){return"0.0"===St(this,xt,"f")||"0"===St(this,xt,"f")}isNegative(){return"-"===St(this,xt,"f")[0]}toString(){return St(this,xt,"f")}toHexString(t){throw new Error("TODO")}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return Mt.fromString(St(this,xt,"f"),t)}static fromValue(t,e=0,r="fixed"){return Mt.fromString(Ut(t,e),Dt.from(r))}static fromString(t,e="fixed"){const r=Dt.from(e),n=Lt(t,r.decimals);!r.signed&&n<0&&_t("unsigned value cannot be negative","overflow","value",t);const s=r.signed?bt(kt(n,r.width)):bt(n,r.width/8),i=Ut(n,r.decimals);return new Mt(Rt,s,i,r)}static fromBytes(t,e="fixed"){const r=wt.getBytes(t,"value"),n=Dt.from(e);if(r.length>n.width/8)throw new Error("overflow");let s=mt(r);n.signed&&(s=Tt(s,n.width));const i=bt(kt(s,(n.signed?0:1)+n.width)),o=Ut(s,n.decimals);return new Mt(Rt,i,o,n)}static from(t,e){if("string"==typeof t)return Mt.fromString(t,e);if(t instanceof Uint8Array)return Mt.fromBytes(t,e);try{return Mt.fromValue(t,0,e)}catch(t){if("INVALID_ARGUMENT"!==t.code)throw t}return wt.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!(!t||!t._isFixedNumber)}}xt=new WeakMap,Nt=new WeakSet,Ot=function(t){this.format.name!==t.format.name&&wt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)};const jt=Mt.from(1),Gt=Mt.from("0.5"),$t="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";let zt=null;function Wt(t){if(null==zt){zt={};for(let t=0;t<$t.length;t++)zt[$t[t]]=BigInt(t)}const e=zt[t];return null==e&&wt.throwArgumentError("invalid base58 value","letter",t),e}const Ht=BigInt(0),Vt=BigInt(58);function Kt(t){let e=mt(wt.getBytes(t)),r="";for(;e;)r=$t[Number(e%Vt)]+r,e/=Vt;return r}function Jt(t){let e=Ht;for(let r=0;r>=ne;return 0===e.length&&e.push(0),new Uint8Array(e)}if((e=t)&&"function"==typeof e.toHexString)return ie(t.toHexString());var e;if("string"==typeof t){let e=t;if(!e.match(/^0x[0-9a-f]*$/i))throw new RangeError(`invalid hex data string (${JSON.stringify(t)})`);const r=[];for(let t=2;t>4]+"0123456789abcdef"[15&n]}return r}function ue(t){let e=le(ie(t)).substring(2);for(;"0"===e.substring(0,1);)e=e.substring(1);return""===e&&(e="0"),"0x"+e}function he(t){return"0x"+t.map((t=>le(t).substring(2))).join("")}function fe(t){return te(t,!0)?(t.length-2)/2:oe(t).length}function de(t,e,r){const n=oe(t);return null!=r&&r>n.length&&re.throwError("cannot slice beyond data bounds","BUFFER_OVERRUN",{buffer:n,length:n.length,offset:r}),le(n.slice(null==e?0:e,null==r?n.length:r))}function pe(t){let e=le(t).substring(2);for(;"00"==e.substring(0,2);)e=e.substring(2);return"0x"+e}function we(t,e,r){const n=oe(t);e{null!=t&&(Se(this,be,"f").has(t)?Se(this,be,"f").get(t).push(e):Se(this,be,"f").set(t,[e]))})),Object.freeze(this),new Proxy(this,{get:(t,e,r)=>{if("string"==typeof e){if(e.match(/^[0-9]+$/)){const r=k.getNumber(e,"%index");if(r<0||r>=this.length)throw new RangeError("out of result range");const n=t[r];return n instanceof Error&&Se(this,ye,"m",ve).call(this,`index ${r}`,n),n}if(e in t||Be.indexOf(e)>=0)return Reflect.get(t,e,r);if(!(e in t))return t.getValue(e)}return Reflect.get(t,e,r)}})}slice(t,e){null==t&&(t=0),null==e&&(e=this.length);const r=[];for(let n=t;n32&&k.throwError("value out-of-bounds","BUFFER_OVERRUN",{buffer:e,length:32,offset:e.length}),32!==e.length&&(e=ie(he([Re.slice(e.length%32),e]))),e}be=new WeakMap,ye=new WeakSet,ve=function(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);throw r.error=e,r};class Ue{constructor(t,e,n,s){r(this,{name:t,type:e,localName:n,dynamic:s},{name:"string",type:"string",localName:"string",dynamic:"boolean"})}_throwError(t,e){return k.throwArgumentError(t,this.localName,e)}}class Le{constructor(){Ee.add(this),Ae.set(this,void 0),Te.set(this,void 0),Ie(this,Ae,[],"f"),Ie(this,Te,0,"f")}get data(){return he(Se(this,Ae,"f"))}get length(){return Se(this,Te,"f")}appendWriter(t){return Se(this,Ee,"m",ke).call(this,ie(t.data))}writeBytes(t){let e=ie(t);const r=e.length%32;return r&&(e=ie(he([e,Re.slice(r)]))),Se(this,Ee,"m",ke).call(this,e)}writeValue(t){return Se(this,Ee,"m",ke).call(this,Fe(t))}writeUpdatableValue(){const t=Se(this,Ae,"f").length;return Se(this,Ae,"f").push(Re),Ie(this,Te,Se(this,Te,"f")+32,"f"),e=>{Se(this,Ae,"f")[t]=Fe(e)}}}Ae=new WeakMap,Te=new WeakMap,Ee=new WeakSet,ke=function(t){return Se(this,Ae,"f").push(t),Ie(this,Te,Se(this,Te,"f")+t.length,"f"),t.length};class De{constructor(t,e){Pe.add(this),Ne.set(this,void 0),xe.set(this,void 0),r(this,{allowLoose:!!e}),Ie(this,Ne,ie(t),"f"),Ie(this,xe,0,"f")}get data(){return le(Se(this,Ne,"f"))}get dataLength(){return Se(this,Ne,"f").length}get consumed(){return Se(this,xe,"f")}get bytes(){return new Uint8Array(Se(this,Ne,"f"))}subReader(t){return new De(Se(this,Ne,"f").slice(Se(this,xe,"f")+t),this.allowLoose)}readBytes(t,e){let r=Se(this,Pe,"m",Oe).call(this,0,t,!!e);return Ie(this,xe,Se(this,xe,"f")+r.length,"f"),r.slice(0,t)}readValue(){return mt(this.readBytes(32))}readIndex(){return yt(this.readBytes(32))}}Ne=new WeakMap,xe=new WeakMap,Pe=new WeakSet,Oe=function(t,e,r){let n=32*Math.ceil(e/32);return Se(this,xe,"f")+n>Se(this,Ne,"f").length&&(this.allowLoose&&r&&Se(this,xe,"f")+e<=Se(this,Ne,"f").length?n=e:k.throwError("data out-of-bounds","BUFFER_OVERRUN",{buffer:ie(Se(this,Ne,"f")),length:Se(this,Ne,"f").length,offset:Se(this,xe,"f")+n})),Se(this,Ne,"f").slice(Se(this,xe,"f"),Se(this,xe,"f")+n)}; /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */ -const Me=t=>new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4)),Ge=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),je=(t,e)=>t<<32-e|t>>>e;if(!(68===new Uint8Array(new Uint32Array([287454020]).buffer)[0]))throw new Error("Non little-endian hardware is not supported");Array.from({length:256},((t,e)=>e.toString(16).padStart(2,"0")));const $e=(()=>{const t="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);try{if(t){const{setImmediate:e}=t("timers");return()=>new Promise((t=>e(t)))}}catch(t){}return()=>new Promise((t=>setTimeout(t,0)))})();async function ze(t,e,r){let n=Date.now();for(let s=0;s=0&&tt().update(We(e)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e}class Xe extends Ke{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,Ve(t);const r=We(e);if(this.iHash=t.create(),!(this.iHash instanceof Ke))throw new TypeError("Expected instance of class which extends utils.Hash");const n=this.blockLen=this.iHash.blockLen;this.outputLen=this.iHash.outputLen;const s=new Uint8Array(n);s.set(r.length>this.iHash.blockLen?t.create().update(r).digest():r);for(let t=0;tnew Xe(t,e).update(r).digest();function Ze(t,e,r,n){const{c:s,dkLen:i,DK:o,PRF:a,PRFSalt:c}=function(t,e,r,n){Ve(t);const s=Je({dkLen:32,asyncTick:10},n),{c:i,dkLen:o,asyncTick:a}=s;if(He(i),He(o),He(a),i<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const c=We(e),l=We(r),u=new Uint8Array(o),h=Ye.create(t,c),f=h._cloneInto().update(l);return{c:i,dkLen:o,asyncTick:a,DK:u,PRF:h,PRFSalt:f}}(t,e,r,n);let l;const u=new Uint8Array(4),h=Ge(u),f=new Uint8Array(a.outputLen);for(let t=1,e=0;enew Xe(t,e);class Qe extends Ke{constructor(t,e,r,n){super(),this.blockLen=t,this.outputLen=e,this.padOffset=r,this.isLE=n,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=Ge(this.buffer)}update(t){if(this.destroyed)throw new Error("instance is destroyed");const{view:e,buffer:r,blockLen:n,finished:s}=this;if(s)throw new Error("digest() was already called");const i=(t=We(t)).length;for(let s=0;sn-i&&(this.process(r,0),i=0);for(let t=i;t>s&i),a=Number(r&i),c=n?4:0,l=n?0:4;t.setUint32(e+c,o,n),t.setUint32(e+l,a,n)}(r,n-8,BigInt(8*this.length),s),this.process(r,0);const o=Ge(t);this.get().forEach(((t,e)=>o.setUint32(4*e,t,s)))}digest(){const{buffer:t,outputLen:e}=this;this.digestInto(t);const r=t.slice(0,e);return this.destroy(),r}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:e,buffer:r,length:n,finished:s,destroyed:i,pos:o}=this;return t.length=n,t.pos=o,t.finished=s,t.destroyed=i,n%e&&t.buffer.set(r),t}}const tr=(t,e,r)=>t&e^~t&r,er=(t,e,r)=>t&e^t&r^e&r,rr=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),nr=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),sr=new Uint32Array(64);class ir extends Qe{constructor(){super(64,32,8,!1),this.A=0|nr[0],this.B=0|nr[1],this.C=0|nr[2],this.D=0|nr[3],this.E=0|nr[4],this.F=0|nr[5],this.G=0|nr[6],this.H=0|nr[7]}get(){const{A:t,B:e,C:r,D:n,E:s,F:i,G:o,H:a}=this;return[t,e,r,n,s,i,o,a]}set(t,e,r,n,s,i,o,a){this.A=0|t,this.B=0|e,this.C=0|r,this.D=0|n,this.E=0|s,this.F=0|i,this.G=0|o,this.H=0|a}process(t,e){for(let r=0;r<16;r++,e+=4)sr[r]=t.getUint32(e,!1);for(let t=16;t<64;t++){const e=sr[t-15],r=sr[t-2],n=je(e,7)^je(e,18)^e>>>3,s=je(r,17)^je(r,19)^r>>>10;sr[t]=s+sr[t-7]+n+sr[t-16]|0}let{A:r,B:n,C:s,D:i,E:o,F:a,G:c,H:l}=this;for(let t=0;t<64;t++){const e=l+(je(o,6)^je(o,11)^je(o,25))+tr(o,a,c)+rr[t]+sr[t]|0,u=(je(r,2)^je(r,13)^je(r,22))+er(r,n,s)|0;l=c,c=a,a=o,o=i+e|0,i=s,s=n,n=r,r=e+u|0}r=r+this.A|0,n=n+this.B|0,s=s+this.C|0,i=i+this.D|0,o=o+this.E|0,a=a+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(r,n,s,i,o,a,c,l)}roundClean(){sr.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const or=qe((()=>new ir)),ar=BigInt(2**32-1),cr=BigInt(32);function lr(t,e=!1){return e?{h:Number(t&ar),l:Number(t>>cr&ar)}:{h:0|Number(t>>cr&ar),l:0|Number(t&ar)}}function ur(t,e=!1){let r=new Uint32Array(t.length),n=new Uint32Array(t.length);for(let s=0;st>>>r,fr=(t,e,r)=>t<<32-r|e>>>r,dr=(t,e,r)=>t>>>r|e<<32-r,pr=(t,e,r)=>t<<32-r|e>>>r,wr=(t,e,r)=>t<<64-r|e>>>r-32,gr=(t,e,r)=>t>>>r-32|e<<64-r;function mr(t,e,r,n){const s=(e>>>0)+(n>>>0);return{h:t+r+(s/2**32|0)|0,l:0|s}}const yr=(t,e,r)=>(t>>>0)+(e>>>0)+(r>>>0),br=(t,e,r,n)=>e+r+n+(t/2**32|0)|0,vr=(t,e,r,n)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0),Er=(t,e,r,n,s)=>e+r+n+s+(t/2**32|0)|0,Ar=(t,e,r,n,s)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)+(s>>>0),Tr=(t,e,r,n,s,i)=>e+r+n+s+i+(t/2**32|0)|0,[kr,Pr]=ur(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map((t=>BigInt(t)))),Nr=new Uint32Array(80),xr=new Uint32Array(80);class Or extends Qe{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:t,Al:e,Bh:r,Bl:n,Ch:s,Cl:i,Dh:o,Dl:a,Eh:c,El:l,Fh:u,Fl:h,Gh:f,Gl:d,Hh:p,Hl:w}=this;return[t,e,r,n,s,i,o,a,c,l,u,h,f,d,p,w]}set(t,e,r,n,s,i,o,a,c,l,u,h,f,d,p,w){this.Ah=0|t,this.Al=0|e,this.Bh=0|r,this.Bl=0|n,this.Ch=0|s,this.Cl=0|i,this.Dh=0|o,this.Dl=0|a,this.Eh=0|c,this.El=0|l,this.Fh=0|u,this.Fl=0|h,this.Gh=0|f,this.Gl=0|d,this.Hh=0|p,this.Hl=0|w}process(t,e){for(let r=0;r<16;r++,e+=4)Nr[r]=t.getUint32(e),xr[r]=t.getUint32(e+=4);for(let t=16;t<80;t++){const e=0|Nr[t-15],r=0|xr[t-15],n=dr(e,r,1)^dr(e,r,8)^hr(e,0,7),s=pr(e,r,1)^pr(e,r,8)^fr(e,r,7),i=0|Nr[t-2],o=0|xr[t-2],a=dr(i,o,19)^wr(i,o,61)^hr(i,0,6),c=pr(i,o,19)^gr(i,o,61)^fr(i,o,6),l=vr(s,c,xr[t-7],xr[t-16]),u=Er(l,n,a,Nr[t-7],Nr[t-16]);Nr[t]=0|u,xr[t]=0|l}let{Ah:r,Al:n,Bh:s,Bl:i,Ch:o,Cl:a,Dh:c,Dl:l,Eh:u,El:h,Fh:f,Fl:d,Gh:p,Gl:w,Hh:g,Hl:m}=this;for(let t=0;t<80;t++){const e=dr(u,h,14)^dr(u,h,18)^wr(u,h,41),y=pr(u,h,14)^pr(u,h,18)^gr(u,h,41),b=u&f^~u&p,v=Ar(m,y,h&d^~h&w,Pr[t],xr[t]),E=Tr(v,g,e,b,kr[t],Nr[t]),A=0|v,T=dr(r,n,28)^wr(r,n,34)^wr(r,n,39),k=pr(r,n,28)^gr(r,n,34)^gr(r,n,39),P=r&s^r&o^s&o,N=n&i^n&a^i&a;g=0|p,m=0|w,p=0|f,w=0|d,f=0|u,d=0|h,({h:u,l:h}=mr(0|c,0|l,0|E,0|A)),c=0|o,l=0|a,o=0|s,a=0|i,s=0|r,i=0|n;const x=yr(A,k,N);r=br(x,E,T,P),n=0|x}({h:r,l:n}=mr(0|this.Ah,0|this.Al,0|r,0|n)),({h:s,l:i}=mr(0|this.Bh,0|this.Bl,0|s,0|i)),({h:o,l:a}=mr(0|this.Ch,0|this.Cl,0|o,0|a)),({h:c,l:l}=mr(0|this.Dh,0|this.Dl,0|c,0|l)),({h:u,l:h}=mr(0|this.Eh,0|this.El,0|u,0|h)),({h:f,l:d}=mr(0|this.Fh,0|this.Fl,0|f,0|d)),({h:p,l:w}=mr(0|this.Gh,0|this.Gl,0|p,0|w)),({h:g,l:m}=mr(0|this.Hh,0|this.Hl,0|g,0|m)),this.set(r,n,s,i,o,a,c,l,u,h,f,d,p,w,g,m)}roundClean(){Nr.fill(0),xr.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class Ir extends Or{constructor(){super(),this.Ah=573645204,this.Al=-64227540,this.Bh=-1621794909,this.Bl=-934517566,this.Ch=596883563,this.Cl=1867755857,this.Dh=-1774684391,this.Dl=1497426621,this.Eh=-1775747358,this.El=-1467023389,this.Fh=-1101128155,this.Fl=1401305490,this.Gh=721525244,this.Gl=746961066,this.Hh=246885852,this.Hl=-2117784414,this.outputLen=32}}class Sr extends Or{constructor(){super(),this.Ah=-876896931,this.Al=-1056596264,this.Bh=1654270250,this.Bl=914150663,this.Ch=-1856437926,this.Cl=812702999,this.Dh=355462360,this.Dl=-150054599,this.Eh=1731405415,this.El=-4191439,this.Fh=-1900787065,this.Fl=1750603025,this.Gh=-619958771,this.Gl=1694076839,this.Hh=1203062813,this.Hl=-1090891868,this.outputLen=48}}const Rr=qe((()=>new Or));qe((()=>new Ir)),qe((()=>new Sr));const Br=new T("@ethersproject/crypto@6.0.0-beta.2");const _r=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let Cr=_r.crypto||_r.msCrypto;function Fr(t){switch(t){case"sha256":return or.create();case"sha512":return Rr.create()}return Br.throwArgumentError("invalid hashing algorithm name","algorithm",t)}let Ur=!1;const Lr=function(t,e,r){return"0x"+function(t,e){const r={sha256:or,sha512:Rr}[t];return null==r?Br.throwArgumentError("invalid hmac algorithm","algorithm",t):Ye.create(r,e)}(t,e).update(r).digest("hex")};let Dr=Lr;function Mr(t,e,r){const n=Br.getBytes(e,"key"),s=Br.getBytes(r,"data");return le(Dr(t,n,s))}Mr._=Lr,Mr.lock=function(){Ur=!0},Mr.register=function(t){if(Ur)throw new Error("computeHmac is locked");Dr=t},Object.freeze(Mr);const[Gr,jr,$r]=[[],[],[]],zr=BigInt(0),Wr=BigInt(1),Hr=BigInt(2),Vr=BigInt(7),Kr=BigInt(256),Jr=BigInt(113);for(let t=0,e=Wr,r=1,n=0;t<24;t++){[r,n]=[n,(2*r+3*n)%5],Gr.push(2*(5*n+r)),jr.push((t+1)*(t+2)/2%64);let s=zr;for(let t=0;t<7;t++)e=(e<>Vr)*Jr)%Kr,e&Hr&&(s^=Wr<<(Wr<r>32?((t,e,r)=>e<>>64-r)(t,e,r):((t,e,r)=>t<>>32-r)(t,e,r),Zr=(t,e,r)=>r>32?((t,e,r)=>t<>>64-r)(t,e,r):((t,e,r)=>e<>>32-r)(t,e,r);class Qr extends Ke{constructor(t,e,r,n=!1,s=24){if(super(),this.blockLen=t,this.suffix=e,this.outputLen=r,this.enableXOF=n,this.rounds=s,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,He(r),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=Me(this.state)}keccak(){!function(t,e=24){const r=new Uint32Array(10);for(let n=24-e;n<24;n++){for(let e=0;e<10;e++)r[e]=t[e]^t[e+10]^t[e+20]^t[e+30]^t[e+40];for(let e=0;e<10;e+=2){const n=(e+8)%10,s=(e+2)%10,i=r[s],o=r[s+1],a=Yr(i,o,1)^r[n],c=Zr(i,o,1)^r[n+1];for(let r=0;r<50;r+=10)t[e+r]^=a,t[e+r+1]^=c}let e=t[2],s=t[3];for(let r=0;r<24;r++){const n=jr[r],i=Yr(e,s,n),o=Zr(e,s,n),a=Gr[r];e=t[a],s=t[a+1],t[a]=i,t[a+1]=o}for(let e=0;e<50;e+=10){for(let n=0;n<10;n++)r[n]=t[e+n];for(let n=0;n<10;n++)t[e+n]^=~r[(n+2)%10]&r[(n+4)%10]}t[0]^=qr[n],t[1]^=Xr[n]}r.fill(0)}(this.state32,this.rounds),this.posOut=0,this.pos=0}update(t){if(this.destroyed)throw new Error("instance is destroyed");if(this.finished)throw new Error("digest() was already called");const{blockLen:e,state:r}=this,n=(t=We(t)).length;for(let s=0;s=this.blockLen&&this.keccak();const n=Math.min(this.blockLen-this.posOut,r-e);t.set(this.state.subarray(this.posOut,this.posOut+n),e),this.posOut+=n,e+=n}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return He(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(t.lengthqe((()=>new Qr(e,t,r)));tn(6,144,28),tn(6,136,32),tn(6,104,48),tn(6,72,64),tn(1,144,28);const en=tn(1,136,32);tn(1,104,48),tn(1,72,64);const rn=(t,e,r)=>function(t){const e=(e,r)=>t(r).update(We(e)).digest(),r=t({});return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=e=>t(e),e}(((n={})=>new Qr(e,t,void 0!==n.dkLen?n.dkLen:r,!0)));rn(31,168,16),rn(31,136,32);let nn=!1;const sn=function(t){return en(t)};let on=sn;function an(t){const e=Br.getBytes(t,"data");return le(on(e))}an._=sn,an.lock=function(){nn=!0},an.register=function(t){if(nn)throw new TypeError("keccak256 is locked");on=t},Object.freeze(an);const cn=new Uint8Array([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),ln=Uint8Array.from({length:16},((t,e)=>e)),un=ln.map((t=>(9*t+5)%16));let hn=[ln],fn=[un];for(let t=0;t<4;t++)for(let e of[hn,fn])e.push(e[t].map((t=>cn[t])));const dn=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map((t=>new Uint8Array(t))),pn=hn.map(((t,e)=>t.map((t=>dn[e][t])))),wn=fn.map(((t,e)=>t.map((t=>dn[e][t])))),gn=new Uint32Array([0,1518500249,1859775393,2400959708,2840853838]),mn=new Uint32Array([1352829926,1548603684,1836072691,2053994217,0]),yn=(t,e)=>t<>>32-e;function bn(t,e,r,n){return 0===t?e^r^n:1===t?e&r|~e&n:2===t?(e|~r)^n:3===t?e&n|r&~n:e^(r|~n)}const vn=new Uint32Array(16);class En extends Qe{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){const{h0:t,h1:e,h2:r,h3:n,h4:s}=this;return[t,e,r,n,s]}set(t,e,r,n,s){this.h0=0|t,this.h1=0|e,this.h2=0|r,this.h3=0|n,this.h4=0|s}process(t,e){for(let r=0;r<16;r++,e+=4)vn[r]=t.getUint32(e,!0);let r=0|this.h0,n=r,s=0|this.h1,i=s,o=0|this.h2,a=o,c=0|this.h3,l=c,u=0|this.h4,h=u;for(let t=0;t<5;t++){const e=4-t,f=gn[t],d=mn[t],p=hn[t],w=fn[t],g=pn[t],m=wn[t];for(let e=0;e<16;e++){const n=yn(r+bn(t,s,o,c)+vn[p[e]]+f,g[e])+u|0;r=u,u=c,c=0|yn(o,10),o=s,s=n}for(let t=0;t<16;t++){const r=yn(n+bn(e,i,a,l)+vn[w[t]]+d,m[t])+h|0;n=h,h=l,l=0|yn(a,10),a=i,i=r}}this.set(this.h1+o+l|0,this.h2+c+h|0,this.h3+u+n|0,this.h4+r+i|0,this.h0+s+a|0)}roundClean(){vn.fill(0)}destroy(){this.destroyed=!0,this.buffer.fill(0),this.set(0,0,0,0,0)}}const An=qe((()=>new En));let Tn=!1;const kn=function(t){return An(t)};let Pn=kn;function Nn(t){const e=Br.getBytes(t,"data");return le(Pn(e))}Nn._=kn,Nn.lock=function(){Tn=!0},Nn.register=function(t){if(Tn)throw new TypeError("ripemd160 is locked");Pn=t},Object.freeze(Nn);let xn=!1;const On=function(t,e,r,n,s){return function(t,e,r,n,s){const i={sha256:or,sha512:Rr}[s];return null==i?Br.throwArgumentError("invalid pbkdf2 algorithm","algorithm",s):Ze(i,t,e,{c:r,dkLen:n})}(t,e,r,n,s)};let In=On;function Sn(t,e,r,n,s){const i=Br.getBytes(t,"password"),o=Br.getBytes(e,"salt");return le(In(i,o,r,n,s))}Sn._=On,Sn.lock=function(){xn=!0},Sn.register=function(t){if(xn)throw new Error("pbkdf2 is locked");In=t},Object.freeze(Sn);let Rn=!1;const Bn=function(t){return new Uint8Array(function(t){if(null==Cr)return Br.throwError("platform does not support secure random numbers","UNSUPPORTED_OPERATION",{operation:"randomBytes"});(t<=0||t>1024||t%1||t!=t)&&Br.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return Cr.getRandomValues(e),e}(t))};let _n=Bn;function Cn(t){return _n(t)}Cn._=Bn,Cn.lock=function(){Rn=!0},Cn.register=function(t){if(Rn)throw new Error("random is locked");_n=t},Object.freeze(Cn);const Fn=(t,e)=>t<>>32-e;function Un(t,e,r,n,s,i){let o=t[e++]^r[n++],a=t[e++]^r[n++],c=t[e++]^r[n++],l=t[e++]^r[n++],u=t[e++]^r[n++],h=t[e++]^r[n++],f=t[e++]^r[n++],d=t[e++]^r[n++],p=t[e++]^r[n++],w=t[e++]^r[n++],g=t[e++]^r[n++],m=t[e++]^r[n++],y=t[e++]^r[n++],b=t[e++]^r[n++],v=t[e++]^r[n++],E=t[e++]^r[n++],A=o,T=a,k=c,P=l,N=u,x=h,O=f,I=d,S=p,R=w,B=g,_=m,C=y,F=b,U=v,L=E;for(let t=0;t<8;t+=2)N^=Fn(A+C|0,7),S^=Fn(N+A|0,9),C^=Fn(S+N|0,13),A^=Fn(C+S|0,18),R^=Fn(x+T|0,7),F^=Fn(R+x|0,9),T^=Fn(F+R|0,13),x^=Fn(T+F|0,18),U^=Fn(B+O|0,7),k^=Fn(U+B|0,9),O^=Fn(k+U|0,13),B^=Fn(O+k|0,18),P^=Fn(L+_|0,7),I^=Fn(P+L|0,9),_^=Fn(I+P|0,13),L^=Fn(_+I|0,18),T^=Fn(A+P|0,7),k^=Fn(T+A|0,9),P^=Fn(k+T|0,13),A^=Fn(P+k|0,18),O^=Fn(x+N|0,7),I^=Fn(O+x|0,9),N^=Fn(I+O|0,13),x^=Fn(N+I|0,18),_^=Fn(B+R|0,7),S^=Fn(_+B|0,9),R^=Fn(S+_|0,13),B^=Fn(R+S|0,18),C^=Fn(L+U|0,7),F^=Fn(C+L|0,9),U^=Fn(F+C|0,13),L^=Fn(U+F|0,18);s[i++]=o+A|0,s[i++]=a+T|0,s[i++]=c+k|0,s[i++]=l+P|0,s[i++]=u+N|0,s[i++]=h+x|0,s[i++]=f+O|0,s[i++]=d+I|0,s[i++]=p+S|0,s[i++]=w+R|0,s[i++]=g+B|0,s[i++]=m+_|0,s[i++]=y+C|0,s[i++]=b+F|0,s[i++]=v+U|0,s[i++]=E+L|0}function Ln(t,e,r,n,s){let i=n+0,o=n+16*s;for(let n=0;n<16;n++)r[o+n]=t[e+16*(2*s-1)+n];for(let n=0;n0&&(o+=16),Un(r,i,t,e+=16,r,o)}function Dn(t,e,r){const n=Je({dkLen:32,asyncTick:10,maxmem:1073742848},r),{N:s,r:i,p:o,dkLen:a,asyncTick:c,maxmem:l,onProgress:u}=n;if(He(s),He(i),He(o),He(a),He(c),He(l),void 0!==u&&"function"!=typeof u)throw new Error("progressCb should be function");const h=128*i,f=h/4;if(s<=1||0!=(s&s-1)||s>=2**(h/8)||s>2**32)throw new Error("Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32");if(o<0||o>137438953440/h)throw new Error("Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)");if(a<0||a>137438953440)throw new Error("Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32");const d=h*(s+o);if(d>l)throw new Error(`Scrypt: parameters too large, ${d} (128 * r * (N + p)) > ${l} (maxmem)`);const p=Ze(or,t,e,{c:1,dkLen:h*o}),w=Me(p),g=Me(new Uint8Array(h*s)),m=Me(new Uint8Array(h));let y=()=>{};if(u){const t=2*s*o,e=Math.max(Math.floor(t/1e4),1);let r=0;y=()=>{r++,!u||r%e&&r!==t||u(r/t)}}return{N:s,r:i,p:o,dkLen:a,blockSize32:f,V:g,B32:w,B:p,tmp:m,blockMixCb:y,asyncTick:c}}function Mn(t,e,r,n,s){const i=Ze(or,t,r,{c:1,dkLen:e});return r.fill(0),n.fill(0),s.fill(0),i}let Gn=!1,jn=!1;const $n=async function(t,e,r,n,s,i,o){return await async function(t,e,r){const{N:n,r:s,p:i,dkLen:o,blockSize32:a,V:c,B32:l,B:u,tmp:h,blockMixCb:f,asyncTick:d}=Dn(t,e,r);for(let t=0;t{Ln(c,r,c,r+=a,s),f()})),Ln(c,(n-1)*a,l,e,s),f(),await ze(n,d,(t=>{const r=l[e+a-16]%n;for(let t=0;t>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&n[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const as={};for(let t=0;t<10;t++)as[String(t)]=String(t);for(let t=0;t<26;t++)as[String.fromCharCode(65+t)]=String(10+t);function cs(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map((t=>as[t])).join("");for(;e.length>=15;){let t=e.substring(0,15);e=parseInt(t,10)%97+e.substring(t.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}const ls=function(){const t={};for(let e=0;e<36;e++){t["0123456789abcdefghijklmnopqrstuvwxyz"[e]]=BigInt(e)}return t}();function us(t){if("string"!=typeof t&&ns.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/)){"0x"!==t.substring(0,2)&&(t="0x"+t);const e=os(t);return t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&ns.throwArgumentError("bad address checksum","address",t),e}if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){t.substring(2,4)!==cs(t)&&ns.throwArgumentError("bad icap checksum","address",t);let e=function(t){t=t.toLowerCase();let e=ss;for(let r=0;r>=8;return e}function ps(t){if(Array.isArray(t)){let e=[];if(t.forEach((function(t){e=e.concat(ps(t))})),e.length<=55)return e.unshift(192+e.length),e;const r=ds(e.length);return r.unshift(247+r.length),r.concat(e)}const e=Array.prototype.slice.call(fs.getBytes(t,"object"));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=ds(e.length);return r.unshift(183+r.length),r.concat(e)}function ws(t){let e="0x";for(const r of ps(t))e+="0123456789abcdef"[r>>4],e+="0123456789abcdef"[15&r];return e}function gs(t){let e=t.toString(16);for(;e.length<2;)e="0"+e;return"0x"+e}function ms(t,e,r){let n=0;for(let s=0;se+1+n&&fs.throwError("child data too short","BUFFER_OVERRUN",{buffer:t,length:n,offset:e})}return{consumed:1+n,result:s}}function bs(t,e){0===t.length&&fs.throwError("data too short","BUFFER_OVERRUN",{buffer:t,length:0,offset:1});const r=e=>{e>t.length&&fs.throwError("data short segment too short","BUFFER_OVERRUN",{buffer:t,length:t.length,offset:e})};if(t[e]>=248){const n=t[e]-247;r(e+1+n);const s=ms(t,e+1,n);return r(e+1+n+s),ys(t,e,e+1+n,n+s)}if(t[e]>=192){const n=t[e]-192;return r(e+1+n),ys(t,e,e+1,n)}if(t[e]>=184){const n=t[e]-183;r(e+1+n);const s=ms(t,e+1,n);r(e+1+n+s);return{consumed:1+n+s,result:le(t.slice(e+1+n,e+1+n+s))}}if(t[e]>=128){const n=t[e]-128;r(e+1+n);return{consumed:1+n,result:le(t.slice(e+1,e+1+n))}}return{consumed:1,result:gs(t[e])}}function vs(t){const e=fs.getBytes(t,"data"),r=bs(e,0);return r.consumed!==e.length&&fs.throwArgumentError("unexpected junk after rlp payload","data",t),r.result}function Es(t){const e=us(t.from);let r=ns.getBigInt(t.nonce,"tx.nonce").toString(16);return r="0"===r?"0x":r.length%2?"0x0"+r:"0x"+r,us(de(an(ws([e,r])),12))}function As(t,e,r){const n=us(t),s=ns.getBytes(e,"salt"),i=ns.getBytes(r,"initCodeHash");return 32!==s.length&&ns.throwArgumentError("salt must be 32 bytes","salt",e),32!==i.length&&ns.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),us(de(an(he(["0xff",n,s,i])),12))}function Ts(t){return t&&"function"==typeof t.getAddress}function ks(t){try{return us(t),!0}catch(t){}return!1}async function Ps(t,e){if("string"==typeof t){if(t.match(/^0x[0-9a-f]{40}$/i))return us(t);if(null==e)return ns.throwError("ENS resolution requires a provider","UNSUPPORTED_OPERATION",{operation:"resolveName"});const r=await e.resolveName(t);return null==r||"0x0000000000000000000000000000000000000000"===r?ns.throwError("unconfigured name","UNCONFIGURED_NAME",{value:t}):us(r)}if(Ts(t)){const e=await t.getAddress();return null==e&&ns.throwArgumentError("addressable resolved to null","target",t),us(e)}return ns.throwArgumentError("unsupported addressable value","target",t)}var Ns,xs=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Os=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Is={};function Ss(t,e){let r=!1;return e<0&&(r=!0,e*=-1),new _s(Is,`${r?"":"u"}int${e}`,t,{signed:r,width:e})}function Rs(t,e){return new _s(Is,`bytes${e||""}`,t,{size:e})}const Bs=Symbol.for("_ethers_typed");class _s{constructor(t,e,n,s=null){if(Ns.set(this,void 0),t!==Is)throw new Error("private constructor");r(this,{_typedSymbol:Bs,type:e,value:n}),xs(this,Ns,s,"f"),this.format()}format(){if("array"===this.type)throw new Error("");if("dynamicArray"===this.type)throw new Error("");return"tuple"===this.type?`tuple(${this.value.map((t=>t.format())).join(",")})`:this.type}defaultValue(){return 0}minValue(){return 0}maxValue(){return 0}isBigInt(){return!!this.type.match(/^u?int[0-9]+$/)}isData(){return"bytes"===this.type.substring(0,5)}isString(){return"string"===this.type}get tupleName(){if("tuple"!==this.type)throw TypeError("not a tuple");return Os(this,Ns,"f")}get arrayLength(){if("array"!==this.type)throw TypeError("not an array");return!0===Os(this,Ns,"f")?-1:!1===Os(this,Ns,"f")?this.value.length:null}static from(t,e){return new _s(Is,t,e)}static uint8(t){return Ss(t,8)}static uint16(t){return Ss(t,16)}static uint24(t){return Ss(t,24)}static uint32(t){return Ss(t,32)}static uint40(t){return Ss(t,40)}static uint48(t){return Ss(t,46)}static uint56(t){return Ss(t,56)}static uint64(t){return Ss(t,64)}static uint72(t){return Ss(t,72)}static uint80(t){return Ss(t,80)}static uint88(t){return Ss(t,88)}static uint96(t){return Ss(t,96)}static uint104(t){return Ss(t,104)}static uint112(t){return Ss(t,112)}static uint120(t){return Ss(t,120)}static uint128(t){return Ss(t,128)}static uint136(t){return Ss(t,136)}static uint144(t){return Ss(t,144)}static uint152(t){return Ss(t,152)}static uint160(t){return Ss(t,160)}static uint168(t){return Ss(t,168)}static uint176(t){return Ss(t,176)}static uint184(t){return Ss(t,184)}static uint192(t){return Ss(t,192)}static uint200(t){return Ss(t,200)}static uint208(t){return Ss(t,208)}static uint216(t){return Ss(t,216)}static uint224(t){return Ss(t,224)}static uint232(t){return Ss(t,232)}static uint240(t){return Ss(t,240)}static uint248(t){return Ss(t,248)}static uint256(t){return Ss(t,256)}static uint(t){return Ss(t,256)}static int8(t){return Ss(t,-8)}static int16(t){return Ss(t,-16)}static int24(t){return Ss(t,-24)}static int32(t){return Ss(t,-32)}static int40(t){return Ss(t,-40)}static int48(t){return Ss(t,-46)}static int56(t){return Ss(t,-56)}static int64(t){return Ss(t,-64)}static int72(t){return Ss(t,-72)}static int80(t){return Ss(t,-80)}static int88(t){return Ss(t,-88)}static int96(t){return Ss(t,-96)}static int104(t){return Ss(t,-104)}static int112(t){return Ss(t,-112)}static int120(t){return Ss(t,-120)}static int128(t){return Ss(t,-128)}static int136(t){return Ss(t,-136)}static int144(t){return Ss(t,-144)}static int152(t){return Ss(t,-152)}static int160(t){return Ss(t,-160)}static int168(t){return Ss(t,-168)}static int176(t){return Ss(t,-176)}static int184(t){return Ss(t,-184)}static int192(t){return Ss(t,-192)}static int200(t){return Ss(t,-200)}static int208(t){return Ss(t,-208)}static int216(t){return Ss(t,-216)}static int224(t){return Ss(t,-224)}static int232(t){return Ss(t,-232)}static int240(t){return Ss(t,-240)}static int248(t){return Ss(t,-248)}static int256(t){return Ss(t,-256)}static int(t){return Ss(t,-256)}static bytes(t){return Rs(t)}static bytes1(t){return Rs(t,1)}static bytes2(t){return Rs(t,2)}static bytes3(t){return Rs(t,3)}static bytes4(t){return Rs(t,4)}static bytes5(t){return Rs(t,5)}static bytes6(t){return Rs(t,6)}static bytes7(t){return Rs(t,7)}static bytes8(t){return Rs(t,8)}static bytes9(t){return Rs(t,9)}static bytes10(t){return Rs(t,10)}static bytes11(t){return Rs(t,11)}static bytes12(t){return Rs(t,12)}static bytes13(t){return Rs(t,13)}static bytes14(t){return Rs(t,14)}static bytes15(t){return Rs(t,15)}static bytes16(t){return Rs(t,16)}static bytes17(t){return Rs(t,17)}static bytes18(t){return Rs(t,18)}static bytes19(t){return Rs(t,19)}static bytes20(t){return Rs(t,20)}static bytes21(t){return Rs(t,21)}static bytes22(t){return Rs(t,22)}static bytes23(t){return Rs(t,23)}static bytes24(t){return Rs(t,24)}static bytes25(t){return Rs(t,25)}static bytes26(t){return Rs(t,26)}static bytes27(t){return Rs(t,27)}static bytes28(t){return Rs(t,28)}static bytes29(t){return Rs(t,29)}static bytes30(t){return Rs(t,30)}static bytes31(t){return Rs(t,31)}static bytes32(t){return Rs(t,32)}static address(t){return new _s(Is,"address",t)}static bool(t){return new _s(Is,"bool",!!t)}static string(t){return new _s(Is,"string",t)}static array(t,e){throw new Error("not implemented yet")}static tuple(t,e){throw new Error("not implemented yet")}static overrides(t){return new _s(Is,"overrides",Object.assign({},t))}static isTyped(t){return t&&t._typedSymbol===Bs}static dereference(t,e){if(_s.isTyped(t)){if(t.type!==e)throw new Error(`invalid type: expecetd ${e}, got ${t.type}`);return t.value}return t}}Ns=new WeakMap;class Cs extends Ue{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){let r=_s.dereference(e,"string");try{r=us(r)}catch(t){return this._throwError(t.message,e)}return t.writeValue(r)}decode(t){return us(bt(t.readValue(),20))}}class Fs extends Ue{constructor(t){super(t.name,t.type,"_",t.dynamic),this.coder=t}defaultValue(){return this.coder.defaultValue()}encode(t,e){return this.coder.encode(t,e)}decode(t){return this.coder.decode(t)}}function Us(t,e,r){let n=[];if(Array.isArray(r))n=r;else if(r&&"object"==typeof r){let t={};n=e.map((e=>{const n=e.localName;return n||k.throwError("cannot encode object for signature with missing names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:r}),t[n]&&k.throwError("cannot encode object for signature with duplicate names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:r}),t[n]=!0,r[n]}))}else k.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&k.throwArgumentError("types/value length mismatch","tuple",r);let s=new Le,i=new Le,o=[];e.forEach(((t,e)=>{let r=n[e];if(t.dynamic){let e=i.length;t.encode(i,r);let n=s.writeUpdatableValue();o.push((t=>{n(t+e)}))}else t.encode(s,r)})),o.forEach((t=>{t(s.length)}));let a=t.appendWriter(s);return a+=t.appendWriter(i),a}function Ls(t,e){let r=[],n=[],s=t.subReader(0);return e.forEach((e=>{let i=null;if(e.dynamic){let r=t.readIndex(),n=s.subReader(r);try{i=e.decode(n)}catch(t){if(l(t,"BUFFER_OVERRUN"))throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(l(t,"BUFFER_OVERRUN"))throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}if(null==i)throw new Error("investigate");r.push(i),n.push(e.localName||null)})),Ce.fromItems(r,n)}class Ds extends Ue{constructor(t,e,n){super("array",t.type+"["+(e>=0?e:"")+"]",n,-1===e||t.dynamic),r(this,{coder:t,length:e})}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let r=0;rt.dataLength&&k.throwError("insufficient data length","BUFFER_OVERRUN",{buffer:t.bytes,offset:32*e,length:t.dataLength}));let r=[];for(let t=0;tt||r<-(t+Vs))&&this._throwError("value out-of-bounds",e)}else(rPt(n,8*this.size))&&this._throwError("value out-of-bounds",e);return r=Pt(kt(r,8*this.size),8*this.size),this.signed&&(r=kt(Tt(r,8*this.size),256)),t.writeValue(r)}decode(t){let e=Pt(t.readValue(),8*this.size);return this.signed&&(e=Tt(e,8*this.size)),e}}const qs=new T("@ethersproject/strings@6.0.0-beta.2");var Xs,Ys;function Zs(t,e,r,n,s){if(t===Ys.BAD_PREFIX||t===Ys.UNEXPECTED_CONTINUE){let t=0;for(let n=e+1;n>6==2;n++)t++;return t}return t===Ys.OVERRUN?r.length-e-1:0}!function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"}(Xs||(Xs={})),function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"}(Ys||(Ys={}));const Qs=Object.freeze({error:function(t,e,r,n,s){return qs.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:Zs,replace:function(t,e,r,n,s){return t===Ys.OVERLONG?(n.push(null!=s?s:-1),0):(n.push(65533),Zs(t,e,r))}});function ti(t,e){null==e&&(e=Qs.error);const r=qs.getBytes(t,"bytes"),n=[];let s=0;for(;s>7==0){n.push(t);continue}let i=null,o=null;if(192==(224&t))i=1,o=127;else if(224==(240&t))i=2,o=2047;else{if(240!=(248&t)){s+=e(128==(192&t)?Ys.UNEXPECTED_CONTINUE:Ys.BAD_PREFIX,s-1,r,n);continue}i=3,o=65535}if(s-1+i>=r.length){s+=e(Ys.OVERRUN,s-1,r,n);continue}let a=t&(1<<8-i-1)-1;for(let t=0;t1114111?s+=e(Ys.OUT_OF_RANGE,s-1-i,r,n,a):a>=55296&&a<=57343?s+=e(Ys.UTF16_SURROGATE,s-1-i,r,n,a):a<=o?s+=e(Ys.OVERLONG,s-1-i,r,n,a):n.push(a))}return n}function ei(t,e=Xs.current){e!=Xs.current&&(qs.assertNormalize(e),t=t.normalize(e));let r=[];for(let e=0;e>6|192),r.push(63&n|128);else if(55296==(64512&n)){e++;const s=t.charCodeAt(e);if(e>=t.length||56320!=(64512&s))throw new Error("invalid utf-8 string");const i=65536+((1023&n)<<10)+(1023&s);r.push(i>>18|240),r.push(i>>12&63|128),r.push(i>>6&63|128),r.push(63&i|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(63&n|128)}return new Uint8Array(r)}function ri(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function ni(t,e){return'"'+ti(t,e).map((t=>{if(t<256){switch(t){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(t>=32&&t<127)return String.fromCharCode(t)}return t<=65535?ri(t):ri(55296+((t-=65536)>>10&1023))+ri(56320+(1023&t))})).join("")+'"'}function si(t){return t.map((t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t))))).join("")}function ii(t,e){return si(ti(t,e))}function oi(t,e=Xs.current){return ti(ei(t,e))}function ai(t){const e=ei(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return me(e,32)}function ci(t){const e=qs.getBytes(t,"bytes");if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let r=31;for(;0===e[r-1];)r--;return ii(e.slice(0,r))}function li(t,e){const r=e||function(t){return[parseInt(t,16)]};let n=0,s={};return t.split(",").forEach((t=>{let e=t.split(":");n+=parseInt(e[0],16),s[n]=r(e[1])})),s}function ui(t){let e=0;return t.split(",").map((t=>{let r=t.split("-");1===r.length?r[1]="0":""===r[1]&&(r[1]="1");let n=e+parseInt(r[0],16);return e=parseInt(r[1],16),{l:n,h:e}}))}function hi(t,e){let r=0;for(let n=0;n=r&&t<=r+s.h&&(t-r)%(s.d||1)==0){if(s.e&&-1!==s.e.indexOf(t-r))continue;return s}}return null}const fi=ui("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),di="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map((t=>parseInt(t,16))),pi=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],wi=li("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),gi=li("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),mi=li("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",(function(t){if(t.length%4!=0)throw new Error("should not happen; bad data");let e=[];for(let r=0;r{if(di.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){const e=hi(t,pi);if(e){if(null==e.s)throw new Error("should not happenl bad range");return[t+e.s]}const r=wi[t];if(r)return r;const n=gi[t];return n?[t+n[0]]:mi[t]||null}(t);return e||[t]})),e=r.reduce(((t,e)=>(e.forEach((e=>{t.push(e)})),t)),[]),e=oi(si(e),Xs.NFKC),e.forEach((e=>{hi(e,yi)&&qs.throwArgumentError("STRINGPREP_CONTAINS_PROHIBITED","value",t)})),e.forEach((e=>{hi(e,fi)&&qs.throwArgumentError("STRINGPREP_CONTAINS_UNASSIGNED","value",t)}));let n=si(e);return"-"!==n.substring(0,1)&&"--"!==n.substring(2,4)&&"-"!==n.substring(n.length-1)||qs.throwArgumentError("invalid hyphen","value",t),n.length>63&&qs.throwArgumentError("too long","value",t),n}class vi extends Gs{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,ei(_s.dereference(e,"string")))}decode(t){return ii(super.decode(t))}}class Ei extends Ue{constructor(t,e){let n=!1;const s=[];t.forEach((t=>{t.dynamic&&(n=!0),s.push(t.type)}));super("tuple","tuple("+s.join(",")+")",e,n),r(this,{coders:Object.freeze(t.slice())})}defaultValue(){const t=[];this.coders.forEach((e=>{t.push(e.defaultValue())}));const e=this.coders.reduce(((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t}),{});return this.coders.forEach(((r,n)=>{let s=r.localName;s&&1===e[s]&&("length"===s&&(s="_length"),null==t[s]&&(t[s]=t[n]))})),Object.freeze(t)}encode(t,e){const r=_s.dereference(e,"tuple");return Us(t,this.coders,r)}decode(t){return Ls(t,this.coders)}}var Ai,Ti,ki=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Pi=new RegExp(/^bytes([0-9]*)$/),Ni=new RegExp(/^(u?int)([0-9]*)$/);Ai=new WeakSet,Ti=function t(e){if(e.isArray())return new Ds(ki(this,Ai,"m",t).call(this,e.arrayChildren),e.arrayLength,e.name);if(e.isTuple())return new Ei(e.components.map((e=>ki(this,Ai,"m",t).call(this,e))),e.name);switch(e.baseType){case"address":return new Cs(e.name);case"bool":return new Ms(e.name);case"string":return new vi(e.name);case"bytes":return new js(e.name);case"":return new Ws(e.name)}let r=e.type.match(Ni);if(r){let t=parseInt(r[2]||"256");return(0===t||t>256||t%8!=0)&&k.throwArgumentError("invalid "+r[1]+" bit length","param",e),new Js(t/8,"int"===r[1],e.name)}if(r=e.type.match(Pi),r){let t=parseInt(r[1]);return(0===t||t>32)&&k.throwArgumentError("invalid bytes length","param",e),new $s(t,e.name)}return k.throwArgumentError("invalid type","type",e.type)};const xi=new class{constructor(){Ai.add(this)}getDefaultValue(t){const e=t.map((t=>ki(this,Ai,"m",Ti).call(this,it.from(t))));return new Ei(e,"_").defaultValue()}encode(t,e){k.assertArgumentCount(e.length,t.length,"types/values length mismatch");const r=t.map((t=>ki(this,Ai,"m",Ti).call(this,it.from(t)))),n=new Ei(r,"_"),s=new Le;return n.encode(s,e),s.data}decode(t,e,r){const n=t.map((t=>ki(this,Ai,"m",Ti).call(this,it.from(t))));return new Ei(n,"_").decode(new De(e,r))}};function Oi(t){return an(ei(t))}const Ii=new T("@ethersproject/hash@6.0.0-beta.3"),Si=new Uint8Array(32);Si.fill(0);const Ri=new RegExp("^((.*)\\.)?([^.]+)$");function Bi(t){try{const e=t.split(".");for(let t=0;t{""===e&&Ii.throwArgumentError("invalid DNS name; missing component","name",t);const r=ei("_"+bi(e));return r[0]=r.length-1,r})))+"00"}const Fi="Ethereum Signed Message:\n";function Ui(t){return"string"==typeof t&&(t=ei(t)),an(he([ei(Fi),ei(String(t.length)),t]))}const Li=new RegExp("^bytes([0-9]+)$"),Di=new RegExp("^(u?int)([0-9]*)$"),Mi=new RegExp("^(.*)\\[([0-9]*)\\]$");function Gi(t,e,r){switch(t){case"address":return r?Ii.getBytes(ge(e,32)):Ii.getBytes(e);case"string":return ei(e);case"bytes":return Ii.getBytes(e);case"bool":return e=e?"0x01":"0x00",r?Ii.getBytes(ge(e,32)):Ii.getBytes(e)}let n=t.match(Di);if(n){let s=parseInt(n[2]||"256");return n[2]&&String(s)!==n[2]||s%8!=0||0===s||s>256?Ii.throwArgumentError("invalid number type","type",t):(r&&(s=256),e=kt(e,s),Ii.getBytes(ge(e,s/8)))}if(n=t.match(Li),n){const s=parseInt(n[1]);return String(s)!==n[1]||0===s||s>32?Ii.throwArgumentError("invalid bytes type","type",t):fe(e)!==s?Ii.throwArgumentError(`invalid value for ${t}`,"value",e):r?Ii.getBytes(me(e,32)):e}if(n=t.match(Mi),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&Ii.throwArgumentError(`invalid array length for ${t}`,"value",e);const s=[];return e.forEach((function(t){s.push(Gi(r,t,!0))})),Ii.getBytes(he(s))}return Ii.throwArgumentError("invalid type","type",t)}function ji(t,e){t.length!=e.length&&Ii.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach((function(t,n){r.push(Gi(t,e[n]))})),le(he(r))}function $i(t,e){return an(ji(t,e))}function zi(t,e){return ts(ji(t,e))}var Wi,Hi,Vi,Ki,Ji,qi=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Xi=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Yi=new Uint8Array(32);Yi.fill(0);const Zi=BigInt(-1),Qi=BigInt(0),to=BigInt(1),eo=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const ro=bt(to,32),no=bt(Qi,32),so={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},io=["name","version","chainId","verifyingContract","salt"];function oo(t){return function(e){return"string"!=typeof e&&Ii.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const ao={name:oo("name"),version:oo("version"),chainId:function(t){return Ii.getBigInt(t,"domain.chainId")},verifyingContract:function(t){try{return us(t).toLowerCase()}catch(t){}return Ii.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){const e=Ii.getBytes(t,"domain.salt");return 32!==e.length&&Ii.throwArgumentError('invalid domain value "salt"',"domain.salt",t),le(e)}};function co(t){{const e=t.match(/^(u?)int(\d*)$/);if(e){const r=""===e[1],n=parseInt(e[2]||"256");(n%8!=0||n>256||e[2]&&e[2]!==String(n))&&Ii.throwArgumentError("invalid numeric width","type",t);const s=Pt(eo,r?n-1:n),i=r?(s+to)*Zi:Qi;return function(e){const r=Ii.getBigInt(e,"value");return(rs)&&Ii.throwArgumentError(`value out-of-bounds for ${t}`,"value",r),bt(kt(r,256),32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const r=parseInt(e[1]);return(0===r||r>32||e[1]!==String(r))&&Ii.throwArgumentError("invalid bytes width","type",t),function(e){return ie(e).length!==r&&Ii.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=ie(t),r=e.length%32;return r?he([e,Yi.slice(r)]):le(e)}(e)}}}switch(t){case"address":return function(t){return ge(us(t),32)};case"bool":return function(t){return t?ro:no};case"bytes":return function(t){return an(t)};case"string":return function(t){return Oi(t)}}return null}function lo(t,e){return`${t}(${e.map((({name:t,type:e})=>e+" "+t)).join(",")})`}class uo{constructor(t){Wi.add(this),Hi.set(this,void 0),Vi.set(this,void 0),Ki.set(this,void 0),qi(this,Hi,JSON.stringify(t),"f"),qi(this,Vi,new Map,"f"),qi(this,Ki,new Map,"f");const e=new Map,n=new Map,s=new Map;Object.keys(t).forEach((t=>{e.set(t,new Set),n.set(t,[]),s.set(t,new Set)}));for(const r in t){const s=new Set;for(const i of t[r]){s.has(i.name)&&Ii.throwArgumentError(`duplicate variable name ${JSON.stringify(i.name)} in ${JSON.stringify(r)}`,"types",t),s.add(i.name);const o=i.type.match(/^([^\x5b]*)(\x5b|$)/)[1]||null;o===r&&Ii.throwArgumentError(`circular type reference to ${JSON.stringify(o)}`,"types",t);co(o)||(n.has(o)||Ii.throwArgumentError(`unknown type ${JSON.stringify(o)}`,"types",t),n.get(o).push(r),e.get(r).add(o))}}const i=Array.from(n.keys()).filter((t=>0===n.get(t).length));0===i.length?Ii.throwArgumentError("missing primary type","types",t):i.length>1&&Ii.throwArgumentError(`ambiguous primary types or unused types: ${i.map((t=>JSON.stringify(t))).join(", ")}`,"types",t),r(this,{primaryType:i[0]}),function r(i,o){o.has(i)&&Ii.throwArgumentError(`circular type reference to ${JSON.stringify(i)}`,"types",t),o.add(i);for(const t of e.get(i))if(n.has(t)){r(t,o);for(const e of o)s.get(e).add(t)}o.delete(i)}(this.primaryType,new Set);for(const[e,r]of s){const n=Array.from(r);n.sort(),Xi(this,Vi,"f").set(e,lo(e,t[e])+n.map((e=>lo(e,t[e]))).join(""))}}get types(){return JSON.parse(Xi(this,Hi,"f"))}getEncoder(t){let e=Xi(this,Ki,"f").get(t);return e||(e=Xi(this,Wi,"m",Ji).call(this,t),Xi(this,Ki,"f").set(t,e)),e}encodeType(t){const e=Xi(this,Vi,"f").get(t);return e||Ii.throwArgumentError(`unknown type: ${JSON.stringify(t)}`,"name",t)}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return an(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,r){if(co(t))return r(t,e);const n=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(n){const t=n[1],s=parseInt(n[3]);return s>=0&&e.length!==s&&Ii.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e),e.map((e=>this._visit(t,e,r)))}const s=this.types[t];return s?s.reduce(((t,{name:n,type:s})=>(t[n]=this._visit(s,e[n],r),t)),{}):Ii.throwArgumentError(`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new uo(t)}static getPrimaryType(t){return uo.from(t).primaryType}static hashStruct(t,e,r){return uo.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=so[r];n||Ii.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort(((t,e)=>io.indexOf(t.name)-io.indexOf(e.name))),uo.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return he(["0x1901",uo.hashDomain(t),uo.from(e).hash(r)])}static hash(t,e,r){return an(uo.encode(t,e,r))}static async resolveNames(t,e,r,n){t=Object.assign({},t);const s={};t.verifyingContract&&!te(t.verifyingContract,20)&&(s[t.verifyingContract]="0x");const i=uo.from(e);i.visit(r,((t,e)=>("address"!==t||te(e,20)||(s[e]="0x"),e)));for(const t in s)s[t]=await n(t);return t.verifyingContract&&s[t.verifyingContract]&&(t.verifyingContract=s[t.verifyingContract]),{domain:t,value:r=i.visit(r,((t,e)=>"address"===t&&s[e]?s[e]:e))}}static getPayload(t,e,r){uo.hashDomain(t);const n={},s=[];io.forEach((e=>{const r=t[e];null!=r&&(n[e]=ao[e](r),s.push({name:e,type:so[e]}))}));const i=uo.from(e),o=Object.assign({},e);return o.EIP712Domain?Ii.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",e):o.EIP712Domain=s,i.encode(r),{types:o,domain:n,primaryType:i.primaryType,message:i.visit(r,((t,e)=>{if(t.match(/^bytes(\d*)/))return le(Ii.getBytes(e));if(t.match(/^u?int/))return Ii.getBigInt(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return"string"!=typeof e&&Ii.throwArgumentError("invalid string","value",e),e}return Ii.throwArgumentError("unsupported type","type",t)}))}}}Hi=new WeakMap,Vi=new WeakMap,Ki=new WeakMap,Wi=new WeakSet,Ji=function(t){{const e=co(t);if(e)return e}const e=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(e){const t=e[1],r=this.getEncoder(t),n=parseInt(e[3]);return e=>{n>=0&&e.length!==n&&Ii.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e);let s=e.map(r);return Xi(this,Vi,"f").has(t)&&(s=s.map(an)),an(he(s))}}const r=this.types[t];if(r){const e=Oi(Xi(this,Vi,"f").get(t));return t=>{const n=r.map((({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return Xi(this,Vi,"f").has(r)?an(n):n}));return n.unshift(e),he(n)}}return Ii.throwArgumentError(`unknown type: ${t}`,"type",t)};var ho,fo,po,wo,go,mo,yo,bo=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},vo=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Eo{constructor(t,e,n){const s=t.name,i=t.format();r(this,{fragment:t,name:s,signature:i,topic:e,args:n})}}class Ao{constructor(t,e,n,s){const i=t.name,o=t.format();r(this,{fragment:t,name:i,args:n,signature:o,selector:e,value:s})}}class To{constructor(t,e,n){const s=t.name,i=t.format();r(this,{fragment:t,name:s,args:n,signature:i,selector:e})}}class ko{constructor(t){r(this,{hash:t,_isIndexed:!0})}static isIndexed(t){return!(!t||!t._isIndexed)}}const Po={0:"generic panic",1:"assert(false)",17:"arithmetic overflow",18:"division or modulo by zero",33:"enum overflow",34:"invalid encoded storage byte array accessed",49:"out-of-bounds array access; popping on an empty array",50:"out-of-bounds access of an array or bytesN",65:"out of memory",81:"uninitialized function"},No={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:t=>`reverted with reason string ${JSON.stringify(t)}`},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"],reason:t=>{let e="unknown panic code";return t>=0&&t<=255&&Po[t.toString()]&&(e=Po[t.toString()]),`reverted with panic code 0x${t.toString(16)} (${e})`}}};class xo{constructor(t){ho.add(this),fo.set(this,void 0),po.set(this,void 0),wo.set(this,void 0),go.set(this,void 0);let e=[];e="string"==typeof t?JSON.parse(t):t,bo(this,wo,new Map,"f"),bo(this,fo,new Map,"f"),bo(this,po,new Map,"f"),r(this,{fragments:Object.freeze(e.map((t=>at.from(t))).filter((t=>null!=t)))}),bo(this,go,this.getAbiCoder(),"f"),this.fragments.forEach((t=>{let e;switch(t.type){case"constructor":return this.deploy?void k.warn("duplicate definition - constructor"):void r(this,{deploy:t});case"function":e=vo(this,wo,"f");break;case"event":e=vo(this,po,"f");break;case"error":e=vo(this,fo,"f");break;default:return}const n=t.format();e.has(n)?k.warn("duplicate definition - "+n):e.set(n,t)})),this.deploy||r(this,{deploy:ft.fromString("constructor()")})}format(t){t||(t=R.full),t===R.sighash&&k.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map((e=>e.format(t)));return t===R.json?JSON.stringify(e.map((t=>JSON.parse(t)))):e}getAbiCoder(){return xi}getFunctionName(t){return vo(this,ho,"m",mo).call(this,t,null,!1).name}getFunction(t,e){return vo(this,ho,"m",mo).call(this,t,e||null,!0)}getEventName(t){return vo(this,ho,"m",yo).call(this,t,null,!1).name}getEvent(t,e){return vo(this,ho,"m",yo).call(this,t,e||null,!0)}getError(t,e){if(te(t)){const e=t.toLowerCase();for(const t of vo(this,fo,"f").values())if(e===this.getSelector(t))return t;k.throwArgumentError("no matching error","selector",t)}if(-1===t.indexOf("(")){const e=[];for(const[r,n]of vo(this,fo,"f"))r.split("(")[0]===t&&e.push(n);return 0===e.length?k.throwArgumentError("no matching error","name",t):e.length>1&&k.throwArgumentError("multiple matching errors","name",t),e[0]}const r=vo(this,fo,"f").get(ut.fromString(t).format());return r||k.throwArgumentError("no matching error","signature",t)}getSelector(t){return de(Oi(t.format()),0,4)}getEventTopic(t){return Oi(t.format())}_decodeParams(t,e){return vo(this,go,"f").decode(t,e)}_encodeParams(t,e){return vo(this,go,"f").encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),de(e,0,4)!==this.getSelector(t)&&k.throwArgumentError(`data signature does not match error ${t.name}.`,"data",e),this._decodeParams(t.inputs,de(e,4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),he([this.getSelector(t),this._encodeParams(t.inputs,e||[])])}decodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),de(e,0,4)!==this.getSelector(t)&&k.throwArgumentError(`data signature does not match function ${t.name}.`,"data",e),this._decodeParams(t.inputs,de(e,4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),he([this.getSelector(t),this._encodeParams(t.inputs,e||[])])}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r="invalid length for result data";const n=ie(e);if(n.length%32==0)try{return vo(this,go,"f").decode(t.outputs,n)}catch(t){r="could not decode result data"}return k.throwError(r,"BAD_DATA",{value:le(n),info:{method:t.name,signature:t.format()}})}makeError(t,e,r){"string"==typeof t&&(t=this.getFunction(t));const n=k.getBytes(e);let s,i,o,a;if(r)try{s=vo(this,go,"f").decode(t.inputs,r.data||"0x")}catch(t){console.log(t)}let c="unknown reason";if(0===n.length)c="missing error reason";else if(n.length%32==4){const t=le(n.slice(0,4)),e=No[t];if(e)try{o=e.name,a=e.signature,i=vo(this,go,"f").decode(e.inputs,n.slice(4)),c=e.reason(...i)}catch(t){console.log(t)}else{c="unknown custom error";try{const e=this.getError(t);o=e.name,a=e.format(),c=`custom error: ${a}`;try{i=vo(this,go,"f").decode(e.inputs,n.slice(4))}catch(t){c=`custom error: ${a} (coult not decode error data)`}}catch(t){console.log(t)}}}return k.makeError("call revert exception","CALL_EXCEPTION",{data:le(n),transaction:null,method:t.name,signature:t.format(),args:s,errorArgs:i,errorName:o,errorSignature:a,reason:c})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),le(vo(this,go,"f").encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&k.throwError("too many arguments for "+t.format(),"UNEXPECTED_ARGUMENT",{count:e.length,expectedCount:t.inputs.length});const r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?Oi(e):"bytes"===t.type?an(le(e)):("address"===t.type&&vo(this,go,"f").encode(["address"],[e]),ge(le(e),32));for(e.forEach(((e,s)=>{const i=t.inputs[s];i.indexed?null==e?r.push(null):"array"===i.baseType||"tuple"===i.baseType?k.throwArgumentError("filtering with tuples or arrays not supported","contract."+i.name,e):Array.isArray(e)?r.push(e.map((t=>n(i,t)))):r.push(n(i,e)):null!=e&&k.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+i.name,e)}));r.length&&null===r[r.length-1];)r.pop();return r}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const r=[],n=[],s=[];return t.anonymous||r.push(this.getEventTopic(t)),e.length!==t.inputs.length&&k.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach(((t,i)=>{const o=e[i];if(t.indexed)if("string"===t.type)r.push(Oi(o));else if("bytes"===t.type)r.push(an(o));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");r.push(vo(this,go,"f").encode([t.type],[o]))}else n.push(t),s.push(o)})),{data:vo(this,go,"f").encode(n,s),topics:r}}decodeEventLog(t,e,r){if("string"==typeof t&&(t=this.getEvent(t)),null!=r&&!t.anonymous){const e=this.getEventTopic(t);te(r[0],32)&&r[0].toLowerCase()===e||k.throwArgumentError("fragment/topic mismatch","topics[0]",r[0]),r=r.slice(1)}const n=[],s=[],i=[];t.inputs.forEach(((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(n.push(it.fromObject({type:"bytes32",name:t.name})),i.push(!0)):(n.push(t),i.push(!1)):(s.push(t),i.push(!1))}));const o=null!=r?vo(this,go,"f").decode(n,he(r)):null,a=vo(this,go,"f").decode(s,e,!0),c=[],l=[];let u=0,h=0;return t.inputs.forEach(((t,e)=>{let r=null;if(t.indexed)if(null==o)r=new ko(null);else if(i[e])r=new ko(o[h++]);else try{r=o[h++]}catch(t){r=t}else try{r=a[u++]}catch(t){r=t}c.push(r),l.push(t.name||null)})),Ce.fromItems(c,l)}parseTransaction(t){const e=k.getBytes(t.data,"tx.data"),r=k.getBigInt(null!=t.value?t.value:0,"tx.value"),n=this.getFunction(le(e.slice(0,4)));if(!n)return null;const s=vo(this,go,"f").decode(n.inputs,e.slice(4));return new Ao(n,this.getSelector(n),s,r)}parseLog(t){const e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new Eo(e,this.getEventTopic(e),this.decodeEventLog(e,t.data,t.topics))}parseError(t){const e=le(t),r=this.getError(de(e,0,4));if(!r)return null;const n=vo(this,go,"f").decode(r.inputs,de(e,4));return new To(r,this.getSelector(r),n)}static from(t){return t instanceof xo?t:"string"==typeof t?new xo(JSON.parse(t)):"function"==typeof t.format?new xo(t.format(R.json)):new xo(t)}}fo=new WeakMap,po=new WeakMap,wo=new WeakMap,go=new WeakMap,ho=new WeakSet,mo=function(t,e,r){if(te(t)){const e=t.toLowerCase();for(const t of vo(this,wo,"f").values())if(e===this.getSelector(t))return t;k.throwArgumentError("no matching function","selector",t)}if(-1===t.indexOf("(")){const n=[];for(const[e,r]of vo(this,wo,"f"))e.split("(")[0]===t&&n.push(r);if(e){const t=e.length>0?e[e.length-1]:null;let r=e.length,s=!0;_s.isTyped(t)&&"overrides"===t.type&&(s=!1,r--);for(let t=n.length-1;t>=0;t--){const e=n[t].inputs.length;e===r||s&&e===r-1||n.splice(t,1)}for(let t=n.length-1;t>=0;t--){const r=n[t].inputs;for(let s=0;s=r.length){if("overrides"===e[s].type)continue;n.splice(t,1);break}if(e[s].type!==r[s].baseType){n.splice(t,1);break}}}}if(1===n.length&&e&&e.length!==n[0].inputs.length){const t=e[e.length-1];(null==t||Array.isArray(t)||"object"!=typeof t)&&n.splice(0,1)}if(0===n.length)k.throwArgumentError("no matching function","name",t);else if(n.length>1&&r){const e=n.map((t=>JSON.stringify(t.format()))).join(", ");k.throwArgumentError(`multiple matching functions (i.e. ${e})`,"name",t)}return n[0]}const n=vo(this,wo,"f").get(dt.fromString(t).format());return n||k.throwArgumentError("no matching function","signature",t)},yo=function(t,e,r){if(te(t)){const e=t.toLowerCase();for(const t of vo(this,po,"f").values())if(e===this.getEventTopic(t))return t;k.throwArgumentError("no matching event","eventTopic",t)}if(-1===t.indexOf("(")){const n=[];for(const[e,r]of vo(this,po,"f"))e.split("(")[0]===t&&n.push(r);if(e){for(let t=n.length-1;t>=0;t--)n[t].inputs.length=0;t--){const r=n[t].inputs;for(let s=0;s1&&r&&k.throwArgumentError("multiple matching events","name",t),n[0]}const n=vo(this,po,"f").get(ht.fromString(t).format());return n||k.throwArgumentError("no matching event","signature",t)};const Oo=new T("@ethersproject/web@6.0.0-beta.2");var Io,So,Ro=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Bo=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class _o{constructor(t,e,r,n,s){Io.set(this,void 0),So.set(this,void 0),Ro(this,Io,{statusCode:t,statusMessage:e,headers:Object.freeze(Object.assign({},Object.keys(r).reduce(((t,e)=>(t[e.toLowerCase()]=r[e],t)),{}))),body:null==n?null:new Uint8Array(n),request:s||null},"f"),Ro(this,So,{message:""},"f")}toString(){const t=a(Bo(this,Io,"f"),"body");return``}get statusCode(){return a(Bo(this,Io,"f"),"statusCode")}get statusMessage(){return a(Bo(this,Io,"f"),"statusMessage")}get headers(){return a(Bo(this,Io,"f"),"headers")}get body(){const t=a(Bo(this,Io,"f"),"body");return null==t?null:new Uint8Array(t)}get bodyText(){try{const t=a(Bo(this,Io,"f"),"body");return null==t?"":ii(t)}catch(t){return Oo.throwError("response body is not valid UTF-8 data","UNSUPPORTED_OPERATION",{operation:"bodyText",info:{response:this}})}}get bodyJson(){try{return JSON.parse(this.bodyText)}catch(t){return Oo.throwError("response body is not valid JSON","UNSUPPORTED_OPERATION",{operation:"bodyJson",info:{response:this}})}}[(Io=new WeakMap,So=new WeakMap,Symbol.iterator)](){const t=this.headers,e=Object.keys(t);let r=0;return{next:()=>{if(r=200&&this.statusCode<300}assertOk(){if(this.ok())return;let{message:t,error:e}=Bo(this,So,"f");""===t&&(t=`server response ${this.statusCode} ${this.statusMessage}`),Oo.throwError(t,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e})}}async function Co(t,e){const r=t.url.split(":")[0].toLowerCase();"http"!==r&&"https"!==r&&Oo.throwError(`unsupported protocol ${r}`,"UNSUPPORTED_OPERATION",{info:{protocol:r},operation:"request"}),t.credentials&&!t.allowInsecureAuthentication&&Oo.throwError("insecure authorized connections unsupported","UNSUPPORTED_OPERATION",{operation:"request"});const n={method:t.method,headers:new Headers(Array.from(t)),body:t.body||void 0},s=await fetch(t.url,n),i={};s.headers.forEach(((t,e)=>{i[e.toLowerCase()]=t}));const o=new Uint8Array(await s.arrayBuffer());return new _o(s.status,s.statusText,i,o,t)}var Fo,Uo=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Lo=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Do(t,e,r){if(typeof t!==e)throw new Error(`invalid ${r}`);return t}class Mo{constructor(t){Fo.set(this,void 0),Uo(this,Fo,{allowInsecure:!1,gzip:!1,headers:{},method:"",timeout:300,url:Do(t,"string","url")},"f")}get url(){return a(Lo(this,Fo,"f"),"url")}set url(t){c(Lo(this,Fo,"f"),"url",Do(t,"string","url"))}get body(){const t=a(Lo(this,Fo,"f"),"body");return null==t?null:this.isFrozen()?new Uint8Array(t):t}set body(t){if(null==t)c(Lo(this,Fo,"f"),"body",void 0),c(Lo(this,Fo,"f"),"bodyType",void 0);else if("string"==typeof t)c(Lo(this,Fo,"f"),"body",ei(t)),c(Lo(this,Fo,"f"),"bodyType","text/plain");else if(t instanceof Uint8Array)c(Lo(this,Fo,"f"),"body",t),c(Lo(this,Fo,"f"),"bodyType","application/octet-stream");else{if("object"!=typeof t)throw new Error("invalid body");c(Lo(this,Fo,"f"),"body",ei(JSON.stringify(t))),c(Lo(this,Fo,"f"),"bodyType","application/json")}}hasBody(){return null!=a(Lo(this,Fo,"f"),"body")}get method(){const t=a(Lo(this,Fo,"f"),"method");return t?t.toUpperCase():this.body?"POST":"GET"}set method(t){null==t&&(t=""),c(Lo(this,Fo,"f"),"method",Do(t,"string","method"))}get headers(){const t=Object.assign({},a(Lo(this,Fo,"f"),"headers")),e=a(Lo(this,Fo,"f"),"bodyType");return this.credentials,this.allowGzip&&(t["accept-encoding"]="gzip"),null==t["content-type"]&&e&&(t["content-type"]=e),this.body&&(t["content-length"]=String(this.body.length)),Object.freeze(t)}getHeader(t){return this.headers[t.toLowerCase()]}setHeader(t,e){const r=a(Lo(this,Fo,"f"),"headers");c(Lo(this,Fo,"f"),"headers",r),r[Do(t,"string","key").toLowerCase()]=String(e)}clearHeaders(){c(Lo(this,Fo,"f"),"headers",{})}[(Fo=new WeakMap,Symbol.iterator)](){const t=this.headers,e=Object.keys(t);let r=0;return{next:()=>{if(r ${JSON.stringify(t)})`});const n=new Mo(t);return n.method="GET",n.allowGzip=this.allowGzip,n.timeout=this.timeout,c(Lo(n,Fo,"f"),"body",a(Lo(this,Fo,"f"),"body")),c(Lo(n,Fo,"f"),"headers",Object.assign({},a(Lo(this,Fo,"f"),"headers"))),c(Lo(n,Fo,"f"),"bodyType",a(Lo(this,Fo,"f"),"bodyType")),n}clone(){const t=new Mo(this.url);c(Lo(t,Fo,"f"),"method",a(Lo(this,Fo,"f"),"method"));const e=a(Lo(this,Fo,"f"),"body");return c(Lo(t,Fo,"f"),"body",null==e?void 0:new Uint8Array(e)),c(Lo(t,Fo,"f"),"bodyType",a(Lo(this,Fo,"f"),"bodyType")),c(Lo(t,Fo,"f"),"headers",Object.assign({},a(Lo(this,Fo,"f"),"headers"))),c(Lo(t,Fo,"f"),"creds",a(Lo(this,Fo,"f"),"creds")),this.allowGzip&&(t.allowGzip=!0),t.timeout=this.timeout,this.allowInsecureAuthentication&&(t.allowInsecureAuthentication=!0),t}freeze(){const t=a(Lo(this,Fo,"f"),"body");return null!=t&&c(Lo(this,Fo,"f"),"body",new Uint8Array(t)),Object.freeze(Lo(this,Fo,"f").headers),Object.freeze(Lo(this,Fo,"f")),this}isFrozen(){return Object.isFrozen(Lo(this,Fo,"f"))}}async function Go(t){return new Promise((e=>{setTimeout(e,t)}))}function jo(){return(new Date).getTime()}let $o=!1;async function zo(t){const e="string"==typeof t?{request:new Mo(t)}:t instanceof Mo?{request:t}:Object.assign({},t);if(null==e.request)return Oo.throwArgumentError("missing request","connection",t);let r=e.request.clone().freeze();switch(e.request.url.split(":")[0]){case"data":{const t=r.url.match(/^data:([^;:]*)?(;base64)?,(.*)$/i);if(t)try{const e={"content-type":t[1]?t[1]:"text/plain"},n=t[2]?ae(t[3]):ei(t[3].replace(/%([0-9a-f][0-9a-f])/gi,((t,e)=>String.fromCharCode(parseInt(e,16)))));return new _o(200,"OK",e,n,r.clone())}catch(t){return new _o(400,"BAD REQUEST (invalid base64 encoded data)",{},null,r.clone())}return new _o(500,"INTERNAL SERVER ERROR (unsupported dara URI)",{},null,r.clone())}case"ipfs":case"ipns":case"ar":throw new Error("not implemented yet");case"http":case"https":break;default:throw new Error("unsupported scheme")}const n=null!=e.throttleLimit?e.throttleLimit:12;if(!Number.isInteger(n)||n<1)return Oo.throwArgumentError("invalid throttleLimit","connection",t);const s=null!=e.throttleSlotInterval?e.throttleSlotInterval:100;if(!Number.isInteger(s)||n<0)return Oo.throwArgumentError("invalid throttleSlotInterval","connection",t);const i=null!=e.throttleRetry?e.throttleRetry:null;if(i&&"function"!=typeof i)return Oo.throwArgumentError("invalid throttleRetry callback","connection",t);const o=e.preflightRequest||null;if(o&&"function"!=typeof o)return Oo.throwArgumentError("invalid preflightRequest callback","connection",t);const a=e.processResponse||null;if(a&&"function"!=typeof a)return Oo.throwArgumentError("invalid processResponse callback","connection",t);const c=jo();let l=null;for(let t=0;t32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function ra(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function na(t){const e=[];let r=0;for(let n=0;nWo.getBigInt(t)===Xo)).catch((t=>{if("CALL_EXCEPTION"===t.code)return!1;throw Jo(this,Vo,null,"f"),t})),"f"),await qo(this,Vo,"f")}async _fetch(t,e="0x"){const r=he([t,_i(this.name),e]),n={to:this.address,enableCcipRead:!0,data:r};let s=!1;await this.supportsWildcard()&&(s=!0,n.data=he(["0x9061b923",na([Ci(this.name),r])]));try{let t=await this.provider.call(n);return Wo.getBytes(t).length%32==4?Wo.throwError("resolver threw error","CALL_EXCEPTION",{transaction:n,data:t}):s?Qo(t,0):t}catch(t){if("CALL_EXCEPTION"!==t.code)throw t}return null}async getAddress(t=60){if(60===t)try{const t=await this._fetch("0x3b3b57de");if("0x"===t||t===Zo)return null;return(await this.provider.getNetwork()).formatter.callAddress(t)}catch(t){if("CALL_EXCEPTION"===t.code)return null;throw t}let e=null;for(const r of this.provider.plugins)if(r instanceof ia&&r.supportsCoinType(t)){e=r;break}if(null==e)return null;const r=Qo(await this._fetch("0xf1cb7e06",ea(t))||"0x",0);if(null==r||"0x"===r)return null;const n=await e.encodeAddress(t,r);return null!=n?n:Wo.throwError("invalid coin data","UNSUPPORTED_OPERATION",{operation:`getAddress(${t})`,info:{coinType:t,data:r}})}async getText(t){let e=ei(t);const r=Wo.getBytes(he([ea(64),ea(e.length),e])),n=Qo(await this._fetch("0x59d1d43c",ra(r))||"0x",0);return null==n||"0x"===n?null:ii(n)}async getContentHash(){const t=Qo(await this._fetch("0xbc1c58d1")||"0x",0);if(null==t||"0x"===t)return null;const e=t.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t="e3010170"===e[1]?"ipfs":"ipns",r=parseInt(e[4],16);if(e[5].length===2*r)return`${t}://${Kt("0x"+e[2])}`}const r=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);return r&&64===r[1].length?`bzz://${r[1]}`:Wo.throwError("invalid or unsupported content hash data","UNSUPPORTED_OPERATION",{operation:"getContentHash()",info:{data:t}})}async getAvatar(){return(await this._getAvatar()).url}async _getAvatar(){const t=[{type:"name",value:this.name}];try{const e=await this.getText("avatar");if(null==e)throw t.push({type:"!avatar",value:""}),new Error("!avatar");t.push({type:"avatar",value:e});for(let r=0;rla.throwArgumentError(e,"signature",t);if("string"==typeof t){const r=la.getBytes(t,"signature");if(64===r.length){const t=le(r.slice(0,32)),e=r.slice(32,64),n=128&e[0]?28:27;return e[0]&=127,new Ea(ba,t,le(e),n)}if(65!==fe(t)){const n=le(t.slice(0,32)),s=r.slice(32,64);128&s[0]&&e("non-canonical s");const i=Ea.getNormalizedV(r[64]);return new Ea(ba,n,le(s),i)}return e("invlaid raw signature length")}if(t instanceof Ea)return t.clone();const r=t.r;null==r&&e("missing r"),te(r,32)||e("invalid r");const n=function(t,r){if(null!=t)return te(t,32)||e("invalid s"),t;if(null!=r){te(r,32)||e("invalid yParityAndS");const t=la.getBytes(r);return t[0]&=127,le(t)}return e("missing s")}(t.s,t.yParityAndS);128&la.getBytes(n)[0]&&e("non-canonical s");const{networkV:s,v:i}=function(t,r,n){if(null!=t){const e=la.getBigInt(t);return{networkV:e>=ya?e:void 0,v:Ea.getNormalizedV(e)}}if(null!=r)return te(r,32)||e("invalid yParityAndS"),{v:128&la.getBytes(r)[0]?28:27};if(null!=n){switch(n){case 0:return{v:27};case 1:return{v:28}}return e("invalid yParity")}return e("missing v")}(t.v,t.yParityAndS,t.yParity),o=new Ea(ba,r,n,i);return s&&c(fa(o,ua,"f"),"networkV",s),"yParity"in t&&t.yParity!==o.yParity?e("yParity mismatch"):"yParityAndS"in t&&t.yParityAndS!==o.yParityAndS&&e("yParityAndS mismatch"),o}} -/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */const Aa=BigInt(0),Ta=BigInt(1),ka=BigInt(2),Pa=BigInt(3),Na=BigInt(8),xa=ka**BigInt(256),Oa={a:Aa,b:BigInt(7),P:xa-ka**BigInt(32)-BigInt(977),n:xa-BigInt("432420386565659656852420866394968145599"),h:Ta,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee")};function Ia(t){const{a:e,b:r}=Oa,n=Ja(t*t),s=Ja(n*t);return Ja(s+e*t+r)}const Sa=Oa.a===Aa;class Ra{constructor(t,e,r){this.x=t,this.y=e,this.z=r}static fromAffine(t){if(!(t instanceof _a))throw new TypeError("JacobianPoint#fromAffine: expected Point");return new Ra(t.x,t.y,Ta)}static toAffineBatch(t){const e=function(t,e=Oa.P){const r=new Array(t.length),n=Xa(t.reduce(((t,n,s)=>n===Aa?t:(r[s]=t,Ja(t*n,e))),Ta),e);return t.reduceRight(((t,n,s)=>n===Aa?t:(r[s]=Ja(t*r[s],e),Ja(t*n,e))),n),r}(t.map((t=>t.z)));return t.map(((t,r)=>t.toAffine(e[r])))}static normalizeZ(t){return Ra.toAffineBatch(t).map(Ra.fromAffine)}equals(t){if(!(t instanceof Ra))throw new TypeError("JacobianPoint expected");const{x:e,y:r,z:n}=this,{x:s,y:i,z:o}=t,a=Ja(n**ka),c=Ja(o**ka),l=Ja(e*c),u=Ja(s*a),h=Ja(Ja(r*o)*c),f=Ja(Ja(i*n)*a);return l===u&&h===f}negate(){return new Ra(this.x,Ja(-this.y),this.z)}double(){const{x:t,y:e,z:r}=this,n=Ja(t**ka),s=Ja(e**ka),i=Ja(s**ka),o=Ja(ka*(Ja((t+s)**ka)-n-i)),a=Ja(Pa*n),c=Ja(a**ka),l=Ja(c-ka*o),u=Ja(a*(o-l)-Na*i),h=Ja(ka*e*r);return new Ra(l,u,h)}add(t){if(!(t instanceof Ra))throw new TypeError("JacobianPoint expected");const{x:e,y:r,z:n}=this,{x:s,y:i,z:o}=t;if(s===Aa||i===Aa)return this;if(e===Aa||r===Aa)return t;const a=Ja(n**ka),c=Ja(o**ka),l=Ja(e*c),u=Ja(s*a),h=Ja(Ja(r*o)*c),f=Ja(Ja(i*n)*a),d=Ja(u-l),p=Ja(f-h);if(d===Aa)return p===Aa?this.double():Ra.ZERO;const w=Ja(d**ka),g=Ja(d*w),m=Ja(l*w),y=Ja(p**ka-g-ka*m),b=Ja(p*(m-y)-h*g),v=Ja(n*o*d);return new Ra(y,b,v)}subtract(t){return this.add(t.negate())}multiplyUnsafe(t){let e=Ka(t);const r=Ra.ZERO;if(e===Aa)return r;if(e===Ta)return this;if(!Sa){let t=r,n=this;for(;e>Aa;)e&Ta&&(t=t.add(n)),n=n.double(),e>>=Ta;return t}let{k1neg:n,k1:s,k2neg:i,k2:o}=Qa(e),a=r,c=r,l=this;for(;s>Aa||o>Aa;)s&Ta&&(a=a.add(l)),o&Ta&&(c=c.add(l)),l=l.double(),s>>=Ta,o>>=Ta;return n&&(a=a.negate()),i&&(c=c.negate()),c=new Ra(Ja(c.x*Oa.beta),c.y,c.z),a.add(c)}precomputeWindow(t){const e=Sa?128/t+1:256/t+1,r=[];let n=this,s=n;for(let i=0;i>=u,o>a&&(o-=l,t+=Ta),0===o){let t=n[r];e%2&&(t=t.negate()),i=i.add(t)}else{let t=n[r+Math.abs(o)-1];o<0&&(t=t.negate()),s=s.add(t)}}return{p:s,f:i}}multiply(t,e){let r,n,s=Ka(t);if(Sa){const{k1neg:t,k1:i,k2neg:o,k2:a}=Qa(s);let{p:c,f:l}=this.wNAF(i,e),{p:u,f:h}=this.wNAF(a,e);t&&(c=c.negate()),o&&(u=u.negate()),u=new Ra(Ja(u.x*Oa.beta),u.y,u.z),r=c.add(u),n=l.add(h)}else{const{p:t,f:i}=this.wNAF(s,e);r=t,n=i}return Ra.normalizeZ([r,n])[0]}toAffine(t=Xa(this.z)){const{x:e,y:r,z:n}=this,s=t,i=Ja(s*s),o=Ja(i*s),a=Ja(e*i),c=Ja(r*o);if(Ja(n*s)!==Ta)throw new Error("invZ was invalid");return new _a(a,c)}}Ra.BASE=new Ra(Oa.Gx,Oa.Gy,Ta),Ra.ZERO=new Ra(Aa,Ta,Aa);const Ba=new WeakMap;class _a{constructor(t,e){this.x=t,this.y=e}_setWindowSize(t){this._WINDOW_SIZE=t,Ba.delete(this)}static fromCompressedHex(t){const e=32===t.length,r=Ha(e?t:t.subarray(1));if(!rc(r))throw new Error("Point is not on curve");let n=function(t){const{P:e}=Oa,r=BigInt(6),n=BigInt(11),s=BigInt(22),i=BigInt(23),o=BigInt(44),a=BigInt(88),c=t*t*t%e,l=c*c*t%e,u=qa(l,Pa)*l%e,h=qa(u,Pa)*l%e,f=qa(h,ka)*c%e,d=qa(f,n)*f%e,p=qa(d,s)*d%e,w=qa(p,o)*p%e,g=qa(w,a)*w%e,m=qa(g,o)*p%e,y=qa(m,Pa)*l%e,b=qa(y,i)*d%e,v=qa(b,r)*c%e;return qa(v,ka)}(Ia(r));const s=(n&Ta)===Ta;if(e)s&&(n=Ja(-n));else{1==(1&t[0])!==s&&(n=Ja(-n))}const i=new _a(r,n);return i.assertValidity(),i}static fromUncompressedHex(t){const e=Ha(t.subarray(1,33)),r=Ha(t.subarray(33,65)),n=new _a(e,r);return n.assertValidity(),n}static fromHex(t){const e=Va(t),r=e.length,n=e[0];if(32===r||33===r&&(2===n||3===n))return this.fromCompressedHex(e);if(65===r&&4===n)return this.fromUncompressedHex(e);throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${r}`)}static fromPrivateKey(t){return _a.BASE.multiply(sc(t))}static fromSignature(t,e,r){const n=function(t){const{n:e}=Oa,r=8*t.length-256;let n=Ha(t);r>0&&(n>>=BigInt(r));n>=e&&(n-=e);return n}(t=Va(t)),{r:s,s:i}=function(t){if(t instanceof Ua)return t.assertValidity(),t;try{return Ua.fromDER(t)}catch(e){return Ua.fromCompact(t)}}(e);if(0!==r&&1!==r)throw new Error("Cannot recover signature: invalid recovery bit");if(n===Aa)throw new Error("Cannot recover signature: msgHash cannot be 0");const o=1&r?"03":"02",a=_a.fromHex(o+ja(s)),{n:c}=Oa,l=Xa(s,c),u=Ja(-n*l,c),h=Ja(i*l,c),f=_a.BASE.multiplyAndAddUnsafe(a,u,h);if(!f)throw new Error("Cannot recover signature: point at infinify");return f.assertValidity(),f}toRawBytes(t=!1){return Wa(this.toHex(t))}toHex(t=!1){const e=ja(this.x);if(t){return`${this.y&Ta?"03":"02"}${e}`}return`04${e}${ja(this.y)}`}toHexX(){return this.toHex(!0).slice(2)}toRawX(){return this.toRawBytes(!0).slice(1)}assertValidity(){const t="Point is not on elliptic curve",{x:e,y:r}=this;if(!rc(e)||!rc(r))throw new Error(t);const n=Ja(r*r);if(Ja(n-Ia(e))!==Aa)throw new Error(t)}equals(t){return this.x===t.x&&this.y===t.y}negate(){return new _a(this.x,Ja(-this.y))}double(){return Ra.fromAffine(this).double().toAffine()}add(t){return Ra.fromAffine(this).add(Ra.fromAffine(t)).toAffine()}subtract(t){return this.add(t.negate())}multiply(t){return Ra.fromAffine(this).multiply(t,this).toAffine()}multiplyAndAddUnsafe(t,e,r){const n=Ra.fromAffine(this).multiply(e),s=Ra.fromAffine(t).multiplyUnsafe(r),i=n.add(s);return i.equals(Ra.ZERO)?void 0:i.toAffine()}}function Ca(t){return Number.parseInt(t[0],16)>=8?"00"+t:t}function Fa(t){if(t.length<2||2!==t[0])throw new Error(`Invalid signature integer tag: ${Ga(t)}`);const e=t[1],r=t.subarray(2,e+2);if(!e||r.length!==e)throw new Error("Invalid signature integer: wrong length");if(0===r[0]&&r[1]<=127)throw new Error("Invalid signature integer: trailing length");return{data:Ha(r),left:t.subarray(e+2)}}_a.BASE=new _a(Oa.Gx,Oa.Gy),_a.ZERO=new _a(Aa,Aa);class Ua{constructor(t,e){this.r=t,this.s=e,this.assertValidity()}static fromCompact(t){const e=Da(t),r="Signature.fromCompact";if("string"!=typeof t&&!e)throw new TypeError(`${r}: Expected string or Uint8Array`);const n=e?Ga(t):t;if(128!==n.length)throw new Error(`${r}: Expected 64-byte hex`);return new Ua(za(n.slice(0,64)),za(n.slice(64,128)))}static fromDER(t){const e=Da(t);if("string"!=typeof t&&!e)throw new TypeError("Signature.fromDER: Expected string or Uint8Array");const{r:r,s:n}=function(t){if(t.length<2||48!=t[0])throw new Error(`Invalid signature tag: ${Ga(t)}`);if(t[1]!==t.length-2)throw new Error("Invalid signature: incorrect length");const{data:e,left:r}=Fa(t.subarray(2)),{data:n,left:s}=Fa(r);if(s.length)throw new Error(`Invalid signature: left bytes after parsing: ${Ga(s)}`);return{r:e,s:n}}(e?t:Wa(t));return new Ua(r,n)}static fromHex(t){return this.fromDER(t)}assertValidity(){const{r:t,s:e}=this;if(!ec(t))throw new Error("Invalid Signature: r must be 0 < r < n");if(!ec(e))throw new Error("Invalid Signature: s must be 0 < s < n")}hasHighS(){const t=Oa.n>>Ta;return this.s>t}normalizeS(){return this.hasHighS()?new Ua(this.r,Oa.n-this.s):this}toDERRawBytes(t=!1){return Wa(this.toDERHex(t))}toDERHex(t=!1){const e=Ca($a(this.s));if(t)return e;const r=Ca($a(this.r)),n=$a(r.length/2),s=$a(e.length/2);return`30${$a(r.length/2+e.length/2+4)}02${n}${r}02${s}${e}`}toRawBytes(){return this.toDERRawBytes()}toHex(){return this.toDERHex()}toCompactRawBytes(){return Wa(this.toCompactHex())}toCompactHex(){return ja(this.r)+ja(this.s)}}function La(...t){if(!t.every(Da))throw new Error("Uint8Array list expected");if(1===t.length)return t[0];const e=t.reduce(((t,e)=>t+e.length),0),r=new Uint8Array(e);for(let e=0,n=0;ee.toString(16).padStart(2,"0")));function Ga(t){if(!(t instanceof Uint8Array))throw new Error("Expected Uint8Array");let e="";for(let r=0;rxa)throw new Error("Expected number < 2^256");return t.toString(16).padStart(64,"0")}function $a(t){const e=t.toString(16);return 1&e.length?`0${e}`:e}function za(t){if("string"!=typeof t)throw new TypeError("hexToNumber: expected string, got "+typeof t);return BigInt(`0x${t}`)}function Wa(t){if("string"!=typeof t)throw new TypeError("hexToBytes: expected string, got "+typeof t);if(t.length%2)throw new Error("hexToBytes: received invalid unpadded hex"+t.length);const e=new Uint8Array(t.length/2);for(let r=0;r0)return BigInt(t);if("bigint"==typeof t&&ec(t))return t;throw new TypeError("Expected valid private scalar: 0 < scalar < curve.n")}function Ja(t,e=Oa.P){const r=t%e;return r>=Aa?r:e+r}function qa(t,e){const{P:r}=Oa;let n=t;for(;e-- >Aa;)n*=n,n%=r;return n}function Xa(t,e=Oa.P){if(t===Aa||e<=Aa)throw new Error(`invert: expected positive integers, got n=${t} mod=${e}`);let r=Ja(t,e),n=e,s=Aa,i=Ta;for(;r!==Aa;){const t=n%r,e=s-i*(n/r);n=r,r=t,s=i,i=e}if(n!==Ta)throw new Error("invert: does not exist");return Ja(s,e)}const Ya=(t,e)=>(t+e/ka)/e,Za=ka**BigInt(128);function Qa(t){const{n:e}=Oa,r=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-Ta*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=r,o=Ya(i*t,e),a=Ya(-n*t,e);let c=Ja(t-o*r-a*s,e),l=Ja(-o*n-a*i,e);const u=c>Za,h=l>Za;if(u&&(c=e-c),h&&(l=e-l),c>Za||l>Za)throw new Error("splitScalarEndo: Endomorphism failed, k="+t);return{k1neg:u,k1:c,k2neg:h,k2:l}}class tc{constructor(){this.v=new Uint8Array(32).fill(1),this.k=new Uint8Array(32).fill(0),this.counter=0}hmac(...t){return fc.hmacSha256(this.k,...t)}hmacSync(...t){if("function"!=typeof fc.hmacSha256Sync)throw new Error("utils.hmacSha256Sync is undefined, you need to set it");const e=fc.hmacSha256Sync(this.k,...t);if(e instanceof Promise)throw new Error("To use sync sign(), ensure utils.hmacSha256 is sync");return e}incr(){if(this.counter>=1e3)throw new Error("Tried 1,000 k values for sign(), all were invalid");this.counter+=1}async reseed(t=new Uint8Array){this.k=await this.hmac(this.v,Uint8Array.from([0]),t),this.v=await this.hmac(this.v),0!==t.length&&(this.k=await this.hmac(this.v,Uint8Array.from([1]),t),this.v=await this.hmac(this.v))}reseedSync(t=new Uint8Array){this.k=this.hmacSync(this.v,Uint8Array.from([0]),t),this.v=this.hmacSync(this.v),0!==t.length&&(this.k=this.hmacSync(this.v,Uint8Array.from([1]),t),this.v=this.hmacSync(this.v))}async generate(){return this.incr(),this.v=await this.hmac(this.v),this.v}generateSync(){return this.incr(),this.v=this.hmacSync(this.v),this.v}}function ec(t){return Aa0)e=BigInt(t);else if("string"==typeof t){if(64!==t.length)throw new Error("Expected 32 bytes of private key");e=za(t)}else{if(!Da(t))throw new TypeError("Expected valid private key");if(32!==t.length)throw new Error("Expected 32 bytes of private key");e=Ha(t)}if(!ec(e))throw new Error("Expected private key: 0 < key < n");return e}function ic(t){const e=Da(t),r="string"==typeof t,n=(e||r)&&t.length;return e?33===n||65===n:r?66===n||130===n:t instanceof _a}function oc(t,e,r=!1){if(ic(t))throw new TypeError("getSharedSecret: first arg must be private key");if(!ic(e))throw new TypeError("getSharedSecret: second arg must be public key");const n=(s=e)instanceof _a?(s.assertValidity(),s):_a.fromHex(s);var s;return n.assertValidity(),n.multiply(sc(t)).toRawBytes(r)}function ac(t){return Ha(t.length>32?t.slice(0,32):t)}function cc(t){const e=ac(t),r=Ja(e,Oa.n);return lc(r{if((t=Va(t)).length<40||t.length>1024)throw new Error("Expected 40-1024 bytes of private key as per FIPS 186");const e=Ja(Ha(t),Oa.n);if(e===Aa||e===Ta)throw new Error("Invalid private key");return function(t){return Wa(ja(t))}(e)},randomBytes:(t=32)=>{if(hc.web)return hc.web.getRandomValues(new Uint8Array(t));throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>fc.hashToPrivateKey(fc.randomBytes(40)),bytesToHex:Ga,mod:Ja,sha256:async t=>{if(hc.web){const e=await hc.web.subtle.digest("SHA-256",t.buffer);return new Uint8Array(e)}throw new Error("The environment doesn't have sha256 function")},hmacSha256:async(t,...e)=>{if(hc.web){const r=await hc.web.subtle.importKey("raw",t,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]),n=La(...e),s=await hc.web.subtle.sign("HMAC",r,n);return new Uint8Array(s)}throw new Error("The environment doesn't have hmac-sha256 function")},sha256Sync:void 0,hmacSha256Sync:void 0,precompute(t=8,e=_a.BASE){const r=e===_a.BASE?e:new _a(e.x,e.y);return r._setWindowSize(t),r.multiply(Pa),r}};var dc,pc=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},wc=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};fc.hmacSha256Sync=function(t,...e){return ie(Mr("sha256",t,he(e)))};class gc{constructor(t){dc.set(this,void 0),la.assertArgument(32===fe(t),"invalid private key length","privateKey","[REDACTED]"),pc(this,dc,le(t),"f")}get privateKey(){return wc(this,dc,"f")}get publicKey(){return gc.computePublicKey(wc(this,dc,"f"))}get compressedPublicKey(){return gc.computePublicKey(wc(this,dc,"f"),!0)}sign(t){la.assertArgument(32===fe(t),"invalid digest length","digest",t);const[e,r]=uc(ie(t),ie(wc(this,dc,"f")),{recovered:!0,canonical:!0}),n=Ua.fromHex(e);return Ea.from({r:bt("0x"+n.r.toString(16),32),s:bt("0x"+n.s.toString(16),32),v:r?28:27}).freeze()}computeShardSecret(t){const e=gc.computePublicKey(t);return le(oc(ie(wc(this,dc,"f")),e))}static computePublicKey(t,e){let r=la.getBytes(t,"key");if(32===r.length){return le(function(t,e=!1){return _a.fromPrivateKey(t).toRawBytes(e)}(r,!!e))}if(64===r.length){const t=new Uint8Array(65);t[0]=4,t.set(r,1),r=t}return le(_a.fromHex(r).toRawBytes(e))}static recoverPublicKey(t,e){const r=Ea.from(e),n=Ua.fromCompact(ie(he([r.r,r.s]))).toDERRawBytes(),s=function(t,e,r,n=!1){return _a.fromSignature(t,e,r).toRawBytes(n)}(ie(t),n,r.yParity);return null!=s?le(s):la.throwArgumentError("invalid signautre for digest","signature",e)}static _addPoints(t,e,r){const n=_a.fromHex(gc.computePublicKey(t).substring(2)),s=_a.fromHex(gc.computePublicKey(e).substring(2));return"0x"+n.add(s).toHex(!!r)}}function mc(t,e){return{address:us(t),storageKeys:(e||[]).map(((t,e)=>{if(32!==fe(t))throw new Error("");return t.toLowerCase()}))}}function yc(t){if(Array.isArray(t))return t.map(((t,e)=>{if(Array.isArray(t)){if(t.length>2)throw new Error("");return mc(t[0],t[1])}return mc(t.address,t.storageKeys)}));const e=Object.keys(t).map((e=>{const r=t[e].reduce(((t,e)=>(t[e]=!0,t)),{});return mc(e,Object.keys(r).sort())}));return e.sort(((t,e)=>t.address.localeCompare(e.address))),e}function bc(t){return us(an("0x"+gc.computePublicKey(t,!1).substring(4)).substring(26))}function vc(t,e){return bc(gc.recoverPublicKey(t,e))}dc=new WeakMap;const Ec=new T("@ethersproject/transaction@6.0.0-beta.2");var Ac,Tc=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},kc=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Pc=BigInt(0),Nc=BigInt(2),xc=BigInt(27),Oc=BigInt(28),Ic=BigInt(35),Sc=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");function Rc(t){return"0x"===t?null:us(t)}function Bc(t,e){try{return le(t)}catch(r){return Ec.throwArgumentError("invalid data",e,t)}}function _c(t,e){try{return yc(t)}catch(r){return Ec.throwArgumentError("invalid accessList",e,t)}}function Cc(t,e){return"0x"===t?0:Ec.getNumber(t,e)}function Fc(t,e){if("0x"===t)return Pc;const r=Ec.getBigInt(t,e);return r>Sc&&Ec.throwArgumentError("value exceeds uint size",e,r),r}function Uc(t,e){const r=Ec.getBigInt(t,"value"),n=vt(r);return n.length>32&&Ec.throwArgumentError("value too large",`tx.${e}`,r),n}function Lc(t){return yc(t).map((t=>[t.address,t.storageKeys]))}function Dc(t,e){const r=[Uc(t.nonce||0,"nonce"),Uc(t.gasPrice||0,"gasPrice"),Uc(t.gasLimit||0,"gasLimit"),null!=t.to?us(t.to):"0x",Uc(t.value||0,"value"),t.data||"0x"];let n=Pc;if(null!=t.chainId)n=Ec.getBigInt(t.chainId,"tx.chainId"),e&&null!=e.networkV&&e.legacyChainId!==n&&Ec.throwArgumentError("tx.chainId/sig.v mismatch","sig",e);else if(e){const t=e.legacyChainId;null!=t&&(n=t)}if(!e)return n!==Pc&&(r.push(vt(n)),r.push("0x"),r.push("0x")),ws(r);let s=BigInt(27+e.yParity);return n!==Pc?s=Ea.getChainIdV(n,e.v):BigInt(e.v)!==s&&Ec.throwArgumentError("tx.chainId/sig.v mismatch","sig",e),r.push(vt(s)),r.push(vt(e.r)),r.push(vt(e.s)),ws(r)}function Mc(t,e,r){let n;try{if(n=Cc(e[0],"yParity"),0!==n&&1!==n)throw new Error("bad yParity")}catch(t){return Ec.throwArgumentError("invalid yParity","yParity",e[0])}const s=ge(e[1],32),i=ge(e[2],32),o=Ea.from({r:s,s:i,yParity:n});t.signature=o}function Gc(t,e){const r=[Uc(t.chainId||0,"chainId"),Uc(t.nonce||0,"nonce"),Uc(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Uc(t.maxFeePerGas||0,"maxFeePerGas"),Uc(t.gasLimit||0,"gasLimit"),null!=t.to?us(t.to):"0x",Uc(t.value||0,"value"),t.data||"0x",Lc(t.accessList||[])];return e&&(r.push(Uc(e.yParity,"yParity")),r.push(vt(e.r)),r.push(vt(e.s))),he(["0x02",ws(r)])}function jc(t,e){const r=[Uc(t.chainId||0,"chainId"),Uc(t.nonce||0,"nonce"),Uc(t.gasPrice||0,"gasPrice"),Uc(t.gasLimit||0,"gasLimit"),null!=t.to?us(t.to):"0x",Uc(t.value||0,"value"),t.data||"0x",Lc(t.accessList||[])];return e&&(r.push(Uc(e.yParity,"recoveryParam")),r.push(vt(e.r)),r.push(vt(e.s))),he(["0x01",ws(r)])}class $c{constructor(){Ac.set(this,void 0),Tc(this,Ac,{type:null,to:null,nonce:0,gasLimit:BigInt(0),gasPrice:null,maxPriorityFeePerGas:null,maxFeePerGas:null,data:"0x",value:BigInt(0),chainId:BigInt(0),sig:null,accessList:null},"f")}get type(){return a(kc(this,Ac,"f"),"type")}get typeName(){switch(this.type){case 0:return"legacy";case 1:return"eip-2930";case 2:return"eip-1559"}return null}set type(t){switch(t){case null:c(kc(this,Ac,"f"),"type",null);break;case 0:case"legacy":c(kc(this,Ac,"f"),"type",0);break;case 1:case"berlin":case"eip-2930":c(kc(this,Ac,"f"),"type",1);break;case 2:case"london":case"eip-1559":c(kc(this,Ac,"f"),"type",2);break;default:throw new Error("unsupported transaction type")}}get to(){return a(kc(this,Ac,"f"),"to")}set to(t){c(kc(this,Ac,"f"),"to",null==t?null:us(t))}get nonce(){return a(kc(this,Ac,"f"),"nonce")}set nonce(t){c(kc(this,Ac,"f"),"nonce",Ec.getNumber(t,"value"))}get gasLimit(){return a(kc(this,Ac,"f"),"gasLimit")}set gasLimit(t){c(kc(this,Ac,"f"),"gasLimit",Ec.getBigInt(t))}get gasPrice(){const t=a(kc(this,Ac,"f"),"gasPrice");return null!=t||0!==this.type&&1!==this.type?t:Pc}set gasPrice(t){c(kc(this,Ac,"f"),"gasPrice",null==t?null:Ec.getBigInt(t,"gasPrice"))}get maxPriorityFeePerGas(){const t=a(kc(this,Ac,"f"),"maxPriorityFeePerGas");return null==t&&2===this.type?Pc:t}set maxPriorityFeePerGas(t){c(kc(this,Ac,"f"),"maxPriorityFeePerGas",null==t?null:Ec.getBigInt(t,"maxPriorityFeePerGas"))}get maxFeePerGas(){const t=a(kc(this,Ac,"f"),"maxFeePerGas");return null==t&&2===this.type?Pc:t}set maxFeePerGas(t){c(kc(this,Ac,"f"),"maxFeePerGas",null==t?null:Ec.getBigInt(t,"maxFeePerGas"))}get data(){return a(kc(this,Ac,"f"),"data")}set data(t){c(kc(this,Ac,"f"),"data",le(t))}get value(){return a(kc(this,Ac,"f"),"value")}set value(t){c(kc(this,Ac,"f"),"value",Ec.getBigInt(t,"value"))}get chainId(){return a(kc(this,Ac,"f"),"chainId")}set chainId(t){c(kc(this,Ac,"f"),"chainId",Ec.getBigInt(t))}get signature(){return a(kc(this,Ac,"f"),"sig")||null}set signature(t){c(kc(this,Ac,"f"),"sig",null==t?null:Ea.from(t))}get accessList(){const t=a(kc(this,Ac,"f"),"accessList")||null;return null!=t||1!==this.type&&2!==this.type?t:[]}set accessList(t){c(kc(this,Ac,"f"),"accessList",null==t?null:yc(t))}get hash(){if(null==this.signature)throw new Error("cannot hash unsigned transaction; maybe you meant .unsignedHash");return an(this.serialized)}get unsignedHash(){return an(this.unsignedSerialized)}get from(){return null==this.signature?null:vc(this.unsignedSerialized,this.signature)}get fromPublicKey(){return null==this.signature?null:""}isSigned(){return null!=this.signature}get serialized(){if(null==this.signature)throw new Error("cannot serialize unsigned transaction; maybe you meant .unsignedSerialized");const t=this.inferTypes();if(1!==t.length)throw new Error("cannot determine transaction type; specify type manually");switch(t[0]){case 0:return Dc(this,this.signature);case 1:return jc(this,this.signature);case 2:return Gc(this,this.signature)}throw new Error("unsupported type")}get unsignedSerialized(){const t=this.inferTypes();if(1!==t.length)throw new Error("cannot determine transaction type; specify type manually");switch(t[0]){case 0:return Dc(this);case 1:return jc(this);case 2:return Gc(this)}throw new Error("unsupported type")}inferTypes(){const t=null!=this.gasPrice,e=null!=this.maxFeePerGas||null!=this.maxPriorityFeePerGas,r=null!=this.accessList;if(null!=this.maxFeePerGas&&null!=this.maxPriorityFeePerGas&&this.maxFeePerGas(Object.freeze(t.storageKeys),Object.freeze(t)))))),Object.freeze(kc(this,Ac,"f")),this}isFrozen(){return Object.isFrozen(kc(this,Ac,"f"))}static from(t){if("string"==typeof t){const e=ie(t);if(e[0]>=127)return $c.from(function(t){const e=vs(t);if(!Array.isArray(e)||9!==e.length&&6!==e.length)return Ec.throwArgumentError("invalid field count for legacy transaction","data",t);const r={type:0,nonce:Cc(e[0],"nonce"),gasPrice:Fc(e[1],"gasPrice"),gasLimit:Fc(e[2],"gasLimit"),to:Rc(e[3]),value:Fc(e[4],"value"),data:Bc(e[5],"dta"),chainId:Pc};if(6===e.length)return r;const n=Fc(e[6],"v"),s=Fc(e[7],"r"),i=Fc(e[8],"s");if(s===Pc&&i===Pc)r.chainId=n;else{let s=(n-Ic)/Nc;sOc)&&Ec.throwArgumentError("non-canonical legacy v","v",e[6]),r.signature=Ea.from({r:ge(e[7],32),s:ge(e[8],32),v:n}),r.hash=an(t)}return r}(e));switch(e[0]){case 1:return $c.from(function(t){const e=vs(Ec.getBytes(t).slice(1));(!Array.isArray(e)||8!==e.length&&11!==e.length)&&Ec.throwArgumentError("invalid field count for transaction type: 1","data",le(t));const r={type:1,chainId:Fc(e[0],"chainId"),nonce:Cc(e[1],"nonce"),gasPrice:Fc(e[2],"gasPrice"),gasLimit:Fc(e[3],"gasLimit"),to:Rc(e[4]),value:Fc(e[5],"value"),data:Bc(e[6],"data"),accessList:_c(e[7],"accessList")};return 8===e.length||(r.hash=an(t),Mc(r,e.slice(8))),r}(e));case 2:return $c.from(function(t){const e=vs(Ec.getBytes(t).slice(1));(!Array.isArray(e)||9!==e.length&&12!==e.length)&&Ec.throwArgumentError("invalid field count for transaction type: 2","data",le(t));const r=Fc(e[2],"maxPriorityFeePerGas"),n=Fc(e[3],"maxFeePerGas"),s={type:2,chainId:Fc(e[0],"chainId"),nonce:Cc(e[1],"nonce"),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:Fc(e[4],"gasLimit"),to:Rc(e[5]),value:Fc(e[6],"value"),data:Bc(e[7],"data"),accessList:_c(e[8],"accessList")};return 9===e.length||(s.hash=an(t),Mc(s,e.slice(9))),s}(e))}throw new Error("unsupported transaction type")}const e=new $c;if(null!=t.type&&(e.type=t.type),null!=t.to&&(e.to=t.to),null!=t.nonce&&(e.nonce=t.nonce),null!=t.gasLimit&&(e.gasLimit=t.gasLimit),null!=t.gasPrice&&(e.gasPrice=t.gasPrice),null!=t.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas),null!=t.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null!=t.data&&(e.data=t.data),null!=t.value&&(e.value=t.value),null!=t.chainId&&(e.chainId=t.chainId),null!=t.signature&&(e.signature=Ea.from(t.signature)),null!=t.accessList&&(e.accessList=t.accessList),null!=t.hash){if(!e.isSigned())throw new Error("unsigned transaction cannot have a hashs");if(e.hash!==t.hash)throw new Error("hash mismatch")}if(null!=t.from){if(!e.isSigned())throw new Error("unsigned transaction cannot have a from");if(e.from.toLowerCase()!==(t.from||"").toLowerCase())throw new Error("from mismatch")}return e}}Ac=new WeakMap;var zc,Wc,Hc=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Vc=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Kc(t){return null==t?null:t}function Jc(t){return null==t?null:t.toString()}class qc{constructor(t,e,n){r(this,{gasPrice:Kc(t),maxFeePerGas:Kc(e),maxPriorityFeePerGas:Kc(n)})}toJSON(){const{gasPrice:t,maxFeePerGas:e,maxPriorityFeePerGas:r}=this;return{_type:"FeeData",gasPrice:Jc(t),maxFeePerGas:Jc(e),maxPriorityFeePerGas:Jc(r)}}}class Xc{constructor(t,e){zc.set(this,void 0),null==e&&(e=nl),Hc(this,zc,Object.freeze(t.transactions.map((t=>{if("string"!=typeof t&&t.provider!==e)throw new Error("provider mismatch");return t}))),"f"),r(this,{provider:e,hash:Kc(t.hash),number:t.number,timestamp:t.timestamp,parentHash:t.parentHash,nonce:t.nonce,difficulty:t.difficulty,gasLimit:t.gasLimit,gasUsed:t.gasUsed,miner:t.miner,extraData:t.extraData,baseFeePerGas:Kc(t.baseFeePerGas)})}get transactions(){return Vc(this,zc,"f")}toJSON(){const{baseFeePerGas:t,difficulty:e,extraData:r,gasLimit:n,gasUsed:s,hash:i,miner:o,nonce:a,number:c,parentHash:l,timestamp:u,transactions:h}=this;return{_type:"Block",baseFeePerGas:Jc(t),difficulty:Jc(e),extraData:r,gasLimit:Jc(n),gasUsed:Jc(s),hash:i,miner:o,nonce:a,number:c,parentHash:l,timestamp:u,transactions:h}}[(zc=new WeakMap,Symbol.iterator)](){let t=0;return{next:()=>t{if(e!==t.provider)throw new Error("provider mismatch");return t}))),"f"),r(this,{provider:e,to:t.to,from:t.from,contractAddress:t.contractAddress,hash:t.hash,index:t.index,blockHash:t.blockHash,blockNumber:t.blockNumber,logsBloom:t.logsBloom,gasUsed:t.gasUsed,cumulativeGasUsed:t.cumulativeGasUsed,gasPrice:t.effectiveGasPrice||t.gasPrice,byzantium:t.byzantium,status:t.status,root:t.root})}get logs(){return Vc(this,Wc,"f")}toJSON(){const{to:t,from:e,contractAddress:r,hash:n,index:s,blockHash:i,blockNumber:o,logsBloom:a,logs:c,byzantium:l,status:u,root:h}=this;return{_type:"TransactionReceipt",blockHash:i,blockNumber:o,byzantium:l,contractAddress:r,cumulativeGasUsed:Jc(this.cumulativeGasUsed),from:e,gasPrice:Jc(this.gasPrice),gasUsed:Jc(this.gasUsed),hash:n,index:s,logs:c,logsBloom:a,root:h,status:u,to:t}}get length(){return this.logs.length}[(Wc=new WeakMap,Symbol.iterator)](){let t=0;return{next:()=>tthis.hash(t))),new Xc(r,e)}blockWithTransactions(t,e){throw new Error}transactionRequest(t,e){return al(this,sl,"f").transactionRequest(t)}transactionResponse(t,e){null==(t=Object.assign({},t)).data&&null!=t.input&&(t.data=t.input),null==t.gasLimit&&t.gas&&(t.gasLimit=t.gas),t=al(this,sl,"f").transactionResponse(t);const r=Ea.from({r:t.r,s:t.s,v:t.v});return t.signature=r,null==t.chainId&&(t.chainId=r.legacyChainId),new Qc(t,e)}log(t,e){const r=this.object({address:this.address,blockHash:this.hash,blockNumber:this.number,data:this.data,index:this.number,removed:this.boolean,topics:this.topics,transactionHash:this.hash,transactionIndex:this.number},{index:["logIndex"]})(t);return new Yc(r,e)}receipt(t,e){const r=this.object({blockHash:this.hash,blockNumber:this.number,contractAddress:this.allowNull(this.address),cumulativeGasUsed:this.bigNumber,from:this.address,gasUsed:this.bigNumber,logs:this.arrayOf((t=>this.log(t,e))),logsBloom:this.data,root:this.allowNull(this.data),status:this.allowNull(this.number),to:this.address,gasPrice:this.allowNull(this.bigNumber),hash:this.hash,index:this.number,type:this.allowNull(this.number,0)},{hash:["transactionHash"],gasPrice:["effectiveGasPrice"],index:["transactionIndex"]})(t);if(null!=r.root)if(r.root.length<=4){const t=parseInt(r.root);if(0!==t&&1!==t)return Wo.throwError("invalid alt-root-status","BAD_DATA",{value:r.root});if(null!=r.status&&r.status!==t)return Wo.throwError("alt-root-status/status mismatch","BAD_DATA",{value:{root:r.root,status:r.status}});r.status=t,delete r.root}else if(!te(r.root,32))return Wo.throwError("invalid receipt root hash","BAD_DATA",{value:r.root});return new Zc(r,e)}topics(t){return al(this,sl,"f").topics(t)}filter(t){return al(this,sl,"f").filter(t)}filterLog(t){return console.log("ME",t),null}transaction(t){throw new Error}accessList(t){return yc(t)}allowFalsish(t,e){return r=>r?t.call(this,r):e}allowNull(t,e){return r=>null==r?e:t.call(this,r)}arrayOf(t){return e=>{if(!Array.isArray(e))throw new Error("not an array");return e.map((e=>t.call(this,e)))}}bigNumber(t){return Wo.getBigInt(t,"value")}uint256(t){const e=this.bigNumber(t);return(e<0||e>cl)&&Wo.throwArgumentError("invalid uint256","value",t),e}boolean(t){switch(t){case!0:case"true":return!0;case!1:case"false":return!1}return Wo.throwArgumentError(`invalid boolean; ${JSON.stringify(t)}`,"value",t)}_hexstring(t){return null==t&&(t=!1),function(e){if(te(e,t))return e.toLowerCase();throw new Error("bad hexstring")}}data(t){return null==fe(t)&&Wo.throwArgumentError("","value",t),t}hash(t){return 32!==fe(t)&&Wo.throwArgumentError("","value",t),al(this,sl,"f").data(t)}number(t){return Wo.getNumber(t)}object(t,e){return r=>{const n={};for(const s in t){let i=s;if(e&&s in e&&!(i in r))for(const t of e[s])if(t in r){i=t;break}try{const e=t[s].call(this,r[i]);void 0!==e&&(n[s]=e)}catch(t){const e=t instanceof Error?t.message:"not-an-error";Wo.throwError(`invalid value for value.${s} (${e})`,"BAD_DATA",{value:r})}}return n}}storageSlot(t){return bt(Wo.getBigInt(t),32)}}sl=new WeakMap,il=new WeakMap;class hl{constructor(t){r(this,{name:t})}clone(){return new hl(this.name)}validate(t){return this}}class fl extends hl{constructor(t=0,e){super(`org.ethers.plugins.gas-cost#${t||0}`);const n={effectiveBlock:t};function s(t,r){let s=(e||{})[t];null==s&&(s=r),"number"!=typeof s&&Wo.throwArgumentError(`invalud value for ${t}`,"costs",e),n[t]=s}s("txBase",21e3),s("txCreate",32e3),s("txDataZero",4),s("txDataNonzero",16),s("txAccessListStorageKey",1900),s("txAccessListAddress",2400),r(this,n)}clone(){return new fl(this.effectiveBlock,this)}}class dl extends hl{constructor(t,e){super("org.ethers.plugins.ens"),r(this,{address:t||"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",targetNetwork:null==e?1:e})}clone(){return new dl(this.address,this.targetNetwork)}validate(t){return t.formatter.address(this.address),this}}class pl extends hl{constructor(t){super("org.ethers.plugins.max-priority-fee"),r(this,{priorityFee:Wo.getBigInt(t)})}async getPriorityFee(t){return this.priorityFee}clone(){return new pl(this.priorityFee)}}var wl,gl=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},ml=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const yl=new Map,bl=new ul;class vl{constructor(t,e,r){wl.set(this,void 0);const n=Wo.getBigInt(e);null==r&&(r=bl);const s=new Map;gl(this,wl,{name:t,chainId:n,formatter:r,plugins:s},"f")}toJSON(){return{name:this.name,chainId:this.chainId}}get name(){return a(ml(this,wl,"f"),"name")}set name(t){c(ml(this,wl,"f"),"name",t)}get chainId(){return a(ml(this,wl,"f"),"chainId")}set chainId(t){c(ml(this,wl,"f"),"chainId",Wo.getBigInt(t,"chainId"))}get formatter(){return a(ml(this,wl,"f"),"formatter")}set formatter(t){c(ml(this,wl,"f"),"formatter",t)}get plugins(){return Array.from(ml(this,wl,"f").plugins.values())}attachPlugin(t){if(this.isFrozen())throw new Error("frozen");if(ml(this,wl,"f").plugins.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return ml(this,wl,"f").plugins.set(t.name,t.validate(this)),this}getPlugin(t){return ml(this,wl,"f").plugins.get(t)||null}getPlugins(t){return this.plugins.filter((e=>e.name.split("#")[0]===t))}clone(){const t=new vl(this.name,this.chainId,this.formatter);return this.plugins.forEach((e=>{t.attachPlugin(e.clone())})),t}freeze(){return Object.freeze(ml(this,wl,"f")),this}isFrozen(){return Object.isFrozen(ml(this,wl,"f"))}computeIntrinsicGas(t){const e=this.getPlugin("org.ethers.gas-cost")||new fl;let r=e.txBase;if(null==t.to&&(r+=e.txCreate),t.data)for(let n=2;n{this._poll(t,Dl(this,xl,"f"))}),"f")}async _poll(t,e){throw new Error("sub-classes must override this")}start(){Dl(this,Ol,"f").call(this,-2),Dl(this,xl,"f").on("block",Dl(this,Ol,"f"))}stop(){Dl(this,xl,"f").off("block",Dl(this,Ol,"f"))}pause(t){this.stop()}resume(){this.start()}}xl=new WeakMap,Ol=new WeakMap;class $l extends jl{constructor(t,e){super(t),Il.set(this,void 0),Ll(this,Il,Ml(e),"f")}async _poll(t,e){throw new Error("@TODO")}}Il=new WeakMap;class zl extends jl{constructor(t,e){super(t),Sl.set(this,void 0),Ll(this,Sl,e,"f")}async _poll(t,e){const r=await e.getTransactionReceipt(Dl(this,Sl,"f"));r&&e.emit(Dl(this,Sl,"f"),r)}}Sl=new WeakMap;class Wl{constructor(t,e){Rl.add(this),Bl.set(this,void 0),_l.set(this,void 0),Cl.set(this,void 0),Fl.set(this,void 0),Ll(this,Bl,t,"f"),Ll(this,_l,Ml(e),"f"),Ll(this,Cl,Dl(this,Rl,"m",Ul).bind(this),"f"),Ll(this,Fl,-2,"f")}start(){-2===Dl(this,Fl,"f")&&Dl(this,Bl,"f").getBlockNumber().then((t=>{Ll(this,Fl,t,"f")})),Dl(this,Bl,"f").on("block",Dl(this,Cl,"f"))}stop(){Dl(this,Bl,"f").off("block",Dl(this,Cl,"f"))}pause(t){this.stop(),t&&Ll(this,Fl,-2,"f")}resume(){this.start()}}Bl=new WeakMap,_l=new WeakMap,Cl=new WeakMap,Fl=new WeakMap,Rl=new WeakSet,Ul=async function(t){if(-2===Dl(this,Fl,"f"))return;const e=Ml(Dl(this,_l,"f"));e.fromBlock=Dl(this,Fl,"f")+1,e.toBlock=t;const r=await Dl(this,Bl,"f").getLogs(e);if(0!==r.length){Ll(this,Fl,t,"f");for(const t of r)Dl(this,Bl,"f").emit(Dl(this,_l,"f"),t)}else Dl(this,Fl,"f"){if("bigint"==typeof e)return`bigint:${e.toString()}`;if("string"==typeof e)return e.toLowerCase();if("object"==typeof e&&!Array.isArray(e)){const t=Object.keys(e);return t.sort(),t.reduce(((t,r)=>(t[r]=e[r],t)),{})}return e}))}class uu{constructor(t){r(this,{name:t})}start(){}stop(){}pause(t){}resume(){}}function hu(t){return(t=Array.from(new Set(t).values())).sort(),t}async function fu(t,e){if(null==t)throw new Error("invalid event");if(Array.isArray(t)&&(t={topics:t}),"string"==typeof t)switch(t){case"block":case"pending":case"debug":case"network":return{type:t,tag:t}}if(te(t,32)){const e=t.toLowerCase();return{type:"transaction",tag:lu("tx",{hash:e}),hash:e}}if(t.orphan){const e=t;return{type:"orphan",tag:lu("orphan",e),filter:(r=e,JSON.parse(JSON.stringify(r)))}}var r;if(t.address||t.topics){const r=t,n={topics:(r.topics||[]).map((t=>null==t?null:Array.isArray(t)?hu(t.map((t=>t.toLowerCase()))):t.toLowerCase()))};if(r.address){const t=[],s=[],i=r=>{te(r)?t.push(r):s.push((async()=>{t.push(await Ps(r,e))})())};Array.isArray(r.address)?r.address.forEach(i):i(r.address),s.length&&await Promise.all(s),n.address=hu(t.map((t=>t.toLowerCase())))}return{filter:n,tag:lu("event",n),type:"event"}}return Wo.throwArgumentError("unknown ProviderEvent","event",t)}function du(){return(new Date).getTime()}class pu{constructor(t){if(Hl.add(this),Vl.set(this,void 0),Kl.set(this,void 0),Jl.set(this,void 0),ql.set(this,void 0),Xl.set(this,void 0),Yl.set(this,void 0),Zl.set(this,void 0),Ql.set(this,void 0),tu.set(this,void 0),"any"===t)ou(this,Xl,!0,"f"),ou(this,ql,null,"f");else if(t){const e=vl.from(t);ou(this,Xl,!1,"f"),ou(this,ql,Promise.resolve(e),"f"),setTimeout((()=>{this.emit("network",e,null)}),0)}else ou(this,Xl,!1,"f"),ou(this,ql,null,"f");ou(this,Yl,new Map,"f"),ou(this,Vl,new Map,"f"),ou(this,Kl,new Map,"f"),ou(this,Jl,null,"f"),ou(this,Zl,0,"f"),ou(this,Ql,new Map,"f"),ou(this,tu,!1,"f")}get provider(){return this}get plugins(){return Array.from(au(this,Kl,"f").values())}attachPlugin(t){if(au(this,Kl,"f").get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return au(this,Kl,"f").set(t.name,t.validate(this)),this}getPlugin(t){return au(this,Kl,"f").get(t)||null}set disableCcipRead(t){ou(this,tu,!!t,"f")}get disableCcipRead(){return au(this,tu,"f")}async ccipReadFetch(t,e,r){if(this.disableCcipRead||0===r.length||null==t.to)return null;const n=t.to.toLowerCase(),s=e.toLowerCase(),i=[];for(let e=0;e=400&&u.statusCode<500)return Wo.throwError(`response not found during CCIP fetch: ${l}`,"OFFCHAIN_FAULT",{reason:"404_MISSING_RESOURCE",transaction:t,info:{url:o,errorMessage:l}});i.push(l)}return Wo.throwError(`error encountered during CCIP fetch: ${i.map((t=>JSON.stringify(t))).join(", ")}`,"OFFCHAIN_FAULT",{reason:"500_SERVER_ERROR",transaction:t,info:{urls:r,errorMessages:i}})}_wrapTransaction(t,e,r){return t}_detectNetwork(){return Wo.throwError("sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(t){return Wo.throwError(`unsupported method: ${t.method}`,"UNSUPPORTED_OPERATION",{operation:t.method,info:t})}async getBlockNumber(){return Wo.getNumber(await au(this,Hl,"m",eu).call(this,{method:"getBlockNumber"}),"%response")}async _getAddress(t){return"string"==typeof t?t:await t.getAddress()}async _getBlockTag(t){const e=await this.getNetwork();if("number"==typeof t&&Number.isSafeInteger(t)&&t<0){let r=await this.getBlockNumber();return r+=t,r<0&&(r=0),e.formatter.blockTag(r)}return e.formatter.blockTag(t)}async getNetwork(){if(null==au(this,ql,"f")){const t=this._detectNetwork().then((t=>(this.emit("network",t,null),t)),(e=>{throw au(this,ql,"f")===t&&ou(this,ql,null,"f"),e}));return ou(this,ql,t,"f"),await t}const t=au(this,ql,"f"),[e,r]=await Promise.all([t,this._detectNetwork()]);return e.chainId!==r.chainId&&(au(this,Xl,"f")?(this.emit("network",r,e),au(this,ql,"f")===t&&ou(this,ql,Promise.resolve(r),"f")):Wo.throwError(`network changed: ${e.chainId} => ${r.chainId} `,"NETWORK_ERROR",{event:"changed"})),e.clone().freeze()}async getFeeData(){const{block:e,gasPrice:r}=await t({block:this.getBlock("latest"),gasPrice:(async()=>{try{const t=await au(this,Hl,"m",eu).call(this,{method:"getGasPrice"});return Wo.getBigInt(t,"%response")}catch(t){}return null})()});let n=null,s=null;if(e&&e.baseFeePerGas){s=BigInt("1500000000");const t=(await this.getNetwork()).getPlugin("org.ethers.plugins.max-priority-fee");t&&(s=await t.getPriorityFee(this)),n=e.baseFeePerGas*cu+s}return new qc(r,n,s)}async _getTransaction(e){const r=await this.getNetwork(),n=Object.assign({},e,await t({to:e.to?Ps(e.to,this):void 0,from:e.from?Ps(e.from,this):void 0}));return r.formatter.transactionRequest(n)}async estimateGas(t){const e=await this._getTransaction(t);return Wo.getBigInt(await au(this,Hl,"m",eu).call(this,{method:"estimateGas",transaction:e}),"%response")}async call(e){const{tx:r,blockTag:n}=await t({tx:this._getTransaction(e),blockTag:this._getBlockTag(e.blockTag)});return au(this,Hl,"m",ru).call(this,r,n,e.enableCcipRead?0:-1)}async getBalanceOf(e,r){const{address:n,blockTag:s}=await t({address:Ps(e),blockTag:this._getBlockTag(r)});return Wo.getBigInt(await au(this,Hl,"m",eu).call(this,{method:"getBalance",address:n,blockTag:s}),"%response")}async getTransactionCountOf(e,r){const{address:n,blockTag:s}=await t({address:Ps(e),blockTag:this._getBlockTag(r)});return Wo.getNumber(await au(this,Hl,"m",eu).call(this,{method:"getTransactionCount",address:n,blockTag:s}),"%response")}async getCode(e,r){const{address:n,blockTag:s}=await t({address:Ps(e),blockTag:this._getBlockTag(r)});return le(await au(this,Hl,"m",eu).call(this,{method:"getCode",address:n,blockTag:s}))}async getStorageAt(e,r,n){const s=Wo.getBigInt(r),{address:i,blockTag:o}=await t({address:Ps(e),blockTag:this._getBlockTag(n)});return le(await au(this,Hl,"m",eu).call(this,{method:"getStorageAt",address:i,position:s,blockTag:o}))}async broadcastTransaction(t){throw new Error}async getBlock(t){const e=(await this.getNetwork()).formatter,r=await au(this,Hl,"m",nu).call(this,t,!1);return null==r?null:e.block(r,this)}async getBlockWithTransactions(t){const e=(await this.getNetwork()).formatter,r=au(this,Hl,"m",nu).call(this,t,!0);return null==r?null:e.blockWithTransactions(r,this)}async getTransaction(t){const e=(await this.getNetwork()).formatter,r=await au(this,Hl,"m",eu).call(this,{method:"getTransaction",hash:t});return e.transactionResponse(r,this)}async getTransactionReceipt(t){const e=(await this.getNetwork()).formatter,r=await au(this,Hl,"m",eu).call(this,{method:"getTransactionReceipt",hash:t});if(null==r)return null;if(null==r.gasPrice&&null==r.effectiveGasPrice){const e=await au(this,Hl,"m",eu).call(this,{method:"getTransaction",hash:t});r.effectiveGasPrice=e.gasPrice}return e.receipt(r,this)}async _getFilter(e){const r=(e.topics||[]).map((t=>null==t?null:Array.isArray(t)?hu(t.map((t=>t.toLowerCase()))):t.toLowerCase())),n="blockHash"in e?e.blockHash:void 0,s={};e.address&&(Array.isArray(e.address)?s.address=Promise.all(e.address.map((t=>Ps(t,this)))):s.address=Ps(e.address,this));const i=t=>{null!=e[t]&&(s[t]=this._getBlockTag(e[t]))};i("fromBlock"),i("toBlock");const o=await t(s);if(Array.isArray(o.address)&&o.address.sort(),o.topics=r,n){if(e.fromBlock||e.toBlock)throw new Error("invalid filter");o.blockHash=n}return o}async getLogs(e){const{network:r,filter:n}=await t({network:this.getNetwork(),filter:this._getFilter(e)});return(await au(this,Hl,"m",eu).call(this,{method:"getLogs",filter:n})).map((t=>r.formatter.log(t,this)))}_getProvider(t){return Wo.throwError("provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(t){return await ca.fromName(this,t)}async getAvatar(t){const e=await this.getResolver(t);return e?await e.getAvatar():null}async resolveName(t){if("string"!=typeof t){const e=await t.getAddress();return null==e?Wo.throwArgumentError("Addressable returned no address","name",t):e}{const e=await this.getResolver(t);if(e)return await e.getAddress()}return null}async lookupAddress(t){throw new Error}async waitForTransaction(t,e=1,r){return 0===e?this.getTransactionReceipt(t):new Promise((async(n,s)=>{let i=null;const o=async r=>{try{const s=await this.getTransactionReceipt(t);if(null!=s&&r-s.blockNumber+1>=e)return n(s),this.off("block",o),void(i&&(clearTimeout(i),i=null))}catch(t){console.log("EEE",t)}this.once("block",o)};null!=r&&(i=setTimeout((()=>{null!=i&&(i=null,this.off("block",o),s(Wo.makeError("timeout","TIMEOUT",{reason:"timeout"})))}),r)),o(await this.getBlockNumber())}))}async waitForBlock(t){throw new Error}_clearTimeout(t){const e=au(this,Ql,"f").get(t);e&&(e.timer&&clearTimeout(e.timer),au(this,Ql,"f").delete(t))}_setTimeout(t,e=0){var r,n;const s=(ou(this,Zl,(n=au(this,Zl,"f"),r=n++,n),"f"),r),i=()=>{au(this,Ql,"f").delete(s),t()};if(this.paused)au(this,Ql,"f").set(s,{timer:null,func:i,time:e});else{const t=setTimeout(i,e);au(this,Ql,"f").set(s,{timer:t,func:i,time:du()})}return s}_forEachSubscriber(t){for(const e of au(this,Vl,"f").values())t(e.subscriber)}_getSubscriber(t){switch(t.type){case"debug":case"network":return new uu(t.type);case"block":return new Gl(this);case"event":return new Wl(this,t.filter);case"transaction":return new zl(this,t.hash);case"orphan":return new $l(this,t.filter)}throw new Error(`unsupported event: ${t.type}`)}_recoverSubscriber(t,e){for(const r of au(this,Vl,"f").values())if(r.subscriber===t){r.started&&r.subscriber.stop(),r.subscriber=e,r.started&&e.start(),null!=au(this,Jl,"f")&&e.pause(au(this,Jl,"f"));break}}async on(t,e){const r=await au(this,Hl,"m",iu).call(this,t);return r.listeners.push({listener:e,once:!1}),r.started||(r.subscriber.start(),r.started=!0,null!=au(this,Jl,"f")&&r.subscriber.pause(au(this,Jl,"f"))),this}async once(t,e){const r=await au(this,Hl,"m",iu).call(this,t);return r.listeners.push({listener:e,once:!0}),r.started||(r.subscriber.start(),r.started=!0,null!=au(this,Jl,"f")&&r.subscriber.pause(au(this,Jl,"f"))),this}async emit(t,...e){const r=await au(this,Hl,"m",su).call(this,t,e);if(!r)return!1;const n=r.listeners.length;return r.listeners=r.listeners.filter((({listener:r,once:n})=>{const s=new o(this,n?null:r,t);try{r.call(this,...e,s)}catch(t){}return!n})),n>0}async listenerCount(t){if(t){const e=await au(this,Hl,"m",su).call(this,t);return e?e.listeners.length:0}let e=0;for(const{listeners:t}of au(this,Vl,"f").values())e+=t.length;return e}async listeners(t){if(t){const e=await au(this,Hl,"m",su).call(this,t);return e?e.listeners.map((({listener:t})=>t)):[]}let e=[];for(const{listeners:t}of au(this,Vl,"f").values())e=e.concat(t.map((({listener:t})=>t)));return e}async off(t,e){const r=await au(this,Hl,"m",su).call(this,t);if(!r)return this;if(e){const t=r.listeners.map((({listener:t})=>t)).indexOf(e);t>=0&&r.listeners.splice(t,1)}return e&&0!==r.listeners.length||(r.started&&r.subscriber.stop(),au(this,Vl,"f").delete(r.tag)),this}async removeAllListeners(t){if(t){const{tag:e,started:r,subscriber:n}=await au(this,Hl,"m",iu).call(this,t);r&&n.stop(),au(this,Vl,"f").delete(e)}else for(const[t,{started:e,subscriber:r}]of au(this,Vl,"f"))e&&r.stop(),au(this,Vl,"f").delete(t);return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return this.off(t,e)}async shutdown(){this.removeAllListeners();for(const t of au(this,Ql,"f").keys())this._clearTimeout(t)}get paused(){return null!=au(this,Jl,"f")}pause(t){if(null!=au(this,Jl,"f")){if(au(this,Jl,"f")==!!t)return;return Wo.throwError("cannot change pause type; resume first","UNSUPPORTED_OPERATION",{operation:"pause"})}this._forEachSubscriber((e=>e.pause(t))),ou(this,Jl,!!t,"f");for(const t of au(this,Ql,"f").values())t.timer&&clearTimeout(t.timer),t.time=du()-t.time}resume(){if(null!=au(this,Jl,"f")){this._forEachSubscriber((t=>t.resume())),ou(this,Jl,null,"f");for(const t of au(this,Ql,"f").values()){let e=t.time;e<0&&(e=0),t.time=du(),setTimeout(t.func,e)}}}}function wu(t,e){try{const r=gu(t,e);if(r)return ii(r)}catch(t){}return null}function gu(t,e){if("0x"===t)return null;try{const r=Wo.getNumber(de(t,e,e+32)),n=Wo.getNumber(de(t,r,r+32));return de(t,r+32,r+32+n)}catch(t){}return null}function mu(t){const e=vt(t);if(e.length>32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function yu(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}Vl=new WeakMap,Kl=new WeakMap,Jl=new WeakMap,ql=new WeakMap,Xl=new WeakMap,Yl=new WeakMap,Zl=new WeakMap,Ql=new WeakMap,tu=new WeakMap,Hl=new WeakSet,eu=async function(t){const e=lu(t.method,t);let r=au(this,Yl,"f").get(e);return r||(r=this._perform(t),au(this,Yl,"f").set(e,r),setTimeout((()=>{au(this,Yl,"f").get(e)===r&&au(this,Yl,"f").delete(e)}),250)),await r},ru=async function t(e,r,n){n>=10&&Wo.throwError("CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},e,{blockTag:r,enableCcipRead:!0})});const s=e;try{return le(await this._perform({method:"call",transaction:s,blockTag:r}))}catch(e){if(!this.disableCcipRead&&u(e)&&n>=0&&"latest"===r&&null!=s.to&&"0x556f1830"===de(e.data,0,4)){const i=e.data,o=await Ps(s.to,this);let a;try{a=function(t){const e={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};if(fe(t)<160)throw new Error("insufficient OffchainLookup data");const r=de(t,0,32);if(de(r,0,12)!==de(Eu,0,12))throw new Error("corrupt OffchainLookup sender");e.sender=de(r,12);try{const r=[],n=Wo.getNumber(de(t,32,64)),s=Wo.getNumber(de(t,n,n+32)),i=de(t,n+32);for(let t=0;te[t])),e}(de(e.data,4))}catch(t){return Wo.throwError(t.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:s,info:{data:i}})}if(a.sender.toLowerCase()!==o.toLowerCase())return Wo.throwError("CCIP Read sender mismatch","CALL_EXCEPTION",{data:i,transaction:s,errorSignature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",errorName:"OffchainLookup",errorArgs:a.errorArgs});const c=await this.ccipReadFetch(s,a.calldata,a.urls);return null==c?Wo.throwError("CCIP Read failed to fetch data","OFFCHAIN_FAULT",{reason:"FETCH_FAILED",transaction:s,info:{data:e.data,errorArgs:a.errorArgs}}):au(this,Hl,"m",t).call(this,{to:o,data:he([a.selector,vu([c,a.extraData])])},r,n+1)}throw e}},nu=async function(t,e){const r=(await this.getNetwork()).formatter;return te(t,32)?await au(this,Hl,"m",eu).call(this,{method:"getBlock",blockHash:t,includeTransactions:e}):await au(this,Hl,"m",eu).call(this,{method:"getBlock",blockTag:r.blockTag(t),includeTransactions:e})},su=async function(t,e){let r=await fu(t,this);return"event"===r.type&&e&&e.length>0&&!0===e[0].removed&&(r=await fu({orphan:"drop-log",log:e[0]},this)),au(this,Vl,"f").get(r.tag)||null},iu=async function(t){const e=await fu(t,this),r=e.tag;let n=au(this,Vl,"f").get(r);if(!n){n={subscriber:this._getSubscriber(e),tag:r,addressableMap:new WeakMap,nameMap:new Map,started:!1,listeners:[]},au(this,Vl,"f").set(r,n)}return n};const bu=new Uint8Array([]);function vu(t){const e=[];let r=0;for(let n=0;nnull==t?Wo.throwArgumentError("transaction to ENS name not configured","tx.to",n.to):t))),null!=n.from){const t=n.from;n.from=Promise.all([this.getAddress(),this.resolveName(t)]).then((([t,e])=>e&&t.toLowerCase()===e.toLowerCase()?t:Wo.throwArgumentError("transaction from mismatch","tx.from",e)))}return null==n.nonce&&(n.nonce=this.getTransactionCount()),n=t(n),null==n.gasLimit&&(n.gasLimit=r.estimateGas(n)),n=t(n),await t(n)}async resolveName(t){const e=Ou(this,Au,"m",Tu).call(this,"resolveName");return await e.resolveName(t)}async sendTransaction(t){const e=Ou(this,Au,"m",Tu).call(this,"sendTransaction"),r=$c.from(await this.populateTransaction(t));return await e.broadcastTransaction(await this.signTransaction(r))}}Au=new WeakSet,Tu=function(t){return this.provider?this.provider:Wo.throwError("missing provider","UNSUPPORTED_OPERATION",{operation:t})},ku=async function(t){const e=[];if(null!=(t=Object.assign({},t)).from){const r=t.from;e.push(Promise.all([this.getAddress(),this.resolveName(r)]).then((([e,r])=>{r&&e.toLowerCase()===r.toLowerCase()||Wo.throwArgumentError("transaction from mismatch","tx.from",r),t.from=e})))}return await Promise.all(e),t};class Ru extends Su{constructor(t,e){super(e),Pu.add(this),r(this,{address:t})}async getAddress(){return this.address}connect(t){return new Ru(this.address,t)}async signTransaction(t){Ou(this,Pu,"m",Nu).call(this,"transactions","signTransaction")}async signMessage(t){Ou(this,Pu,"m",Nu).call(this,"messages","signMessage")}async signTypedData(t,e,r){Ou(this,Pu,"m",Nu).call(this,"typed-data","signTypedData")}}Pu=new WeakSet,Nu=function(t,e){return Wo.throwError(`VoidSigner cannot sign ${t}`,"UNSUPPORTED_OPERATION",{operation:e})};class Bu extends Su{constructor(t){super(t.provider),xu.set(this,void 0),Iu(this,xu,t,"f")}async getAddress(){return await Ou(this,xu,"f").getAddress()}connect(t){return new Bu(Ou(this,xu,"f").connect(t))}async signTransaction(t){return await Ou(this,xu,"f").signTransaction(t)}async sendTransaction(t){return await Ou(this,xu,"f").sendTransaction(t)}async signMessage(t){return await Ou(this,xu,"f").signMessage(t)}async signTypedData(t,e,r){return await Ou(this,xu,"f").signTypedData(t,e,r)}}xu=new WeakMap;const _u=new Set;function Cu(t){_u.has(t)||(_u.add(t),console.log("========= NOTICE ========="),console.log(`Request-Rate Exceeded for ${t} (this message will not be repeated)`),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}var Fu,Uu,Lu,Du,Mu,Gu,ju,$u,zu=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Wu=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Hu{constructor(t){Fu.add(this),Uu.set(this,void 0),Lu.set(this,void 0),Du.set(this,void 0),Mu.set(this,void 0),zu(this,Uu,t,"f"),zu(this,Lu,null,"f"),zu(this,Du,Wu(this,Fu,"m",Gu).bind(this),"f"),zu(this,Mu,null,"f")}_subscribe(t){throw new Error("subclasses must override this")}_emitResults(t,e){throw new Error("subclasses must override this")}_recover(t){throw new Error("subclasses must override this")}start(){Wu(this,Fu,"m",Gu).call(this,-2)}stop(){Wu(this,Fu,"m",ju).call(this),Wu(this,Uu,"f").off("block",Wu(this,Du,"f"))}pause(t){t&&Wu(this,Fu,"m",ju).call(this),Wu(this,Uu,"f").off("block",Wu(this,Du,"f"))}resume(){this.start()}}Uu=new WeakMap,Lu=new WeakMap,Du=new WeakMap,Mu=new WeakMap,Fu=new WeakSet,Gu=async function(t){try{null==Wu(this,Lu,"f")&&zu(this,Lu,this._subscribe(Wu(this,Uu,"f")),"f");const t=await Wu(this,Lu,"f");if(null==t)return void Wu(this,Uu,"f")._recoverSubscriber(this,this._recover(Wu(this,Uu,"f")));const e=await Wu(this,Uu,"f").getNetwork();if(Wu(this,Mu,"f")||zu(this,Mu,e,"f"),Wu(this,Mu,"f").chainId!==e.chainId)throw new Error("chaid changed");const r=await Wu(this,Uu,"f").send("eth_getFilterChanges",[t]);await this._emitResults(Wu(this,Uu,"f"),r)}catch(t){console.log("@TODO",t)}Wu(this,Uu,"f").once("block",Wu(this,Du,"f"))},ju=function(){const t=Wu(this,Lu,"f");t&&(zu(this,Lu,null,"f"),t.then((t=>{Wu(this,Uu,"f").send("eth_uninstallFilter",[t])})))};class Vu extends Hu{constructor(t,e){var r;super(t),$u.set(this,void 0),zu(this,$u,(r=e,JSON.parse(JSON.stringify(r))),"f")}_recover(t){return new Wl(t,Wu(this,$u,"f"))}async _subscribe(t){const e=await t.send("eth_newFilter",[Wu(this,$u,"f")]);return console.log("____SUB",e),e}async _emitResults(t,e){const r=await t.getNetwork();for(const n of e){const e=r.formatter.log(n,t);t.emit(Wu(this,$u,"f"),e)}}}$u=new WeakMap;class Ku extends Hu{async _subscribe(t){return await t.send("eth_newPendingTransactionFilter",[])}async _emitResults(t,e){const r=await t.getNetwork();for(const n of e)t.emit("pending",r.formatter.hash(n))}}var Ju,qu,Xu,Yu,Zu=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Qu=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const th="bigint,boolean,function,number,string,symbol".split(/,/g);function eh(t){if(null==t||th.indexOf(typeof t)>=0)return t;if("function"==typeof t.getAddress)return t;if(Array.isArray(t))return t.map(eh);if("object"==typeof t)return Object.keys(t).reduce(((e,r)=>(e[r]=t[r],e)),{});throw new Error(`should not happen: ${t} (${typeof t})`)}function rh(t){return t?t.toLowerCase():t}const nh={polling:!1,batchMaxSize:1<<20,batchStallTime:250};class sh{constructor(t,e){r(this,{provider:t,address:e})}connect(t){return Wo.throwError("cannot reconnect JsonRpcSigner","UNSUPPORTED_OPERATION",{operation:"signer.connect"})}async getAddress(){return this.address}async getNetwork(){return await this.provider.getNetwork()}async getFeeData(){return await this.provider.getFeeData()}async estimateGas(t){return await this.provider.estimateGas(t)}async call(t){return await this.provider.call(t)}async resolveName(t){return await this.provider.resolveName(t)}async getBalance(t){return await this.provider.getBalanceOf(this.address)}async getTransactionCount(t){return await this.provider.getTransactionCountOf(this.address)}async sendUncheckedTransaction(t){const e=eh(t),r=[];if(e.from){const n=e.from;r.push((async()=>{const r=await Ps(n,this.provider);null!=r&&r.toLowerCase()===this.address.toLowerCase()||Wo.throwArgumentError("from address mismatch","transaction",t),e.from=r})())}else e.from=this.address;if(null==e.gasLimit&&r.push((async()=>{e.gasLimit=await this.provider.estimateGas(Object.assign(Object.assign({},e),{from:this.address}))})()),null!=e.to){const t=e.to;r.push((async()=>{e.to=await Ps(t,this.provider)})())}r.length&&await Promise.all(r);const n=this.provider.getRpcTransaction(e);return this.provider.send("eth_sendTransaction",[n])}async sendTransaction(t){const e=await this.provider.getBlockNumber(),r=await this.sendUncheckedTransaction(t);return await new Promise(((t,n)=>{const s=[1e3,100],i=async()=>{const n=await this.provider.getTransaction(r);null==n?this.provider._setTimeout((()=>{i()}),s.pop()||4e3):t(this.provider._wrapTransaction(n,r,e))};i()}))}async signTransaction(t){const e=eh(t);if(e.from){const r=await Ps(e.from,this.provider);if(null==r||r.toLowerCase()!==this.address.toLowerCase())return Wo.throwArgumentError("from address mismatch","transaction",t);e.from=r}else e.from=this.address;const r=this.provider.getRpcTransaction(e);return await this.provider.send("eth_sign_Transaction",[r])}async signMessage(t){const e="string"==typeof t?ei(t):t;return await this.provider.send("personal_sign",[le(e),this.address.toLowerCase()])}async signTypedData(t,e,r){const n=eh(r),s=await uo.resolveNames(t,e,n,(async t=>{const e=await Ps(t);return null==e?Wo.throwArgumentError("TypedData does not support null address","value",t):e}));return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(uo.getPayload(s.domain,e,s.value))])}async unlock(t){return this.provider.send("personal_unlockAccount",[this.address.toLowerCase(),t,null])}async _legacySignMessage(t){const e="string"==typeof t?ei(t):t;return await this.provider.send("eth_sign",[this.address.toLowerCase(),le(e)])}}class ih extends pu{constructor(t){super(t),Ju.set(this,void 0),qu.set(this,void 0),Zu(this,Ju,1,"f"),Zu(this,qu,Object.assign({},nh),"f")}_getOptions(t){return Qu(this,qu,"f")[t]}_setOptions(t){for(const e in t){const r=e,n=t[r];if(typeof n!=typeof Qu(this,qu,"f")[r])return Wo.throwArgumentError("invalid option value",`options.${r}`,n)}for(const e in t){const r=e;Qu(this,qu,"f")[r]=t[r]}}prepareRequest(t,e){var r,n;return{method:t,params:e,id:(Zu(this,Ju,(n=Qu(this,Ju,"f"),r=n++,n),"f"),r),jsonrpc:"2.0"}}async send(t,e){throw new Error("sub-class must implement this")}async getSigner(t=0){const e=await this.getNetwork(),r=await this.send("eth_accounts",[]);if("number"==typeof t){if(t>r.length)throw new Error("no such account");return new sh(this,r[t])}t=e.formatter.address(t);for(const t of r)if(e.formatter.address(t)===t)return new sh(this,t);throw new Error("invalid account")}async _detectNetwork(){return vl.from(Wo.getBigInt(await this._perform({method:"chainId"})))}_getSubscriber(t){return"pending"===t.type?new Ku(this):"event"===t.type?new Vu(this,t.filter):"orphan"===t.type&&"drop-log"===t.filter.orphan?new uu("orphan"):super._getSubscriber(t)}getRpcTransaction(t){const e={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach((r=>{if(null==t[r])return;let n=r;"gasLimit"===r&&(n="gas"),e[n]=ue(t[r])})),["from","to","data"].forEach((r=>{null!=t[r]&&(e[r]=le(t[r]))})),t.accessList&&(e.accessList=yc(t.accessList)),e}getRpcRequest(t){switch(t.method){case"chainId":return{method:"eth_chainId",args:[]};case"getBlockNumber":return{method:"eth_blockNumber",args:[]};case"getGasPrice":return{method:"eth_gasPrice",args:[]};case"getBalance":return{method:"eth_getBalance",args:[rh(t.address),t.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[rh(t.address),t.blockTag]};case"getCode":return{method:"eth_getCode",args:[rh(t.address),t.blockTag]};case"getStorageAt":return{method:"eth_getStorageAt",args:[rh(t.address),"0x"+t.position.toString(16),t.blockTag]};case"sendTransaction":return{method:"eth_sendRawTransaction",args:[t.signedTransaction]};case"getBlock":if("blockTag"in t)return{method:"eth_getBlockByNumber",args:[t.blockTag,!!t.includeTransactions]};if("blockHash"in t)return{method:"eth_getBlockByHash",args:[t.blockHash,!!t.includeTransactions]};break;case"getTransaction":return{method:"eth_getTransactionByHash",args:[t.hash]};case"getTransactionReceipt":return{method:"eth_getTransactionReceipt",args:[t.hash]};case"call":return{method:"eth_call",args:[this.getRpcTransaction(t.transaction),t.blockTag]};case"estimateGas":return{method:"eth_estimateGas",args:[this.getRpcTransaction(t.transaction)]};case"getLogs":return t.filter&&null!=t.filter.address&&(Array.isArray(t.filter.address)?t.filter.address=t.filter.address.map(rh):t.filter.address=rh(t.filter.address)),{method:"eth_getLogs",args:[t.filter]}}return null}getRpcError(t,e,r){if("eth_call"===t){const t=ch(r);return t?Wo.makeError("execution reverted during JSON-RPC call","CALL_EXCEPTION",{data:t.data,transaction:e[0]}):Wo.makeError("missing revert data during JSON-RPC call","CALL_EXCEPTION",{data:"0x",transaction:e[0],info:{error:r}})}const n=JSON.stringify(function(t){const e=[];return lh(t,e),e}(r));return n.match(/insufficient funds|base fee exceeds gas limit/)?Wo.makeError("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e[0]}):n.match(/nonce/)&&n.match(/too low/)?Wo.makeError("nonce has already been used","NONCE_EXPIRED",{transaction:e[0]}):n.match(/replacement transaction/)&&n.match(/underpriced/)?Wo.makeError("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e[0]}):n.match(/only replay-protected/)?Wo.makeError("legacy pre-eip-155 transactions not supported","UNSUPPORTED_OPERATION",{operation:t,info:{transaction:e[0]}}):"estimateGas"===t&&n.match(/gas required exceeds allowance|always failing transaction|execution reverted/)?Wo.makeError("cannot estimate gas; transaction may fail or may require manual gas limit","UNPREDICTABLE_GAS_LIMIT",{transaction:e[0]}):r}async _perform(t){if("call"===t.method||"estimateGas"===t.method){let e=t.transaction;if(e&&null!=e.type&&Wo.getBigInt(e.type)&&null==e.maxFeePerGas&&null==e.maxPriorityFeePerGas){const r=await this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&(t=Object.assign({},t,{transaction:Object.assign({},e,{type:void 0})}))}}const e=this.getRpcRequest(t);if(null!=e){this.emit("debug",{type:"sendRequest",request:e});try{const t=await this.send(e.method,e.args);return this.emit("debug",{type:"getResponse",result:t}),t}catch(t){throw this.emit("debug",{type:"getError",error:t}),this.getRpcError(e.method,e.args,t)}}return super._perform(t)}}Ju=new WeakMap,qu=new WeakMap;class oh extends ih{constructor(t,e){null==t&&(t="http://localhost:8545"),super(e),Xu.set(this,void 0),Yu.set(this,void 0),"string"==typeof t?Zu(this,Xu,{request:new Mo(t)},"f"):(Zu(this,Xu,Object.assign({},t),"f"),Qu(this,Xu,"f").request=Qu(this,Xu,"f").request.clone()),Zu(this,Yu,4e3,"f")}async send(t,e){var r;r=e,e=JSON.parse(JSON.stringify(r));const n=Object.assign({},Qu(this,Xu,"f"));n.request=n.request.clone(),n.request.body=this.prepareRequest(t,e);const s=await zo(n);s.assertOk();const i=s.bodyJson;return"error"in i?Wo.throwError("error from JSON-RPC","UNKNOWN_ERROR",{result:i}):i.result}get pollingInterval(){return Qu(this,Yu,"f")}set pollingInterval(t){if(!Number.isInteger(t)||t<0)throw new Error("invalid interval");Zu(this,Yu,t,"f"),this._forEachSubscriber((t=>{(function(t){return t&&"number"==typeof t.pollingInterval})(t)&&(t.pollingInterval=Qu(this,Yu,"f"))}))}}Xu=new WeakMap,Yu=new WeakMap;class ah extends oh{constructor(t,e){super(t,e),r(this,{network:e})}async _detectNetwork(){return this.network}}function ch(t){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")&&te(t.data))return{message:t.message,data:t.data};if("object"==typeof t){for(const e in t){const r=ch(t[e]);if(r)return r}return null}if("string"==typeof t)try{return ch(JSON.parse(t))}catch(t){}return null}function lh(t,e){if(null!=t){if("string"==typeof t.message&&e.push(t.message),"object"==typeof t)for(const r in t)lh(t[r],e);if("string"==typeof t)try{return lh(JSON.parse(t),e)}catch(t){}}}const uh="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";class hh extends ah{constructor(t="homestead",e){const n=vl.from(t);null==e&&(e=uh);super(hh.getConnection(n,e),n),r(this,{apiKey:e}),super._setOptions({polling:!0})}_getProvider(t){try{return new hh(t,this.apiKey)}catch(t){}return super._getProvider(t)}static getConnection(t,e){null==e&&(e=uh);const r=new Mo(`https://${function(t){switch(t){case"homestead":return"rpc.ankr.com/eth";case"matic":return"rpc.ankr.com/polygon";case"arbitrum":return"rpc.ankr.com/arbitrum"}return Wo.throwArgumentError("unsupported network","network",t)}(t.name)}/${e}`);r.allowGzip=!0;return{request:r,throttleRetry:async(t,r,n)=>(e===uh&&Cu("AnkrProvider"),!0)}}isCommunityResource(){return this.apiKey===uh}}const fh="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class dh extends ah{constructor(t="homestead",e){const n=vl.from(t);null==e&&(e=fh),super(dh.getConnection(n,e),n),r(this,{apiKey:e})}_getProvider(t){try{return new dh(t,this.apiKey)}catch(t){}return super._getProvider(t)}isCommunityResource(){return this.apiKey===fh}static getConnection(t,e){null==e&&(e=fh);const r=new Mo(`https://${function(t){switch(t){case"homestead":return"eth-mainnet.alchemyapi.io";case"ropsten":return"eth-ropsten.alchemyapi.io";case"rinkeby":return"eth-rinkeby.alchemyapi.io";case"goerli":return"eth-goerli.alchemyapi.io";case"kovan":return"eth-kovan.alchemyapi.io";case"matic":return"polygon-mainnet.g.alchemy.com";case"maticmum":return"polygon-mumbai.g.alchemy.com";case"arbitrum":return"arb-mainnet.g.alchemy.com";case"arbitrum-rinkeby":return"arb-rinkeby.g.alchemy.com";case"optimism":return"opt-mainnet.g.alchemy.com";case"optimism-kovan":return"opt-kovan.g.alchemy.com"}return Wo.throwArgumentError("unsupported network","network",t)}(t.name)}/v2/${e}`);r.allowGzip=!0;return{request:r,throttleRetry:async(t,r,n)=>(e===fh&&Cu("alchemy"),!0)}}}class ph extends ah{constructor(t="homestead"){const e=vl.from(t);if("homestead"!==e.name)return Wo.throwArgumentError("unsupported network","network",t);super("https://cloudflare-eth.com/",e)}}const wh="org.ethers.plugins.etherscan";class gh extends hl{constructor(t,e){super(wh),r(this,{baseUrl:t,communityApiKey:e})}clone(){return new gh(this.baseUrl,this.communityApiKey)}}class mh extends pu{constructor(t,e){super();const n=vl.from(t);if(null==e){const t=n.getPlugin(wh);e=t?t.communityApiKey:"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB"}r(this,{apiKey:e,network:n}),this.getBaseUrl()}getBaseUrl(){const t=this.network.getPlugin(wh);if(t)return t.baseUrl;switch(this.network.name){case"homestead":return"https://api.etherscan.io";case"ropsten":return"https://api-ropsten.etherscan.io";case"rinkeby":return"https://api-rinkeby.etherscan.io";case"kovan":return"https://api-kovan.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io"}return Wo.throwArgumentError("unsupported network","network",this.network)}getUrl(t,e){const r=Object.keys(e).reduce(((t,r)=>{const n=e[r];return null!=n&&(t+=`&${r}=${n}`),t}),""),n=this.apiKey?`&apikey=${this.apiKey}`:"";return`${this.getBaseUrl()}/api?module=${t}${r}${n}`}getPostUrl(){return`${this.getBaseUrl()}/api`}getPostData(t,e){return e.module=t,e.apikey=this.apiKey,e}async detectNetwork(){return this.network}async fetch(t,e,r){const n=r?this.getPostUrl():this.getUrl(t,e),s=r?this.getPostData(t,e):null,i=new Mo(n),o={request:i,throttleSlotInterval:1e3,processResponse:async(e,r)=>{const n=r.hasBody()?JSON.parse(ii(r.body)):{},s=("string"==typeof n.result?n.result:"").toLowerCase().indexOf("rate limit")>=0;return"proxy"===t?n&&0==n.status&&"NOTOK"==n.message&&s&&r.throwThrottleError(n.result):s&&r.throwThrottleError(n.result),r}};s&&(i.setHeader("content-type","application/x-www-form-urlencoded; charset=UTF-8"),i.body=Object.keys(s).map((t=>`${t}=${s[t]}`)).join("&"));const a=await zo(o);if(a.assertOk(),!a.hasBody())throw new Error;const c=JSON.parse(ii(a.body));if("proxy"===t){if("2.0"!=c.jsonrpc){const t=new Error("invalid response");throw t.result=JSON.stringify(c),t}if(c.error){const t=new Error(c.error.message||"unknown error");throw c.error.code&&(t.code=c.error.code),c.error.data&&(t.data=c.error.data),t}return c.result}if(0==c.status&&("No records found"===c.message||"No transactions found"===c.message))return c.result;if(1!=c.status||"OK"!=c.message){const t=new Error("invalid response");throw t.result=JSON.stringify(c),t}return c.result}_getTransactionPostData(t){const e={};for(let r in t){if(null==t[r])continue;let n=t[r];"type"===r&&0===n||(n={type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[r]?ue(le(n)):"accessList"===r?"["+this.network.formatter.accessList(n).map((t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`)).join(",")+"]":le(n),e[r]=n)}return e}_checkError(t,e,r){throw e}async _detectNetwork(){return this.network}async _perform(t){switch(t.method){case"chainId":return this.network.chainId;case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getBalance":return this.fetch("account",{action:"balance",address:t.address,tag:t.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:t.address,tag:t.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:t.address,tag:t.blockTag});case"getStorageAt":return this.fetch("proxy",{action:"eth_getStorageAt",address:t.address,position:t.position,tag:t.blockTag});case"sendTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:t.signedTransaction},!0).catch((e=>this._checkError(t,e,t.signedTransaction)));case"getBlock":return"blockTag"in t?this.fetch("proxy",{action:"eth_getBlockByNumber",tag:t.blockTag,boolean:t.includeTransactions?"true":"false"}):Wo.throwError("getBlock by blockHash not supported by Etherscan","UNSUPPORTED_OPERATION",{operation:"getBlock(blockHash)"});case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:t.hash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:t.hash});case"call":{if("latest"!==t.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const e=this._getTransactionPostData(t.transaction);e.module="proxy",e.action="eth_call";try{return await this.fetch("proxy",e,!0)}catch(e){return this._checkError(t,e,t.transaction)}}case"estimateGas":{const e=this._getTransactionPostData(t.transaction);e.module="proxy",e.action="eth_estimateGas";try{return await this.fetch("proxy",e,!0)}catch(e){return this._checkError(t,e,t.transaction)}}}return super._perform(t)}async getNetwork(){return this.network}async getEtherPrice(){return"homestead"!==this.network.name?0:parseFloat((await this.fetch("stats",{action:"ethprice"})).ethusd)}isCommunityResource(){const t=this.network.getPlugin(wh);return t?t.communityApiKey===this.apiKey:"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB"===this.apiKey}}const yh="84842078b09946638c03157f83405213";class bh extends ah{constructor(t="homestead",e,n){const s=vl.from(t);null==e&&(e=yh),null==n&&(n=null);super(bh.getConnection(s,e,n),s),r(this,{projectId:e,projectSecret:n})}_getProvider(t){try{return new bh(t,this.projectId,this.projectSecret)}catch(t){}return super._getProvider(t)}static getConnection(t,e,r){null==e&&(e=yh),null==r&&(r=null);const n=new Mo(`https://${function(t){switch(t){case"homestead":return"mainnet.infura.io";case"ropsten":return"ropsten.infura.io";case"rinkeby":return"rinkeby.infura.io";case"kovan":return"kovan.infura.io";case"goerli":return"goerli.infura.io";case"matic":return"polygon-mainnet.infura.io";case"maticmum":return"polygon-mumbai.infura.io";case"optimism":return"optimism-mainnet.infura.io";case"optimism-kovan":return"optimism-kovan.infura.io";case"arbitrum":return"arbitrum-mainnet.infura.io";case"arbitrum-rinkeby":return"arbitrum-rinkeby.infura.io"}return Wo.throwArgumentError("unsupported network","network",t)}(t.name)}/v3/${e}`);n.allowGzip=!0,r&&n.setCredentials("",r);return{request:n,throttleRetry:async(t,r,n)=>(e===yh&&Cu("InfuraProvider"),!0)}}isCommunityResource(){return this.projectId===yh}}const vh={homestead:"6004bcd10040261633ade990",ropsten:"6004bd4d0040261633ade991",rinkeby:"6004bda20040261633ade994",goerli:"6004bd860040261633ade992"};function Eh(t,e,r,n){n=!!n;let s=!1,i=e;return null==i?(i=vh[t.name],null==i&&Wo.throwArgumentError("network does not support default applicationId","applicationId",e),n=!0,s=!0):i===vh[t.name]&&(n=!0,s=!0),null==r&&(r=null),{applicationId:i,applicationSecretKey:r,community:s,loadBalancer:n}}class Ah extends ah{constructor(t="homestead",e,n,s){const i=vl.from(t),{applicationId:o,applicationSecretKey:a,loadBalancer:c}=Eh(i,e,n,s);super(Ah.getConnection(i,o,a,c),i),r(this,{applicationId:o,applicationSecretKey:a,loadBalancer:c})}static getConnection(t,e,r,n){const{applicationId:s,applicationSecretKey:i,community:o,loadBalancer:a}=Eh(t,e,r,n);let c=`https://${function(t){switch(t){case"homestead":return"eth-mainnet.gateway.pokt.network";case"ropsten":return"eth-ropsten.gateway.pokt.network";case"rinkeby":return"eth-rinkeby.gateway.pokt.network";case"goerli":return"eth-goerli.gateway.pokt.network"}return Wo.throwArgumentError("unsupported network","network",t)}(t.name)}/v1/`;a&&(c+="lb/"),c+=s;const l=new Mo(c);l.allowGzip=!0,i&&l.setCredentials("",i);return{request:l,throttleRetry:async(t,e,r)=>(o&&Cu("PocketProvider"),!0)}}isCommunityResource(){return this.applicationId===vh[this.network.name]}}var Th,kh,Ph,Nh,xh,Oh,Ih,Sh,Rh,Bh=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},_h=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Ch=BigInt("1"),Fh=BigInt("2");function Uh(){return(new Date).getTime()}const Lh={stallTimeout:400,priority:1,weight:1},Dh={blockNumber:-2,requests:0,lateResponses:0,errorResponses:0,outOfSync:-1,unsupportedEvents:0,rollingDuration:0,score:0,_network:null,_updateNumber:null,_totalTime:0};function Mh(t,e,r){switch(r.method){case"chainId":case"getGasPrice":case"getBalance":case"estimateGas":return Wo.getBigInt(e).toString();case"getBlockNumber":case"getTransactionCount":return Wo.getNumber(e).toString();case"getCode":case"getStorageAt":case"call":return le(e);case"getBlock":return r.includeTransactions?JSON.stringify(t.formatter.blockWithTransactions(e)):JSON.stringify(t.formatter.block(e));case"getTransaction":return JSON.stringify(t.formatter.transactionResponse(e));case"getTransactionReceipt":return JSON.stringify(t.formatter.receipt(e));case"getLogs":return JSON.stringify(e.map((e=>t.formatter.log(e))))}return Wo.throwError("unsupported method","UNSUPPORTED_OPERATION",{operation:`_perform(${JSON.stringify(r.method)})`})}function Gh(t,e){const r=new Map;for(const{result:t,normal:n,weight:s}of e){const e=r.get(n)||{result:t,weight:0};e.weight+=s,r.set(n,e)}let n,s=0;for(const{weight:e,result:i}of r.values())e>=t&&e>s&&(s=e,n=i);return n}function jh(t){const e=t.map((t=>BigInt(t.result)));e.sort(((t,e)=>tt?1:0));const r=e.length/2;return e.length%2?e[r]:(e[r-1]+e[r]+Ch)/Fh}class $h extends pu{constructor(t,e){super(e),Th.add(this),kh.set(this,void 0),Ph.set(this,void 0),Nh.set(this,void 0),Bh(this,kh,t.map((t=>t instanceof pu?Object.assign({provider:t},Lh,Dh):Object.assign({},Lh,t,Dh))),"f"),Bh(this,Ph,-2,"f"),Bh(this,Nh,null,"f"),this.quorum=2,this.eventQuorum=1,this.eventWorkers=1,this.quorum>_h(this,kh,"f").reduce(((t,e)=>t+e.weight),0)&&Wo.throwArgumentError("quorum exceed provider wieght","quorum",this.quorum)}get providerConfigs(){return _h(this,kh,"f").slice()}async _detectNetwork(){return vl.from(Wo.getBigInt(await this._perform({method:"chainId"}))).freeze()}async _perform(t){await _h(this,Th,"m",Ih).call(this);const e=new Set;for(let r=0;r0;e--){const r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}}(e),e.sort(((t,e)=>e.priority-t.priority));for(const r of e)if(-1===t.indexOf(r))return r;return null},Oh=function(t,e){const r=_h(this,Th,"m",xh).call(this,Array.from(t).map((t=>t.config)));if(null==r)return null;const n={},s={config:r,result:n,didBump:!1,done:!1,perform:null,staller:null},i=Uh();return s.perform=(async()=>{try{r.requests++,n.result=await r.provider._perform(e)}catch(t){r.errorResponses++,n.error=t}s.done&&r.lateResponses++;const t=Uh()-i;r._totalTime+=t,r.rollingDuration=.95*r.rollingDuration+.05*t,s.perform=null})(),s.staller=(async()=>{var t;await(t=r.stallTimeout,new Promise((e=>{setTimeout(e,t)}))),s.staller=null})(),t.add(s),s},Ih=async function(){let t=_h(this,Nh,"f");if(!t){const e=[];_h(this,kh,"f").forEach((t=>{e.push(async function(t,e){for(;t.blockNumber<0||t.blockNumber{const e=await t.provider.getBlockNumber();e>t.blockNumber&&(t.blockNumber=e),t._updateNumber=null})()),await t._updateNumber,t.outOfSync++}(t,0)),e.push((async()=>{t._network=await t.provider.getNetwork()})())})),Bh(this,Nh,t=(async()=>{await Promise.all(e);let t=null;for(const e of _h(this,kh,"f")){const r=e._network;null==t?t=r.chainId:r.chainId!==t&&Wo.throwError("cannot mix providers on different networks","UNSUPPORTED_OPERATION",{operation:"new FallbackProvider"})}})(),"f")}await t},Sh=async function(t,e){const r=[];for(const n of t)if("result"in n.result){const t=n.result.result;r.push({result:t,normal:Mh(n.config._network,t,e),weight:n.config.weight})}if(!(r.reduce(((t,e)=>t+e.weight),0)({result:t.blockNumber,normal:Wo.getNumber(t.blockNumber).toString(),weight:t.weight})))),"%internal"));Bh(this,Ph,t,"f")}const t=function(t,e){if(1===t)return Wo.getNumber(jh(e),"%internal");const r=new Map,n=(t,e)=>{const n=r.get(t)||{result:t,weight:0};n.weight+=e,r.set(t,n)};for(const{weight:t,result:r}of e){const e=Wo.getNumber(r);n(e-1,t),n(e,t),n(e+1,t)}let s,i=0;for(const{weight:e,result:n}of r.values())e>=t&&(e>i||null!=s&&e===i&&n>s)&&(i=e,s=n);return s}(this.quorum,r);if(void 0===t)return;return t>_h(this,Ph,"f")&&Bh(this,Ph,t,"f"),_h(this,Ph,"f")}case"getGasPrice":case"estimateGas":return jh(r);case"getBlock":return"blockTag"in e&&"pending"===e.blockTag?r[0].result:Gh(this.quorum,r);case"chainId":case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"getTransaction":case"getTransactionReceipt":case"getLogs":case"call":return Gh(this.quorum,r);case"sendTransaction":throw new Error("TODO")}return Wo.throwError("unsupported method","UNSUPPORTED_OPERATION",{operation:`_perform(${JSON.stringify(e.method)})`})}},Rh=async function t(e,r){if(0===e.size)throw new Error("no runners?!");const n=[];let s=0;for(const t of e)t.perform&&n.push(t.perform),t.staller?n.push(t.staller):t.didBump||(t.didBump=!0,s++);const i=await _h(this,Th,"m",Sh).call(this,e,r);if(void 0!==i){if(i instanceof Error)throw i;return i}for(let t=0;t(rf(this,Wh,"f")._register(t,this),t))),"f")}stop(){rf(this,Vh,"f").then((t=>{rf(this,Wh,"f").send("eth_unsubscribe",[t])})),ef(this,Vh,null,"f")}pause(t){t||Wo.throwError("preserve logs while paused not supported by SocketSubscriber yet","UNSUPPORTED_OPERATION",{operation:"pause(false)"}),ef(this,Kh,!!t,"f")}resume(){ef(this,Kh,null,"f")}_handleMessage(t){if(null!=rf(this,Vh,"f")&&null===rf(this,Kh,"f")){let e=rf(this,Jh,"f");e=null==e?this._emit(rf(this,Wh,"f"),t):e.then((async()=>{await this._emit(rf(this,Wh,"f"),t)})),ef(this,Jh,e.then((()=>{rf(this,Jh,"f")===e&&ef(this,Jh,null,"f")})),"f")}}async _emit(t,e){throw new Error("sub-classes must implemente this; _emit")}}Wh=new WeakMap,Hh=new WeakMap,Vh=new WeakMap,Kh=new WeakMap,Jh=new WeakMap;class sf extends nf{constructor(t){super(t,["newHeads"])}async _emit(t,e){t.emit("block",parseInt(e.number))}}class of extends nf{constructor(t){super(t,["newPendingTransactions"])}async _emit(t,e){t.emit("pending",e)}}class af extends nf{constructor(t,e){super(t,["logs",e]),qh.set(this,void 0),Xh.set(this,void 0),ef(this,qh,JSON.stringify(e),"f"),ef(this,Xh,t.getNetwork().then((t=>t.formatter)),"f")}get logFilter(){return JSON.parse(rf(this,qh,"f"))}async _emit(t,e){const r=await rf(this,Xh,"f");t.emit(rf(this,qh,"f"),r.log(e,t))}}qh=new WeakMap,Xh=new WeakMap;class cf extends ih{constructor(t){super(t),Yh.set(this,void 0),Zh.set(this,void 0),Qh.set(this,void 0),tf.set(this,void 0),ef(this,Yh,new Map,"f"),ef(this,Zh,!1,"f"),ef(this,Qh,new Map,"f"),ef(this,tf,new Map,"f")}_getSubscriber(t){switch(t.type){case"close":return new uu("close");case"block":return new sf(this);case"pending":return new of(this);case"event":return new af(this,t.filter);case"orphan":if("drop-log"===t.filter.orphan)return new uu("drop-log")}return super._getSubscriber(t)}_register(t,e){rf(this,Qh,"f").set(t,e);const r=rf(this,tf,"f").get(t);if(r){for(const t of r)e._handleMessage(t);rf(this,tf,"f").delete(t)}}async send(t,e){const r=this.prepareRequest(t,e),n=new Promise(((t,e)=>{rf(this,Yh,"f").set(r.id,{payload:r,resolve:t,reject:e})}));return rf(this,Zh,"f")&&await this._write(JSON.stringify(r)),await n}async _start(){if(!rf(this,Zh,"f")){ef(this,Zh,!0,"f");for(const{payload:t}of rf(this,Yh,"f").values())await this._write(JSON.stringify(t))}}async _processMessage(t){const e=JSON.parse(t);if("id"in e){const t=rf(this,Yh,"f").get(e.id);if(!t)return void console.log("Weird... Response for not a thing we sent");if(rf(this,Yh,"f").delete(e.id),"error"in e){const{message:r,code:n,data:s}=e.error,i=Wo.makeError(r||"unkonwn error","SERVER_ERROR",{request:`ws:${JSON.stringify(t.payload)}`,info:{code:n,data:s}});t.reject(i)}else t.resolve(e.result)}else if("eth_subscription"===e.method){const t=e.params.subscription,r=rf(this,Qh,"f").get(t);if(r)r._handleMessage(e.params.result);else{let r=rf(this,tf,"f").get(t);null==r&&(r=[],rf(this,tf,"f").set(t,r)),r.push(e.params.result)}}}async _write(t){throw new Error("sub-classes must override this")}}Yh=new WeakMap,Zh=new WeakMap,Qh=new WeakMap,tf=new WeakMap;var lf,uf=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},hf=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class ff extends cf{constructor(t,e){super(e),lf.set(this,void 0),uf(this,lf,"string"==typeof t?new zh(t):t,"f"),this.websocket.onopen=()=>{this._start()},this.websocket.onmessage=t=>{this._processMessage(t.data)}}get websocket(){return hf(this,lf,"f")}async _write(t){this.websocket.send(t)}}function df(t,e){if(null==e&&(e={}),"string"==typeof t&&t.match(/^https?:/))return new oh(t);if("string"==typeof t&&t.match(/^wss?:/)||(r=t)&&"function"==typeof r.send&&"function"==typeof r.close)return new ff(t);var r;const n=[];if("-"!==e.alchemy)try{n.push(new dh(t,e.alchemy))}catch(t){console.log(t)}if("-"!==e.ankr)try{n.push(new hh(t,e.ankr))}catch(t){console.log(t)}if("-"!==e.cloudflare)try{n.push(new ph(t))}catch(t){console.log(t)}if("-"!==e.etherscan)try{n.push(new mh(t,e.etherscan))}catch(t){console.log(t)}if("-"!==e.infura)try{let r,s=e.infura;"object"==typeof s&&(r=s.projectSecret,s=s.projectId),n.push(new bh(t,s,r))}catch(t){console.log(t)}if("-"!==e.pocket)try{let r,s,i=e.pocket;"object"==typeof i&&(s=!!i.loadBalancer,r=i.secretKey,i=i.appId),n.push(new Ah(t,i,r,s))}catch(t){console.log(t)}if(0===n.length)throw new Error("TODO");return 1===n.length?n[0]:new $h(n)}lf=new WeakMap;const pf=function(t){function e(e,r,n){const s=function(){const s=new t(e,r);if(null!=n.ensNetwork&&s.attachPlugin(new dl(null,n.ensNetwork)),n.priorityFee&&s.attachPlugin(new pl(n.priorityFee)),n.etherscan){const{url:t,apiKey:e}=n.etherscan;s.attachPlugin(new gh(t,e))}return s.attachPlugin(new fl),s};t.register(e,s),t.register(r,s),n.altNames&&n.altNames.forEach((e=>{t.register(e,s)}))}return e("homestead",1,{ensNetwork:1,altNames:["mainnet"]}),e("ropsten",3,{ensNetwork:3}),e("rinkeby",4,{ensNetwork:4}),e("goerli",5,{ensNetwork:5}),e("kovan",42,{ensNetwork:42}),e("classic",61,{}),e("classicKotti",6,{}),e("xdai",100,{ensNetwork:1}),e("matic",137,{ensNetwork:1,priorityFee:35e9,etherscan:{apiKey:"W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7",url:"https://api.polygonscan.com/"}}),e("maticMumbai",80001,{priorityFee:35e9,etherscan:{apiKey:"W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7",url:"https://api-testnet.polygonscan.com/"}}),e("bnb",56,{ensNetwork:1,etherscan:{apiKey:"EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9",url:"http://api.bscscan.com"}}),e("bnbt",97,{etherscan:{apiKey:"EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9",url:"http://api-testnet.bscscan.com"}}),t}(vl),wf=void 0;var gf,mf,yf=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},bf=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class vf extends Yc{constructor(t,e,n){super(t,t.provider);r(this,{args:e.decodeEventLog(n,t.data,t.topics),fragment:n,interface:e})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}}class Ef extends Zc{constructor(t,e,r){super(r,e),gf.set(this,void 0),yf(this,gf,t,"f")}get logs(){return super.logs.map((t=>{const e=t.topics.length?bf(this,gf,"f").getEvent(t.topics[0]):null;return e?new vf(t,bf(this,gf,"f"),e):t}))}}gf=new WeakMap;class Af extends Qc{constructor(t,e,r){super(r,e),mf.set(this,void 0),yf(this,mf,t,"f")}async wait(t){const e=await super.wait();return null==e?null:new Ef(bf(this,mf,"f"),this.provider,e)}}mf=new WeakMap;class Tf extends o{constructor(t,e,n,s,i){super(t,e,n);const o=new vf(i,t.interface,s);r(this,{args:t.interface.decodeEventLog(s,o.data,o.topics),fragment:s,log:o})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}async getBlock(){return await this.log.getBlock()}async getTransaction(){return await this.log.getTransaction()}async getTransactionReceipt(){return await this.log.getTransactionReceipt()}}const kf=new T("@ethersproject/contract@6.0.0-beta.4");var Pf,Nf=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},xf=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Of(t){return t&&"function"==typeof t.resolveName}class If{constructor(t,e,n){if(Pf.set(this,void 0),r(this,{fragment:e}),e.inputs.lengtht.walkAsync(n[e],((t,e)=>"address"===t?Ps(e,i):e)))));return t.interface.encodeFilterTopics(e,r)}(),"f")}getTopicFilter(){return xf(this,Pf,"f")}}function Sf(t,e){return null==t?null:"function"==typeof t[e]?t:t.provider&&"function"==typeof t.provider[e]?t.provider:null}function Rf(t){return null==t?null:t.provider||null}async function Bf(t){const e=function(t){const e={};t.to&&(e.to=t.to),t.from&&(e.from=t.from),t.data&&(e.data=le(t.data));const r="chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value".split(/,/);for(const n in r)n in t&&null!=t[n]&&(e[n]=Wo.getBigInt(t[n],`request.${n}`));const n="type,nonce".split(/,/);for(const r in n)r in t&&null!=t[r]&&(e[r]=Wo.getNumber(t[r],`request.${r}`));return t.accessList&&(e.accessList=yc(t.accessList)),"blockTag"in t&&(e.blockTag=t.blockTag),"enableCcipRead"in t&&(e.enableCcipReadEnabled=!!t.enableCcipRead),"customData"in t&&(e.customData=t.customData),e}(_s.dereference(t,"overrides"));return e.to?kf.throwArgumentError("cannot override to","overrides.to",e.to):e.data&&kf.throwArgumentError("cannot override data","overrides.data",e.data),e.from&&(e.from=await Ps(e.from)),e}Pf=new WeakMap;class _f extends(function(){return Function}()){constructor(t,e){super(),r(this,{name:t.interface.getFunctionName(e),_contract:t,_key:e});return new Proxy(this,{apply:async(t,e,r)=>t.getFragment(...r).constant?await t.staticCall(...r):await t.send(...r)})}get fragment(){return this._contract.interface.getFunction(this._key)}getFragment(...t){return this._contract.interface.getFunction(this._key,t)}async populateTransaction(...e){const r=this.getFragment(...e);let n={};if(r.inputs.length+1===e.length&&(n=await Bf(e.pop())),r.inputs.length!==e.length)throw new Error("internal error: fragment inputs doesn't match arguments; should not happen");const s=await async function(t,e,r){const n=Sf(t,"resolveName"),s=Of(n)?n:null;return await Promise.all(e.map(((t,e)=>t.walkAsync(r[e],((t,e)=>"address"===t?Ps(e,s):e)))))}(this._contract.runner,r.inputs,e);return Object.assign({},n,await t({to:this._contract.getAddress(),data:this._contract.interface.encodeFunctionData(r,s)}))}async staticCall(...t){const e=await this.staticCallResult(...t);return 1===e.length?e[0]:e}async send(...t){const e=this._contract.runner;if(!(r=e)||"function"!=typeof r.sendTransaction)return kf.throwError("contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});var r;const n=await e.sendTransaction(await this.populateTransaction(...t)),s=Rf(this._contract.runner);return new Af(this._contract.interface,s,n)}async estimateGas(...t){const e=Sf(this._contract.runner,"estimateGas");return(r=e)&&"function"==typeof r.estimateGas?await e.estimateGas(await this.populateTransaction(...t)):kf.throwError("contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"});var r}async staticCallResult(...t){const e=Sf(this._contract.runner,"call");if(!(r=e)||"function"!=typeof r.call)return kf.throwError("contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});var r;const n=this.getFragment(...t),s=await this.populateTransaction(...t);let i="0x";try{i=await e.call(s)}catch(t){if(u(t))throw this._contract.interface.makeError(n,t.data,s);throw t}return this._contract.interface.decodeFunctionResult(n,i)}}class Cf extends(function(){return Function}()){constructor(t,e){return super(),r(this,{name:t.interface.getEventName(e),_contract:t,_key:e}),new Proxy(this,{apply:async(e,r,n)=>new If(t,e.getFragment(...n),n)})}get fragment(){return this._contract.interface.getEvent(this._key)}getFragment(...t){return this._contract.interface.getEvent(this._key,t)}}const Ff=Symbol.for("_ethersInternal_contract"),Uf=new WeakMap;function Lf(t){return Uf.get(t[Ff])}async function Df(t,e){let r,n;if(Array.isArray(e))r=t.interface.getEvent(e[0]),n=e;else if("string"==typeof e)r=t.interface.getEvent(e),n=[t.interface.getEventTopic(r)];else if((s=e)&&"object"==typeof s&&"getTopicFilter"in s&&"function"==typeof s.getTopicFilter&&s.fragment)r=e.fragment,n=await e.getTopicFilter();else{if(!("fragment"in e))throw console.log(e),new Error("TODO");r=e.fragment,n=[t.interface.getEventTopic(r)]}var s;n=n.map((t=>{return null==t?null:Array.isArray(t)?(e=t.map((t=>t.toLowerCase())),(e=Array.from(new Set(e).values())).sort(),e):t.toLowerCase();var e}));return{fragment:r,tag:n.map((t=>null==t?"null":Array.isArray(t)?t.join("|"):t)).join("&"),topics:n}}async function Mf(t,e){const{subs:r}=Lf(t);return r.get((await Df(t,e)).tag)||null}async function Gf(t,e){const r=Rf(t.runner);if(!r)return kf.throwError("contract runner does not support subscribing","UNSUPPORTED_OPERATION",{operation:"on"});const{fragment:n,tag:s,topics:i}=await Df(t,e),{addr:o,subs:a}=Lf(t);let c=a.get(s);if(!c){const l={address:o||t,topics:i},u=r=>{const s=new Tf(t,null,e,n,r);$f(t,e,s.args,s)};let h=!1;c={tag:s,listeners:[],start:()=>{h||(r.on(l,u),h=!0)},stop:()=>{h&&(r.off(l,u),h=!1)}},a.set(s,c)}return c}let jf=Promise.resolve();async function $f(t,e,r,n){try{await jf}catch(t){}const s=async function(t,e,r,n){await jf;const s=await Mf(t,e);if(!s)return!1;const i=s.listeners.length;return s.listeners=s.listeners.filter((({listener:s,once:i})=>{const o=r.slice();n&&o.push(new Tf(t,i?null:s,e,n.fragment,n.log));try{s.call(t,...o)}catch(t){}return!i})),i>0}(t,e,r,n);return jf=s,await s}const zf=["then"];class Wf{constructor(t,e,n=null,s){let i;r(this,{target:t,runner:n,interface:xo.from(e)}),Object.defineProperty(this,Ff,{value:{}});let o=null,a=null;if(s){const t=Rf(n);a=new Af(this.interface,t,s)}let c=new Map;if("string"==typeof t)if(te(t))o=t,i=Promise.resolve(t);else{const e=Sf(n,"resolveName");if(!Of(e))throw kf.makeError("contract runner does not support name resolution","UNSUPPORTED_OPERATION",{operation:"resolveName"});i=e.resolveName(t).then((t=>{if(null==t)throw new Error("TODO");return Lf(this).addr=t,t}))}else i=t.getAddress().then((t=>{if(null==t)throw new Error("TODO");return Lf(this).addr=t,t}));var l,u;l=this,u={addrPromise:i,addr:o,deployTx:a,subs:c},Uf.set(l[Ff],u);const h=new Proxy({},{get:(t,e,r)=>{if(zf.indexOf(e)>=0)return Reflect.get(t,e,r);const n=String(e),s=this.getEvent(n);if(s)return s;throw new Error(`unknown contract event: ${n}`)}});return r(this,{filters:h}),new Proxy(this,{get:(t,e,r)=>{if(e in t||zf.indexOf(e)>=0)return Reflect.get(t,e,r);const n=String(e),s=t.getFunction(n);if(s)return s;throw new Error(`unknown contract method: ${n}`)}})}async getAddress(){return await Lf(this).addrPromise}async getDeployedCode(){const t=Rf(this.runner);if(!t)return kf.throwError("runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"getDeployedCode"});const e=await t.getCode(await this.getAddress());return"0x"===e?null:e}async waitForDeployment(){const t=this.deploymentTransaction();if(t)return await t.wait(),this;if(null!=await this.getDeployedCode())return this;const e=Rf(this.runner);return null==e?kf.throwError("contract runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"waitForDeployment"}):new Promise(((t,r)=>{const n=async()=>{try{if(null!=await this.getDeployedCode())return t(this);e.once("block",n)}catch(t){r(t)}};n()}))}deploymentTransaction(){return Lf(this).deployTx}getFunction(t){return"string"!=typeof t&&(t=t.format()),new _f(this,t)}getEvent(t){return"string"!=typeof t&&(t=t.format()),new Cf(this,t)}async queryTransaction(t){throw new Error("@TODO")}async queryFilter(t,e=0,r="latest"){const{addr:n,addrPromise:s}=Lf(this),i=n||await s,{fragment:o,topics:a}=await Df(this,t),c={address:i,topics:a,fromBlock:e,toBlock:r},l=Rf(this.runner);return l?(await l.getLogs(c)).map((t=>new vf(t,this.interface,o))):kf.throwError("contract runner does not have a provider","UNSUPPORTED_OPERATION",{operation:"queryFilter"})}async on(t,e){const r=await Gf(this,t);return r.listeners.push({listener:e,once:!1}),r.start(),this}async once(t,e){const r=await Gf(this,t);return r.listeners.push({listener:e,once:!0}),r.start(),this}async emit(t,...e){return await $f(this,t,e,null)}async listenerCount(t){if(t){const e=await Mf(this,t);return e?e.listeners.length:0}const{subs:e}=Lf(this);let r=0;for(const{listeners:t}of e.values())r+=t.length;return r}async listeners(t){if(t){const e=await Mf(this,t);return e?e.listeners.map((({listener:t})=>t)):[]}const{subs:e}=Lf(this);let r=[];for(const{listeners:t}of e.values())r=r.concat(t.map((({listener:t})=>t)));return r}async off(t,e){const r=await Mf(this,t);if(!r)return this;if(e){const t=r.listeners.map((({listener:t})=>t)).indexOf(e);t>=0&&r.listeners.splice(t,1)}return null!=e&&0!==r.listeners.length||(r.stop(),Lf(this).subs.delete(r.tag)),this}async removeAllListeners(t){if(t){const e=await Mf(this,t);if(!e)return this;e.stop(),Lf(this).subs.delete(e.tag)}else{const{subs:t}=Lf(this);for(const{tag:e,stop:r}of t.values())r(),t.delete(e)}return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return await this.off(t,e)}static buildClass(t){return class extends Wf{constructor(e,r=null){super(e,t,r)}}}static from(t,e,r=null){return new this(t,e,r)}}class Hf extends(function(){return Wf}()){}const Vf=" !#$%&'()*+,-./<=>?@[]^_`{|}~",Kf=/^[a-z]*$/i;function Jf(t,e){let r=97;return t.reduce(((t,n)=>(n===e?r++:n.match(Kf)?t.push(String.fromCharCode(r)+n):(r=97,t.push(n)),t)),[])}function qf(t){if("0"!==t[0])throw TypeError("unsupported auwl data");return function(t,e){for(let r=Vf.length-1;r>=0;r--)t=t.split(Vf[r]).join(e.substring(2*r,2*r+2));const r=[],n=t.replace(/(:|([0-9])|([A-Z][a-z]*))/g,((t,e,n,s)=>{if(n)for(let t=parseInt(n);t>=0;t--)r.push(";");else r.push(e.toLowerCase());return""}));if(n)throw new Error(`leftovers: ${JSON.stringify(n)}`);return Jf(Jf(r,";"),":")}(t.substring(1+2*Vf.length),t.substring(1,1+2*Vf.length))}const Xf=new T("@ethersproject/wordlists@6.0.0-beta.2");class Yf{constructor(t){r(this,{locale:t})}split(t){return t.toLowerCase().split(/ +/g)}join(t){return t.join(" ")}}var Zf,Qf,td,ed,rd,nd=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},sd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class id extends Yf{constructor(t,e,r){super(t),Zf.add(this),Qf.set(this,void 0),td.set(this,void 0),ed.set(this,void 0),nd(this,Qf,e,"f"),nd(this,td,r,"f"),nd(this,ed,null,"f")}get _data(){return sd(this,Qf,"f")}_decodeWords(){return qf(sd(this,Qf,"f"))}getWord(t){const e=sd(this,Zf,"m",rd).call(this);return(t<0||t>=e.length)&&Xf.throwArgumentError(`invalid word index: ${t}`,"index",t),e[t]}getWordIndex(t){return sd(this,Zf,"m",rd).call(this).indexOf(t)}}Qf=new WeakMap,td=new WeakMap,ed=new WeakMap,Zf=new WeakSet,rd=function(){if(null==sd(this,ed,"f")){const t=this._decodeWords();if(Oi(t.join("\n")+"\n")!==sd(this,td,"f"))throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);nd(this,ed,t,"f")}return sd(this,ed,"f")};const od=new class extends id{constructor(){super("en","0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-EgSe0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-PM&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryFN Noc|PutQuirySSue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurEAyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOgAyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NNGradeHoldOnP Set1BOng::Rd3Ar~ow9UUngU`:3BraRo9NeO","0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60")}},ad=new T("@ethersproject/wallet@6.0.0-beta.4"),cd=Object.freeze({en:od});var ld,ud=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},hd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class fd extends id{constructor(t,e,r,n){super(t,e,n),ld.set(this,void 0),ud(this,ld,r,"f")}get _accent(){return hd(this,ld,"f")}_decodeWords(){return function(t,e){let r=qf(t).join(",");return e.split(/,/g).forEach((t=>{const e=t.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);if(!e)throw new Error("internal error parsing accents");let n=0;const s=function(t,e){const r=(1<=t;){const e=s>>i-t;s&=(1<(0==--s[n]&&(e=String.fromCharCode(e.charCodeAt(0),i),n++),e)))})),r.split(",")}(this._data,this._accent)}}function dd(t){return(1<24)&&ad.throwArgumentError("invalid mnemonic length","mnemonic","[ REDACTED ]");const n=ie(new Uint8Array(Math.ceil(11*r.length/8)));let s=0;for(let t=0;t>3]|=1<<7-s%8),s++}const i=32*r.length/3,o=dd(r.length/3);return(ie(ts(n.slice(0,i/8)))[0]&o)!==(n[n.length-1]&o)&&ad.throwArgumentError("invalid mnemonic checksum","mnemonic","[ REDACTED ]"),le(n.slice(0,i/8))}function wd(t,e=od){(t.length%4||t.length<16||t.length>32)&&ad.throwArgumentError("invalid entropy size","entropy","[ REDACTED ]"),null==e&&(e=od);const r=[0];let n=11;for(let e=0;e8?(r[r.length-1]<<=8,r[r.length-1]|=t[e],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[e]>>8-n,r.push(t[e]&((1<<8-n)-1&255)),n+=3);const s=t.length/4,i=parseInt(ts(t).substring(2,4),16)&dd(s);return r[r.length-1]<<=s,r[r.length-1]|=i>>8-s,e.join(r.map((t=>e.getWord(t))))}ld=new WeakMap;const gd={};class md{constructor(t,e,n,s,i){null==s&&(s=""),null==i&&(i=od),ad.assertPrivate(t,gd,"Mnemonic"),r(this,{phrase:n,password:s,wordlist:i,entropy:e})}computeSeed(){const t=ei("mnemonic"+this.password,Xs.NFKD);return Sn(ei(this.phrase,Xs.NFKD),t,2048,64,"sha512")}static fromPhrase(t,e,r){const n=pd(t,r);return t=wd(ad.getBytes(n),r),new md(gd,n,t,e,r)}static fromEntropy(t,e,r){const n=ad.getBytes(t,"entropy"),s=wd(n,r);return new md(gd,le(n),s,e,r)}static entropyToPhrase(t,e){return wd(ad.getBytes(t,"entropy"),e)}static phraseToEntropy(t,e){return pd(t,e)}static isValidMnemonic(t,e){try{return pd(t,e),!0}catch(t){}return!1}}var yd,bd=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},vd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Ed extends Su{constructor(t,e){super(e),yd.set(this,void 0),bd(this,yd,t,"f");r(this,{address:bc(this.signingKey.publicKey)})}get signingKey(){return vd(this,yd,"f")}get privateKey(){return this.signingKey.privateKey}async getAddress(){return this.address}connect(t){return new Ed(vd(this,yd,"f"),t)}async signTransaction(e){const r=Object.assign({},e,await t({to:e.to?Ps(e.to,this.provider):void 0,from:e.from?Ps(e.from,this.provider):void 0}));null!=r.from&&(us(r.from)!==this.address&&ad.throwArgumentError("transaction from address mismatch","tx.from",e.from),delete r.from);const n=$c.from(r);return n.signature=this.signingKey.sign(n.unsignedHash),n.serialized}async signMessage(t){return this.signingKey.sign(Ui(t)).serialized}async signTypedData(t,e,r){const n=await uo.resolveNames(t,e,r,(async t=>{if(null==this.provider)return ad.throwError("cannot resolve ENS names without a provider","UNSUPPORTED_OPERATION",{operation:"resolveName",info:{name:t}});const e=await this.provider.resolveName(t);return null==e?ad.throwError("unconfigured ENS name","UNCONFIGURED_NAME",{value:t}):e}));return this.signingKey.sign(uo.hash(n.domain,e,n.value)).serialized}}yd=new WeakMap;var Ad,Td,kd,Pd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)},Nd=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r};const xd="m/44'/60'/0'/0/0",Od=new Uint8Array([66,105,116,99,111,105,110,32,115,101,101,100]),Id=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");function Sd(t,e){let r="";for(;t;)r="0123456789abcdef"[t%16]+r,t=Math.trunc(t/16);for(;r.length<2*e;)r="0"+r;return"0x"+r}function Rd(t){const e=ad.getBytes(t);return Kt(he([e,de(ts(ts(e)),0,4)]))}const Bd={};function _d(t,e,r,n){const s=new Uint8Array(37);if(2147483648&t){if(null==n)return ad.throwError("cannot derive child of neutered node","UNSUPPORTED_OPERATION",{operation:"deriveChild"});s.set(ie(n),1)}else s.set(ie(r));for(let e=24;e>=0;e-=8)s[33+(e>>3)]=t>>24-e&255;const i=ie(Mr("sha512",e,s));return{IL:i.slice(0,32),IR:i.slice(32)}}function Cd(t,e){const r=e.split("/");if(0===r.length||"m"===r[0]&&0!==t.depth)throw new Error("invalid path - "+e);"m"===r[0]&&r.shift();let n=t;for(let t=0;t=2147483648)throw new Error("invalid path index - "+e);n=n.deriveChild(2147483648+t)}else{if(!e.match(/^[0-9]+$/))throw new Error("invalid path component - "+e);{const t=parseInt(e);if(t>=2147483648)throw new Error("invalid path index - "+e);n=n.deriveChild(t)}}}return n}class Fd extends Ed{constructor(t,e,n,s,i,o,a,c,l){super(e,l),ad.assertPrivate(t,Bd,"HDNodeWallet"),r(this,{publicKey:e.compressedPublicKey});r(this,{parentFingerprint:n,fingerprint:de(Nn(ts(this.publicKey)),0,4),chainCode:s,path:i,index:o,depth:a}),r(this,{mnemonic:c})}connect(t){return new Fd(Bd,this.signingKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.mnemonic,t)}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return Rd(he(["0x0488ADE4",Sd(this.depth,1),this.parentFingerprint,Sd(this.index,4),this.chainCode,he(["0x00",this.privateKey])]))}hasPath(){return null!=this.path}neuter(){return new Ud(Bd,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.provider)}deriveChild(t){const e=ad.getNumber(t,"index");if(e>4294967295)throw new Error("invalid index - "+String(e));let r=this.path;r&&(r+="/"+(2147483647&e),2147483648&e&&(r+="'"));const{IR:n,IL:s}=_d(e,this.chainCode,this.publicKey,this.privateKey),i=new gc(bt((mt(s)+BigInt(this.privateKey))%Id,32));return new Fd(Bd,i,this.fingerprint,le(n),r,e,this.depth+1,this.mnemonic,this.provider)}derivePath(t){return Cd(this,t)}static fromSeed(t){return Pd(Fd,Ad,"m",Td).call(Fd,t,null)}static fromPhrase(t,e="",r=xd,n=od){r||(r=xd);const s=md.fromPhrase(t,e,n);return Pd(Fd,Ad,"m",Td).call(Fd,s.computeSeed(),s).derivePath(r)}static fromMnemonic(t,e=xd){return e||(e=xd),Pd(Fd,Ad,"m",Td).call(Fd,t.computeSeed(),t).derivePath(e)}static fromExtendedKey(t){const e=ie(Jt(t));82===e.length&&Rd(e.slice(0,78))===t||ad.throwArgumentError("invalid extended key","extendedKey","[ REDACTED ]");const r=e[4],n=le(e.slice(5,9)),s=parseInt(le(e.slice(9,13)).substring(2),16),i=le(e.slice(13,45)),o=e.slice(45,78);switch(le(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":{const t=le(o);return new Ud(Bd,bc(t),t,n,i,null,s,r,null)}case"0x0488ade4":case"0x04358394 ":if(0!==o[0])break;return new Fd(Bd,new gc(o.slice(1)),n,i,null,s,r,null,null)}return ad.throwArgumentError("invalid extended key prefix","extendedKey","[ REDACTED ]")}static createRandom(t="",e=xd,r=od){e||(e=xd);const n=md.fromEntropy(Cn(16),t,r);return Pd(Fd,Ad,"m",Td).call(Fd,n.computeSeed(),n).derivePath(e)}}Ad=Fd,Td=function(t,e){const r=ad.getBytes(t,"seed");if(r.length<16||r.length>64)throw new Error("invalid seed");const n=ie(Mr("sha512",Od,r)),s=new gc(le(n.slice(0,32)));return new Fd(Bd,s,"0x00000000",le(n.slice(32)),"m",0,0,e,null)};class Ud extends Ru{constructor(t,e,n,s,i,o,a,c,l){super(e,l),ad.assertPrivate(t,Bd,"HDNodeVoidWallet"),r(this,{publicKey:n});r(this,{publicKey:n,fingerprint:de(Nn(ts(n)),0,4),parentFingerprint:s,chainCode:i,path:o,index:a,depth:c})}connect(t){return new Ud(Bd,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,t)}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return Rd(he(["0x0488B21E",Sd(this.depth,1),this.parentFingerprint,Sd(this.index,4),this.chainCode,this.publicKey]))}hasPath(){return null!=this.path}deriveChild(t){const e=ad.getNumber(t,"index");if(e>4294967295)throw new Error("invalid index - "+String(e));let r=this.path;r&&(r+="/"+(2147483647&e),2147483648&e&&(r+="'"));const{IR:n,IL:s}=_d(e,this.chainCode,this.publicKey,null),i=gc._addPoints(s,this.publicKey,!0),o=bc(i);return new Ud(Bd,o,i,this.fingerprint,le(n),r,e,this.depth+1,this.provider)}derivePath(t){return Cd(this,t)}}class Ld{constructor(t,e="",r="m/44'/60'/0'/0",n=od){kd.set(this,void 0),Nd(this,kd,Fd.fromPhrase(t,e,r,n),"f")}getSigner(t=0){return Pd(this,kd,"f").deriveChild(t)}}function Dd(t){const e=ad.getNumber(t,"index");return(e<0||e>=2147483648)&&ad.throwArgumentError("invalid account index","index",e),`m/44'/60'/${e}'/0/0`} -/*! MIT License. Copyright 2015-2022 Richard Moore . See LICENSE.txt. */kd=new WeakMap;var Md,Gd,jd,$d=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},zd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Wd={16:10,24:12,32:14},Hd=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],Vd=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],Kd=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Jd=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],qd=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],Xd=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],Yd=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],Zd=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],Qd=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],tp=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],ep=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],rp=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],np=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],sp=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],ip=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function op(t){const e=[];for(let r=0;r>2,zd(this,jd,"f")[i][t%4]=s[t],zd(this,Gd,"f")[e-i][t%4]=s[t];let o,a=0,c=n;for(;c>16&255]<<24^Vd[o>>8&255]<<16^Vd[255&o]<<8^Vd[o>>24&255]^Hd[a]<<24,a+=1,8!=n)for(let t=1;t>8&255]<<8^Vd[o>>16&255]<<16^Vd[o>>24&255]<<24;for(let t=n/2+1;t>2,i=c%4,zd(this,jd,"f")[t][i]=s[l],zd(this,Gd,"f")[e-t][i]=s[l++],c++}for(let t=1;t>24&255]^np[o>>16&255]^sp[o>>8&255]^ip[255&o]}get key(){return zd(this,Md,"f").slice()}encrypt(t){if(16!=t.length)throw new TypeError("invalid plaintext size (must be 16 bytes)");const e=zd(this,jd,"f").length-1,r=[0,0,0,0];let n=op(t);for(let t=0;t<4;t++)n[t]^=zd(this,jd,"f")[0][t];for(let t=1;t>24&255]^qd[n[(e+1)%4]>>16&255]^Xd[n[(e+2)%4]>>8&255]^Yd[255&n[(e+3)%4]]^zd(this,jd,"f")[t][e];n=r.slice()}const s=new Uint8Array(16);let i=0;for(let t=0;t<4;t++)i=zd(this,jd,"f")[e][t],s[4*t]=255&(Vd[n[t]>>24&255]^i>>24),s[4*t+1]=255&(Vd[n[(t+1)%4]>>16&255]^i>>16),s[4*t+2]=255&(Vd[n[(t+2)%4]>>8&255]^i>>8),s[4*t+3]=255&(Vd[255&n[(t+3)%4]]^i);return s}decrypt(t){if(16!=t.length)throw new TypeError("invalid ciphertext size (must be 16 bytes)");const e=zd(this,Gd,"f").length-1,r=[0,0,0,0];let n=op(t);for(let t=0;t<4;t++)n[t]^=zd(this,Gd,"f")[0][t];for(let t=1;t>24&255]^Qd[n[(e+3)%4]>>16&255]^tp[n[(e+2)%4]>>8&255]^ep[255&n[(e+1)%4]]^zd(this,Gd,"f")[t][e];n=r.slice()}const s=new Uint8Array(16);let i=0;for(let t=0;t<4;t++)i=zd(this,Gd,"f")[e][t],s[4*t]=255&(Kd[n[t]>>24&255]^i>>24),s[4*t+1]=255&(Kd[n[(t+3)%4]>>16&255]^i>>16),s[4*t+2]=255&(Kd[n[(t+2)%4]>>8&255]^i>>8),s[4*t+3]=255&(Kd[255&n[(t+1)%4]]^i);return s}}Md=new WeakMap,Gd=new WeakMap,jd=new WeakMap;class cp{constructor(t,e,r){if(r&&!(this instanceof r))throw new Error(`${t} must be instantiated with "new"`);Object.defineProperties(this,{aes:{enumerable:!0,value:new ap(e)},name:{enumerable:!0,value:t}})}}var lp,up,hp=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},fp=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class dp extends cp{constructor(t,e){if(super("ECC",t,dp),lp.set(this,void 0),up.set(this,void 0),e){if(e.length%16)throw new TypeError("invalid iv size (must be 16 bytes)");hp(this,lp,new Uint8Array(e),"f")}else hp(this,lp,new Uint8Array(16),"f");hp(this,up,this.iv,"f")}get iv(){return new Uint8Array(fp(this,lp,"f"))}encrypt(t){if(t.length%16)throw new TypeError("invalid plaintext size (must be multiple of 16 bytes)");const e=new Uint8Array(t.length);for(let r=0;rNumber.MAX_SAFE_INTEGER)throw new TypeError("invalid counter initial integer value");for(let e=15;e>=0;--e)yp(this,gp,"f")[e]=t%256,t=Math.floor(t/256)}setCounterBytes(t){if(16!==t.length)throw new TypeError("invalid counter initial Uint8Array value length");yp(this,gp,"f").set(t)}increment(){for(let t=15;t>=0;t--){if(255!==yp(this,gp,"f")[t]){yp(this,gp,"f")[t]++;break}yp(this,gp,"f")[t]=0}}encrypt(t){var e,r;const n=new Uint8Array(t);for(let t=0;t16)throw new TypeError("PKCS#7 padding byte out of range");const r=t.length-e;for(let n=0;n{setTimeout((()=>{e()}),t)}))}var Ip,Sp=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Rp=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Bp(t){try{if(!t||!te(t.privateKey,32))return null;const e=t.privateKey;return gc.computePublicKey(e)!==t.publicKey?null:new gc(e)}catch(t){console.log(t)}return null}function _p(t){return new Promise((e=>{setTimeout((()=>{e()}),t)}))}class Cp extends Ed{constructor(t,e){let r=null,n=null;if("string"==typeof t&&(r=new gc(t)),null==r){const e=function(t){try{if(!t||!t.signingKey)return null;const e=Bp(t.signingKey);return null==e||bc(e.publicKey)!==t.address||t.mnemonic&&Fd.fromMnemonic(t.mnemonic).privateKey!==e.privateKey?null:t}catch(t){console.log(t)}return null}(t);e&&(r=e.signingKey,n=e.mnemonic||null)}if(null==r){const e=function(t){try{return null==t||"string"!=typeof t.phrase||"string"!=typeof t.password||null==t.wordlist?null:Fd.fromPhrase(t.phrase,t.password,null,t.wordlist)}catch(t){console.log(t)}return null}(t);e&&(r=e.signingKey,n=e.mnemonic||null)}null==r&&(r=Bp(t)),null==r&&ad.throwArgumentError("invalid key","key","[ REDACTED ]"),super(r,e),Ip.set(this,void 0),Sp(this,Ip,n,"f")}get mnemonic(){return Rp(this,Ip,"f")}connect(t){return new Cp(this,t)}async encrypt(t,e,r){throw new Error("TODO")}encryptSync(t,e){throw new Error("TODO")}static async fromEncryptedJson(t,e,r){let n=null;if(Pp(t))n=await async function(t,e,r){const n=JSON.parse(t),s=Ep(e),i=xp(n);if("pbkdf2"===i.name){r&&(r(0),await Op(0));const{salt:t,count:e,dkLen:o,algorithm:a}=i,c=Sn(s,t,e,o,a);return r&&(r(1),await Op(0)),Np(n,c)}if("scrypt"===i.name){const{salt:t,N:e,r:o,p:a,dkLen:c}=i;return Np(n,await Vn(s,t,e,o,a,c,r))}throw new Error("unreachable")}(t,e,r);else{if(!Tp(t))return ad.throwArgumentError("invalid JSON wallet","json","[ REDACTED ]");r&&(r(0),await _p(0)),n=kp(t,e),r&&(r(1),await _p(0))}const s=new Cp(n.privateKey);return s.address!==n.address&&ad.throwArgumentError("address/privateKey mismatch","json","[ REDACTED ]"),s}static fromEncryptedJsonSync(t,e){let r=null;if(Pp(t))r=function(t,e){const r=JSON.parse(t),n=Ep(e),s=xp(r);if("pbkdf2"===s.name){const{salt:t,count:e,dkLen:i,algorithm:o}=s;return Np(r,Sn(n,t,e,i,o))}if("scrypt"===s.name){const{salt:t,N:e,r:i,p:o,dkLen:a}=s;return Np(r,Kn(n,t,e,i,o,a))}throw new Error("unreachable")}(t,e);else{if(!Tp(t))return ad.throwArgumentError("invalid JSON wallet","json","[ REDACTED ]");r=kp(t,e)}const n=new Cp(r.privateKey);return n.address!==r.address&&ad.throwArgumentError("address/privateKey mismatch","json","[ REDACTED ]"),n}static createRandom(t,e,r){return new Cp(md.fromEntropy(Cn(16),e,r),t)}static fromMnemonic(t,e){return new Cp(t,e)}static fromPhrase(t,e,r="",n){return new Cp(md.fromPhrase(t,r,n),e)}}Ip=new WeakMap;const Fp="ethers@6.0.0-beta.5";var Up=Object.freeze({__proto__:null,Interface:xo,getAddress:us,getIcapAddress:hs,getCreateAddress:Es,getCreate2Address:As,isAddressable:Ts,isAddress:ks,resolveAddress:Ps,arrayify:ie,decodeBase64:ae,encodeBase64:ce,isHexString:te,isBytesLike:ee,concat:he,dataLength:fe,dataSlice:de,stripZerosLeft:pe,hexlify:le,quantity:ue,zeroPadBytes:me,zeroPadValue:ge,BaseContract:Wf,Contract:Hf,ContractEventPayload:Tf,ContractTransactionReceipt:Ef,ContractTransactionResponse:Af,EventLog:vf,computeHmac:Mr,keccak256:an,ripemd160:Nn,sha256:ts,sha512:es,pbkdf2:Sn,scrypt:Vn,scryptSync:Kn,randomBytes:Cn,lock:rs,messagePrefix:Fi,id:Oi,hashMessage:Ui,isValidName:Bi,namehash:_i,dnsEncode:Ci,solidityPacked:ji,solidityPackedKeccak256:$i,solidityPackedSha256:zi,TypedDataEncoder:uo,isError:l,isCallException:u,Logger:T,formatFixed:Ut,parseFixed:Lt,fromTwos:Tt,toTwos:kt,mask:Pt,toArray:vt,toBigInt:mt,toHex:bt,toNumber:yt,decodeBase58:Jt,encodeBase58:Kt,formatEther:Zt,parseEther:Qt,formatUnits:Xt,parseUnits:Yt,FixedFormat:Dt,FixedNumber:Mt,defineProperties:r,resolveProperties:t,getStore:a,setStore:c,dummyProvider:nl,getDefaultProvider:df,showThrottleMessage:Cu,AbstractProvider:pu,UnmanagedSubscriber:uu,AbstractSigner:Su,VoidSigner:Ru,WrappedSigner:Bu,EnsResolver:ca,Formatter:ul,NetworkPlugin:hl,GasCostPlugin:fl,EnsPlugin:dl,MaxPriorityFeePlugin:pl,Network:pf,Block:Xc,FeeData:qc,Log:Yc,TransactionReceipt:Zc,TransactionResponse:Qc,FallbackProvider:$h,JsonRpcProvider:oh,JsonRpcSigner:sh,StaticJsonRpcProvider:ah,AlchemyProvider:dh,AnkrProvider:hh,CloudflareProvider:ph,EtherscanProvider:mh,InfuraProvider:bh,PocketProvider:Ah,IpcSocketProvider:undefined,SocketProvider:cf,WebSocketProvider:ff,encodeRlp:ws,decodeRlp:vs,Signature:Ea,SigningKey:gc,formatBytes32String:ai,parseBytes32String:ci,nameprep:bi,_toEscapedUtf8String:ni,toUtf8Bytes:ei,toUtf8CodePoints:oi,toUtf8String:ii,get UnicodeNormalizationForm(){return Xs},Utf8ErrorFuncs:Qs,get Utf8ErrorReason(){return Ys},accessListify:yc,computeAddress:bc,recoverAddress:vc,Transaction:$c,defaultPath:xd,getAccountPath:Dd,HDNodeWallet:Fd,HDNodeVoidWallet:Ud,HDNodeWalletManager:Ld,Mnemonic:md,Wallet:Cp,fetchData:zo,FetchRequest:Mo,FetchResponse:_o,wordlists:cd,Wordlist:Yf,WordlistOwl:id,WordlistOwlA:fd,version:"ethers@6.0.0-beta.5"});export{pu as AbstractProvider,Su as AbstractSigner,dh as AlchemyProvider,hh as AnkrProvider,Wf as BaseContract,Xc as Block,ph as CloudflareProvider,Hf as Contract,Tf as ContractEventPayload,Ef as ContractTransactionReceipt,Af as ContractTransactionResponse,dl as EnsPlugin,ca as EnsResolver,mh as EtherscanProvider,vf as EventLog,$h as FallbackProvider,qc as FeeData,Mo as FetchRequest,_o as FetchResponse,Dt as FixedFormat,Mt as FixedNumber,ul as Formatter,fl as GasCostPlugin,Ud as HDNodeVoidWallet,Fd as HDNodeWallet,Ld as HDNodeWalletManager,bh as InfuraProvider,xo as Interface,wf as IpcSocketProvider,oh as JsonRpcProvider,sh as JsonRpcSigner,Yc as Log,T as Logger,pl as MaxPriorityFeePlugin,md as Mnemonic,pf as Network,hl as NetworkPlugin,Ah as PocketProvider,Ea as Signature,gc as SigningKey,cf as SocketProvider,ah as StaticJsonRpcProvider,$c as Transaction,Zc as TransactionReceipt,Qc as TransactionResponse,uo as TypedDataEncoder,Xs as UnicodeNormalizationForm,uu as UnmanagedSubscriber,Qs as Utf8ErrorFuncs,Ys as Utf8ErrorReason,Ru as VoidSigner,Cp as Wallet,ff as WebSocketProvider,Yf as Wordlist,id as WordlistOwl,fd as WordlistOwlA,Bu as WrappedSigner,ni as _toEscapedUtf8String,yc as accessListify,ie as arrayify,bc as computeAddress,Mr as computeHmac,he as concat,fe as dataLength,de as dataSlice,Jt as decodeBase58,ae as decodeBase64,vs as decodeRlp,xd as defaultPath,r as defineProperties,Ci as dnsEncode,nl as dummyProvider,Kt as encodeBase58,ce as encodeBase64,ws as encodeRlp,Up as ethers,zo as fetchData,ai as formatBytes32String,Zt as formatEther,Ut as formatFixed,Xt as formatUnits,Tt as fromTwos,Dd as getAccountPath,us as getAddress,As as getCreate2Address,Es as getCreateAddress,df as getDefaultProvider,hs as getIcapAddress,a as getStore,Ui as hashMessage,le as hexlify,Oi as id,ks as isAddress,Ts as isAddressable,ee as isBytesLike,u as isCallException,l as isError,te as isHexString,Bi as isValidName,an as keccak256,rs as lock,Pt as mask,Fi as messagePrefix,_i as namehash,bi as nameprep,ci as parseBytes32String,Qt as parseEther,Lt as parseFixed,Yt as parseUnits,Sn as pbkdf2,ue as quantity,Cn as randomBytes,vc as recoverAddress,Ps as resolveAddress,t as resolveProperties,Nn as ripemd160,Vn as scrypt,Kn as scryptSync,c as setStore,ts as sha256,es as sha512,Cu as showThrottleMessage,ji as solidityPacked,$i as solidityPackedKeccak256,zi as solidityPackedSha256,pe as stripZerosLeft,vt as toArray,mt as toBigInt,bt as toHex,yt as toNumber,kt as toTwos,ei as toUtf8Bytes,oi as toUtf8CodePoints,ii as toUtf8String,Fp as version,cd as wordlists,me as zeroPadBytes,ge as zeroPadValue}; +const Me=t=>new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4)),je=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),Ge=(t,e)=>t<<32-e|t>>>e;if(!(68===new Uint8Array(new Uint32Array([287454020]).buffer)[0]))throw new Error("Non little-endian hardware is not supported");Array.from({length:256},((t,e)=>e.toString(16).padStart(2,"0")));const $e=(()=>{const t="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);try{if(t){const{setImmediate:e}=t("timers");return()=>new Promise((t=>e(t)))}}catch(t){}return()=>new Promise((t=>setTimeout(t,0)))})();async function ze(t,e,r){let n=Date.now();for(let s=0;s=0&&tt().update(We(e)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e}class Xe extends Ke{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,Ve(t);const r=We(e);if(this.iHash=t.create(),!(this.iHash instanceof Ke))throw new TypeError("Expected instance of class which extends utils.Hash");const n=this.blockLen=this.iHash.blockLen;this.outputLen=this.iHash.outputLen;const s=new Uint8Array(n);s.set(r.length>this.iHash.blockLen?t.create().update(r).digest():r);for(let t=0;tnew Xe(t,e).update(r).digest();function Ze(t,e,r,n){const{c:s,dkLen:i,DK:o,PRF:a,PRFSalt:c}=function(t,e,r,n){Ve(t);const s=Je({dkLen:32,asyncTick:10},n),{c:i,dkLen:o,asyncTick:a}=s;if(He(i),He(o),He(a),i<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const c=We(e),l=We(r),u=new Uint8Array(o),h=Ye.create(t,c),f=h._cloneInto().update(l);return{c:i,dkLen:o,asyncTick:a,DK:u,PRF:h,PRFSalt:f}}(t,e,r,n);let l;const u=new Uint8Array(4),h=je(u),f=new Uint8Array(a.outputLen);for(let t=1,e=0;enew Xe(t,e);class Qe extends Ke{constructor(t,e,r,n){super(),this.blockLen=t,this.outputLen=e,this.padOffset=r,this.isLE=n,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=je(this.buffer)}update(t){if(this.destroyed)throw new Error("instance is destroyed");const{view:e,buffer:r,blockLen:n,finished:s}=this;if(s)throw new Error("digest() was already called");const i=(t=We(t)).length;for(let s=0;sn-i&&(this.process(r,0),i=0);for(let t=i;t>s&i),a=Number(r&i),c=n?4:0,l=n?0:4;t.setUint32(e+c,o,n),t.setUint32(e+l,a,n)}(r,n-8,BigInt(8*this.length),s),this.process(r,0);const o=je(t);this.get().forEach(((t,e)=>o.setUint32(4*e,t,s)))}digest(){const{buffer:t,outputLen:e}=this;this.digestInto(t);const r=t.slice(0,e);return this.destroy(),r}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:e,buffer:r,length:n,finished:s,destroyed:i,pos:o}=this;return t.length=n,t.pos=o,t.finished=s,t.destroyed=i,n%e&&t.buffer.set(r),t}}const tr=(t,e,r)=>t&e^~t&r,er=(t,e,r)=>t&e^t&r^e&r,rr=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),nr=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),sr=new Uint32Array(64);class ir extends Qe{constructor(){super(64,32,8,!1),this.A=0|nr[0],this.B=0|nr[1],this.C=0|nr[2],this.D=0|nr[3],this.E=0|nr[4],this.F=0|nr[5],this.G=0|nr[6],this.H=0|nr[7]}get(){const{A:t,B:e,C:r,D:n,E:s,F:i,G:o,H:a}=this;return[t,e,r,n,s,i,o,a]}set(t,e,r,n,s,i,o,a){this.A=0|t,this.B=0|e,this.C=0|r,this.D=0|n,this.E=0|s,this.F=0|i,this.G=0|o,this.H=0|a}process(t,e){for(let r=0;r<16;r++,e+=4)sr[r]=t.getUint32(e,!1);for(let t=16;t<64;t++){const e=sr[t-15],r=sr[t-2],n=Ge(e,7)^Ge(e,18)^e>>>3,s=Ge(r,17)^Ge(r,19)^r>>>10;sr[t]=s+sr[t-7]+n+sr[t-16]|0}let{A:r,B:n,C:s,D:i,E:o,F:a,G:c,H:l}=this;for(let t=0;t<64;t++){const e=l+(Ge(o,6)^Ge(o,11)^Ge(o,25))+tr(o,a,c)+rr[t]+sr[t]|0,u=(Ge(r,2)^Ge(r,13)^Ge(r,22))+er(r,n,s)|0;l=c,c=a,a=o,o=i+e|0,i=s,s=n,n=r,r=e+u|0}r=r+this.A|0,n=n+this.B|0,s=s+this.C|0,i=i+this.D|0,o=o+this.E|0,a=a+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(r,n,s,i,o,a,c,l)}roundClean(){sr.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const or=qe((()=>new ir)),ar=BigInt(2**32-1),cr=BigInt(32);function lr(t,e=!1){return e?{h:Number(t&ar),l:Number(t>>cr&ar)}:{h:0|Number(t>>cr&ar),l:0|Number(t&ar)}}function ur(t,e=!1){let r=new Uint32Array(t.length),n=new Uint32Array(t.length);for(let s=0;st>>>r,fr=(t,e,r)=>t<<32-r|e>>>r,dr=(t,e,r)=>t>>>r|e<<32-r,pr=(t,e,r)=>t<<32-r|e>>>r,wr=(t,e,r)=>t<<64-r|e>>>r-32,gr=(t,e,r)=>t>>>r-32|e<<64-r;function mr(t,e,r,n){const s=(e>>>0)+(n>>>0);return{h:t+r+(s/2**32|0)|0,l:0|s}}const yr=(t,e,r)=>(t>>>0)+(e>>>0)+(r>>>0),br=(t,e,r,n)=>e+r+n+(t/2**32|0)|0,vr=(t,e,r,n)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0),Er=(t,e,r,n,s)=>e+r+n+s+(t/2**32|0)|0,Ar=(t,e,r,n,s)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)+(s>>>0),Tr=(t,e,r,n,s,i)=>e+r+n+s+i+(t/2**32|0)|0,[kr,Pr]=ur(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map((t=>BigInt(t)))),Nr=new Uint32Array(80),xr=new Uint32Array(80);class Or extends Qe{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:t,Al:e,Bh:r,Bl:n,Ch:s,Cl:i,Dh:o,Dl:a,Eh:c,El:l,Fh:u,Fl:h,Gh:f,Gl:d,Hh:p,Hl:w}=this;return[t,e,r,n,s,i,o,a,c,l,u,h,f,d,p,w]}set(t,e,r,n,s,i,o,a,c,l,u,h,f,d,p,w){this.Ah=0|t,this.Al=0|e,this.Bh=0|r,this.Bl=0|n,this.Ch=0|s,this.Cl=0|i,this.Dh=0|o,this.Dl=0|a,this.Eh=0|c,this.El=0|l,this.Fh=0|u,this.Fl=0|h,this.Gh=0|f,this.Gl=0|d,this.Hh=0|p,this.Hl=0|w}process(t,e){for(let r=0;r<16;r++,e+=4)Nr[r]=t.getUint32(e),xr[r]=t.getUint32(e+=4);for(let t=16;t<80;t++){const e=0|Nr[t-15],r=0|xr[t-15],n=dr(e,r,1)^dr(e,r,8)^hr(e,0,7),s=pr(e,r,1)^pr(e,r,8)^fr(e,r,7),i=0|Nr[t-2],o=0|xr[t-2],a=dr(i,o,19)^wr(i,o,61)^hr(i,0,6),c=pr(i,o,19)^gr(i,o,61)^fr(i,o,6),l=vr(s,c,xr[t-7],xr[t-16]),u=Er(l,n,a,Nr[t-7],Nr[t-16]);Nr[t]=0|u,xr[t]=0|l}let{Ah:r,Al:n,Bh:s,Bl:i,Ch:o,Cl:a,Dh:c,Dl:l,Eh:u,El:h,Fh:f,Fl:d,Gh:p,Gl:w,Hh:g,Hl:m}=this;for(let t=0;t<80;t++){const e=dr(u,h,14)^dr(u,h,18)^wr(u,h,41),y=pr(u,h,14)^pr(u,h,18)^gr(u,h,41),b=u&f^~u&p,v=Ar(m,y,h&d^~h&w,Pr[t],xr[t]),E=Tr(v,g,e,b,kr[t],Nr[t]),A=0|v,T=dr(r,n,28)^wr(r,n,34)^wr(r,n,39),k=pr(r,n,28)^gr(r,n,34)^gr(r,n,39),P=r&s^r&o^s&o,N=n&i^n&a^i&a;g=0|p,m=0|w,p=0|f,w=0|d,f=0|u,d=0|h,({h:u,l:h}=mr(0|c,0|l,0|E,0|A)),c=0|o,l=0|a,o=0|s,a=0|i,s=0|r,i=0|n;const x=yr(A,k,N);r=br(x,E,T,P),n=0|x}({h:r,l:n}=mr(0|this.Ah,0|this.Al,0|r,0|n)),({h:s,l:i}=mr(0|this.Bh,0|this.Bl,0|s,0|i)),({h:o,l:a}=mr(0|this.Ch,0|this.Cl,0|o,0|a)),({h:c,l:l}=mr(0|this.Dh,0|this.Dl,0|c,0|l)),({h:u,l:h}=mr(0|this.Eh,0|this.El,0|u,0|h)),({h:f,l:d}=mr(0|this.Fh,0|this.Fl,0|f,0|d)),({h:p,l:w}=mr(0|this.Gh,0|this.Gl,0|p,0|w)),({h:g,l:m}=mr(0|this.Hh,0|this.Hl,0|g,0|m)),this.set(r,n,s,i,o,a,c,l,u,h,f,d,p,w,g,m)}roundClean(){Nr.fill(0),xr.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class Ir extends Or{constructor(){super(),this.Ah=573645204,this.Al=-64227540,this.Bh=-1621794909,this.Bl=-934517566,this.Ch=596883563,this.Cl=1867755857,this.Dh=-1774684391,this.Dl=1497426621,this.Eh=-1775747358,this.El=-1467023389,this.Fh=-1101128155,this.Fl=1401305490,this.Gh=721525244,this.Gl=746961066,this.Hh=246885852,this.Hl=-2117784414,this.outputLen=32}}class Sr extends Or{constructor(){super(),this.Ah=-876896931,this.Al=-1056596264,this.Bh=1654270250,this.Bl=914150663,this.Ch=-1856437926,this.Cl=812702999,this.Dh=355462360,this.Dl=-150054599,this.Eh=1731405415,this.El=-4191439,this.Fh=-1900787065,this.Fl=1750603025,this.Gh=-619958771,this.Gl=1694076839,this.Hh=1203062813,this.Hl=-1090891868,this.outputLen=48}}const Rr=qe((()=>new Or));qe((()=>new Ir)),qe((()=>new Sr));const Br=new T("@ethersproject/crypto@6.0.0-beta.2");const _r=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let Cr=_r.crypto||_r.msCrypto;function Fr(t){switch(t){case"sha256":return or.create();case"sha512":return Rr.create()}return Br.throwArgumentError("invalid hashing algorithm name","algorithm",t)}let Ur=!1;const Lr=function(t,e,r){return"0x"+function(t,e){const r={sha256:or,sha512:Rr}[t];return null==r?Br.throwArgumentError("invalid hmac algorithm","algorithm",t):Ye.create(r,e)}(t,e).update(r).digest("hex")};let Dr=Lr;function Mr(t,e,r){const n=Br.getBytes(e,"key"),s=Br.getBytes(r,"data");return le(Dr(t,n,s))}Mr._=Lr,Mr.lock=function(){Ur=!0},Mr.register=function(t){if(Ur)throw new Error("computeHmac is locked");Dr=t},Object.freeze(Mr);const[jr,Gr,$r]=[[],[],[]],zr=BigInt(0),Wr=BigInt(1),Hr=BigInt(2),Vr=BigInt(7),Kr=BigInt(256),Jr=BigInt(113);for(let t=0,e=Wr,r=1,n=0;t<24;t++){[r,n]=[n,(2*r+3*n)%5],jr.push(2*(5*n+r)),Gr.push((t+1)*(t+2)/2%64);let s=zr;for(let t=0;t<7;t++)e=(e<>Vr)*Jr)%Kr,e&Hr&&(s^=Wr<<(Wr<r>32?((t,e,r)=>e<>>64-r)(t,e,r):((t,e,r)=>t<>>32-r)(t,e,r),Zr=(t,e,r)=>r>32?((t,e,r)=>t<>>64-r)(t,e,r):((t,e,r)=>e<>>32-r)(t,e,r);class Qr extends Ke{constructor(t,e,r,n=!1,s=24){if(super(),this.blockLen=t,this.suffix=e,this.outputLen=r,this.enableXOF=n,this.rounds=s,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,He(r),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=Me(this.state)}keccak(){!function(t,e=24){const r=new Uint32Array(10);for(let n=24-e;n<24;n++){for(let e=0;e<10;e++)r[e]=t[e]^t[e+10]^t[e+20]^t[e+30]^t[e+40];for(let e=0;e<10;e+=2){const n=(e+8)%10,s=(e+2)%10,i=r[s],o=r[s+1],a=Yr(i,o,1)^r[n],c=Zr(i,o,1)^r[n+1];for(let r=0;r<50;r+=10)t[e+r]^=a,t[e+r+1]^=c}let e=t[2],s=t[3];for(let r=0;r<24;r++){const n=Gr[r],i=Yr(e,s,n),o=Zr(e,s,n),a=jr[r];e=t[a],s=t[a+1],t[a]=i,t[a+1]=o}for(let e=0;e<50;e+=10){for(let n=0;n<10;n++)r[n]=t[e+n];for(let n=0;n<10;n++)t[e+n]^=~r[(n+2)%10]&r[(n+4)%10]}t[0]^=qr[n],t[1]^=Xr[n]}r.fill(0)}(this.state32,this.rounds),this.posOut=0,this.pos=0}update(t){if(this.destroyed)throw new Error("instance is destroyed");if(this.finished)throw new Error("digest() was already called");const{blockLen:e,state:r}=this,n=(t=We(t)).length;for(let s=0;s=this.blockLen&&this.keccak();const n=Math.min(this.blockLen-this.posOut,r-e);t.set(this.state.subarray(this.posOut,this.posOut+n),e),this.posOut+=n,e+=n}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return He(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(t.lengthqe((()=>new Qr(e,t,r)));tn(6,144,28),tn(6,136,32),tn(6,104,48),tn(6,72,64),tn(1,144,28);const en=tn(1,136,32);tn(1,104,48),tn(1,72,64);const rn=(t,e,r)=>function(t){const e=(e,r)=>t(r).update(We(e)).digest(),r=t({});return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=e=>t(e),e}(((n={})=>new Qr(e,t,void 0!==n.dkLen?n.dkLen:r,!0)));rn(31,168,16),rn(31,136,32);let nn=!1;const sn=function(t){return en(t)};let on=sn;function an(t){const e=Br.getBytes(t,"data");return le(on(e))}an._=sn,an.lock=function(){nn=!0},an.register=function(t){if(nn)throw new TypeError("keccak256 is locked");on=t},Object.freeze(an);const cn=new Uint8Array([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),ln=Uint8Array.from({length:16},((t,e)=>e)),un=ln.map((t=>(9*t+5)%16));let hn=[ln],fn=[un];for(let t=0;t<4;t++)for(let e of[hn,fn])e.push(e[t].map((t=>cn[t])));const dn=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map((t=>new Uint8Array(t))),pn=hn.map(((t,e)=>t.map((t=>dn[e][t])))),wn=fn.map(((t,e)=>t.map((t=>dn[e][t])))),gn=new Uint32Array([0,1518500249,1859775393,2400959708,2840853838]),mn=new Uint32Array([1352829926,1548603684,1836072691,2053994217,0]),yn=(t,e)=>t<>>32-e;function bn(t,e,r,n){return 0===t?e^r^n:1===t?e&r|~e&n:2===t?(e|~r)^n:3===t?e&n|r&~n:e^(r|~n)}const vn=new Uint32Array(16);class En extends Qe{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){const{h0:t,h1:e,h2:r,h3:n,h4:s}=this;return[t,e,r,n,s]}set(t,e,r,n,s){this.h0=0|t,this.h1=0|e,this.h2=0|r,this.h3=0|n,this.h4=0|s}process(t,e){for(let r=0;r<16;r++,e+=4)vn[r]=t.getUint32(e,!0);let r=0|this.h0,n=r,s=0|this.h1,i=s,o=0|this.h2,a=o,c=0|this.h3,l=c,u=0|this.h4,h=u;for(let t=0;t<5;t++){const e=4-t,f=gn[t],d=mn[t],p=hn[t],w=fn[t],g=pn[t],m=wn[t];for(let e=0;e<16;e++){const n=yn(r+bn(t,s,o,c)+vn[p[e]]+f,g[e])+u|0;r=u,u=c,c=0|yn(o,10),o=s,s=n}for(let t=0;t<16;t++){const r=yn(n+bn(e,i,a,l)+vn[w[t]]+d,m[t])+h|0;n=h,h=l,l=0|yn(a,10),a=i,i=r}}this.set(this.h1+o+l|0,this.h2+c+h|0,this.h3+u+n|0,this.h4+r+i|0,this.h0+s+a|0)}roundClean(){vn.fill(0)}destroy(){this.destroyed=!0,this.buffer.fill(0),this.set(0,0,0,0,0)}}const An=qe((()=>new En));let Tn=!1;const kn=function(t){return An(t)};let Pn=kn;function Nn(t){const e=Br.getBytes(t,"data");return le(Pn(e))}Nn._=kn,Nn.lock=function(){Tn=!0},Nn.register=function(t){if(Tn)throw new TypeError("ripemd160 is locked");Pn=t},Object.freeze(Nn);let xn=!1;const On=function(t,e,r,n,s){return function(t,e,r,n,s){const i={sha256:or,sha512:Rr}[s];return null==i?Br.throwArgumentError("invalid pbkdf2 algorithm","algorithm",s):Ze(i,t,e,{c:r,dkLen:n})}(t,e,r,n,s)};let In=On;function Sn(t,e,r,n,s){const i=Br.getBytes(t,"password"),o=Br.getBytes(e,"salt");return le(In(i,o,r,n,s))}Sn._=On,Sn.lock=function(){xn=!0},Sn.register=function(t){if(xn)throw new Error("pbkdf2 is locked");In=t},Object.freeze(Sn);let Rn=!1;const Bn=function(t){return new Uint8Array(function(t){if(null==Cr)return Br.throwError("platform does not support secure random numbers","UNSUPPORTED_OPERATION",{operation:"randomBytes"});(t<=0||t>1024||t%1||t!=t)&&Br.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return Cr.getRandomValues(e),e}(t))};let _n=Bn;function Cn(t){return _n(t)}Cn._=Bn,Cn.lock=function(){Rn=!0},Cn.register=function(t){if(Rn)throw new Error("random is locked");_n=t},Object.freeze(Cn);const Fn=(t,e)=>t<>>32-e;function Un(t,e,r,n,s,i){let o=t[e++]^r[n++],a=t[e++]^r[n++],c=t[e++]^r[n++],l=t[e++]^r[n++],u=t[e++]^r[n++],h=t[e++]^r[n++],f=t[e++]^r[n++],d=t[e++]^r[n++],p=t[e++]^r[n++],w=t[e++]^r[n++],g=t[e++]^r[n++],m=t[e++]^r[n++],y=t[e++]^r[n++],b=t[e++]^r[n++],v=t[e++]^r[n++],E=t[e++]^r[n++],A=o,T=a,k=c,P=l,N=u,x=h,O=f,I=d,S=p,R=w,B=g,_=m,C=y,F=b,U=v,L=E;for(let t=0;t<8;t+=2)N^=Fn(A+C|0,7),S^=Fn(N+A|0,9),C^=Fn(S+N|0,13),A^=Fn(C+S|0,18),R^=Fn(x+T|0,7),F^=Fn(R+x|0,9),T^=Fn(F+R|0,13),x^=Fn(T+F|0,18),U^=Fn(B+O|0,7),k^=Fn(U+B|0,9),O^=Fn(k+U|0,13),B^=Fn(O+k|0,18),P^=Fn(L+_|0,7),I^=Fn(P+L|0,9),_^=Fn(I+P|0,13),L^=Fn(_+I|0,18),T^=Fn(A+P|0,7),k^=Fn(T+A|0,9),P^=Fn(k+T|0,13),A^=Fn(P+k|0,18),O^=Fn(x+N|0,7),I^=Fn(O+x|0,9),N^=Fn(I+O|0,13),x^=Fn(N+I|0,18),_^=Fn(B+R|0,7),S^=Fn(_+B|0,9),R^=Fn(S+_|0,13),B^=Fn(R+S|0,18),C^=Fn(L+U|0,7),F^=Fn(C+L|0,9),U^=Fn(F+C|0,13),L^=Fn(U+F|0,18);s[i++]=o+A|0,s[i++]=a+T|0,s[i++]=c+k|0,s[i++]=l+P|0,s[i++]=u+N|0,s[i++]=h+x|0,s[i++]=f+O|0,s[i++]=d+I|0,s[i++]=p+S|0,s[i++]=w+R|0,s[i++]=g+B|0,s[i++]=m+_|0,s[i++]=y+C|0,s[i++]=b+F|0,s[i++]=v+U|0,s[i++]=E+L|0}function Ln(t,e,r,n,s){let i=n+0,o=n+16*s;for(let n=0;n<16;n++)r[o+n]=t[e+16*(2*s-1)+n];for(let n=0;n0&&(o+=16),Un(r,i,t,e+=16,r,o)}function Dn(t,e,r){const n=Je({dkLen:32,asyncTick:10,maxmem:1073742848},r),{N:s,r:i,p:o,dkLen:a,asyncTick:c,maxmem:l,onProgress:u}=n;if(He(s),He(i),He(o),He(a),He(c),He(l),void 0!==u&&"function"!=typeof u)throw new Error("progressCb should be function");const h=128*i,f=h/4;if(s<=1||0!=(s&s-1)||s>=2**(h/8)||s>2**32)throw new Error("Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32");if(o<0||o>137438953440/h)throw new Error("Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)");if(a<0||a>137438953440)throw new Error("Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32");const d=h*(s+o);if(d>l)throw new Error(`Scrypt: parameters too large, ${d} (128 * r * (N + p)) > ${l} (maxmem)`);const p=Ze(or,t,e,{c:1,dkLen:h*o}),w=Me(p),g=Me(new Uint8Array(h*s)),m=Me(new Uint8Array(h));let y=()=>{};if(u){const t=2*s*o,e=Math.max(Math.floor(t/1e4),1);let r=0;y=()=>{r++,!u||r%e&&r!==t||u(r/t)}}return{N:s,r:i,p:o,dkLen:a,blockSize32:f,V:g,B32:w,B:p,tmp:m,blockMixCb:y,asyncTick:c}}function Mn(t,e,r,n,s){const i=Ze(or,t,r,{c:1,dkLen:e});return r.fill(0),n.fill(0),s.fill(0),i}let jn=!1,Gn=!1;const $n=async function(t,e,r,n,s,i,o){return await async function(t,e,r){const{N:n,r:s,p:i,dkLen:o,blockSize32:a,V:c,B32:l,B:u,tmp:h,blockMixCb:f,asyncTick:d}=Dn(t,e,r);for(let t=0;t{Ln(c,r,c,r+=a,s),f()})),Ln(c,(n-1)*a,l,e,s),f(),await ze(n,d,(t=>{const r=l[e+a-16]%n;for(let t=0;t>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&n[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const as={};for(let t=0;t<10;t++)as[String(t)]=String(t);for(let t=0;t<26;t++)as[String.fromCharCode(65+t)]=String(10+t);function cs(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map((t=>as[t])).join("");for(;e.length>=15;){let t=e.substring(0,15);e=parseInt(t,10)%97+e.substring(t.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}const ls=function(){const t={};for(let e=0;e<36;e++){t["0123456789abcdefghijklmnopqrstuvwxyz"[e]]=BigInt(e)}return t}();function us(t){if("string"!=typeof t&&ns.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/)){"0x"!==t.substring(0,2)&&(t="0x"+t);const e=os(t);return t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&ns.throwArgumentError("bad address checksum","address",t),e}if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){t.substring(2,4)!==cs(t)&&ns.throwArgumentError("bad icap checksum","address",t);let e=function(t){t=t.toLowerCase();let e=ss;for(let r=0;r>=8;return e}function ps(t){if(Array.isArray(t)){let e=[];if(t.forEach((function(t){e=e.concat(ps(t))})),e.length<=55)return e.unshift(192+e.length),e;const r=ds(e.length);return r.unshift(247+r.length),r.concat(e)}const e=Array.prototype.slice.call(fs.getBytes(t,"object"));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=ds(e.length);return r.unshift(183+r.length),r.concat(e)}function ws(t){let e="0x";for(const r of ps(t))e+="0123456789abcdef"[r>>4],e+="0123456789abcdef"[15&r];return e}function gs(t){let e=t.toString(16);for(;e.length<2;)e="0"+e;return"0x"+e}function ms(t,e,r){let n=0;for(let s=0;se+1+n&&fs.throwError("child data too short","BUFFER_OVERRUN",{buffer:t,length:n,offset:e})}return{consumed:1+n,result:s}}function bs(t,e){0===t.length&&fs.throwError("data too short","BUFFER_OVERRUN",{buffer:t,length:0,offset:1});const r=e=>{e>t.length&&fs.throwError("data short segment too short","BUFFER_OVERRUN",{buffer:t,length:t.length,offset:e})};if(t[e]>=248){const n=t[e]-247;r(e+1+n);const s=ms(t,e+1,n);return r(e+1+n+s),ys(t,e,e+1+n,n+s)}if(t[e]>=192){const n=t[e]-192;return r(e+1+n),ys(t,e,e+1,n)}if(t[e]>=184){const n=t[e]-183;r(e+1+n);const s=ms(t,e+1,n);r(e+1+n+s);return{consumed:1+n+s,result:le(t.slice(e+1+n,e+1+n+s))}}if(t[e]>=128){const n=t[e]-128;r(e+1+n);return{consumed:1+n,result:le(t.slice(e+1,e+1+n))}}return{consumed:1,result:gs(t[e])}}function vs(t){const e=fs.getBytes(t,"data"),r=bs(e,0);return r.consumed!==e.length&&fs.throwArgumentError("unexpected junk after rlp payload","data",t),r.result}function Es(t){const e=us(t.from);let r=ns.getBigInt(t.nonce,"tx.nonce").toString(16);return r="0"===r?"0x":r.length%2?"0x0"+r:"0x"+r,us(de(an(ws([e,r])),12))}function As(t,e,r){const n=us(t),s=ns.getBytes(e,"salt"),i=ns.getBytes(r,"initCodeHash");return 32!==s.length&&ns.throwArgumentError("salt must be 32 bytes","salt",e),32!==i.length&&ns.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),us(de(an(he(["0xff",n,s,i])),12))}function Ts(t){return t&&"function"==typeof t.getAddress}function ks(t){try{return us(t),!0}catch(t){}return!1}async function Ps(t,e){if("string"==typeof t){if(t.match(/^0x[0-9a-f]{40}$/i))return us(t);if(null==e)return ns.throwError("ENS resolution requires a provider","UNSUPPORTED_OPERATION",{operation:"resolveName"});const r=await e.resolveName(t);return null==r||"0x0000000000000000000000000000000000000000"===r?ns.throwError("unconfigured name","UNCONFIGURED_NAME",{value:t}):us(r)}if(Ts(t)){const e=await t.getAddress();return null==e&&ns.throwArgumentError("addressable resolved to null","target",t),us(e)}return ns.throwArgumentError("unsupported addressable value","target",t)}var Ns,xs=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Os=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Is={};function Ss(t,e){let r=!1;return e<0&&(r=!0,e*=-1),new _s(Is,`${r?"":"u"}int${e}`,t,{signed:r,width:e})}function Rs(t,e){return new _s(Is,`bytes${e||""}`,t,{size:e})}const Bs=Symbol.for("_ethers_typed");class _s{constructor(t,e,n,s=null){if(Ns.set(this,void 0),t!==Is)throw new Error("private constructor");r(this,{_typedSymbol:Bs,type:e,value:n}),xs(this,Ns,s,"f"),this.format()}format(){if("array"===this.type)throw new Error("");if("dynamicArray"===this.type)throw new Error("");return"tuple"===this.type?`tuple(${this.value.map((t=>t.format())).join(",")})`:this.type}defaultValue(){return 0}minValue(){return 0}maxValue(){return 0}isBigInt(){return!!this.type.match(/^u?int[0-9]+$/)}isData(){return"bytes"===this.type.substring(0,5)}isString(){return"string"===this.type}get tupleName(){if("tuple"!==this.type)throw TypeError("not a tuple");return Os(this,Ns,"f")}get arrayLength(){if("array"!==this.type)throw TypeError("not an array");return!0===Os(this,Ns,"f")?-1:!1===Os(this,Ns,"f")?this.value.length:null}static from(t,e){return new _s(Is,t,e)}static uint8(t){return Ss(t,8)}static uint16(t){return Ss(t,16)}static uint24(t){return Ss(t,24)}static uint32(t){return Ss(t,32)}static uint40(t){return Ss(t,40)}static uint48(t){return Ss(t,46)}static uint56(t){return Ss(t,56)}static uint64(t){return Ss(t,64)}static uint72(t){return Ss(t,72)}static uint80(t){return Ss(t,80)}static uint88(t){return Ss(t,88)}static uint96(t){return Ss(t,96)}static uint104(t){return Ss(t,104)}static uint112(t){return Ss(t,112)}static uint120(t){return Ss(t,120)}static uint128(t){return Ss(t,128)}static uint136(t){return Ss(t,136)}static uint144(t){return Ss(t,144)}static uint152(t){return Ss(t,152)}static uint160(t){return Ss(t,160)}static uint168(t){return Ss(t,168)}static uint176(t){return Ss(t,176)}static uint184(t){return Ss(t,184)}static uint192(t){return Ss(t,192)}static uint200(t){return Ss(t,200)}static uint208(t){return Ss(t,208)}static uint216(t){return Ss(t,216)}static uint224(t){return Ss(t,224)}static uint232(t){return Ss(t,232)}static uint240(t){return Ss(t,240)}static uint248(t){return Ss(t,248)}static uint256(t){return Ss(t,256)}static uint(t){return Ss(t,256)}static int8(t){return Ss(t,-8)}static int16(t){return Ss(t,-16)}static int24(t){return Ss(t,-24)}static int32(t){return Ss(t,-32)}static int40(t){return Ss(t,-40)}static int48(t){return Ss(t,-46)}static int56(t){return Ss(t,-56)}static int64(t){return Ss(t,-64)}static int72(t){return Ss(t,-72)}static int80(t){return Ss(t,-80)}static int88(t){return Ss(t,-88)}static int96(t){return Ss(t,-96)}static int104(t){return Ss(t,-104)}static int112(t){return Ss(t,-112)}static int120(t){return Ss(t,-120)}static int128(t){return Ss(t,-128)}static int136(t){return Ss(t,-136)}static int144(t){return Ss(t,-144)}static int152(t){return Ss(t,-152)}static int160(t){return Ss(t,-160)}static int168(t){return Ss(t,-168)}static int176(t){return Ss(t,-176)}static int184(t){return Ss(t,-184)}static int192(t){return Ss(t,-192)}static int200(t){return Ss(t,-200)}static int208(t){return Ss(t,-208)}static int216(t){return Ss(t,-216)}static int224(t){return Ss(t,-224)}static int232(t){return Ss(t,-232)}static int240(t){return Ss(t,-240)}static int248(t){return Ss(t,-248)}static int256(t){return Ss(t,-256)}static int(t){return Ss(t,-256)}static bytes(t){return Rs(t)}static bytes1(t){return Rs(t,1)}static bytes2(t){return Rs(t,2)}static bytes3(t){return Rs(t,3)}static bytes4(t){return Rs(t,4)}static bytes5(t){return Rs(t,5)}static bytes6(t){return Rs(t,6)}static bytes7(t){return Rs(t,7)}static bytes8(t){return Rs(t,8)}static bytes9(t){return Rs(t,9)}static bytes10(t){return Rs(t,10)}static bytes11(t){return Rs(t,11)}static bytes12(t){return Rs(t,12)}static bytes13(t){return Rs(t,13)}static bytes14(t){return Rs(t,14)}static bytes15(t){return Rs(t,15)}static bytes16(t){return Rs(t,16)}static bytes17(t){return Rs(t,17)}static bytes18(t){return Rs(t,18)}static bytes19(t){return Rs(t,19)}static bytes20(t){return Rs(t,20)}static bytes21(t){return Rs(t,21)}static bytes22(t){return Rs(t,22)}static bytes23(t){return Rs(t,23)}static bytes24(t){return Rs(t,24)}static bytes25(t){return Rs(t,25)}static bytes26(t){return Rs(t,26)}static bytes27(t){return Rs(t,27)}static bytes28(t){return Rs(t,28)}static bytes29(t){return Rs(t,29)}static bytes30(t){return Rs(t,30)}static bytes31(t){return Rs(t,31)}static bytes32(t){return Rs(t,32)}static address(t){return new _s(Is,"address",t)}static bool(t){return new _s(Is,"bool",!!t)}static string(t){return new _s(Is,"string",t)}static array(t,e){throw new Error("not implemented yet")}static tuple(t,e){throw new Error("not implemented yet")}static overrides(t){return new _s(Is,"overrides",Object.assign({},t))}static isTyped(t){return t&&t._typedSymbol===Bs}static dereference(t,e){if(_s.isTyped(t)){if(t.type!==e)throw new Error(`invalid type: expecetd ${e}, got ${t.type}`);return t.value}return t}}Ns=new WeakMap;class Cs extends Ue{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){let r=_s.dereference(e,"string");try{r=us(r)}catch(t){return this._throwError(t.message,e)}return t.writeValue(r)}decode(t){return us(bt(t.readValue(),20))}}class Fs extends Ue{constructor(t){super(t.name,t.type,"_",t.dynamic),this.coder=t}defaultValue(){return this.coder.defaultValue()}encode(t,e){return this.coder.encode(t,e)}decode(t){return this.coder.decode(t)}}function Us(t,e,r){let n=[];if(Array.isArray(r))n=r;else if(r&&"object"==typeof r){let t={};n=e.map((e=>{const n=e.localName;return n||k.throwError("cannot encode object for signature with missing names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:r}),t[n]&&k.throwError("cannot encode object for signature with duplicate names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:r}),t[n]=!0,r[n]}))}else k.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&k.throwArgumentError("types/value length mismatch","tuple",r);let s=new Le,i=new Le,o=[];e.forEach(((t,e)=>{let r=n[e];if(t.dynamic){let e=i.length;t.encode(i,r);let n=s.writeUpdatableValue();o.push((t=>{n(t+e)}))}else t.encode(s,r)})),o.forEach((t=>{t(s.length)}));let a=t.appendWriter(s);return a+=t.appendWriter(i),a}function Ls(t,e){let r=[],n=[],s=t.subReader(0);return e.forEach((e=>{let i=null;if(e.dynamic){let r=t.readIndex(),n=s.subReader(r);try{i=e.decode(n)}catch(t){if(l(t,"BUFFER_OVERRUN"))throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(l(t,"BUFFER_OVERRUN"))throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}if(null==i)throw new Error("investigate");r.push(i),n.push(e.localName||null)})),Ce.fromItems(r,n)}class Ds extends Ue{constructor(t,e,n){super("array",t.type+"["+(e>=0?e:"")+"]",n,-1===e||t.dynamic),r(this,{coder:t,length:e})}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let r=0;rt.dataLength&&k.throwError("insufficient data length","BUFFER_OVERRUN",{buffer:t.bytes,offset:32*e,length:t.dataLength}));let r=[];for(let t=0;tt||r<-(t+Vs))&&this._throwError("value out-of-bounds",e)}else(rPt(n,8*this.size))&&this._throwError("value out-of-bounds",e);return r=Pt(kt(r,8*this.size),8*this.size),this.signed&&(r=kt(Tt(r,8*this.size),256)),t.writeValue(r)}decode(t){let e=Pt(t.readValue(),8*this.size);return this.signed&&(e=Tt(e,8*this.size)),e}}const qs=new T("@ethersproject/strings@6.0.0-beta.2");var Xs,Ys;function Zs(t,e,r,n,s){if(t===Ys.BAD_PREFIX||t===Ys.UNEXPECTED_CONTINUE){let t=0;for(let n=e+1;n>6==2;n++)t++;return t}return t===Ys.OVERRUN?r.length-e-1:0}!function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"}(Xs||(Xs={})),function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"}(Ys||(Ys={}));const Qs=Object.freeze({error:function(t,e,r,n,s){return qs.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:Zs,replace:function(t,e,r,n,s){return t===Ys.OVERLONG?(n.push(null!=s?s:-1),0):(n.push(65533),Zs(t,e,r))}});function ti(t,e){null==e&&(e=Qs.error);const r=qs.getBytes(t,"bytes"),n=[];let s=0;for(;s>7==0){n.push(t);continue}let i=null,o=null;if(192==(224&t))i=1,o=127;else if(224==(240&t))i=2,o=2047;else{if(240!=(248&t)){s+=e(128==(192&t)?Ys.UNEXPECTED_CONTINUE:Ys.BAD_PREFIX,s-1,r,n);continue}i=3,o=65535}if(s-1+i>=r.length){s+=e(Ys.OVERRUN,s-1,r,n);continue}let a=t&(1<<8-i-1)-1;for(let t=0;t1114111?s+=e(Ys.OUT_OF_RANGE,s-1-i,r,n,a):a>=55296&&a<=57343?s+=e(Ys.UTF16_SURROGATE,s-1-i,r,n,a):a<=o?s+=e(Ys.OVERLONG,s-1-i,r,n,a):n.push(a))}return n}function ei(t,e=Xs.current){e!=Xs.current&&(qs.assertNormalize(e),t=t.normalize(e));let r=[];for(let e=0;e>6|192),r.push(63&n|128);else if(55296==(64512&n)){e++;const s=t.charCodeAt(e);if(e>=t.length||56320!=(64512&s))throw new Error("invalid utf-8 string");const i=65536+((1023&n)<<10)+(1023&s);r.push(i>>18|240),r.push(i>>12&63|128),r.push(i>>6&63|128),r.push(63&i|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(63&n|128)}return new Uint8Array(r)}function ri(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function ni(t,e){return'"'+ti(t,e).map((t=>{if(t<256){switch(t){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(t>=32&&t<127)return String.fromCharCode(t)}return t<=65535?ri(t):ri(55296+((t-=65536)>>10&1023))+ri(56320+(1023&t))})).join("")+'"'}function si(t){return t.map((t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t))))).join("")}function ii(t,e){return si(ti(t,e))}function oi(t,e=Xs.current){return ti(ei(t,e))}function ai(t){const e=ei(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return me(e,32)}function ci(t){const e=qs.getBytes(t,"bytes");if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let r=31;for(;0===e[r-1];)r--;return ii(e.slice(0,r))}function li(t,e){const r=e||function(t){return[parseInt(t,16)]};let n=0,s={};return t.split(",").forEach((t=>{let e=t.split(":");n+=parseInt(e[0],16),s[n]=r(e[1])})),s}function ui(t){let e=0;return t.split(",").map((t=>{let r=t.split("-");1===r.length?r[1]="0":""===r[1]&&(r[1]="1");let n=e+parseInt(r[0],16);return e=parseInt(r[1],16),{l:n,h:e}}))}function hi(t,e){let r=0;for(let n=0;n=r&&t<=r+s.h&&(t-r)%(s.d||1)==0){if(s.e&&-1!==s.e.indexOf(t-r))continue;return s}}return null}const fi=ui("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),di="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map((t=>parseInt(t,16))),pi=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],wi=li("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),gi=li("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),mi=li("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",(function(t){if(t.length%4!=0)throw new Error("should not happen; bad data");let e=[];for(let r=0;r{if(di.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){const e=hi(t,pi);if(e){if(null==e.s)throw new Error("should not happenl bad range");return[t+e.s]}const r=wi[t];if(r)return r;const n=gi[t];return n?[t+n[0]]:mi[t]||null}(t);return e||[t]})),e=r.reduce(((t,e)=>(e.forEach((e=>{t.push(e)})),t)),[]),e=oi(si(e),Xs.NFKC),e.forEach((e=>{hi(e,yi)&&qs.throwArgumentError("STRINGPREP_CONTAINS_PROHIBITED","value",t)})),e.forEach((e=>{hi(e,fi)&&qs.throwArgumentError("STRINGPREP_CONTAINS_UNASSIGNED","value",t)}));let n=si(e);return"-"!==n.substring(0,1)&&"--"!==n.substring(2,4)&&"-"!==n.substring(n.length-1)||qs.throwArgumentError("invalid hyphen","value",t),n.length>63&&qs.throwArgumentError("too long","value",t),n}class vi extends js{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,ei(_s.dereference(e,"string")))}decode(t){return ii(super.decode(t))}}class Ei extends Ue{constructor(t,e){let n=!1;const s=[];t.forEach((t=>{t.dynamic&&(n=!0),s.push(t.type)}));super("tuple","tuple("+s.join(",")+")",e,n),r(this,{coders:Object.freeze(t.slice())})}defaultValue(){const t=[];this.coders.forEach((e=>{t.push(e.defaultValue())}));const e=this.coders.reduce(((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t}),{});return this.coders.forEach(((r,n)=>{let s=r.localName;s&&1===e[s]&&("length"===s&&(s="_length"),null==t[s]&&(t[s]=t[n]))})),Object.freeze(t)}encode(t,e){const r=_s.dereference(e,"tuple");return Us(t,this.coders,r)}decode(t){return Ls(t,this.coders)}}var Ai,Ti,ki=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Pi=new RegExp(/^bytes([0-9]*)$/),Ni=new RegExp(/^(u?int)([0-9]*)$/);Ai=new WeakSet,Ti=function t(e){if(e.isArray())return new Ds(ki(this,Ai,"m",t).call(this,e.arrayChildren),e.arrayLength,e.name);if(e.isTuple())return new Ei(e.components.map((e=>ki(this,Ai,"m",t).call(this,e))),e.name);switch(e.baseType){case"address":return new Cs(e.name);case"bool":return new Ms(e.name);case"string":return new vi(e.name);case"bytes":return new Gs(e.name);case"":return new Ws(e.name)}let r=e.type.match(Ni);if(r){let t=parseInt(r[2]||"256");return(0===t||t>256||t%8!=0)&&k.throwArgumentError("invalid "+r[1]+" bit length","param",e),new Js(t/8,"int"===r[1],e.name)}if(r=e.type.match(Pi),r){let t=parseInt(r[1]);return(0===t||t>32)&&k.throwArgumentError("invalid bytes length","param",e),new $s(t,e.name)}return k.throwArgumentError("invalid type","type",e.type)};const xi=new class{constructor(){Ai.add(this)}getDefaultValue(t){const e=t.map((t=>ki(this,Ai,"m",Ti).call(this,it.from(t))));return new Ei(e,"_").defaultValue()}encode(t,e){k.assertArgumentCount(e.length,t.length,"types/values length mismatch");const r=t.map((t=>ki(this,Ai,"m",Ti).call(this,it.from(t)))),n=new Ei(r,"_"),s=new Le;return n.encode(s,e),s.data}decode(t,e,r){const n=t.map((t=>ki(this,Ai,"m",Ti).call(this,it.from(t))));return new Ei(n,"_").decode(new De(e,r))}};function Oi(t){return an(ei(t))}const Ii=new T("@ethersproject/hash@6.0.0-beta.4"),Si=new Uint8Array(32);Si.fill(0);const Ri=new RegExp("^((.*)\\.)?([^.]+)$");function Bi(t){try{const e=t.split(".");for(let t=0;t{""===e&&Ii.throwArgumentError("invalid DNS name; missing component","name",t);const r=ei("_"+bi(e));return r[0]=r.length-1,r})))+"00"}const Fi="Ethereum Signed Message:\n";function Ui(t){return"string"==typeof t&&(t=ei(t)),an(he([ei(Fi),ei(String(t.length)),t]))}const Li=new RegExp("^bytes([0-9]+)$"),Di=new RegExp("^(u?int)([0-9]*)$"),Mi=new RegExp("^(.*)\\[([0-9]*)\\]$");function ji(t,e,r){switch(t){case"address":return r?Ii.getBytes(ge(e,32)):Ii.getBytes(e);case"string":return ei(e);case"bytes":return Ii.getBytes(e);case"bool":return e=e?"0x01":"0x00",r?Ii.getBytes(ge(e,32)):Ii.getBytes(e)}let n=t.match(Di);if(n){let s=parseInt(n[2]||"256");return n[2]&&String(s)!==n[2]||s%8!=0||0===s||s>256?Ii.throwArgumentError("invalid number type","type",t):(r&&(s=256),e=kt(e,s),Ii.getBytes(ge(e,s/8)))}if(n=t.match(Li),n){const s=parseInt(n[1]);return String(s)!==n[1]||0===s||s>32?Ii.throwArgumentError("invalid bytes type","type",t):fe(e)!==s?Ii.throwArgumentError(`invalid value for ${t}`,"value",e):r?Ii.getBytes(me(e,32)):e}if(n=t.match(Mi),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&Ii.throwArgumentError(`invalid array length for ${t}`,"value",e);const s=[];return e.forEach((function(t){s.push(ji(r,t,!0))})),Ii.getBytes(he(s))}return Ii.throwArgumentError("invalid type","type",t)}function Gi(t,e){t.length!=e.length&&Ii.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach((function(t,n){r.push(ji(t,e[n]))})),le(he(r))}function $i(t,e){return an(Gi(t,e))}function zi(t,e){return ts(Gi(t,e))}var Wi,Hi,Vi,Ki,Ji,qi=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Xi=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Yi=new Uint8Array(32);Yi.fill(0);const Zi=BigInt(-1),Qi=BigInt(0),to=BigInt(1),eo=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const ro=bt(to,32),no=bt(Qi,32),so={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},io=["name","version","chainId","verifyingContract","salt"];function oo(t){return function(e){return"string"!=typeof e&&Ii.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const ao={name:oo("name"),version:oo("version"),chainId:function(t){return Ii.getBigInt(t,"domain.chainId")},verifyingContract:function(t){try{return us(t).toLowerCase()}catch(t){}return Ii.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){const e=Ii.getBytes(t,"domain.salt");return 32!==e.length&&Ii.throwArgumentError('invalid domain value "salt"',"domain.salt",t),le(e)}};function co(t){{const e=t.match(/^(u?)int(\d*)$/);if(e){const r=""===e[1],n=parseInt(e[2]||"256");(n%8!=0||n>256||e[2]&&e[2]!==String(n))&&Ii.throwArgumentError("invalid numeric width","type",t);const s=Pt(eo,r?n-1:n),i=r?(s+to)*Zi:Qi;return function(e){const r=Ii.getBigInt(e,"value");return(rs)&&Ii.throwArgumentError(`value out-of-bounds for ${t}`,"value",r),bt(kt(r,256),32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const r=parseInt(e[1]);return(0===r||r>32||e[1]!==String(r))&&Ii.throwArgumentError("invalid bytes width","type",t),function(e){return ie(e).length!==r&&Ii.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=ie(t),r=e.length%32;return r?he([e,Yi.slice(r)]):le(e)}(e)}}}switch(t){case"address":return function(t){return ge(us(t),32)};case"bool":return function(t){return t?ro:no};case"bytes":return function(t){return an(t)};case"string":return function(t){return Oi(t)}}return null}function lo(t,e){return`${t}(${e.map((({name:t,type:e})=>e+" "+t)).join(",")})`}class uo{constructor(t){Wi.add(this),Hi.set(this,void 0),Vi.set(this,void 0),Ki.set(this,void 0),qi(this,Hi,JSON.stringify(t),"f"),qi(this,Vi,new Map,"f"),qi(this,Ki,new Map,"f");const e=new Map,n=new Map,s=new Map;Object.keys(t).forEach((t=>{e.set(t,new Set),n.set(t,[]),s.set(t,new Set)}));for(const r in t){const s=new Set;for(const i of t[r]){s.has(i.name)&&Ii.throwArgumentError(`duplicate variable name ${JSON.stringify(i.name)} in ${JSON.stringify(r)}`,"types",t),s.add(i.name);const o=i.type.match(/^([^\x5b]*)(\x5b|$)/)[1]||null;o===r&&Ii.throwArgumentError(`circular type reference to ${JSON.stringify(o)}`,"types",t);co(o)||(n.has(o)||Ii.throwArgumentError(`unknown type ${JSON.stringify(o)}`,"types",t),n.get(o).push(r),e.get(r).add(o))}}const i=Array.from(n.keys()).filter((t=>0===n.get(t).length));0===i.length?Ii.throwArgumentError("missing primary type","types",t):i.length>1&&Ii.throwArgumentError(`ambiguous primary types or unused types: ${i.map((t=>JSON.stringify(t))).join(", ")}`,"types",t),r(this,{primaryType:i[0]}),function r(i,o){o.has(i)&&Ii.throwArgumentError(`circular type reference to ${JSON.stringify(i)}`,"types",t),o.add(i);for(const t of e.get(i))if(n.has(t)){r(t,o);for(const e of o)s.get(e).add(t)}o.delete(i)}(this.primaryType,new Set);for(const[e,r]of s){const n=Array.from(r);n.sort(),Xi(this,Vi,"f").set(e,lo(e,t[e])+n.map((e=>lo(e,t[e]))).join(""))}}get types(){return JSON.parse(Xi(this,Hi,"f"))}getEncoder(t){let e=Xi(this,Ki,"f").get(t);return e||(e=Xi(this,Wi,"m",Ji).call(this,t),Xi(this,Ki,"f").set(t,e)),e}encodeType(t){const e=Xi(this,Vi,"f").get(t);return e||Ii.throwArgumentError(`unknown type: ${JSON.stringify(t)}`,"name",t)}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return an(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,r){if(co(t))return r(t,e);const n=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(n){const t=n[1],s=parseInt(n[3]);return s>=0&&e.length!==s&&Ii.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e),e.map((e=>this._visit(t,e,r)))}const s=this.types[t];return s?s.reduce(((t,{name:n,type:s})=>(t[n]=this._visit(s,e[n],r),t)),{}):Ii.throwArgumentError(`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new uo(t)}static getPrimaryType(t){return uo.from(t).primaryType}static hashStruct(t,e,r){return uo.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=so[r];n||Ii.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort(((t,e)=>io.indexOf(t.name)-io.indexOf(e.name))),uo.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return he(["0x1901",uo.hashDomain(t),uo.from(e).hash(r)])}static hash(t,e,r){return an(uo.encode(t,e,r))}static async resolveNames(t,e,r,n){t=Object.assign({},t);const s={};t.verifyingContract&&!te(t.verifyingContract,20)&&(s[t.verifyingContract]="0x");const i=uo.from(e);i.visit(r,((t,e)=>("address"!==t||te(e,20)||(s[e]="0x"),e)));for(const t in s)s[t]=await n(t);return t.verifyingContract&&s[t.verifyingContract]&&(t.verifyingContract=s[t.verifyingContract]),{domain:t,value:r=i.visit(r,((t,e)=>"address"===t&&s[e]?s[e]:e))}}static getPayload(t,e,r){uo.hashDomain(t);const n={},s=[];io.forEach((e=>{const r=t[e];null!=r&&(n[e]=ao[e](r),s.push({name:e,type:so[e]}))}));const i=uo.from(e),o=Object.assign({},e);return o.EIP712Domain?Ii.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",e):o.EIP712Domain=s,i.encode(r),{types:o,domain:n,primaryType:i.primaryType,message:i.visit(r,((t,e)=>{if(t.match(/^bytes(\d*)/))return le(Ii.getBytes(e));if(t.match(/^u?int/))return Ii.getBigInt(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return"string"!=typeof e&&Ii.throwArgumentError("invalid string","value",e),e}return Ii.throwArgumentError("unsupported type","type",t)}))}}}Hi=new WeakMap,Vi=new WeakMap,Ki=new WeakMap,Wi=new WeakSet,Ji=function(t){{const e=co(t);if(e)return e}const e=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(e){const t=e[1],r=this.getEncoder(t),n=parseInt(e[3]);return e=>{n>=0&&e.length!==n&&Ii.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e);let s=e.map(r);return Xi(this,Vi,"f").has(t)&&(s=s.map(an)),an(he(s))}}const r=this.types[t];if(r){const e=Oi(Xi(this,Vi,"f").get(t));return t=>{const n=r.map((({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return Xi(this,Vi,"f").has(r)?an(n):n}));return n.unshift(e),he(n)}}return Ii.throwArgumentError(`unknown type: ${t}`,"type",t)};var ho,fo,po,wo,go,mo,yo,bo=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},vo=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Eo{constructor(t,e,n){const s=t.name,i=t.format();r(this,{fragment:t,name:s,signature:i,topic:e,args:n})}}class Ao{constructor(t,e,n,s){const i=t.name,o=t.format();r(this,{fragment:t,name:i,args:n,signature:o,selector:e,value:s})}}class To{constructor(t,e,n){const s=t.name,i=t.format();r(this,{fragment:t,name:s,args:n,signature:i,selector:e})}}class ko{constructor(t){r(this,{hash:t,_isIndexed:!0})}static isIndexed(t){return!(!t||!t._isIndexed)}}const Po={0:"generic panic",1:"assert(false)",17:"arithmetic overflow",18:"division or modulo by zero",33:"enum overflow",34:"invalid encoded storage byte array accessed",49:"out-of-bounds array access; popping on an empty array",50:"out-of-bounds access of an array or bytesN",65:"out of memory",81:"uninitialized function"},No={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:t=>`reverted with reason string ${JSON.stringify(t)}`},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"],reason:t=>{let e="unknown panic code";return t>=0&&t<=255&&Po[t.toString()]&&(e=Po[t.toString()]),`reverted with panic code 0x${t.toString(16)} (${e})`}}};class xo{constructor(t){ho.add(this),fo.set(this,void 0),po.set(this,void 0),wo.set(this,void 0),go.set(this,void 0);let e=[];e="string"==typeof t?JSON.parse(t):t,bo(this,wo,new Map,"f"),bo(this,fo,new Map,"f"),bo(this,po,new Map,"f"),r(this,{fragments:Object.freeze(e.map((t=>at.from(t))).filter((t=>null!=t)))}),bo(this,go,this.getAbiCoder(),"f"),this.fragments.forEach((t=>{let e;switch(t.type){case"constructor":return this.deploy?void k.warn("duplicate definition - constructor"):void r(this,{deploy:t});case"function":e=vo(this,wo,"f");break;case"event":e=vo(this,po,"f");break;case"error":e=vo(this,fo,"f");break;default:return}const n=t.format();e.has(n)?k.warn("duplicate definition - "+n):e.set(n,t)})),this.deploy||r(this,{deploy:ft.fromString("constructor()")})}format(t){t||(t=R.full),t===R.sighash&&k.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map((e=>e.format(t)));return t===R.json?JSON.stringify(e.map((t=>JSON.parse(t)))):e}getAbiCoder(){return xi}getFunctionName(t){return vo(this,ho,"m",mo).call(this,t,null,!1).name}getFunction(t,e){return vo(this,ho,"m",mo).call(this,t,e||null,!0)}getEventName(t){return vo(this,ho,"m",yo).call(this,t,null,!1).name}getEvent(t,e){return vo(this,ho,"m",yo).call(this,t,e||null,!0)}getError(t,e){if(te(t)){const e=t.toLowerCase();for(const t of vo(this,fo,"f").values())if(e===this.getSelector(t))return t;k.throwArgumentError("no matching error","selector",t)}if(-1===t.indexOf("(")){const e=[];for(const[r,n]of vo(this,fo,"f"))r.split("(")[0]===t&&e.push(n);return 0===e.length?k.throwArgumentError("no matching error","name",t):e.length>1&&k.throwArgumentError("multiple matching errors","name",t),e[0]}const r=vo(this,fo,"f").get(ut.fromString(t).format());return r||k.throwArgumentError("no matching error","signature",t)}getSelector(t){return de(Oi(t.format()),0,4)}getEventTopic(t){return Oi(t.format())}_decodeParams(t,e){return vo(this,go,"f").decode(t,e)}_encodeParams(t,e){return vo(this,go,"f").encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),de(e,0,4)!==this.getSelector(t)&&k.throwArgumentError(`data signature does not match error ${t.name}.`,"data",e),this._decodeParams(t.inputs,de(e,4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),he([this.getSelector(t),this._encodeParams(t.inputs,e||[])])}decodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),de(e,0,4)!==this.getSelector(t)&&k.throwArgumentError(`data signature does not match function ${t.name}.`,"data",e),this._decodeParams(t.inputs,de(e,4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),he([this.getSelector(t),this._encodeParams(t.inputs,e||[])])}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r="invalid length for result data";const n=ie(e);if(n.length%32==0)try{return vo(this,go,"f").decode(t.outputs,n)}catch(t){r="could not decode result data"}return k.throwError(r,"BAD_DATA",{value:le(n),info:{method:t.name,signature:t.format()}})}makeError(t,e,r){"string"==typeof t&&(t=this.getFunction(t));const n=k.getBytes(e);let s,i,o,a;if(r)try{s=vo(this,go,"f").decode(t.inputs,r.data||"0x")}catch(t){console.log(t)}let c="unknown reason";if(0===n.length)c="missing error reason";else if(n.length%32==4){const t=le(n.slice(0,4)),e=No[t];if(e)try{o=e.name,a=e.signature,i=vo(this,go,"f").decode(e.inputs,n.slice(4)),c=e.reason(...i)}catch(t){console.log(t)}else{c="unknown custom error";try{const e=this.getError(t);o=e.name,a=e.format(),c=`custom error: ${a}`;try{i=vo(this,go,"f").decode(e.inputs,n.slice(4))}catch(t){c=`custom error: ${a} (coult not decode error data)`}}catch(t){console.log(t)}}}return k.makeError("call revert exception","CALL_EXCEPTION",{data:le(n),transaction:null,method:t.name,signature:t.format(),args:s,errorArgs:i,errorName:o,errorSignature:a,reason:c})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),le(vo(this,go,"f").encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&k.throwError("too many arguments for "+t.format(),"UNEXPECTED_ARGUMENT",{count:e.length,expectedCount:t.inputs.length});const r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?Oi(e):"bytes"===t.type?an(le(e)):("address"===t.type&&vo(this,go,"f").encode(["address"],[e]),ge(le(e),32));for(e.forEach(((e,s)=>{const i=t.inputs[s];i.indexed?null==e?r.push(null):"array"===i.baseType||"tuple"===i.baseType?k.throwArgumentError("filtering with tuples or arrays not supported","contract."+i.name,e):Array.isArray(e)?r.push(e.map((t=>n(i,t)))):r.push(n(i,e)):null!=e&&k.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+i.name,e)}));r.length&&null===r[r.length-1];)r.pop();return r}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const r=[],n=[],s=[];return t.anonymous||r.push(this.getEventTopic(t)),e.length!==t.inputs.length&&k.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach(((t,i)=>{const o=e[i];if(t.indexed)if("string"===t.type)r.push(Oi(o));else if("bytes"===t.type)r.push(an(o));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");r.push(vo(this,go,"f").encode([t.type],[o]))}else n.push(t),s.push(o)})),{data:vo(this,go,"f").encode(n,s),topics:r}}decodeEventLog(t,e,r){if("string"==typeof t&&(t=this.getEvent(t)),null!=r&&!t.anonymous){const e=this.getEventTopic(t);te(r[0],32)&&r[0].toLowerCase()===e||k.throwArgumentError("fragment/topic mismatch","topics[0]",r[0]),r=r.slice(1)}const n=[],s=[],i=[];t.inputs.forEach(((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(n.push(it.fromObject({type:"bytes32",name:t.name})),i.push(!0)):(n.push(t),i.push(!1)):(s.push(t),i.push(!1))}));const o=null!=r?vo(this,go,"f").decode(n,he(r)):null,a=vo(this,go,"f").decode(s,e,!0),c=[],l=[];let u=0,h=0;return t.inputs.forEach(((t,e)=>{let r=null;if(t.indexed)if(null==o)r=new ko(null);else if(i[e])r=new ko(o[h++]);else try{r=o[h++]}catch(t){r=t}else try{r=a[u++]}catch(t){r=t}c.push(r),l.push(t.name||null)})),Ce.fromItems(c,l)}parseTransaction(t){const e=k.getBytes(t.data,"tx.data"),r=k.getBigInt(null!=t.value?t.value:0,"tx.value"),n=this.getFunction(le(e.slice(0,4)));if(!n)return null;const s=vo(this,go,"f").decode(n.inputs,e.slice(4));return new Ao(n,this.getSelector(n),s,r)}parseLog(t){const e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new Eo(e,this.getEventTopic(e),this.decodeEventLog(e,t.data,t.topics))}parseError(t){const e=le(t),r=this.getError(de(e,0,4));if(!r)return null;const n=vo(this,go,"f").decode(r.inputs,de(e,4));return new To(r,this.getSelector(r),n)}static from(t){return t instanceof xo?t:"string"==typeof t?new xo(JSON.parse(t)):"function"==typeof t.format?new xo(t.format(R.json)):new xo(t)}}fo=new WeakMap,po=new WeakMap,wo=new WeakMap,go=new WeakMap,ho=new WeakSet,mo=function(t,e,r){if(te(t)){const e=t.toLowerCase();for(const t of vo(this,wo,"f").values())if(e===this.getSelector(t))return t;k.throwArgumentError("no matching function","selector",t)}if(-1===t.indexOf("(")){const n=[];for(const[e,r]of vo(this,wo,"f"))e.split("(")[0]===t&&n.push(r);if(e){const t=e.length>0?e[e.length-1]:null;let r=e.length,s=!0;_s.isTyped(t)&&"overrides"===t.type&&(s=!1,r--);for(let t=n.length-1;t>=0;t--){const e=n[t].inputs.length;e===r||s&&e===r-1||n.splice(t,1)}for(let t=n.length-1;t>=0;t--){const r=n[t].inputs;for(let s=0;s=r.length){if("overrides"===e[s].type)continue;n.splice(t,1);break}if(e[s].type!==r[s].baseType){n.splice(t,1);break}}}}if(1===n.length&&e&&e.length!==n[0].inputs.length){const t=e[e.length-1];(null==t||Array.isArray(t)||"object"!=typeof t)&&n.splice(0,1)}if(0===n.length)k.throwArgumentError("no matching function","name",t);else if(n.length>1&&r){const e=n.map((t=>JSON.stringify(t.format()))).join(", ");k.throwArgumentError(`multiple matching functions (i.e. ${e})`,"name",t)}return n[0]}const n=vo(this,wo,"f").get(dt.fromString(t).format());return n||k.throwArgumentError("no matching function","signature",t)},yo=function(t,e,r){if(te(t)){const e=t.toLowerCase();for(const t of vo(this,po,"f").values())if(e===this.getEventTopic(t))return t;k.throwArgumentError("no matching event","eventTopic",t)}if(-1===t.indexOf("(")){const n=[];for(const[e,r]of vo(this,po,"f"))e.split("(")[0]===t&&n.push(r);if(e){for(let t=n.length-1;t>=0;t--)n[t].inputs.length=0;t--){const r=n[t].inputs;for(let s=0;s1&&r&&k.throwArgumentError("multiple matching events","name",t),n[0]}const n=vo(this,po,"f").get(ht.fromString(t).format());return n||k.throwArgumentError("no matching event","signature",t)};const Oo=new T("@ethersproject/web@6.0.0-beta.3");var Io,So,Ro=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Bo=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class _o{constructor(t,e,r,n,s){Io.set(this,void 0),So.set(this,void 0),Ro(this,Io,{statusCode:t,statusMessage:e,headers:Object.freeze(Object.assign({},Object.keys(r).reduce(((t,e)=>(t[e.toLowerCase()]=r[e],t)),{}))),body:null==n?null:new Uint8Array(n),request:s||null},"f"),Ro(this,So,{message:""},"f")}toString(){const t=a(Bo(this,Io,"f"),"body");return``}get statusCode(){return a(Bo(this,Io,"f"),"statusCode")}get statusMessage(){return a(Bo(this,Io,"f"),"statusMessage")}get headers(){return a(Bo(this,Io,"f"),"headers")}get body(){const t=a(Bo(this,Io,"f"),"body");return null==t?null:new Uint8Array(t)}get bodyText(){try{const t=a(Bo(this,Io,"f"),"body");return null==t?"":ii(t)}catch(t){return Oo.throwError("response body is not valid UTF-8 data","UNSUPPORTED_OPERATION",{operation:"bodyText",info:{response:this}})}}get bodyJson(){try{return JSON.parse(this.bodyText)}catch(t){return Oo.throwError("response body is not valid JSON","UNSUPPORTED_OPERATION",{operation:"bodyJson",info:{response:this}})}}[(Io=new WeakMap,So=new WeakMap,Symbol.iterator)](){const t=this.headers,e=Object.keys(t);let r=0;return{next:()=>{if(r=200&&this.statusCode<300}assertOk(){if(this.ok())return;let{message:t,error:e}=Bo(this,So,"f");""===t&&(t=`server response ${this.statusCode} ${this.statusMessage}`),Oo.throwError(t,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e})}}async function Co(t,e){const r=t.url.split(":")[0].toLowerCase();"http"!==r&&"https"!==r&&Oo.throwError(`unsupported protocol ${r}`,"UNSUPPORTED_OPERATION",{info:{protocol:r},operation:"request"}),t.credentials&&!t.allowInsecureAuthentication&&Oo.throwError("insecure authorized connections unsupported","UNSUPPORTED_OPERATION",{operation:"request"});const n={method:t.method,headers:new Headers(Array.from(t)),body:t.body||void 0},s=await fetch(t.url,n),i={};s.headers.forEach(((t,e)=>{i[e.toLowerCase()]=t}));const o=new Uint8Array(await s.arrayBuffer());return new _o(s.status,s.statusText,i,o,t)}var Fo,Uo=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Lo=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Do(t,e,r){if(typeof t!==e)throw new Error(`invalid ${r}`);return t}class Mo{constructor(t){Fo.set(this,void 0),Uo(this,Fo,{allowInsecure:!1,gzip:!1,headers:{},method:"",timeout:300,url:Do(t,"string","url")},"f")}get url(){return a(Lo(this,Fo,"f"),"url")}set url(t){c(Lo(this,Fo,"f"),"url",Do(t,"string","url"))}get body(){const t=a(Lo(this,Fo,"f"),"body");return null==t?null:this.isFrozen()?new Uint8Array(t):t}set body(t){if(null==t)c(Lo(this,Fo,"f"),"body",void 0),c(Lo(this,Fo,"f"),"bodyType",void 0);else if("string"==typeof t)c(Lo(this,Fo,"f"),"body",ei(t)),c(Lo(this,Fo,"f"),"bodyType","text/plain");else if(t instanceof Uint8Array)c(Lo(this,Fo,"f"),"body",t),c(Lo(this,Fo,"f"),"bodyType","application/octet-stream");else{if("object"!=typeof t)throw new Error("invalid body");c(Lo(this,Fo,"f"),"body",ei(JSON.stringify(t))),c(Lo(this,Fo,"f"),"bodyType","application/json")}}hasBody(){return null!=a(Lo(this,Fo,"f"),"body")}get method(){const t=a(Lo(this,Fo,"f"),"method");return t?t.toUpperCase():this.body?"POST":"GET"}set method(t){null==t&&(t=""),c(Lo(this,Fo,"f"),"method",Do(t,"string","method"))}get headers(){const t=Object.assign({},a(Lo(this,Fo,"f"),"headers")),e=a(Lo(this,Fo,"f"),"bodyType");return this.credentials,this.allowGzip&&(t["accept-encoding"]="gzip"),null==t["content-type"]&&e&&(t["content-type"]=e),this.body&&(t["content-length"]=String(this.body.length)),Object.freeze(t)}getHeader(t){return this.headers[t.toLowerCase()]}setHeader(t,e){const r=a(Lo(this,Fo,"f"),"headers");c(Lo(this,Fo,"f"),"headers",r),r[Do(t,"string","key").toLowerCase()]=String(e)}clearHeaders(){c(Lo(this,Fo,"f"),"headers",{})}[(Fo=new WeakMap,Symbol.iterator)](){const t=this.headers,e=Object.keys(t);let r=0;return{next:()=>{if(r ${JSON.stringify(t)})`});const n=new Mo(t);return n.method="GET",n.allowGzip=this.allowGzip,n.timeout=this.timeout,c(Lo(n,Fo,"f"),"body",a(Lo(this,Fo,"f"),"body")),c(Lo(n,Fo,"f"),"headers",Object.assign({},a(Lo(this,Fo,"f"),"headers"))),c(Lo(n,Fo,"f"),"bodyType",a(Lo(this,Fo,"f"),"bodyType")),n}clone(){const t=new Mo(this.url);c(Lo(t,Fo,"f"),"method",a(Lo(this,Fo,"f"),"method"));const e=a(Lo(this,Fo,"f"),"body");return c(Lo(t,Fo,"f"),"body",null==e?void 0:new Uint8Array(e)),c(Lo(t,Fo,"f"),"bodyType",a(Lo(this,Fo,"f"),"bodyType")),c(Lo(t,Fo,"f"),"headers",Object.assign({},a(Lo(this,Fo,"f"),"headers"))),c(Lo(t,Fo,"f"),"creds",a(Lo(this,Fo,"f"),"creds")),this.allowGzip&&(t.allowGzip=!0),t.timeout=this.timeout,this.allowInsecureAuthentication&&(t.allowInsecureAuthentication=!0),t}freeze(){const t=a(Lo(this,Fo,"f"),"body");return null!=t&&c(Lo(this,Fo,"f"),"body",new Uint8Array(t)),Object.freeze(Lo(this,Fo,"f").headers),Object.freeze(Lo(this,Fo,"f")),this}isFrozen(){return Object.isFrozen(Lo(this,Fo,"f"))}}async function jo(t){return new Promise((e=>{setTimeout(e,t)}))}function Go(){return(new Date).getTime()}let $o=!1;async function zo(t){const e="string"==typeof t?{request:new Mo(t)}:t instanceof Mo?{request:t}:Object.assign({},t);if(null==e.request)return Oo.throwArgumentError("missing request","connection",t);let r=e.request.clone().freeze();switch(e.request.url.split(":")[0]){case"data":{const t=r.url.match(/^data:([^;:]*)?(;base64)?,(.*)$/i);if(t)try{const e={"content-type":t[1]?t[1]:"text/plain"},n=t[2]?ae(t[3]):ei(t[3].replace(/%([0-9a-f][0-9a-f])/gi,((t,e)=>String.fromCharCode(parseInt(e,16)))));return new _o(200,"OK",e,n,r.clone())}catch(t){return new _o(400,"BAD REQUEST (invalid base64 encoded data)",{},null,r.clone())}return new _o(500,"INTERNAL SERVER ERROR (unsupported dara URI)",{},null,r.clone())}case"ipfs":case"ipns":case"ar":throw new Error("not implemented yet");case"http":case"https":break;default:throw new Error("unsupported scheme")}const n=null!=e.throttleLimit?e.throttleLimit:12;if(!Number.isInteger(n)||n<1)return Oo.throwArgumentError("invalid throttleLimit","connection",t);const s=null!=e.throttleSlotInterval?e.throttleSlotInterval:100;if(!Number.isInteger(s)||n<0)return Oo.throwArgumentError("invalid throttleSlotInterval","connection",t);const i=null!=e.throttleRetry?e.throttleRetry:null;if(i&&"function"!=typeof i)return Oo.throwArgumentError("invalid throttleRetry callback","connection",t);const o=e.preflightRequest||null;if(o&&"function"!=typeof o)return Oo.throwArgumentError("invalid preflightRequest callback","connection",t);const a=e.processResponse||null;if(a&&"function"!=typeof a)return Oo.throwArgumentError("invalid processResponse callback","connection",t);const c=Go();let l=null;for(let t=0;t32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function ra(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function na(t){const e=[];let r=0;for(let n=0;nWo.getBigInt(t)===Xo)).catch((t=>{if("CALL_EXCEPTION"===t.code)return!1;throw Jo(this,Vo,null,"f"),t})),"f"),await qo(this,Vo,"f")}async _fetch(t,e="0x"){const r=he([t,_i(this.name),e]),n={to:this.address,enableCcipRead:!0,data:r};let s=!1;await this.supportsWildcard()&&(s=!0,n.data=he(["0x9061b923",na([Ci(this.name),r])]));try{let t=await this.provider.call(n);return Wo.getBytes(t).length%32==4?Wo.throwError("resolver threw error","CALL_EXCEPTION",{transaction:n,data:t}):s?Qo(t,0):t}catch(t){if("CALL_EXCEPTION"!==t.code)throw t}return null}async getAddress(t=60){if(60===t)try{const t=await this._fetch("0x3b3b57de");if("0x"===t||t===Zo)return null;return(await this.provider.getNetwork()).formatter.callAddress(t)}catch(t){if("CALL_EXCEPTION"===t.code)return null;throw t}let e=null;for(const r of this.provider.plugins)if(r instanceof ia&&r.supportsCoinType(t)){e=r;break}if(null==e)return null;const r=Qo(await this._fetch("0xf1cb7e06",ea(t))||"0x",0);if(null==r||"0x"===r)return null;const n=await e.encodeAddress(t,r);return null!=n?n:Wo.throwError("invalid coin data","UNSUPPORTED_OPERATION",{operation:`getAddress(${t})`,info:{coinType:t,data:r}})}async getText(t){let e=ei(t);const r=Wo.getBytes(he([ea(64),ea(e.length),e])),n=Qo(await this._fetch("0x59d1d43c",ra(r))||"0x",0);return null==n||"0x"===n?null:ii(n)}async getContentHash(){const t=Qo(await this._fetch("0xbc1c58d1")||"0x",0);if(null==t||"0x"===t)return null;const e=t.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t="e3010170"===e[1]?"ipfs":"ipns",r=parseInt(e[4],16);if(e[5].length===2*r)return`${t}://${Kt("0x"+e[2])}`}const r=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);return r&&64===r[1].length?`bzz://${r[1]}`:Wo.throwError("invalid or unsupported content hash data","UNSUPPORTED_OPERATION",{operation:"getContentHash()",info:{data:t}})}async getAvatar(){return(await this._getAvatar()).url}async _getAvatar(){const t=[{type:"name",value:this.name}];try{const e=await this.getText("avatar");if(null==e)throw t.push({type:"!avatar",value:""}),new Error("!avatar");t.push({type:"avatar",value:e});for(let r=0;rla.throwArgumentError(e,"signature",t);if("string"==typeof t){const r=la.getBytes(t,"signature");if(64===r.length){const t=le(r.slice(0,32)),e=r.slice(32,64),n=128&e[0]?28:27;return e[0]&=127,new Ea(ba,t,le(e),n)}if(65!==fe(t)){const n=le(t.slice(0,32)),s=r.slice(32,64);128&s[0]&&e("non-canonical s");const i=Ea.getNormalizedV(r[64]);return new Ea(ba,n,le(s),i)}return e("invlaid raw signature length")}if(t instanceof Ea)return t.clone();const r=t.r;null==r&&e("missing r"),te(r,32)||e("invalid r");const n=function(t,r){if(null!=t)return te(t,32)||e("invalid s"),t;if(null!=r){te(r,32)||e("invalid yParityAndS");const t=la.getBytes(r);return t[0]&=127,le(t)}return e("missing s")}(t.s,t.yParityAndS);128&la.getBytes(n)[0]&&e("non-canonical s");const{networkV:s,v:i}=function(t,r,n){if(null!=t){const e=la.getBigInt(t);return{networkV:e>=ya?e:void 0,v:Ea.getNormalizedV(e)}}if(null!=r)return te(r,32)||e("invalid yParityAndS"),{v:128&la.getBytes(r)[0]?28:27};if(null!=n){switch(n){case 0:return{v:27};case 1:return{v:28}}return e("invalid yParity")}return e("missing v")}(t.v,t.yParityAndS,t.yParity),o=new Ea(ba,r,n,i);return s&&c(fa(o,ua,"f"),"networkV",s),"yParity"in t&&t.yParity!==o.yParity?e("yParity mismatch"):"yParityAndS"in t&&t.yParityAndS!==o.yParityAndS&&e("yParityAndS mismatch"),o}} +/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */const Aa=BigInt(0),Ta=BigInt(1),ka=BigInt(2),Pa=BigInt(3),Na=BigInt(8),xa=ka**BigInt(256),Oa={a:Aa,b:BigInt(7),P:xa-ka**BigInt(32)-BigInt(977),n:xa-BigInt("432420386565659656852420866394968145599"),h:Ta,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee")};function Ia(t){const{a:e,b:r}=Oa,n=Ja(t*t),s=Ja(n*t);return Ja(s+e*t+r)}const Sa=Oa.a===Aa;class Ra{constructor(t,e,r){this.x=t,this.y=e,this.z=r}static fromAffine(t){if(!(t instanceof _a))throw new TypeError("JacobianPoint#fromAffine: expected Point");return new Ra(t.x,t.y,Ta)}static toAffineBatch(t){const e=function(t,e=Oa.P){const r=new Array(t.length),n=Xa(t.reduce(((t,n,s)=>n===Aa?t:(r[s]=t,Ja(t*n,e))),Ta),e);return t.reduceRight(((t,n,s)=>n===Aa?t:(r[s]=Ja(t*r[s],e),Ja(t*n,e))),n),r}(t.map((t=>t.z)));return t.map(((t,r)=>t.toAffine(e[r])))}static normalizeZ(t){return Ra.toAffineBatch(t).map(Ra.fromAffine)}equals(t){if(!(t instanceof Ra))throw new TypeError("JacobianPoint expected");const{x:e,y:r,z:n}=this,{x:s,y:i,z:o}=t,a=Ja(n**ka),c=Ja(o**ka),l=Ja(e*c),u=Ja(s*a),h=Ja(Ja(r*o)*c),f=Ja(Ja(i*n)*a);return l===u&&h===f}negate(){return new Ra(this.x,Ja(-this.y),this.z)}double(){const{x:t,y:e,z:r}=this,n=Ja(t**ka),s=Ja(e**ka),i=Ja(s**ka),o=Ja(ka*(Ja((t+s)**ka)-n-i)),a=Ja(Pa*n),c=Ja(a**ka),l=Ja(c-ka*o),u=Ja(a*(o-l)-Na*i),h=Ja(ka*e*r);return new Ra(l,u,h)}add(t){if(!(t instanceof Ra))throw new TypeError("JacobianPoint expected");const{x:e,y:r,z:n}=this,{x:s,y:i,z:o}=t;if(s===Aa||i===Aa)return this;if(e===Aa||r===Aa)return t;const a=Ja(n**ka),c=Ja(o**ka),l=Ja(e*c),u=Ja(s*a),h=Ja(Ja(r*o)*c),f=Ja(Ja(i*n)*a),d=Ja(u-l),p=Ja(f-h);if(d===Aa)return p===Aa?this.double():Ra.ZERO;const w=Ja(d**ka),g=Ja(d*w),m=Ja(l*w),y=Ja(p**ka-g-ka*m),b=Ja(p*(m-y)-h*g),v=Ja(n*o*d);return new Ra(y,b,v)}subtract(t){return this.add(t.negate())}multiplyUnsafe(t){let e=Ka(t);const r=Ra.ZERO;if(e===Aa)return r;if(e===Ta)return this;if(!Sa){let t=r,n=this;for(;e>Aa;)e&Ta&&(t=t.add(n)),n=n.double(),e>>=Ta;return t}let{k1neg:n,k1:s,k2neg:i,k2:o}=Qa(e),a=r,c=r,l=this;for(;s>Aa||o>Aa;)s&Ta&&(a=a.add(l)),o&Ta&&(c=c.add(l)),l=l.double(),s>>=Ta,o>>=Ta;return n&&(a=a.negate()),i&&(c=c.negate()),c=new Ra(Ja(c.x*Oa.beta),c.y,c.z),a.add(c)}precomputeWindow(t){const e=Sa?128/t+1:256/t+1,r=[];let n=this,s=n;for(let i=0;i>=u,o>a&&(o-=l,t+=Ta),0===o){let t=n[r];e%2&&(t=t.negate()),i=i.add(t)}else{let t=n[r+Math.abs(o)-1];o<0&&(t=t.negate()),s=s.add(t)}}return{p:s,f:i}}multiply(t,e){let r,n,s=Ka(t);if(Sa){const{k1neg:t,k1:i,k2neg:o,k2:a}=Qa(s);let{p:c,f:l}=this.wNAF(i,e),{p:u,f:h}=this.wNAF(a,e);t&&(c=c.negate()),o&&(u=u.negate()),u=new Ra(Ja(u.x*Oa.beta),u.y,u.z),r=c.add(u),n=l.add(h)}else{const{p:t,f:i}=this.wNAF(s,e);r=t,n=i}return Ra.normalizeZ([r,n])[0]}toAffine(t=Xa(this.z)){const{x:e,y:r,z:n}=this,s=t,i=Ja(s*s),o=Ja(i*s),a=Ja(e*i),c=Ja(r*o);if(Ja(n*s)!==Ta)throw new Error("invZ was invalid");return new _a(a,c)}}Ra.BASE=new Ra(Oa.Gx,Oa.Gy,Ta),Ra.ZERO=new Ra(Aa,Ta,Aa);const Ba=new WeakMap;class _a{constructor(t,e){this.x=t,this.y=e}_setWindowSize(t){this._WINDOW_SIZE=t,Ba.delete(this)}static fromCompressedHex(t){const e=32===t.length,r=Ha(e?t:t.subarray(1));if(!rc(r))throw new Error("Point is not on curve");let n=function(t){const{P:e}=Oa,r=BigInt(6),n=BigInt(11),s=BigInt(22),i=BigInt(23),o=BigInt(44),a=BigInt(88),c=t*t*t%e,l=c*c*t%e,u=qa(l,Pa)*l%e,h=qa(u,Pa)*l%e,f=qa(h,ka)*c%e,d=qa(f,n)*f%e,p=qa(d,s)*d%e,w=qa(p,o)*p%e,g=qa(w,a)*w%e,m=qa(g,o)*p%e,y=qa(m,Pa)*l%e,b=qa(y,i)*d%e,v=qa(b,r)*c%e;return qa(v,ka)}(Ia(r));const s=(n&Ta)===Ta;if(e)s&&(n=Ja(-n));else{1==(1&t[0])!==s&&(n=Ja(-n))}const i=new _a(r,n);return i.assertValidity(),i}static fromUncompressedHex(t){const e=Ha(t.subarray(1,33)),r=Ha(t.subarray(33,65)),n=new _a(e,r);return n.assertValidity(),n}static fromHex(t){const e=Va(t),r=e.length,n=e[0];if(32===r||33===r&&(2===n||3===n))return this.fromCompressedHex(e);if(65===r&&4===n)return this.fromUncompressedHex(e);throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${r}`)}static fromPrivateKey(t){return _a.BASE.multiply(sc(t))}static fromSignature(t,e,r){const n=function(t){const{n:e}=Oa,r=8*t.length-256;let n=Ha(t);r>0&&(n>>=BigInt(r));n>=e&&(n-=e);return n}(t=Va(t)),{r:s,s:i}=function(t){if(t instanceof Ua)return t.assertValidity(),t;try{return Ua.fromDER(t)}catch(e){return Ua.fromCompact(t)}}(e);if(0!==r&&1!==r)throw new Error("Cannot recover signature: invalid recovery bit");if(n===Aa)throw new Error("Cannot recover signature: msgHash cannot be 0");const o=1&r?"03":"02",a=_a.fromHex(o+Ga(s)),{n:c}=Oa,l=Xa(s,c),u=Ja(-n*l,c),h=Ja(i*l,c),f=_a.BASE.multiplyAndAddUnsafe(a,u,h);if(!f)throw new Error("Cannot recover signature: point at infinify");return f.assertValidity(),f}toRawBytes(t=!1){return Wa(this.toHex(t))}toHex(t=!1){const e=Ga(this.x);if(t){return`${this.y&Ta?"03":"02"}${e}`}return`04${e}${Ga(this.y)}`}toHexX(){return this.toHex(!0).slice(2)}toRawX(){return this.toRawBytes(!0).slice(1)}assertValidity(){const t="Point is not on elliptic curve",{x:e,y:r}=this;if(!rc(e)||!rc(r))throw new Error(t);const n=Ja(r*r);if(Ja(n-Ia(e))!==Aa)throw new Error(t)}equals(t){return this.x===t.x&&this.y===t.y}negate(){return new _a(this.x,Ja(-this.y))}double(){return Ra.fromAffine(this).double().toAffine()}add(t){return Ra.fromAffine(this).add(Ra.fromAffine(t)).toAffine()}subtract(t){return this.add(t.negate())}multiply(t){return Ra.fromAffine(this).multiply(t,this).toAffine()}multiplyAndAddUnsafe(t,e,r){const n=Ra.fromAffine(this).multiply(e),s=Ra.fromAffine(t).multiplyUnsafe(r),i=n.add(s);return i.equals(Ra.ZERO)?void 0:i.toAffine()}}function Ca(t){return Number.parseInt(t[0],16)>=8?"00"+t:t}function Fa(t){if(t.length<2||2!==t[0])throw new Error(`Invalid signature integer tag: ${ja(t)}`);const e=t[1],r=t.subarray(2,e+2);if(!e||r.length!==e)throw new Error("Invalid signature integer: wrong length");if(0===r[0]&&r[1]<=127)throw new Error("Invalid signature integer: trailing length");return{data:Ha(r),left:t.subarray(e+2)}}_a.BASE=new _a(Oa.Gx,Oa.Gy),_a.ZERO=new _a(Aa,Aa);class Ua{constructor(t,e){this.r=t,this.s=e,this.assertValidity()}static fromCompact(t){const e=Da(t),r="Signature.fromCompact";if("string"!=typeof t&&!e)throw new TypeError(`${r}: Expected string or Uint8Array`);const n=e?ja(t):t;if(128!==n.length)throw new Error(`${r}: Expected 64-byte hex`);return new Ua(za(n.slice(0,64)),za(n.slice(64,128)))}static fromDER(t){const e=Da(t);if("string"!=typeof t&&!e)throw new TypeError("Signature.fromDER: Expected string or Uint8Array");const{r:r,s:n}=function(t){if(t.length<2||48!=t[0])throw new Error(`Invalid signature tag: ${ja(t)}`);if(t[1]!==t.length-2)throw new Error("Invalid signature: incorrect length");const{data:e,left:r}=Fa(t.subarray(2)),{data:n,left:s}=Fa(r);if(s.length)throw new Error(`Invalid signature: left bytes after parsing: ${ja(s)}`);return{r:e,s:n}}(e?t:Wa(t));return new Ua(r,n)}static fromHex(t){return this.fromDER(t)}assertValidity(){const{r:t,s:e}=this;if(!ec(t))throw new Error("Invalid Signature: r must be 0 < r < n");if(!ec(e))throw new Error("Invalid Signature: s must be 0 < s < n")}hasHighS(){const t=Oa.n>>Ta;return this.s>t}normalizeS(){return this.hasHighS()?new Ua(this.r,Oa.n-this.s):this}toDERRawBytes(t=!1){return Wa(this.toDERHex(t))}toDERHex(t=!1){const e=Ca($a(this.s));if(t)return e;const r=Ca($a(this.r)),n=$a(r.length/2),s=$a(e.length/2);return`30${$a(r.length/2+e.length/2+4)}02${n}${r}02${s}${e}`}toRawBytes(){return this.toDERRawBytes()}toHex(){return this.toDERHex()}toCompactRawBytes(){return Wa(this.toCompactHex())}toCompactHex(){return Ga(this.r)+Ga(this.s)}}function La(...t){if(!t.every(Da))throw new Error("Uint8Array list expected");if(1===t.length)return t[0];const e=t.reduce(((t,e)=>t+e.length),0),r=new Uint8Array(e);for(let e=0,n=0;ee.toString(16).padStart(2,"0")));function ja(t){if(!(t instanceof Uint8Array))throw new Error("Expected Uint8Array");let e="";for(let r=0;rxa)throw new Error("Expected number < 2^256");return t.toString(16).padStart(64,"0")}function $a(t){const e=t.toString(16);return 1&e.length?`0${e}`:e}function za(t){if("string"!=typeof t)throw new TypeError("hexToNumber: expected string, got "+typeof t);return BigInt(`0x${t}`)}function Wa(t){if("string"!=typeof t)throw new TypeError("hexToBytes: expected string, got "+typeof t);if(t.length%2)throw new Error("hexToBytes: received invalid unpadded hex"+t.length);const e=new Uint8Array(t.length/2);for(let r=0;r0)return BigInt(t);if("bigint"==typeof t&&ec(t))return t;throw new TypeError("Expected valid private scalar: 0 < scalar < curve.n")}function Ja(t,e=Oa.P){const r=t%e;return r>=Aa?r:e+r}function qa(t,e){const{P:r}=Oa;let n=t;for(;e-- >Aa;)n*=n,n%=r;return n}function Xa(t,e=Oa.P){if(t===Aa||e<=Aa)throw new Error(`invert: expected positive integers, got n=${t} mod=${e}`);let r=Ja(t,e),n=e,s=Aa,i=Ta;for(;r!==Aa;){const t=n%r,e=s-i*(n/r);n=r,r=t,s=i,i=e}if(n!==Ta)throw new Error("invert: does not exist");return Ja(s,e)}const Ya=(t,e)=>(t+e/ka)/e,Za=ka**BigInt(128);function Qa(t){const{n:e}=Oa,r=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-Ta*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=r,o=Ya(i*t,e),a=Ya(-n*t,e);let c=Ja(t-o*r-a*s,e),l=Ja(-o*n-a*i,e);const u=c>Za,h=l>Za;if(u&&(c=e-c),h&&(l=e-l),c>Za||l>Za)throw new Error("splitScalarEndo: Endomorphism failed, k="+t);return{k1neg:u,k1:c,k2neg:h,k2:l}}class tc{constructor(){this.v=new Uint8Array(32).fill(1),this.k=new Uint8Array(32).fill(0),this.counter=0}hmac(...t){return fc.hmacSha256(this.k,...t)}hmacSync(...t){if("function"!=typeof fc.hmacSha256Sync)throw new Error("utils.hmacSha256Sync is undefined, you need to set it");const e=fc.hmacSha256Sync(this.k,...t);if(e instanceof Promise)throw new Error("To use sync sign(), ensure utils.hmacSha256 is sync");return e}incr(){if(this.counter>=1e3)throw new Error("Tried 1,000 k values for sign(), all were invalid");this.counter+=1}async reseed(t=new Uint8Array){this.k=await this.hmac(this.v,Uint8Array.from([0]),t),this.v=await this.hmac(this.v),0!==t.length&&(this.k=await this.hmac(this.v,Uint8Array.from([1]),t),this.v=await this.hmac(this.v))}reseedSync(t=new Uint8Array){this.k=this.hmacSync(this.v,Uint8Array.from([0]),t),this.v=this.hmacSync(this.v),0!==t.length&&(this.k=this.hmacSync(this.v,Uint8Array.from([1]),t),this.v=this.hmacSync(this.v))}async generate(){return this.incr(),this.v=await this.hmac(this.v),this.v}generateSync(){return this.incr(),this.v=this.hmacSync(this.v),this.v}}function ec(t){return Aa0)e=BigInt(t);else if("string"==typeof t){if(64!==t.length)throw new Error("Expected 32 bytes of private key");e=za(t)}else{if(!Da(t))throw new TypeError("Expected valid private key");if(32!==t.length)throw new Error("Expected 32 bytes of private key");e=Ha(t)}if(!ec(e))throw new Error("Expected private key: 0 < key < n");return e}function ic(t){const e=Da(t),r="string"==typeof t,n=(e||r)&&t.length;return e?33===n||65===n:r?66===n||130===n:t instanceof _a}function oc(t,e,r=!1){if(ic(t))throw new TypeError("getSharedSecret: first arg must be private key");if(!ic(e))throw new TypeError("getSharedSecret: second arg must be public key");const n=(s=e)instanceof _a?(s.assertValidity(),s):_a.fromHex(s);var s;return n.assertValidity(),n.multiply(sc(t)).toRawBytes(r)}function ac(t){return Ha(t.length>32?t.slice(0,32):t)}function cc(t){const e=ac(t),r=Ja(e,Oa.n);return lc(r{if((t=Va(t)).length<40||t.length>1024)throw new Error("Expected 40-1024 bytes of private key as per FIPS 186");const e=Ja(Ha(t),Oa.n);if(e===Aa||e===Ta)throw new Error("Invalid private key");return function(t){return Wa(Ga(t))}(e)},randomBytes:(t=32)=>{if(hc.web)return hc.web.getRandomValues(new Uint8Array(t));throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>fc.hashToPrivateKey(fc.randomBytes(40)),bytesToHex:ja,mod:Ja,sha256:async t=>{if(hc.web){const e=await hc.web.subtle.digest("SHA-256",t.buffer);return new Uint8Array(e)}throw new Error("The environment doesn't have sha256 function")},hmacSha256:async(t,...e)=>{if(hc.web){const r=await hc.web.subtle.importKey("raw",t,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]),n=La(...e),s=await hc.web.subtle.sign("HMAC",r,n);return new Uint8Array(s)}throw new Error("The environment doesn't have hmac-sha256 function")},sha256Sync:void 0,hmacSha256Sync:void 0,precompute(t=8,e=_a.BASE){const r=e===_a.BASE?e:new _a(e.x,e.y);return r._setWindowSize(t),r.multiply(Pa),r}};var dc,pc=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},wc=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};fc.hmacSha256Sync=function(t,...e){return ie(Mr("sha256",t,he(e)))};class gc{constructor(t){dc.set(this,void 0),la.assertArgument(32===fe(t),"invalid private key length","privateKey","[REDACTED]"),pc(this,dc,le(t),"f")}get privateKey(){return wc(this,dc,"f")}get publicKey(){return gc.computePublicKey(wc(this,dc,"f"))}get compressedPublicKey(){return gc.computePublicKey(wc(this,dc,"f"),!0)}sign(t){la.assertArgument(32===fe(t),"invalid digest length","digest",t);const[e,r]=uc(ie(t),ie(wc(this,dc,"f")),{recovered:!0,canonical:!0}),n=Ua.fromHex(e);return Ea.from({r:bt("0x"+n.r.toString(16),32),s:bt("0x"+n.s.toString(16),32),v:r?28:27}).freeze()}computeShardSecret(t){const e=gc.computePublicKey(t);return le(oc(ie(wc(this,dc,"f")),e))}static computePublicKey(t,e){let r=la.getBytes(t,"key");if(32===r.length){return le(function(t,e=!1){return _a.fromPrivateKey(t).toRawBytes(e)}(r,!!e))}if(64===r.length){const t=new Uint8Array(65);t[0]=4,t.set(r,1),r=t}return le(_a.fromHex(r).toRawBytes(e))}static recoverPublicKey(t,e){const r=Ea.from(e),n=Ua.fromCompact(ie(he([r.r,r.s]))).toDERRawBytes(),s=function(t,e,r,n=!1){return _a.fromSignature(t,e,r).toRawBytes(n)}(ie(t),n,r.yParity);return null!=s?le(s):la.throwArgumentError("invalid signautre for digest","signature",e)}static _addPoints(t,e,r){const n=_a.fromHex(gc.computePublicKey(t).substring(2)),s=_a.fromHex(gc.computePublicKey(e).substring(2));return"0x"+n.add(s).toHex(!!r)}}function mc(t,e){return{address:us(t),storageKeys:(e||[]).map(((t,e)=>{if(32!==fe(t))throw new Error("");return t.toLowerCase()}))}}function yc(t){if(Array.isArray(t))return t.map(((t,e)=>{if(Array.isArray(t)){if(t.length>2)throw new Error("");return mc(t[0],t[1])}return mc(t.address,t.storageKeys)}));const e=Object.keys(t).map((e=>{const r=t[e].reduce(((t,e)=>(t[e]=!0,t)),{});return mc(e,Object.keys(r).sort())}));return e.sort(((t,e)=>t.address.localeCompare(e.address))),e}function bc(t){return us(an("0x"+gc.computePublicKey(t,!1).substring(4)).substring(26))}function vc(t,e){return bc(gc.recoverPublicKey(t,e))}dc=new WeakMap;const Ec=new T("@ethersproject/transaction@6.0.0-beta.2");var Ac,Tc=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},kc=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Pc=BigInt(0),Nc=BigInt(2),xc=BigInt(27),Oc=BigInt(28),Ic=BigInt(35),Sc=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");function Rc(t){return"0x"===t?null:us(t)}function Bc(t,e){try{return le(t)}catch(r){return Ec.throwArgumentError("invalid data",e,t)}}function _c(t,e){try{return yc(t)}catch(r){return Ec.throwArgumentError("invalid accessList",e,t)}}function Cc(t,e){return"0x"===t?0:Ec.getNumber(t,e)}function Fc(t,e){if("0x"===t)return Pc;const r=Ec.getBigInt(t,e);return r>Sc&&Ec.throwArgumentError("value exceeds uint size",e,r),r}function Uc(t,e){const r=Ec.getBigInt(t,"value"),n=vt(r);return n.length>32&&Ec.throwArgumentError("value too large",`tx.${e}`,r),n}function Lc(t){return yc(t).map((t=>[t.address,t.storageKeys]))}function Dc(t,e){const r=[Uc(t.nonce||0,"nonce"),Uc(t.gasPrice||0,"gasPrice"),Uc(t.gasLimit||0,"gasLimit"),null!=t.to?us(t.to):"0x",Uc(t.value||0,"value"),t.data||"0x"];let n=Pc;if(null!=t.chainId)n=Ec.getBigInt(t.chainId,"tx.chainId"),e&&null!=e.networkV&&e.legacyChainId!==n&&Ec.throwArgumentError("tx.chainId/sig.v mismatch","sig",e);else if(e){const t=e.legacyChainId;null!=t&&(n=t)}if(!e)return n!==Pc&&(r.push(vt(n)),r.push("0x"),r.push("0x")),ws(r);let s=BigInt(27+e.yParity);return n!==Pc?s=Ea.getChainIdV(n,e.v):BigInt(e.v)!==s&&Ec.throwArgumentError("tx.chainId/sig.v mismatch","sig",e),r.push(vt(s)),r.push(vt(e.r)),r.push(vt(e.s)),ws(r)}function Mc(t,e,r){let n;try{if(n=Cc(e[0],"yParity"),0!==n&&1!==n)throw new Error("bad yParity")}catch(t){return Ec.throwArgumentError("invalid yParity","yParity",e[0])}const s=ge(e[1],32),i=ge(e[2],32),o=Ea.from({r:s,s:i,yParity:n});t.signature=o}function jc(t,e){const r=[Uc(t.chainId||0,"chainId"),Uc(t.nonce||0,"nonce"),Uc(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Uc(t.maxFeePerGas||0,"maxFeePerGas"),Uc(t.gasLimit||0,"gasLimit"),null!=t.to?us(t.to):"0x",Uc(t.value||0,"value"),t.data||"0x",Lc(t.accessList||[])];return e&&(r.push(Uc(e.yParity,"yParity")),r.push(vt(e.r)),r.push(vt(e.s))),he(["0x02",ws(r)])}function Gc(t,e){const r=[Uc(t.chainId||0,"chainId"),Uc(t.nonce||0,"nonce"),Uc(t.gasPrice||0,"gasPrice"),Uc(t.gasLimit||0,"gasLimit"),null!=t.to?us(t.to):"0x",Uc(t.value||0,"value"),t.data||"0x",Lc(t.accessList||[])];return e&&(r.push(Uc(e.yParity,"recoveryParam")),r.push(vt(e.r)),r.push(vt(e.s))),he(["0x01",ws(r)])}class $c{constructor(){Ac.set(this,void 0),Tc(this,Ac,{type:null,to:null,nonce:0,gasLimit:BigInt(0),gasPrice:null,maxPriorityFeePerGas:null,maxFeePerGas:null,data:"0x",value:BigInt(0),chainId:BigInt(0),sig:null,accessList:null},"f")}get type(){return a(kc(this,Ac,"f"),"type")}get typeName(){switch(this.type){case 0:return"legacy";case 1:return"eip-2930";case 2:return"eip-1559"}return null}set type(t){switch(t){case null:c(kc(this,Ac,"f"),"type",null);break;case 0:case"legacy":c(kc(this,Ac,"f"),"type",0);break;case 1:case"berlin":case"eip-2930":c(kc(this,Ac,"f"),"type",1);break;case 2:case"london":case"eip-1559":c(kc(this,Ac,"f"),"type",2);break;default:throw new Error("unsupported transaction type")}}get to(){return a(kc(this,Ac,"f"),"to")}set to(t){c(kc(this,Ac,"f"),"to",null==t?null:us(t))}get nonce(){return a(kc(this,Ac,"f"),"nonce")}set nonce(t){c(kc(this,Ac,"f"),"nonce",Ec.getNumber(t,"value"))}get gasLimit(){return a(kc(this,Ac,"f"),"gasLimit")}set gasLimit(t){c(kc(this,Ac,"f"),"gasLimit",Ec.getBigInt(t))}get gasPrice(){const t=a(kc(this,Ac,"f"),"gasPrice");return null!=t||0!==this.type&&1!==this.type?t:Pc}set gasPrice(t){c(kc(this,Ac,"f"),"gasPrice",null==t?null:Ec.getBigInt(t,"gasPrice"))}get maxPriorityFeePerGas(){const t=a(kc(this,Ac,"f"),"maxPriorityFeePerGas");return null==t&&2===this.type?Pc:t}set maxPriorityFeePerGas(t){c(kc(this,Ac,"f"),"maxPriorityFeePerGas",null==t?null:Ec.getBigInt(t,"maxPriorityFeePerGas"))}get maxFeePerGas(){const t=a(kc(this,Ac,"f"),"maxFeePerGas");return null==t&&2===this.type?Pc:t}set maxFeePerGas(t){c(kc(this,Ac,"f"),"maxFeePerGas",null==t?null:Ec.getBigInt(t,"maxFeePerGas"))}get data(){return a(kc(this,Ac,"f"),"data")}set data(t){c(kc(this,Ac,"f"),"data",le(t))}get value(){return a(kc(this,Ac,"f"),"value")}set value(t){c(kc(this,Ac,"f"),"value",Ec.getBigInt(t,"value"))}get chainId(){return a(kc(this,Ac,"f"),"chainId")}set chainId(t){c(kc(this,Ac,"f"),"chainId",Ec.getBigInt(t))}get signature(){return a(kc(this,Ac,"f"),"sig")||null}set signature(t){c(kc(this,Ac,"f"),"sig",null==t?null:Ea.from(t))}get accessList(){const t=a(kc(this,Ac,"f"),"accessList")||null;return null!=t||1!==this.type&&2!==this.type?t:[]}set accessList(t){c(kc(this,Ac,"f"),"accessList",null==t?null:yc(t))}get hash(){if(null==this.signature)throw new Error("cannot hash unsigned transaction; maybe you meant .unsignedHash");return an(this.serialized)}get unsignedHash(){return an(this.unsignedSerialized)}get from(){return null==this.signature?null:vc(this.unsignedSerialized,this.signature)}get fromPublicKey(){return null==this.signature?null:""}isSigned(){return null!=this.signature}get serialized(){if(null==this.signature)throw new Error("cannot serialize unsigned transaction; maybe you meant .unsignedSerialized");const t=this.inferTypes();if(1!==t.length)throw new Error("cannot determine transaction type; specify type manually");switch(t[0]){case 0:return Dc(this,this.signature);case 1:return Gc(this,this.signature);case 2:return jc(this,this.signature)}throw new Error("unsupported type")}get unsignedSerialized(){const t=this.inferTypes();if(1!==t.length)throw new Error("cannot determine transaction type; specify type manually");switch(t[0]){case 0:return Dc(this);case 1:return Gc(this);case 2:return jc(this)}throw new Error("unsupported type")}inferTypes(){const t=null!=this.gasPrice,e=null!=this.maxFeePerGas||null!=this.maxPriorityFeePerGas,r=null!=this.accessList;if(null!=this.maxFeePerGas&&null!=this.maxPriorityFeePerGas&&this.maxFeePerGas(Object.freeze(t.storageKeys),Object.freeze(t)))))),Object.freeze(kc(this,Ac,"f")),this}isFrozen(){return Object.isFrozen(kc(this,Ac,"f"))}static from(t){if("string"==typeof t){const e=ie(t);if(e[0]>=127)return $c.from(function(t){const e=vs(t);if(!Array.isArray(e)||9!==e.length&&6!==e.length)return Ec.throwArgumentError("invalid field count for legacy transaction","data",t);const r={type:0,nonce:Cc(e[0],"nonce"),gasPrice:Fc(e[1],"gasPrice"),gasLimit:Fc(e[2],"gasLimit"),to:Rc(e[3]),value:Fc(e[4],"value"),data:Bc(e[5],"dta"),chainId:Pc};if(6===e.length)return r;const n=Fc(e[6],"v"),s=Fc(e[7],"r"),i=Fc(e[8],"s");if(s===Pc&&i===Pc)r.chainId=n;else{let s=(n-Ic)/Nc;sOc)&&Ec.throwArgumentError("non-canonical legacy v","v",e[6]),r.signature=Ea.from({r:ge(e[7],32),s:ge(e[8],32),v:n}),r.hash=an(t)}return r}(e));switch(e[0]){case 1:return $c.from(function(t){const e=vs(Ec.getBytes(t).slice(1));(!Array.isArray(e)||8!==e.length&&11!==e.length)&&Ec.throwArgumentError("invalid field count for transaction type: 1","data",le(t));const r={type:1,chainId:Fc(e[0],"chainId"),nonce:Cc(e[1],"nonce"),gasPrice:Fc(e[2],"gasPrice"),gasLimit:Fc(e[3],"gasLimit"),to:Rc(e[4]),value:Fc(e[5],"value"),data:Bc(e[6],"data"),accessList:_c(e[7],"accessList")};return 8===e.length||(r.hash=an(t),Mc(r,e.slice(8))),r}(e));case 2:return $c.from(function(t){const e=vs(Ec.getBytes(t).slice(1));(!Array.isArray(e)||9!==e.length&&12!==e.length)&&Ec.throwArgumentError("invalid field count for transaction type: 2","data",le(t));const r=Fc(e[2],"maxPriorityFeePerGas"),n=Fc(e[3],"maxFeePerGas"),s={type:2,chainId:Fc(e[0],"chainId"),nonce:Cc(e[1],"nonce"),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:Fc(e[4],"gasLimit"),to:Rc(e[5]),value:Fc(e[6],"value"),data:Bc(e[7],"data"),accessList:_c(e[8],"accessList")};return 9===e.length||(s.hash=an(t),Mc(s,e.slice(9))),s}(e))}throw new Error("unsupported transaction type")}const e=new $c;if(null!=t.type&&(e.type=t.type),null!=t.to&&(e.to=t.to),null!=t.nonce&&(e.nonce=t.nonce),null!=t.gasLimit&&(e.gasLimit=t.gasLimit),null!=t.gasPrice&&(e.gasPrice=t.gasPrice),null!=t.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas),null!=t.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null!=t.data&&(e.data=t.data),null!=t.value&&(e.value=t.value),null!=t.chainId&&(e.chainId=t.chainId),null!=t.signature&&(e.signature=Ea.from(t.signature)),null!=t.accessList&&(e.accessList=t.accessList),null!=t.hash){if(!e.isSigned())throw new Error("unsigned transaction cannot have a hashs");if(e.hash!==t.hash)throw new Error("hash mismatch")}if(null!=t.from){if(!e.isSigned())throw new Error("unsigned transaction cannot have a from");if(e.from.toLowerCase()!==(t.from||"").toLowerCase())throw new Error("from mismatch")}return e}}Ac=new WeakMap;var zc,Wc,Hc=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Vc=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Kc(t){return null==t?null:t}function Jc(t){return null==t?null:t.toString()}class qc{constructor(t,e,n){r(this,{gasPrice:Kc(t),maxFeePerGas:Kc(e),maxPriorityFeePerGas:Kc(n)})}toJSON(){const{gasPrice:t,maxFeePerGas:e,maxPriorityFeePerGas:r}=this;return{_type:"FeeData",gasPrice:Jc(t),maxFeePerGas:Jc(e),maxPriorityFeePerGas:Jc(r)}}}class Xc{constructor(t,e){zc.set(this,void 0),null==e&&(e=nl),Hc(this,zc,Object.freeze(t.transactions.map((t=>{if("string"!=typeof t&&t.provider!==e)throw new Error("provider mismatch");return t}))),"f"),r(this,{provider:e,hash:Kc(t.hash),number:t.number,timestamp:t.timestamp,parentHash:t.parentHash,nonce:t.nonce,difficulty:t.difficulty,gasLimit:t.gasLimit,gasUsed:t.gasUsed,miner:t.miner,extraData:t.extraData,baseFeePerGas:Kc(t.baseFeePerGas)})}get transactions(){return Vc(this,zc,"f")}toJSON(){const{baseFeePerGas:t,difficulty:e,extraData:r,gasLimit:n,gasUsed:s,hash:i,miner:o,nonce:a,number:c,parentHash:l,timestamp:u,transactions:h}=this;return{_type:"Block",baseFeePerGas:Jc(t),difficulty:Jc(e),extraData:r,gasLimit:Jc(n),gasUsed:Jc(s),hash:i,miner:o,nonce:a,number:c,parentHash:l,timestamp:u,transactions:h}}[(zc=new WeakMap,Symbol.iterator)](){let t=0;return{next:()=>t{if(e!==t.provider)throw new Error("provider mismatch");return t}))),"f"),r(this,{provider:e,to:t.to,from:t.from,contractAddress:t.contractAddress,hash:t.hash,index:t.index,blockHash:t.blockHash,blockNumber:t.blockNumber,logsBloom:t.logsBloom,gasUsed:t.gasUsed,cumulativeGasUsed:t.cumulativeGasUsed,gasPrice:t.effectiveGasPrice||t.gasPrice,byzantium:t.byzantium,status:t.status,root:t.root})}get logs(){return Vc(this,Wc,"f")}toJSON(){const{to:t,from:e,contractAddress:r,hash:n,index:s,blockHash:i,blockNumber:o,logsBloom:a,logs:c,byzantium:l,status:u,root:h}=this;return{_type:"TransactionReceipt",blockHash:i,blockNumber:o,byzantium:l,contractAddress:r,cumulativeGasUsed:Jc(this.cumulativeGasUsed),from:e,gasPrice:Jc(this.gasPrice),gasUsed:Jc(this.gasUsed),hash:n,index:s,logs:c,logsBloom:a,root:h,status:u,to:t}}get length(){return this.logs.length}[(Wc=new WeakMap,Symbol.iterator)](){let t=0;return{next:()=>tthis.hash(t))),new Xc(r,e)}blockWithTransactions(t,e){throw new Error}transactionRequest(t,e){return al(this,sl,"f").transactionRequest(t)}transactionResponse(t,e){null==(t=Object.assign({},t)).data&&null!=t.input&&(t.data=t.input),null==t.gasLimit&&t.gas&&(t.gasLimit=t.gas),t=al(this,sl,"f").transactionResponse(t);const r=Ea.from({r:t.r,s:t.s,v:t.v});return t.signature=r,null==t.chainId&&(t.chainId=r.legacyChainId),new Qc(t,e)}log(t,e){const r=this.object({address:this.address,blockHash:this.hash,blockNumber:this.number,data:this.data,index:this.number,removed:this.boolean,topics:this.topics,transactionHash:this.hash,transactionIndex:this.number},{index:["logIndex"]})(t);return new Yc(r,e)}receipt(t,e){const r=this.object({blockHash:this.hash,blockNumber:this.number,contractAddress:this.allowNull(this.address),cumulativeGasUsed:this.bigNumber,from:this.address,gasUsed:this.bigNumber,logs:this.arrayOf((t=>this.log(t,e))),logsBloom:this.data,root:this.allowNull(this.data),status:this.allowNull(this.number),to:this.address,gasPrice:this.allowNull(this.bigNumber),hash:this.hash,index:this.number,type:this.allowNull(this.number,0)},{hash:["transactionHash"],gasPrice:["effectiveGasPrice"],index:["transactionIndex"]})(t);if(null!=r.root)if(r.root.length<=4){const t=parseInt(r.root);if(0!==t&&1!==t)return Wo.throwError("invalid alt-root-status","BAD_DATA",{value:r.root});if(null!=r.status&&r.status!==t)return Wo.throwError("alt-root-status/status mismatch","BAD_DATA",{value:{root:r.root,status:r.status}});r.status=t,delete r.root}else if(!te(r.root,32))return Wo.throwError("invalid receipt root hash","BAD_DATA",{value:r.root});return new Zc(r,e)}topics(t){return al(this,sl,"f").topics(t)}filter(t){return al(this,sl,"f").filter(t)}filterLog(t){return console.log("ME",t),null}transaction(t){throw new Error}accessList(t){return yc(t)}allowFalsish(t,e){return r=>r?t.call(this,r):e}allowNull(t,e){return r=>null==r?e:t.call(this,r)}arrayOf(t){return e=>{if(!Array.isArray(e))throw new Error("not an array");return e.map((e=>t.call(this,e)))}}bigNumber(t){return Wo.getBigInt(t,"value")}uint256(t){const e=this.bigNumber(t);return(e<0||e>cl)&&Wo.throwArgumentError("invalid uint256","value",t),e}boolean(t){switch(t){case!0:case"true":return!0;case!1:case"false":return!1}return Wo.throwArgumentError(`invalid boolean; ${JSON.stringify(t)}`,"value",t)}_hexstring(t){return null==t&&(t=!1),function(e){if(te(e,t))return e.toLowerCase();throw new Error("bad hexstring")}}data(t){return null==fe(t)&&Wo.throwArgumentError("","value",t),t}hash(t){return 32!==fe(t)&&Wo.throwArgumentError("","value",t),al(this,sl,"f").data(t)}number(t){return Wo.getNumber(t)}object(t,e){return r=>{const n={};for(const s in t){let i=s;if(e&&s in e&&!(i in r))for(const t of e[s])if(t in r){i=t;break}try{const e=t[s].call(this,r[i]);void 0!==e&&(n[s]=e)}catch(t){const e=t instanceof Error?t.message:"not-an-error";Wo.throwError(`invalid value for value.${s} (${e})`,"BAD_DATA",{value:r})}}return n}}storageSlot(t){return bt(Wo.getBigInt(t),32)}}sl=new WeakMap,il=new WeakMap;class hl{constructor(t){r(this,{name:t})}clone(){return new hl(this.name)}validate(t){return this}}class fl extends hl{constructor(t=0,e){super(`org.ethers.plugins.gas-cost#${t||0}`);const n={effectiveBlock:t};function s(t,r){let s=(e||{})[t];null==s&&(s=r),"number"!=typeof s&&Wo.throwArgumentError(`invalud value for ${t}`,"costs",e),n[t]=s}s("txBase",21e3),s("txCreate",32e3),s("txDataZero",4),s("txDataNonzero",16),s("txAccessListStorageKey",1900),s("txAccessListAddress",2400),r(this,n)}clone(){return new fl(this.effectiveBlock,this)}}class dl extends hl{constructor(t,e){super("org.ethers.plugins.ens"),r(this,{address:t||"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",targetNetwork:null==e?1:e})}clone(){return new dl(this.address,this.targetNetwork)}validate(t){return t.formatter.address(this.address),this}}class pl extends hl{constructor(t){super("org.ethers.plugins.max-priority-fee"),r(this,{priorityFee:Wo.getBigInt(t)})}async getPriorityFee(t){return this.priorityFee}clone(){return new pl(this.priorityFee)}}var wl,gl=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},ml=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const yl=new Map,bl=new ul;class vl{constructor(t,e,r){wl.set(this,void 0);const n=Wo.getBigInt(e);null==r&&(r=bl);const s=new Map;gl(this,wl,{name:t,chainId:n,formatter:r,plugins:s},"f")}toJSON(){return{name:this.name,chainId:this.chainId}}get name(){return a(ml(this,wl,"f"),"name")}set name(t){c(ml(this,wl,"f"),"name",t)}get chainId(){return a(ml(this,wl,"f"),"chainId")}set chainId(t){c(ml(this,wl,"f"),"chainId",Wo.getBigInt(t,"chainId"))}get formatter(){return a(ml(this,wl,"f"),"formatter")}set formatter(t){c(ml(this,wl,"f"),"formatter",t)}get plugins(){return Array.from(ml(this,wl,"f").plugins.values())}attachPlugin(t){if(this.isFrozen())throw new Error("frozen");if(ml(this,wl,"f").plugins.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return ml(this,wl,"f").plugins.set(t.name,t.validate(this)),this}getPlugin(t){return ml(this,wl,"f").plugins.get(t)||null}getPlugins(t){return this.plugins.filter((e=>e.name.split("#")[0]===t))}clone(){const t=new vl(this.name,this.chainId,this.formatter);return this.plugins.forEach((e=>{t.attachPlugin(e.clone())})),t}freeze(){return Object.freeze(ml(this,wl,"f")),this}isFrozen(){return Object.isFrozen(ml(this,wl,"f"))}computeIntrinsicGas(t){const e=this.getPlugin("org.ethers.gas-cost")||new fl;let r=e.txBase;if(null==t.to&&(r+=e.txCreate),t.data)for(let n=2;n{this._poll(t,Dl(this,xl,"f"))}),"f")}async _poll(t,e){throw new Error("sub-classes must override this")}start(){Dl(this,Ol,"f").call(this,-2),Dl(this,xl,"f").on("block",Dl(this,Ol,"f"))}stop(){Dl(this,xl,"f").off("block",Dl(this,Ol,"f"))}pause(t){this.stop()}resume(){this.start()}}xl=new WeakMap,Ol=new WeakMap;class $l extends Gl{constructor(t,e){super(t),Il.set(this,void 0),Ll(this,Il,Ml(e),"f")}async _poll(t,e){throw new Error("@TODO")}}Il=new WeakMap;class zl extends Gl{constructor(t,e){super(t),Sl.set(this,void 0),Ll(this,Sl,e,"f")}async _poll(t,e){const r=await e.getTransactionReceipt(Dl(this,Sl,"f"));r&&e.emit(Dl(this,Sl,"f"),r)}}Sl=new WeakMap;class Wl{constructor(t,e){Rl.add(this),Bl.set(this,void 0),_l.set(this,void 0),Cl.set(this,void 0),Fl.set(this,void 0),Ll(this,Bl,t,"f"),Ll(this,_l,Ml(e),"f"),Ll(this,Cl,Dl(this,Rl,"m",Ul).bind(this),"f"),Ll(this,Fl,-2,"f")}start(){-2===Dl(this,Fl,"f")&&Dl(this,Bl,"f").getBlockNumber().then((t=>{Ll(this,Fl,t,"f")})),Dl(this,Bl,"f").on("block",Dl(this,Cl,"f"))}stop(){Dl(this,Bl,"f").off("block",Dl(this,Cl,"f"))}pause(t){this.stop(),t&&Ll(this,Fl,-2,"f")}resume(){this.start()}}Bl=new WeakMap,_l=new WeakMap,Cl=new WeakMap,Fl=new WeakMap,Rl=new WeakSet,Ul=async function(t){if(-2===Dl(this,Fl,"f"))return;const e=Ml(Dl(this,_l,"f"));e.fromBlock=Dl(this,Fl,"f")+1,e.toBlock=t;const r=await Dl(this,Bl,"f").getLogs(e);if(0!==r.length){Ll(this,Fl,t,"f");for(const t of r)Dl(this,Bl,"f").emit(Dl(this,_l,"f"),t)}else Dl(this,Fl,"f"){if("bigint"==typeof e)return`bigint:${e.toString()}`;if("string"==typeof e)return e.toLowerCase();if("object"==typeof e&&!Array.isArray(e)){const t=Object.keys(e);return t.sort(),t.reduce(((t,r)=>(t[r]=e[r],t)),{})}return e}))}class uu{constructor(t){r(this,{name:t})}start(){}stop(){}pause(t){}resume(){}}function hu(t){return(t=Array.from(new Set(t).values())).sort(),t}async function fu(t,e){if(null==t)throw new Error("invalid event");if(Array.isArray(t)&&(t={topics:t}),"string"==typeof t)switch(t){case"block":case"pending":case"debug":case"network":return{type:t,tag:t}}if(te(t,32)){const e=t.toLowerCase();return{type:"transaction",tag:lu("tx",{hash:e}),hash:e}}if(t.orphan){const e=t;return{type:"orphan",tag:lu("orphan",e),filter:(r=e,JSON.parse(JSON.stringify(r)))}}var r;if(t.address||t.topics){const r=t,n={topics:(r.topics||[]).map((t=>null==t?null:Array.isArray(t)?hu(t.map((t=>t.toLowerCase()))):t.toLowerCase()))};if(r.address){const t=[],s=[],i=r=>{te(r)?t.push(r):s.push((async()=>{t.push(await Ps(r,e))})())};Array.isArray(r.address)?r.address.forEach(i):i(r.address),s.length&&await Promise.all(s),n.address=hu(t.map((t=>t.toLowerCase())))}return{filter:n,tag:lu("event",n),type:"event"}}return Wo.throwArgumentError("unknown ProviderEvent","event",t)}function du(){return(new Date).getTime()}class pu{constructor(t){if(Hl.add(this),Vl.set(this,void 0),Kl.set(this,void 0),Jl.set(this,void 0),ql.set(this,void 0),Xl.set(this,void 0),Yl.set(this,void 0),Zl.set(this,void 0),Ql.set(this,void 0),tu.set(this,void 0),"any"===t)ou(this,Xl,!0,"f"),ou(this,ql,null,"f");else if(t){const e=vl.from(t);ou(this,Xl,!1,"f"),ou(this,ql,Promise.resolve(e),"f"),setTimeout((()=>{this.emit("network",e,null)}),0)}else ou(this,Xl,!1,"f"),ou(this,ql,null,"f");ou(this,Yl,new Map,"f"),ou(this,Vl,new Map,"f"),ou(this,Kl,new Map,"f"),ou(this,Jl,null,"f"),ou(this,Zl,0,"f"),ou(this,Ql,new Map,"f"),ou(this,tu,!1,"f")}get provider(){return this}get plugins(){return Array.from(au(this,Kl,"f").values())}attachPlugin(t){if(au(this,Kl,"f").get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return au(this,Kl,"f").set(t.name,t.validate(this)),this}getPlugin(t){return au(this,Kl,"f").get(t)||null}set disableCcipRead(t){ou(this,tu,!!t,"f")}get disableCcipRead(){return au(this,tu,"f")}async ccipReadFetch(t,e,r){if(this.disableCcipRead||0===r.length||null==t.to)return null;const n=t.to.toLowerCase(),s=e.toLowerCase(),i=[];for(let e=0;e=400&&u.statusCode<500)return Wo.throwError(`response not found during CCIP fetch: ${l}`,"OFFCHAIN_FAULT",{reason:"404_MISSING_RESOURCE",transaction:t,info:{url:o,errorMessage:l}});i.push(l)}return Wo.throwError(`error encountered during CCIP fetch: ${i.map((t=>JSON.stringify(t))).join(", ")}`,"OFFCHAIN_FAULT",{reason:"500_SERVER_ERROR",transaction:t,info:{urls:r,errorMessages:i}})}_wrapTransaction(t,e,r){return t}_detectNetwork(){return Wo.throwError("sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(t){return Wo.throwError(`unsupported method: ${t.method}`,"UNSUPPORTED_OPERATION",{operation:t.method,info:t})}async getBlockNumber(){return Wo.getNumber(await au(this,Hl,"m",eu).call(this,{method:"getBlockNumber"}),"%response")}async _getAddress(t){return"string"==typeof t?t:await t.getAddress()}async _getBlockTag(t){const e=await this.getNetwork();if("number"==typeof t&&Number.isSafeInteger(t)&&t<0){let r=await this.getBlockNumber();return r+=t,r<0&&(r=0),e.formatter.blockTag(r)}return e.formatter.blockTag(t)}async getNetwork(){if(null==au(this,ql,"f")){const t=this._detectNetwork().then((t=>(this.emit("network",t,null),t)),(e=>{throw au(this,ql,"f")===t&&ou(this,ql,null,"f"),e}));return ou(this,ql,t,"f"),await t}const t=au(this,ql,"f"),[e,r]=await Promise.all([t,this._detectNetwork()]);return e.chainId!==r.chainId&&(au(this,Xl,"f")?(this.emit("network",r,e),au(this,ql,"f")===t&&ou(this,ql,Promise.resolve(r),"f")):Wo.throwError(`network changed: ${e.chainId} => ${r.chainId} `,"NETWORK_ERROR",{event:"changed"})),e.clone().freeze()}async getFeeData(){const{block:e,gasPrice:r}=await t({block:this.getBlock("latest"),gasPrice:(async()=>{try{const t=await au(this,Hl,"m",eu).call(this,{method:"getGasPrice"});return Wo.getBigInt(t,"%response")}catch(t){}return null})()});let n=null,s=null;if(e&&e.baseFeePerGas){s=BigInt("1500000000");const t=(await this.getNetwork()).getPlugin("org.ethers.plugins.max-priority-fee");t&&(s=await t.getPriorityFee(this)),n=e.baseFeePerGas*cu+s}return new qc(r,n,s)}async _getTransaction(e){const r=await this.getNetwork(),n=Object.assign({},e,await t({to:e.to?Ps(e.to,this):void 0,from:e.from?Ps(e.from,this):void 0}));return r.formatter.transactionRequest(n)}async estimateGas(t){const e=await this._getTransaction(t);return Wo.getBigInt(await au(this,Hl,"m",eu).call(this,{method:"estimateGas",transaction:e}),"%response")}async call(e){const{tx:r,blockTag:n}=await t({tx:this._getTransaction(e),blockTag:this._getBlockTag(e.blockTag)});return au(this,Hl,"m",ru).call(this,r,n,e.enableCcipRead?0:-1)}async getBalanceOf(e,r){const{address:n,blockTag:s}=await t({address:Ps(e),blockTag:this._getBlockTag(r)});return Wo.getBigInt(await au(this,Hl,"m",eu).call(this,{method:"getBalance",address:n,blockTag:s}),"%response")}async getTransactionCountOf(e,r){const{address:n,blockTag:s}=await t({address:Ps(e),blockTag:this._getBlockTag(r)});return Wo.getNumber(await au(this,Hl,"m",eu).call(this,{method:"getTransactionCount",address:n,blockTag:s}),"%response")}async getCode(e,r){const{address:n,blockTag:s}=await t({address:Ps(e),blockTag:this._getBlockTag(r)});return le(await au(this,Hl,"m",eu).call(this,{method:"getCode",address:n,blockTag:s}))}async getStorageAt(e,r,n){const s=Wo.getBigInt(r),{address:i,blockTag:o}=await t({address:Ps(e),blockTag:this._getBlockTag(n)});return le(await au(this,Hl,"m",eu).call(this,{method:"getStorageAt",address:i,position:s,blockTag:o}))}async broadcastTransaction(t){throw new Error}async getBlock(t){const e=(await this.getNetwork()).formatter,r=await au(this,Hl,"m",nu).call(this,t,!1);return null==r?null:e.block(r,this)}async getBlockWithTransactions(t){const e=(await this.getNetwork()).formatter,r=au(this,Hl,"m",nu).call(this,t,!0);return null==r?null:e.blockWithTransactions(r,this)}async getTransaction(t){const e=(await this.getNetwork()).formatter,r=await au(this,Hl,"m",eu).call(this,{method:"getTransaction",hash:t});return e.transactionResponse(r,this)}async getTransactionReceipt(t){const e=(await this.getNetwork()).formatter,r=await au(this,Hl,"m",eu).call(this,{method:"getTransactionReceipt",hash:t});if(null==r)return null;if(null==r.gasPrice&&null==r.effectiveGasPrice){const e=await au(this,Hl,"m",eu).call(this,{method:"getTransaction",hash:t});r.effectiveGasPrice=e.gasPrice}return e.receipt(r,this)}async _getFilter(e){const r=(e.topics||[]).map((t=>null==t?null:Array.isArray(t)?hu(t.map((t=>t.toLowerCase()))):t.toLowerCase())),n="blockHash"in e?e.blockHash:void 0,s={};e.address&&(Array.isArray(e.address)?s.address=Promise.all(e.address.map((t=>Ps(t,this)))):s.address=Ps(e.address,this));const i=t=>{null!=e[t]&&(s[t]=this._getBlockTag(e[t]))};i("fromBlock"),i("toBlock");const o=await t(s);if(Array.isArray(o.address)&&o.address.sort(),o.topics=r,n){if(e.fromBlock||e.toBlock)throw new Error("invalid filter");o.blockHash=n}return o}async getLogs(e){const{network:r,filter:n}=await t({network:this.getNetwork(),filter:this._getFilter(e)});return(await au(this,Hl,"m",eu).call(this,{method:"getLogs",filter:n})).map((t=>r.formatter.log(t,this)))}_getProvider(t){return Wo.throwError("provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(t){return await ca.fromName(this,t)}async getAvatar(t){const e=await this.getResolver(t);return e?await e.getAvatar():null}async resolveName(t){if("string"!=typeof t){const e=await t.getAddress();return null==e?Wo.throwArgumentError("Addressable returned no address","name",t):e}{const e=await this.getResolver(t);if(e)return await e.getAddress()}return null}async lookupAddress(t){throw new Error}async waitForTransaction(t,e=1,r){return 0===e?this.getTransactionReceipt(t):new Promise((async(n,s)=>{let i=null;const o=async r=>{try{const s=await this.getTransactionReceipt(t);if(null!=s&&r-s.blockNumber+1>=e)return n(s),this.off("block",o),void(i&&(clearTimeout(i),i=null))}catch(t){console.log("EEE",t)}this.once("block",o)};null!=r&&(i=setTimeout((()=>{null!=i&&(i=null,this.off("block",o),s(Wo.makeError("timeout","TIMEOUT",{reason:"timeout"})))}),r)),o(await this.getBlockNumber())}))}async waitForBlock(t){throw new Error}_clearTimeout(t){const e=au(this,Ql,"f").get(t);e&&(e.timer&&clearTimeout(e.timer),au(this,Ql,"f").delete(t))}_setTimeout(t,e=0){var r,n;const s=(ou(this,Zl,(n=au(this,Zl,"f"),r=n++,n),"f"),r),i=()=>{au(this,Ql,"f").delete(s),t()};if(this.paused)au(this,Ql,"f").set(s,{timer:null,func:i,time:e});else{const t=setTimeout(i,e);au(this,Ql,"f").set(s,{timer:t,func:i,time:du()})}return s}_forEachSubscriber(t){for(const e of au(this,Vl,"f").values())t(e.subscriber)}_getSubscriber(t){switch(t.type){case"debug":case"network":return new uu(t.type);case"block":return new jl(this);case"event":return new Wl(this,t.filter);case"transaction":return new zl(this,t.hash);case"orphan":return new $l(this,t.filter)}throw new Error(`unsupported event: ${t.type}`)}_recoverSubscriber(t,e){for(const r of au(this,Vl,"f").values())if(r.subscriber===t){r.started&&r.subscriber.stop(),r.subscriber=e,r.started&&e.start(),null!=au(this,Jl,"f")&&e.pause(au(this,Jl,"f"));break}}async on(t,e){const r=await au(this,Hl,"m",iu).call(this,t);return r.listeners.push({listener:e,once:!1}),r.started||(r.subscriber.start(),r.started=!0,null!=au(this,Jl,"f")&&r.subscriber.pause(au(this,Jl,"f"))),this}async once(t,e){const r=await au(this,Hl,"m",iu).call(this,t);return r.listeners.push({listener:e,once:!0}),r.started||(r.subscriber.start(),r.started=!0,null!=au(this,Jl,"f")&&r.subscriber.pause(au(this,Jl,"f"))),this}async emit(t,...e){const r=await au(this,Hl,"m",su).call(this,t,e);if(!r)return!1;const n=r.listeners.length;return r.listeners=r.listeners.filter((({listener:r,once:n})=>{const s=new o(this,n?null:r,t);try{r.call(this,...e,s)}catch(t){}return!n})),n>0}async listenerCount(t){if(t){const e=await au(this,Hl,"m",su).call(this,t);return e?e.listeners.length:0}let e=0;for(const{listeners:t}of au(this,Vl,"f").values())e+=t.length;return e}async listeners(t){if(t){const e=await au(this,Hl,"m",su).call(this,t);return e?e.listeners.map((({listener:t})=>t)):[]}let e=[];for(const{listeners:t}of au(this,Vl,"f").values())e=e.concat(t.map((({listener:t})=>t)));return e}async off(t,e){const r=await au(this,Hl,"m",su).call(this,t);if(!r)return this;if(e){const t=r.listeners.map((({listener:t})=>t)).indexOf(e);t>=0&&r.listeners.splice(t,1)}return e&&0!==r.listeners.length||(r.started&&r.subscriber.stop(),au(this,Vl,"f").delete(r.tag)),this}async removeAllListeners(t){if(t){const{tag:e,started:r,subscriber:n}=await au(this,Hl,"m",iu).call(this,t);r&&n.stop(),au(this,Vl,"f").delete(e)}else for(const[t,{started:e,subscriber:r}]of au(this,Vl,"f"))e&&r.stop(),au(this,Vl,"f").delete(t);return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return this.off(t,e)}async shutdown(){this.removeAllListeners();for(const t of au(this,Ql,"f").keys())this._clearTimeout(t)}get paused(){return null!=au(this,Jl,"f")}pause(t){if(null!=au(this,Jl,"f")){if(au(this,Jl,"f")==!!t)return;return Wo.throwError("cannot change pause type; resume first","UNSUPPORTED_OPERATION",{operation:"pause"})}this._forEachSubscriber((e=>e.pause(t))),ou(this,Jl,!!t,"f");for(const t of au(this,Ql,"f").values())t.timer&&clearTimeout(t.timer),t.time=du()-t.time}resume(){if(null!=au(this,Jl,"f")){this._forEachSubscriber((t=>t.resume())),ou(this,Jl,null,"f");for(const t of au(this,Ql,"f").values()){let e=t.time;e<0&&(e=0),t.time=du(),setTimeout(t.func,e)}}}}function wu(t,e){try{const r=gu(t,e);if(r)return ii(r)}catch(t){}return null}function gu(t,e){if("0x"===t)return null;try{const r=Wo.getNumber(de(t,e,e+32)),n=Wo.getNumber(de(t,r,r+32));return de(t,r+32,r+32+n)}catch(t){}return null}function mu(t){const e=vt(t);if(e.length>32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function yu(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}Vl=new WeakMap,Kl=new WeakMap,Jl=new WeakMap,ql=new WeakMap,Xl=new WeakMap,Yl=new WeakMap,Zl=new WeakMap,Ql=new WeakMap,tu=new WeakMap,Hl=new WeakSet,eu=async function(t){const e=lu(t.method,t);let r=au(this,Yl,"f").get(e);return r||(r=this._perform(t),au(this,Yl,"f").set(e,r),setTimeout((()=>{au(this,Yl,"f").get(e)===r&&au(this,Yl,"f").delete(e)}),250)),await r},ru=async function t(e,r,n){n>=10&&Wo.throwError("CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},e,{blockTag:r,enableCcipRead:!0})});const s=e;try{return le(await this._perform({method:"call",transaction:s,blockTag:r}))}catch(e){if(!this.disableCcipRead&&u(e)&&n>=0&&"latest"===r&&null!=s.to&&"0x556f1830"===de(e.data,0,4)){const i=e.data,o=await Ps(s.to,this);let a;try{a=function(t){const e={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};if(fe(t)<160)throw new Error("insufficient OffchainLookup data");const r=de(t,0,32);if(de(r,0,12)!==de(Eu,0,12))throw new Error("corrupt OffchainLookup sender");e.sender=de(r,12);try{const r=[],n=Wo.getNumber(de(t,32,64)),s=Wo.getNumber(de(t,n,n+32)),i=de(t,n+32);for(let t=0;te[t])),e}(de(e.data,4))}catch(t){return Wo.throwError(t.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:s,info:{data:i}})}if(a.sender.toLowerCase()!==o.toLowerCase())return Wo.throwError("CCIP Read sender mismatch","CALL_EXCEPTION",{data:i,transaction:s,errorSignature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",errorName:"OffchainLookup",errorArgs:a.errorArgs});const c=await this.ccipReadFetch(s,a.calldata,a.urls);return null==c?Wo.throwError("CCIP Read failed to fetch data","OFFCHAIN_FAULT",{reason:"FETCH_FAILED",transaction:s,info:{data:e.data,errorArgs:a.errorArgs}}):au(this,Hl,"m",t).call(this,{to:o,data:he([a.selector,vu([c,a.extraData])])},r,n+1)}throw e}},nu=async function(t,e){const r=(await this.getNetwork()).formatter;return te(t,32)?await au(this,Hl,"m",eu).call(this,{method:"getBlock",blockHash:t,includeTransactions:e}):await au(this,Hl,"m",eu).call(this,{method:"getBlock",blockTag:r.blockTag(t),includeTransactions:e})},su=async function(t,e){let r=await fu(t,this);return"event"===r.type&&e&&e.length>0&&!0===e[0].removed&&(r=await fu({orphan:"drop-log",log:e[0]},this)),au(this,Vl,"f").get(r.tag)||null},iu=async function(t){const e=await fu(t,this),r=e.tag;let n=au(this,Vl,"f").get(r);if(!n){n={subscriber:this._getSubscriber(e),tag:r,addressableMap:new WeakMap,nameMap:new Map,started:!1,listeners:[]},au(this,Vl,"f").set(r,n)}return n};const bu=new Uint8Array([]);function vu(t){const e=[];let r=0;for(let n=0;nnull==t?Wo.throwArgumentError("transaction to ENS name not configured","tx.to",n.to):t))),null!=n.from){const t=n.from;n.from=Promise.all([this.getAddress(),this.resolveName(t)]).then((([t,e])=>e&&t.toLowerCase()===e.toLowerCase()?t:Wo.throwArgumentError("transaction from mismatch","tx.from",e)))}return null==n.nonce&&(n.nonce=this.getTransactionCount()),n=t(n),null==n.gasLimit&&(n.gasLimit=r.estimateGas(n)),n=t(n),await t(n)}async resolveName(t){const e=Ou(this,Au,"m",Tu).call(this,"resolveName");return await e.resolveName(t)}async sendTransaction(t){const e=Ou(this,Au,"m",Tu).call(this,"sendTransaction"),r=$c.from(await this.populateTransaction(t));return await e.broadcastTransaction(await this.signTransaction(r))}}Au=new WeakSet,Tu=function(t){return this.provider?this.provider:Wo.throwError("missing provider","UNSUPPORTED_OPERATION",{operation:t})},ku=async function(t){const e=[];if(null!=(t=Object.assign({},t)).from){const r=t.from;e.push(Promise.all([this.getAddress(),this.resolveName(r)]).then((([e,r])=>{r&&e.toLowerCase()===r.toLowerCase()||Wo.throwArgumentError("transaction from mismatch","tx.from",r),t.from=e})))}return await Promise.all(e),t};class Ru extends Su{constructor(t,e){super(e),Pu.add(this),r(this,{address:t})}async getAddress(){return this.address}connect(t){return new Ru(this.address,t)}async signTransaction(t){Ou(this,Pu,"m",Nu).call(this,"transactions","signTransaction")}async signMessage(t){Ou(this,Pu,"m",Nu).call(this,"messages","signMessage")}async signTypedData(t,e,r){Ou(this,Pu,"m",Nu).call(this,"typed-data","signTypedData")}}Pu=new WeakSet,Nu=function(t,e){return Wo.throwError(`VoidSigner cannot sign ${t}`,"UNSUPPORTED_OPERATION",{operation:e})};class Bu extends Su{constructor(t){super(t.provider),xu.set(this,void 0),Iu(this,xu,t,"f")}async getAddress(){return await Ou(this,xu,"f").getAddress()}connect(t){return new Bu(Ou(this,xu,"f").connect(t))}async signTransaction(t){return await Ou(this,xu,"f").signTransaction(t)}async sendTransaction(t){return await Ou(this,xu,"f").sendTransaction(t)}async signMessage(t){return await Ou(this,xu,"f").signMessage(t)}async signTypedData(t,e,r){return await Ou(this,xu,"f").signTypedData(t,e,r)}}xu=new WeakMap;const _u=new Set;function Cu(t){_u.has(t)||(_u.add(t),console.log("========= NOTICE ========="),console.log(`Request-Rate Exceeded for ${t} (this message will not be repeated)`),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}var Fu,Uu,Lu,Du,Mu,ju,Gu,$u,zu=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Wu=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Hu{constructor(t){Fu.add(this),Uu.set(this,void 0),Lu.set(this,void 0),Du.set(this,void 0),Mu.set(this,void 0),zu(this,Uu,t,"f"),zu(this,Lu,null,"f"),zu(this,Du,Wu(this,Fu,"m",ju).bind(this),"f"),zu(this,Mu,null,"f")}_subscribe(t){throw new Error("subclasses must override this")}_emitResults(t,e){throw new Error("subclasses must override this")}_recover(t){throw new Error("subclasses must override this")}start(){Wu(this,Fu,"m",ju).call(this,-2)}stop(){Wu(this,Fu,"m",Gu).call(this),Wu(this,Uu,"f").off("block",Wu(this,Du,"f"))}pause(t){t&&Wu(this,Fu,"m",Gu).call(this),Wu(this,Uu,"f").off("block",Wu(this,Du,"f"))}resume(){this.start()}}Uu=new WeakMap,Lu=new WeakMap,Du=new WeakMap,Mu=new WeakMap,Fu=new WeakSet,ju=async function(t){try{null==Wu(this,Lu,"f")&&zu(this,Lu,this._subscribe(Wu(this,Uu,"f")),"f");const t=await Wu(this,Lu,"f");if(null==t)return void Wu(this,Uu,"f")._recoverSubscriber(this,this._recover(Wu(this,Uu,"f")));const e=await Wu(this,Uu,"f").getNetwork();if(Wu(this,Mu,"f")||zu(this,Mu,e,"f"),Wu(this,Mu,"f").chainId!==e.chainId)throw new Error("chaid changed");const r=await Wu(this,Uu,"f").send("eth_getFilterChanges",[t]);await this._emitResults(Wu(this,Uu,"f"),r)}catch(t){console.log("@TODO",t)}Wu(this,Uu,"f").once("block",Wu(this,Du,"f"))},Gu=function(){const t=Wu(this,Lu,"f");t&&(zu(this,Lu,null,"f"),t.then((t=>{Wu(this,Uu,"f").send("eth_uninstallFilter",[t])})))};class Vu extends Hu{constructor(t,e){var r;super(t),$u.set(this,void 0),zu(this,$u,(r=e,JSON.parse(JSON.stringify(r))),"f")}_recover(t){return new Wl(t,Wu(this,$u,"f"))}async _subscribe(t){const e=await t.send("eth_newFilter",[Wu(this,$u,"f")]);return console.log("____SUB",e),e}async _emitResults(t,e){const r=await t.getNetwork();for(const n of e){const e=r.formatter.log(n,t);t.emit(Wu(this,$u,"f"),e)}}}$u=new WeakMap;class Ku extends Hu{async _subscribe(t){return await t.send("eth_newPendingTransactionFilter",[])}async _emitResults(t,e){const r=await t.getNetwork();for(const n of e)t.emit("pending",r.formatter.hash(n))}}var Ju,qu,Xu,Yu,Zu=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Qu=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const th="bigint,boolean,function,number,string,symbol".split(/,/g);function eh(t){if(null==t||th.indexOf(typeof t)>=0)return t;if("function"==typeof t.getAddress)return t;if(Array.isArray(t))return t.map(eh);if("object"==typeof t)return Object.keys(t).reduce(((e,r)=>(e[r]=t[r],e)),{});throw new Error(`should not happen: ${t} (${typeof t})`)}function rh(t){return t?t.toLowerCase():t}const nh={polling:!1,batchMaxSize:1<<20,batchStallTime:250};class sh{constructor(t,e){r(this,{provider:t,address:e})}connect(t){return Wo.throwError("cannot reconnect JsonRpcSigner","UNSUPPORTED_OPERATION",{operation:"signer.connect"})}async getAddress(){return this.address}async getNetwork(){return await this.provider.getNetwork()}async getFeeData(){return await this.provider.getFeeData()}async estimateGas(t){return await this.provider.estimateGas(t)}async call(t){return await this.provider.call(t)}async resolveName(t){return await this.provider.resolveName(t)}async getBalance(t){return await this.provider.getBalanceOf(this.address)}async getTransactionCount(t){return await this.provider.getTransactionCountOf(this.address)}async sendUncheckedTransaction(t){const e=eh(t),r=[];if(e.from){const n=e.from;r.push((async()=>{const r=await Ps(n,this.provider);null!=r&&r.toLowerCase()===this.address.toLowerCase()||Wo.throwArgumentError("from address mismatch","transaction",t),e.from=r})())}else e.from=this.address;if(null==e.gasLimit&&r.push((async()=>{e.gasLimit=await this.provider.estimateGas(Object.assign(Object.assign({},e),{from:this.address}))})()),null!=e.to){const t=e.to;r.push((async()=>{e.to=await Ps(t,this.provider)})())}r.length&&await Promise.all(r);const n=this.provider.getRpcTransaction(e);return this.provider.send("eth_sendTransaction",[n])}async sendTransaction(t){const e=await this.provider.getBlockNumber(),r=await this.sendUncheckedTransaction(t);return await new Promise(((t,n)=>{const s=[1e3,100],i=async()=>{const n=await this.provider.getTransaction(r);null==n?this.provider._setTimeout((()=>{i()}),s.pop()||4e3):t(this.provider._wrapTransaction(n,r,e))};i()}))}async signTransaction(t){const e=eh(t);if(e.from){const r=await Ps(e.from,this.provider);if(null==r||r.toLowerCase()!==this.address.toLowerCase())return Wo.throwArgumentError("from address mismatch","transaction",t);e.from=r}else e.from=this.address;const r=this.provider.getRpcTransaction(e);return await this.provider.send("eth_sign_Transaction",[r])}async signMessage(t){const e="string"==typeof t?ei(t):t;return await this.provider.send("personal_sign",[le(e),this.address.toLowerCase()])}async signTypedData(t,e,r){const n=eh(r),s=await uo.resolveNames(t,e,n,(async t=>{const e=await Ps(t);return null==e?Wo.throwArgumentError("TypedData does not support null address","value",t):e}));return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(uo.getPayload(s.domain,e,s.value))])}async unlock(t){return this.provider.send("personal_unlockAccount",[this.address.toLowerCase(),t,null])}async _legacySignMessage(t){const e="string"==typeof t?ei(t):t;return await this.provider.send("eth_sign",[this.address.toLowerCase(),le(e)])}}class ih extends pu{constructor(t){super(t),Ju.set(this,void 0),qu.set(this,void 0),Zu(this,Ju,1,"f"),Zu(this,qu,Object.assign({},nh),"f")}_getOptions(t){return Qu(this,qu,"f")[t]}_setOptions(t){for(const e in t){const r=e,n=t[r];if(typeof n!=typeof Qu(this,qu,"f")[r])return Wo.throwArgumentError("invalid option value",`options.${r}`,n)}for(const e in t){const r=e;Qu(this,qu,"f")[r]=t[r]}}prepareRequest(t,e){var r,n;return{method:t,params:e,id:(Zu(this,Ju,(n=Qu(this,Ju,"f"),r=n++,n),"f"),r),jsonrpc:"2.0"}}async send(t,e){throw new Error("sub-class must implement this")}async getSigner(t=0){const e=await this.getNetwork(),r=await this.send("eth_accounts",[]);if("number"==typeof t){if(t>r.length)throw new Error("no such account");return new sh(this,r[t])}t=e.formatter.address(t);for(const t of r)if(e.formatter.address(t)===t)return new sh(this,t);throw new Error("invalid account")}async _detectNetwork(){return vl.from(Wo.getBigInt(await this._perform({method:"chainId"})))}_getSubscriber(t){return"pending"===t.type?new Ku(this):"event"===t.type?new Vu(this,t.filter):"orphan"===t.type&&"drop-log"===t.filter.orphan?new uu("orphan"):super._getSubscriber(t)}getRpcTransaction(t){const e={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach((r=>{if(null==t[r])return;let n=r;"gasLimit"===r&&(n="gas"),e[n]=ue(t[r])})),["from","to","data"].forEach((r=>{null!=t[r]&&(e[r]=le(t[r]))})),t.accessList&&(e.accessList=yc(t.accessList)),e}getRpcRequest(t){switch(t.method){case"chainId":return{method:"eth_chainId",args:[]};case"getBlockNumber":return{method:"eth_blockNumber",args:[]};case"getGasPrice":return{method:"eth_gasPrice",args:[]};case"getBalance":return{method:"eth_getBalance",args:[rh(t.address),t.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[rh(t.address),t.blockTag]};case"getCode":return{method:"eth_getCode",args:[rh(t.address),t.blockTag]};case"getStorageAt":return{method:"eth_getStorageAt",args:[rh(t.address),"0x"+t.position.toString(16),t.blockTag]};case"sendTransaction":return{method:"eth_sendRawTransaction",args:[t.signedTransaction]};case"getBlock":if("blockTag"in t)return{method:"eth_getBlockByNumber",args:[t.blockTag,!!t.includeTransactions]};if("blockHash"in t)return{method:"eth_getBlockByHash",args:[t.blockHash,!!t.includeTransactions]};break;case"getTransaction":return{method:"eth_getTransactionByHash",args:[t.hash]};case"getTransactionReceipt":return{method:"eth_getTransactionReceipt",args:[t.hash]};case"call":return{method:"eth_call",args:[this.getRpcTransaction(t.transaction),t.blockTag]};case"estimateGas":return{method:"eth_estimateGas",args:[this.getRpcTransaction(t.transaction)]};case"getLogs":return t.filter&&null!=t.filter.address&&(Array.isArray(t.filter.address)?t.filter.address=t.filter.address.map(rh):t.filter.address=rh(t.filter.address)),{method:"eth_getLogs",args:[t.filter]}}return null}getRpcError(t,e,r){if("eth_call"===t){const t=ch(r);return t?Wo.makeError("execution reverted during JSON-RPC call","CALL_EXCEPTION",{data:t.data,transaction:e[0]}):Wo.makeError("missing revert data during JSON-RPC call","CALL_EXCEPTION",{data:"0x",transaction:e[0],info:{error:r}})}const n=JSON.stringify(function(t){const e=[];return lh(t,e),e}(r));return n.match(/insufficient funds|base fee exceeds gas limit/)?Wo.makeError("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e[0]}):n.match(/nonce/)&&n.match(/too low/)?Wo.makeError("nonce has already been used","NONCE_EXPIRED",{transaction:e[0]}):n.match(/replacement transaction/)&&n.match(/underpriced/)?Wo.makeError("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e[0]}):n.match(/only replay-protected/)?Wo.makeError("legacy pre-eip-155 transactions not supported","UNSUPPORTED_OPERATION",{operation:t,info:{transaction:e[0]}}):"estimateGas"===t&&n.match(/gas required exceeds allowance|always failing transaction|execution reverted/)?Wo.makeError("cannot estimate gas; transaction may fail or may require manual gas limit","UNPREDICTABLE_GAS_LIMIT",{transaction:e[0]}):r}async _perform(t){if("call"===t.method||"estimateGas"===t.method){let e=t.transaction;if(e&&null!=e.type&&Wo.getBigInt(e.type)&&null==e.maxFeePerGas&&null==e.maxPriorityFeePerGas){const r=await this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&(t=Object.assign({},t,{transaction:Object.assign({},e,{type:void 0})}))}}const e=this.getRpcRequest(t);if(null!=e){this.emit("debug",{type:"sendRequest",request:e});try{const t=await this.send(e.method,e.args);return this.emit("debug",{type:"getResponse",result:t}),t}catch(t){throw this.emit("debug",{type:"getError",error:t}),this.getRpcError(e.method,e.args,t)}}return super._perform(t)}}Ju=new WeakMap,qu=new WeakMap;class oh extends ih{constructor(t,e){null==t&&(t="http://localhost:8545"),super(e),Xu.set(this,void 0),Yu.set(this,void 0),"string"==typeof t?Zu(this,Xu,{request:new Mo(t)},"f"):(Zu(this,Xu,Object.assign({},t),"f"),Qu(this,Xu,"f").request=Qu(this,Xu,"f").request.clone()),Zu(this,Yu,4e3,"f")}async send(t,e){var r;r=e,e=JSON.parse(JSON.stringify(r));const n=Object.assign({},Qu(this,Xu,"f"));n.request=n.request.clone(),n.request.body=this.prepareRequest(t,e);const s=await zo(n);s.assertOk();const i=s.bodyJson;return"error"in i?Wo.throwError("error from JSON-RPC","UNKNOWN_ERROR",{result:i}):i.result}get pollingInterval(){return Qu(this,Yu,"f")}set pollingInterval(t){if(!Number.isInteger(t)||t<0)throw new Error("invalid interval");Zu(this,Yu,t,"f"),this._forEachSubscriber((t=>{(function(t){return t&&"number"==typeof t.pollingInterval})(t)&&(t.pollingInterval=Qu(this,Yu,"f"))}))}}Xu=new WeakMap,Yu=new WeakMap;class ah extends oh{constructor(t,e){super(t,e),r(this,{network:e})}async _detectNetwork(){return this.network}}function ch(t){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")&&te(t.data))return{message:t.message,data:t.data};if("object"==typeof t){for(const e in t){const r=ch(t[e]);if(r)return r}return null}if("string"==typeof t)try{return ch(JSON.parse(t))}catch(t){}return null}function lh(t,e){if(null!=t){if("string"==typeof t.message&&e.push(t.message),"object"==typeof t)for(const r in t)lh(t[r],e);if("string"==typeof t)try{return lh(JSON.parse(t),e)}catch(t){}}}const uh="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";class hh extends ah{constructor(t="homestead",e){const n=vl.from(t);null==e&&(e=uh);super(hh.getConnection(n,e),n),r(this,{apiKey:e}),super._setOptions({polling:!0})}_getProvider(t){try{return new hh(t,this.apiKey)}catch(t){}return super._getProvider(t)}static getConnection(t,e){null==e&&(e=uh);const r=new Mo(`https://${function(t){switch(t){case"homestead":return"rpc.ankr.com/eth";case"matic":return"rpc.ankr.com/polygon";case"arbitrum":return"rpc.ankr.com/arbitrum"}return Wo.throwArgumentError("unsupported network","network",t)}(t.name)}/${e}`);r.allowGzip=!0;return{request:r,throttleRetry:async(t,r,n)=>(e===uh&&Cu("AnkrProvider"),!0)}}isCommunityResource(){return this.apiKey===uh}}const fh="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class dh extends ah{constructor(t="homestead",e){const n=vl.from(t);null==e&&(e=fh),super(dh.getConnection(n,e),n),r(this,{apiKey:e})}_getProvider(t){try{return new dh(t,this.apiKey)}catch(t){}return super._getProvider(t)}isCommunityResource(){return this.apiKey===fh}static getConnection(t,e){null==e&&(e=fh);const r=new Mo(`https://${function(t){switch(t){case"homestead":return"eth-mainnet.alchemyapi.io";case"ropsten":return"eth-ropsten.alchemyapi.io";case"rinkeby":return"eth-rinkeby.alchemyapi.io";case"goerli":return"eth-goerli.alchemyapi.io";case"kovan":return"eth-kovan.alchemyapi.io";case"matic":return"polygon-mainnet.g.alchemy.com";case"maticmum":return"polygon-mumbai.g.alchemy.com";case"arbitrum":return"arb-mainnet.g.alchemy.com";case"arbitrum-rinkeby":return"arb-rinkeby.g.alchemy.com";case"optimism":return"opt-mainnet.g.alchemy.com";case"optimism-kovan":return"opt-kovan.g.alchemy.com"}return Wo.throwArgumentError("unsupported network","network",t)}(t.name)}/v2/${e}`);r.allowGzip=!0;return{request:r,throttleRetry:async(t,r,n)=>(e===fh&&Cu("alchemy"),!0)}}}class ph extends ah{constructor(t="homestead"){const e=vl.from(t);if("homestead"!==e.name)return Wo.throwArgumentError("unsupported network","network",t);super("https://cloudflare-eth.com/",e)}}class wh extends pu{constructor(t,e){super();const n=vl.from(t);if(null==e){const t=n.getPlugin("org.ethers.plugins.etherscan");e=t?t.communityApiKey:"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB"}r(this,{apiKey:e,network:n}),this.getBaseUrl()}getBaseUrl(){const t=this.network.getPlugin("org.ethers.plugins.etherscan");if(t)return t.baseUrl;switch(this.network.name){case"homestead":return"https://api.etherscan.io";case"ropsten":return"https://api-ropsten.etherscan.io";case"rinkeby":return"https://api-rinkeby.etherscan.io";case"kovan":return"https://api-kovan.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io"}return Wo.throwArgumentError("unsupported network","network",this.network)}getUrl(t,e){const r=Object.keys(e).reduce(((t,r)=>{const n=e[r];return null!=n&&(t+=`&${r}=${n}`),t}),""),n=this.apiKey?`&apikey=${this.apiKey}`:"";return`${this.getBaseUrl()}/api?module=${t}${r}${n}`}getPostUrl(){return`${this.getBaseUrl()}/api`}getPostData(t,e){return e.module=t,e.apikey=this.apiKey,e}async detectNetwork(){return this.network}async fetch(t,e,r){const n=r?this.getPostUrl():this.getUrl(t,e),s=r?this.getPostData(t,e):null,i=new Mo(n),o={request:i,throttleSlotInterval:1e3,processResponse:async(e,r)=>{const n=r.hasBody()?JSON.parse(ii(r.body)):{},s=("string"==typeof n.result?n.result:"").toLowerCase().indexOf("rate limit")>=0;return"proxy"===t?n&&0==n.status&&"NOTOK"==n.message&&s&&r.throwThrottleError(n.result):s&&r.throwThrottleError(n.result),r}};s&&(i.setHeader("content-type","application/x-www-form-urlencoded; charset=UTF-8"),i.body=Object.keys(s).map((t=>`${t}=${s[t]}`)).join("&"));const a=await zo(o);if(a.assertOk(),!a.hasBody())throw new Error;const c=JSON.parse(ii(a.body));if("proxy"===t){if("2.0"!=c.jsonrpc){const t=new Error("invalid response");throw t.result=JSON.stringify(c),t}if(c.error){const t=new Error(c.error.message||"unknown error");throw c.error.code&&(t.code=c.error.code),c.error.data&&(t.data=c.error.data),t}return c.result}if(0==c.status&&("No records found"===c.message||"No transactions found"===c.message))return c.result;if(1!=c.status||"OK"!=c.message){const t=new Error("invalid response");throw t.result=JSON.stringify(c),t}return c.result}_getTransactionPostData(t){const e={};for(let r in t){if(null==t[r])continue;let n=t[r];"type"===r&&0===n||(n={type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[r]?ue(le(n)):"accessList"===r?"["+this.network.formatter.accessList(n).map((t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`)).join(",")+"]":le(n),e[r]=n)}return e}_checkError(t,e,r){throw e}async _detectNetwork(){return this.network}async _perform(t){switch(t.method){case"chainId":return this.network.chainId;case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getBalance":return this.fetch("account",{action:"balance",address:t.address,tag:t.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:t.address,tag:t.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:t.address,tag:t.blockTag});case"getStorageAt":return this.fetch("proxy",{action:"eth_getStorageAt",address:t.address,position:t.position,tag:t.blockTag});case"sendTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:t.signedTransaction},!0).catch((e=>this._checkError(t,e,t.signedTransaction)));case"getBlock":return"blockTag"in t?this.fetch("proxy",{action:"eth_getBlockByNumber",tag:t.blockTag,boolean:t.includeTransactions?"true":"false"}):Wo.throwError("getBlock by blockHash not supported by Etherscan","UNSUPPORTED_OPERATION",{operation:"getBlock(blockHash)"});case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:t.hash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:t.hash});case"call":{if("latest"!==t.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const e=this._getTransactionPostData(t.transaction);e.module="proxy",e.action="eth_call";try{return await this.fetch("proxy",e,!0)}catch(e){return this._checkError(t,e,t.transaction)}}case"estimateGas":{const e=this._getTransactionPostData(t.transaction);e.module="proxy",e.action="eth_estimateGas";try{return await this.fetch("proxy",e,!0)}catch(e){return this._checkError(t,e,t.transaction)}}}return super._perform(t)}async getNetwork(){return this.network}async getEtherPrice(){return"homestead"!==this.network.name?0:parseFloat((await this.fetch("stats",{action:"ethprice"})).ethusd)}isCommunityResource(){const t=this.network.getPlugin("org.ethers.plugins.etherscan");return t?t.communityApiKey===this.apiKey:"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB"===this.apiKey}}const gh="84842078b09946638c03157f83405213";class mh extends ah{constructor(t="homestead",e,n){const s=vl.from(t);null==e&&(e=gh),null==n&&(n=null);super(mh.getConnection(s,e,n),s),r(this,{projectId:e,projectSecret:n})}_getProvider(t){try{return new mh(t,this.projectId,this.projectSecret)}catch(t){}return super._getProvider(t)}static getConnection(t,e,r){null==e&&(e=gh),null==r&&(r=null);const n=new Mo(`https://${function(t){switch(t){case"homestead":return"mainnet.infura.io";case"ropsten":return"ropsten.infura.io";case"rinkeby":return"rinkeby.infura.io";case"kovan":return"kovan.infura.io";case"goerli":return"goerli.infura.io";case"matic":return"polygon-mainnet.infura.io";case"maticmum":return"polygon-mumbai.infura.io";case"optimism":return"optimism-mainnet.infura.io";case"optimism-kovan":return"optimism-kovan.infura.io";case"arbitrum":return"arbitrum-mainnet.infura.io";case"arbitrum-rinkeby":return"arbitrum-rinkeby.infura.io"}return Wo.throwArgumentError("unsupported network","network",t)}(t.name)}/v3/${e}`);n.allowGzip=!0,r&&n.setCredentials("",r);return{request:n,throttleRetry:async(t,r,n)=>(e===gh&&Cu("InfuraProvider"),!0)}}isCommunityResource(){return this.projectId===gh}}const yh={homestead:"6004bcd10040261633ade990",ropsten:"6004bd4d0040261633ade991",rinkeby:"6004bda20040261633ade994",goerli:"6004bd860040261633ade992"};function bh(t,e,r,n){n=!!n;let s=!1,i=e;return null==i?(i=yh[t.name],null==i&&Wo.throwArgumentError("network does not support default applicationId","applicationId",e),n=!0,s=!0):i===yh[t.name]&&(n=!0,s=!0),null==r&&(r=null),{applicationId:i,applicationSecretKey:r,community:s,loadBalancer:n}}class vh extends ah{constructor(t="homestead",e,n,s){const i=vl.from(t),{applicationId:o,applicationSecretKey:a,loadBalancer:c}=bh(i,e,n,s);super(vh.getConnection(i,o,a,c),i),r(this,{applicationId:o,applicationSecretKey:a,loadBalancer:c})}static getConnection(t,e,r,n){const{applicationId:s,applicationSecretKey:i,community:o,loadBalancer:a}=bh(t,e,r,n);let c=`https://${function(t){switch(t){case"homestead":return"eth-mainnet.gateway.pokt.network";case"ropsten":return"eth-ropsten.gateway.pokt.network";case"rinkeby":return"eth-rinkeby.gateway.pokt.network";case"goerli":return"eth-goerli.gateway.pokt.network"}return Wo.throwArgumentError("unsupported network","network",t)}(t.name)}/v1/`;a&&(c+="lb/"),c+=s;const l=new Mo(c);l.allowGzip=!0,i&&l.setCredentials("",i);return{request:l,throttleRetry:async(t,e,r)=>(o&&Cu("PocketProvider"),!0)}}isCommunityResource(){return this.applicationId===yh[this.network.name]}}var Eh,Ah,Th,kh,Ph,Nh,xh,Oh,Ih,Sh=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Rh=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Bh=BigInt("1"),_h=BigInt("2");function Ch(){return(new Date).getTime()}const Fh={stallTimeout:400,priority:1,weight:1},Uh={blockNumber:-2,requests:0,lateResponses:0,errorResponses:0,outOfSync:-1,unsupportedEvents:0,rollingDuration:0,score:0,_network:null,_updateNumber:null,_totalTime:0};function Lh(t,e,r){switch(r.method){case"chainId":case"getGasPrice":case"getBalance":case"estimateGas":return Wo.getBigInt(e).toString();case"getBlockNumber":case"getTransactionCount":return Wo.getNumber(e).toString();case"getCode":case"getStorageAt":case"call":return le(e);case"getBlock":return r.includeTransactions?JSON.stringify(t.formatter.blockWithTransactions(e)):JSON.stringify(t.formatter.block(e));case"getTransaction":return JSON.stringify(t.formatter.transactionResponse(e));case"getTransactionReceipt":return JSON.stringify(t.formatter.receipt(e));case"getLogs":return JSON.stringify(e.map((e=>t.formatter.log(e))))}return Wo.throwError("unsupported method","UNSUPPORTED_OPERATION",{operation:`_perform(${JSON.stringify(r.method)})`})}function Dh(t,e){const r=new Map;for(const{result:t,normal:n,weight:s}of e){const e=r.get(n)||{result:t,weight:0};e.weight+=s,r.set(n,e)}let n,s=0;for(const{weight:e,result:i}of r.values())e>=t&&e>s&&(s=e,n=i);return n}function Mh(t){const e=t.map((t=>BigInt(t.result)));e.sort(((t,e)=>tt?1:0));const r=e.length/2;return e.length%2?e[r]:(e[r-1]+e[r]+Bh)/_h}class jh extends pu{constructor(t,e){super(e),Eh.add(this),Ah.set(this,void 0),Th.set(this,void 0),kh.set(this,void 0),Sh(this,Ah,t.map((t=>t instanceof pu?Object.assign({provider:t},Fh,Uh):Object.assign({},Fh,t,Uh))),"f"),Sh(this,Th,-2,"f"),Sh(this,kh,null,"f"),this.quorum=2,this.eventQuorum=1,this.eventWorkers=1,this.quorum>Rh(this,Ah,"f").reduce(((t,e)=>t+e.weight),0)&&Wo.throwArgumentError("quorum exceed provider wieght","quorum",this.quorum)}get providerConfigs(){return Rh(this,Ah,"f").slice()}async _detectNetwork(){return vl.from(Wo.getBigInt(await this._perform({method:"chainId"}))).freeze()}async _perform(t){await Rh(this,Eh,"m",xh).call(this);const e=new Set;for(let r=0;r0;e--){const r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}}(e),e.sort(((t,e)=>e.priority-t.priority));for(const r of e)if(-1===t.indexOf(r))return r;return null},Nh=function(t,e){const r=Rh(this,Eh,"m",Ph).call(this,Array.from(t).map((t=>t.config)));if(null==r)return null;const n={},s={config:r,result:n,didBump:!1,done:!1,perform:null,staller:null},i=Ch();return s.perform=(async()=>{try{r.requests++,n.result=await r.provider._perform(e)}catch(t){r.errorResponses++,n.error=t}s.done&&r.lateResponses++;const t=Ch()-i;r._totalTime+=t,r.rollingDuration=.95*r.rollingDuration+.05*t,s.perform=null})(),s.staller=(async()=>{var t;await(t=r.stallTimeout,new Promise((e=>{setTimeout(e,t)}))),s.staller=null})(),t.add(s),s},xh=async function(){let t=Rh(this,kh,"f");if(!t){const e=[];Rh(this,Ah,"f").forEach((t=>{e.push(async function(t,e){for(;t.blockNumber<0||t.blockNumber{const e=await t.provider.getBlockNumber();e>t.blockNumber&&(t.blockNumber=e),t._updateNumber=null})()),await t._updateNumber,t.outOfSync++}(t,0)),e.push((async()=>{t._network=await t.provider.getNetwork()})())})),Sh(this,kh,t=(async()=>{await Promise.all(e);let t=null;for(const e of Rh(this,Ah,"f")){const r=e._network;null==t?t=r.chainId:r.chainId!==t&&Wo.throwError("cannot mix providers on different networks","UNSUPPORTED_OPERATION",{operation:"new FallbackProvider"})}})(),"f")}await t},Oh=async function(t,e){const r=[];for(const n of t)if("result"in n.result){const t=n.result.result;r.push({result:t,normal:Lh(n.config._network,t,e),weight:n.config.weight})}if(!(r.reduce(((t,e)=>t+e.weight),0)({result:t.blockNumber,normal:Wo.getNumber(t.blockNumber).toString(),weight:t.weight})))),"%internal"));Sh(this,Th,t,"f")}const t=function(t,e){if(1===t)return Wo.getNumber(Mh(e),"%internal");const r=new Map,n=(t,e)=>{const n=r.get(t)||{result:t,weight:0};n.weight+=e,r.set(t,n)};for(const{weight:t,result:r}of e){const e=Wo.getNumber(r);n(e-1,t),n(e,t),n(e+1,t)}let s,i=0;for(const{weight:e,result:n}of r.values())e>=t&&(e>i||null!=s&&e===i&&n>s)&&(i=e,s=n);return s}(this.quorum,r);if(void 0===t)return;return t>Rh(this,Th,"f")&&Sh(this,Th,t,"f"),Rh(this,Th,"f")}case"getGasPrice":case"estimateGas":return Mh(r);case"getBlock":return"blockTag"in e&&"pending"===e.blockTag?r[0].result:Dh(this.quorum,r);case"chainId":case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"getTransaction":case"getTransactionReceipt":case"getLogs":case"call":return Dh(this.quorum,r);case"sendTransaction":throw new Error("TODO")}return Wo.throwError("unsupported method","UNSUPPORTED_OPERATION",{operation:`_perform(${JSON.stringify(e.method)})`})}},Ih=async function t(e,r){if(0===e.size)throw new Error("no runners?!");const n=[];let s=0;for(const t of e)t.perform&&n.push(t.perform),t.staller?n.push(t.staller):t.didBump||(t.didBump=!0,s++);const i=await Rh(this,Eh,"m",Oh).call(this,e,r);if(void 0!==i){if(i instanceof Error)throw i;return i}for(let t=0;t(tf(this,$h,"f")._register(t,this),t))),"f")}stop(){tf(this,Wh,"f").then((t=>{tf(this,$h,"f").send("eth_unsubscribe",[t])})),Qh(this,Wh,null,"f")}pause(t){t||Wo.throwError("preserve logs while paused not supported by SocketSubscriber yet","UNSUPPORTED_OPERATION",{operation:"pause(false)"}),Qh(this,Hh,!!t,"f")}resume(){Qh(this,Hh,null,"f")}_handleMessage(t){if(null!=tf(this,Wh,"f")&&null===tf(this,Hh,"f")){let e=tf(this,Vh,"f");e=null==e?this._emit(tf(this,$h,"f"),t):e.then((async()=>{await this._emit(tf(this,$h,"f"),t)})),Qh(this,Vh,e.then((()=>{tf(this,Vh,"f")===e&&Qh(this,Vh,null,"f")})),"f")}}async _emit(t,e){throw new Error("sub-classes must implemente this; _emit")}}$h=new WeakMap,zh=new WeakMap,Wh=new WeakMap,Hh=new WeakMap,Vh=new WeakMap;class rf extends ef{constructor(t){super(t,["newHeads"])}async _emit(t,e){t.emit("block",parseInt(e.number))}}class nf extends ef{constructor(t){super(t,["newPendingTransactions"])}async _emit(t,e){t.emit("pending",e)}}class sf extends ef{constructor(t,e){super(t,["logs",e]),Kh.set(this,void 0),Jh.set(this,void 0),Qh(this,Kh,JSON.stringify(e),"f"),Qh(this,Jh,t.getNetwork().then((t=>t.formatter)),"f")}get logFilter(){return JSON.parse(tf(this,Kh,"f"))}async _emit(t,e){const r=await tf(this,Jh,"f");t.emit(tf(this,Kh,"f"),r.log(e,t))}}Kh=new WeakMap,Jh=new WeakMap;class of extends ih{constructor(t){super(t),qh.set(this,void 0),Xh.set(this,void 0),Yh.set(this,void 0),Zh.set(this,void 0),Qh(this,qh,new Map,"f"),Qh(this,Xh,!1,"f"),Qh(this,Yh,new Map,"f"),Qh(this,Zh,new Map,"f")}_getSubscriber(t){switch(t.type){case"close":return new uu("close");case"block":return new rf(this);case"pending":return new nf(this);case"event":return new sf(this,t.filter);case"orphan":if("drop-log"===t.filter.orphan)return new uu("drop-log")}return super._getSubscriber(t)}_register(t,e){tf(this,Yh,"f").set(t,e);const r=tf(this,Zh,"f").get(t);if(r){for(const t of r)e._handleMessage(t);tf(this,Zh,"f").delete(t)}}async send(t,e){const r=this.prepareRequest(t,e),n=new Promise(((t,e)=>{tf(this,qh,"f").set(r.id,{payload:r,resolve:t,reject:e})}));return tf(this,Xh,"f")&&await this._write(JSON.stringify(r)),await n}async _start(){if(!tf(this,Xh,"f")){Qh(this,Xh,!0,"f");for(const{payload:t}of tf(this,qh,"f").values())await this._write(JSON.stringify(t))}}async _processMessage(t){const e=JSON.parse(t);if("id"in e){const t=tf(this,qh,"f").get(e.id);if(!t)return void console.log("Weird... Response for not a thing we sent");if(tf(this,qh,"f").delete(e.id),"error"in e){const{message:r,code:n,data:s}=e.error,i=Wo.makeError(r||"unkonwn error","SERVER_ERROR",{request:`ws:${JSON.stringify(t.payload)}`,info:{code:n,data:s}});t.reject(i)}else t.resolve(e.result)}else if("eth_subscription"===e.method){const t=e.params.subscription,r=tf(this,Yh,"f").get(t);if(r)r._handleMessage(e.params.result);else{let r=tf(this,Zh,"f").get(t);null==r&&(r=[],tf(this,Zh,"f").set(t,r)),r.push(e.params.result)}}}async _write(t){throw new Error("sub-classes must override this")}}qh=new WeakMap,Xh=new WeakMap,Yh=new WeakMap,Zh=new WeakMap;var af,cf=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},lf=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class uf extends of{constructor(t,e){super(e),af.set(this,void 0),cf(this,af,"string"==typeof t?new Gh(t):t,"f"),this.websocket.onopen=()=>{this._start()},this.websocket.onmessage=t=>{this._processMessage(t.data)}}get websocket(){return lf(this,af,"f")}async _write(t){this.websocket.send(t)}}function hf(t,e){if(null==e&&(e={}),"string"==typeof t&&t.match(/^https?:/))return new oh(t);if("string"==typeof t&&t.match(/^wss?:/)||(r=t)&&"function"==typeof r.send&&"function"==typeof r.close)return new uf(t);var r;const n=[];if("-"!==e.alchemy)try{n.push(new dh(t,e.alchemy))}catch(t){console.log(t)}if("-"!==e.ankr)try{n.push(new hh(t,e.ankr))}catch(t){console.log(t)}if("-"!==e.cloudflare)try{n.push(new ph(t))}catch(t){console.log(t)}if("-"!==e.etherscan)try{n.push(new wh(t,e.etherscan))}catch(t){console.log(t)}if("-"!==e.infura)try{let r,s=e.infura;"object"==typeof s&&(r=s.projectSecret,s=s.projectId),n.push(new mh(t,s,r))}catch(t){console.log(t)}if("-"!==e.pocket)try{let r,s,i=e.pocket;"object"==typeof i&&(s=!!i.loadBalancer,r=i.secretKey,i=i.appId),n.push(new vh(t,i,r,s))}catch(t){console.log(t)}if(0===n.length)throw new Error("TODO");return 1===n.length?n[0]:new jh(n)}af=new WeakMap;const ff=void 0;var df,pf,wf=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},gf=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class mf extends Yc{constructor(t,e,n){super(t,t.provider);r(this,{args:e.decodeEventLog(n,t.data,t.topics),fragment:n,interface:e})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}}class yf extends Zc{constructor(t,e,r){super(r,e),df.set(this,void 0),wf(this,df,t,"f")}get logs(){return super.logs.map((t=>{const e=t.topics.length?gf(this,df,"f").getEvent(t.topics[0]):null;return e?new mf(t,gf(this,df,"f"),e):t}))}}df=new WeakMap;class bf extends Qc{constructor(t,e,r){super(r,e),pf.set(this,void 0),wf(this,pf,t,"f")}async wait(t){const e=await super.wait();return null==e?null:new yf(gf(this,pf,"f"),this.provider,e)}}pf=new WeakMap;class vf extends o{constructor(t,e,n,s,i){super(t,e,n);const o=new mf(i,t.interface,s);r(this,{args:t.interface.decodeEventLog(s,o.data,o.topics),fragment:s,log:o})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}async getBlock(){return await this.log.getBlock()}async getTransaction(){return await this.log.getTransaction()}async getTransactionReceipt(){return await this.log.getTransactionReceipt()}}const Ef=new T("@ethersproject/contract@6.0.0-beta.4");var Af,Tf=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},kf=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Pf(t){return t&&"function"==typeof t.resolveName}class Nf{constructor(t,e,n){if(Af.set(this,void 0),r(this,{fragment:e}),e.inputs.lengtht.walkAsync(n[e],((t,e)=>"address"===t?Ps(e,i):e)))));return t.interface.encodeFilterTopics(e,r)}(),"f")}getTopicFilter(){return kf(this,Af,"f")}}function xf(t,e){return null==t?null:"function"==typeof t[e]?t:t.provider&&"function"==typeof t.provider[e]?t.provider:null}function Of(t){return null==t?null:t.provider||null}async function If(t){const e=function(t){const e={};t.to&&(e.to=t.to),t.from&&(e.from=t.from),t.data&&(e.data=le(t.data));const r="chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value".split(/,/);for(const n in r)n in t&&null!=t[n]&&(e[n]=Wo.getBigInt(t[n],`request.${n}`));const n="type,nonce".split(/,/);for(const r in n)r in t&&null!=t[r]&&(e[r]=Wo.getNumber(t[r],`request.${r}`));return t.accessList&&(e.accessList=yc(t.accessList)),"blockTag"in t&&(e.blockTag=t.blockTag),"enableCcipRead"in t&&(e.enableCcipReadEnabled=!!t.enableCcipRead),"customData"in t&&(e.customData=t.customData),e}(_s.dereference(t,"overrides"));return e.to?Ef.throwArgumentError("cannot override to","overrides.to",e.to):e.data&&Ef.throwArgumentError("cannot override data","overrides.data",e.data),e.from&&(e.from=await Ps(e.from)),e}Af=new WeakMap;class Sf extends(function(){return Function}()){constructor(t,e){super(),r(this,{name:t.interface.getFunctionName(e),_contract:t,_key:e});return new Proxy(this,{apply:async(t,e,r)=>t.getFragment(...r).constant?await t.staticCall(...r):await t.send(...r)})}get fragment(){return this._contract.interface.getFunction(this._key)}getFragment(...t){return this._contract.interface.getFunction(this._key,t)}async populateTransaction(...e){const r=this.getFragment(...e);let n={};if(r.inputs.length+1===e.length&&(n=await If(e.pop())),r.inputs.length!==e.length)throw new Error("internal error: fragment inputs doesn't match arguments; should not happen");const s=await async function(t,e,r){const n=xf(t,"resolveName"),s=Pf(n)?n:null;return await Promise.all(e.map(((t,e)=>t.walkAsync(r[e],((t,e)=>"address"===t?Ps(e,s):e)))))}(this._contract.runner,r.inputs,e);return Object.assign({},n,await t({to:this._contract.getAddress(),data:this._contract.interface.encodeFunctionData(r,s)}))}async staticCall(...t){const e=await this.staticCallResult(...t);return 1===e.length?e[0]:e}async send(...t){const e=this._contract.runner;if(!(r=e)||"function"!=typeof r.sendTransaction)return Ef.throwError("contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});var r;const n=await e.sendTransaction(await this.populateTransaction(...t)),s=Of(this._contract.runner);return new bf(this._contract.interface,s,n)}async estimateGas(...t){const e=xf(this._contract.runner,"estimateGas");return(r=e)&&"function"==typeof r.estimateGas?await e.estimateGas(await this.populateTransaction(...t)):Ef.throwError("contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"});var r}async staticCallResult(...t){const e=xf(this._contract.runner,"call");if(!(r=e)||"function"!=typeof r.call)return Ef.throwError("contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});var r;const n=this.getFragment(...t),s=await this.populateTransaction(...t);let i="0x";try{i=await e.call(s)}catch(t){if(u(t))throw this._contract.interface.makeError(n,t.data,s);throw t}return this._contract.interface.decodeFunctionResult(n,i)}}class Rf extends(function(){return Function}()){constructor(t,e){return super(),r(this,{name:t.interface.getEventName(e),_contract:t,_key:e}),new Proxy(this,{apply:async(e,r,n)=>new Nf(t,e.getFragment(...n),n)})}get fragment(){return this._contract.interface.getEvent(this._key)}getFragment(...t){return this._contract.interface.getEvent(this._key,t)}}const Bf=Symbol.for("_ethersInternal_contract"),_f=new WeakMap;function Cf(t){return _f.get(t[Bf])}async function Ff(t,e){let r,n;if(Array.isArray(e))r=t.interface.getEvent(e[0]),n=e;else if("string"==typeof e)r=t.interface.getEvent(e),n=[t.interface.getEventTopic(r)];else if((s=e)&&"object"==typeof s&&"getTopicFilter"in s&&"function"==typeof s.getTopicFilter&&s.fragment)r=e.fragment,n=await e.getTopicFilter();else{if(!("fragment"in e))throw console.log(e),new Error("TODO");r=e.fragment,n=[t.interface.getEventTopic(r)]}var s;n=n.map((t=>{return null==t?null:Array.isArray(t)?(e=t.map((t=>t.toLowerCase())),(e=Array.from(new Set(e).values())).sort(),e):t.toLowerCase();var e}));return{fragment:r,tag:n.map((t=>null==t?"null":Array.isArray(t)?t.join("|"):t)).join("&"),topics:n}}async function Uf(t,e){const{subs:r}=Cf(t);return r.get((await Ff(t,e)).tag)||null}async function Lf(t,e){const r=Of(t.runner);if(!r)return Ef.throwError("contract runner does not support subscribing","UNSUPPORTED_OPERATION",{operation:"on"});const{fragment:n,tag:s,topics:i}=await Ff(t,e),{addr:o,subs:a}=Cf(t);let c=a.get(s);if(!c){const l={address:o||t,topics:i},u=r=>{const s=new vf(t,null,e,n,r);Mf(t,e,s.args,s)};let h=!1;c={tag:s,listeners:[],start:()=>{h||(r.on(l,u),h=!0)},stop:()=>{h&&(r.off(l,u),h=!1)}},a.set(s,c)}return c}let Df=Promise.resolve();async function Mf(t,e,r,n){try{await Df}catch(t){}const s=async function(t,e,r,n){await Df;const s=await Uf(t,e);if(!s)return!1;const i=s.listeners.length;return s.listeners=s.listeners.filter((({listener:s,once:i})=>{const o=r.slice();n&&o.push(new vf(t,i?null:s,e,n.fragment,n.log));try{s.call(t,...o)}catch(t){}return!i})),i>0}(t,e,r,n);return Df=s,await s}const jf=["then"];class Gf{constructor(t,e,n=null,s){let i;r(this,{target:t,runner:n,interface:xo.from(e)}),Object.defineProperty(this,Bf,{value:{}});let o=null,a=null;if(s){const t=Of(n);a=new bf(this.interface,t,s)}let c=new Map;if("string"==typeof t)if(te(t))o=t,i=Promise.resolve(t);else{const e=xf(n,"resolveName");if(!Pf(e))throw Ef.makeError("contract runner does not support name resolution","UNSUPPORTED_OPERATION",{operation:"resolveName"});i=e.resolveName(t).then((t=>{if(null==t)throw new Error("TODO");return Cf(this).addr=t,t}))}else i=t.getAddress().then((t=>{if(null==t)throw new Error("TODO");return Cf(this).addr=t,t}));var l,u;l=this,u={addrPromise:i,addr:o,deployTx:a,subs:c},_f.set(l[Bf],u);const h=new Proxy({},{get:(t,e,r)=>{if(jf.indexOf(e)>=0)return Reflect.get(t,e,r);const n=String(e),s=this.getEvent(n);if(s)return s;throw new Error(`unknown contract event: ${n}`)}});return r(this,{filters:h}),new Proxy(this,{get:(t,e,r)=>{if(e in t||jf.indexOf(e)>=0)return Reflect.get(t,e,r);const n=String(e),s=t.getFunction(n);if(s)return s;throw new Error(`unknown contract method: ${n}`)}})}async getAddress(){return await Cf(this).addrPromise}async getDeployedCode(){const t=Of(this.runner);if(!t)return Ef.throwError("runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"getDeployedCode"});const e=await t.getCode(await this.getAddress());return"0x"===e?null:e}async waitForDeployment(){const t=this.deploymentTransaction();if(t)return await t.wait(),this;if(null!=await this.getDeployedCode())return this;const e=Of(this.runner);return null==e?Ef.throwError("contract runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"waitForDeployment"}):new Promise(((t,r)=>{const n=async()=>{try{if(null!=await this.getDeployedCode())return t(this);e.once("block",n)}catch(t){r(t)}};n()}))}deploymentTransaction(){return Cf(this).deployTx}getFunction(t){return"string"!=typeof t&&(t=t.format()),new Sf(this,t)}getEvent(t){return"string"!=typeof t&&(t=t.format()),new Rf(this,t)}async queryTransaction(t){throw new Error("@TODO")}async queryFilter(t,e=0,r="latest"){const{addr:n,addrPromise:s}=Cf(this),i=n||await s,{fragment:o,topics:a}=await Ff(this,t),c={address:i,topics:a,fromBlock:e,toBlock:r},l=Of(this.runner);return l?(await l.getLogs(c)).map((t=>new mf(t,this.interface,o))):Ef.throwError("contract runner does not have a provider","UNSUPPORTED_OPERATION",{operation:"queryFilter"})}async on(t,e){const r=await Lf(this,t);return r.listeners.push({listener:e,once:!1}),r.start(),this}async once(t,e){const r=await Lf(this,t);return r.listeners.push({listener:e,once:!0}),r.start(),this}async emit(t,...e){return await Mf(this,t,e,null)}async listenerCount(t){if(t){const e=await Uf(this,t);return e?e.listeners.length:0}const{subs:e}=Cf(this);let r=0;for(const{listeners:t}of e.values())r+=t.length;return r}async listeners(t){if(t){const e=await Uf(this,t);return e?e.listeners.map((({listener:t})=>t)):[]}const{subs:e}=Cf(this);let r=[];for(const{listeners:t}of e.values())r=r.concat(t.map((({listener:t})=>t)));return r}async off(t,e){const r=await Uf(this,t);if(!r)return this;if(e){const t=r.listeners.map((({listener:t})=>t)).indexOf(e);t>=0&&r.listeners.splice(t,1)}return null!=e&&0!==r.listeners.length||(r.stop(),Cf(this).subs.delete(r.tag)),this}async removeAllListeners(t){if(t){const e=await Uf(this,t);if(!e)return this;e.stop(),Cf(this).subs.delete(e.tag)}else{const{subs:t}=Cf(this);for(const{tag:e,stop:r}of t.values())r(),t.delete(e)}return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return await this.off(t,e)}static buildClass(t){return class extends Gf{constructor(e,r=null){super(e,t,r)}}}static from(t,e,r=null){return new this(t,e,r)}}class $f extends(function(){return Gf}()){}const zf=" !#$%&'()*+,-./<=>?@[]^_`{|}~",Wf=/^[a-z]*$/i;function Hf(t,e){let r=97;return t.reduce(((t,n)=>(n===e?r++:n.match(Wf)?t.push(String.fromCharCode(r)+n):(r=97,t.push(n)),t)),[])}function Vf(t){if("0"!==t[0])throw TypeError("unsupported auwl data");return function(t,e){for(let r=zf.length-1;r>=0;r--)t=t.split(zf[r]).join(e.substring(2*r,2*r+2));const r=[],n=t.replace(/(:|([0-9])|([A-Z][a-z]*))/g,((t,e,n,s)=>{if(n)for(let t=parseInt(n);t>=0;t--)r.push(";");else r.push(e.toLowerCase());return""}));if(n)throw new Error(`leftovers: ${JSON.stringify(n)}`);return Hf(Hf(r,";"),":")}(t.substring(1+2*zf.length),t.substring(1,1+2*zf.length))}const Kf=new T("@ethersproject/wordlists@6.0.0-beta.2");class Jf{constructor(t){r(this,{locale:t})}split(t){return t.toLowerCase().split(/ +/g)}join(t){return t.join(" ")}}var qf,Xf,Yf,Zf,Qf,td=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},ed=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class rd extends Jf{constructor(t,e,r){super(t),qf.add(this),Xf.set(this,void 0),Yf.set(this,void 0),Zf.set(this,void 0),td(this,Xf,e,"f"),td(this,Yf,r,"f"),td(this,Zf,null,"f")}get _data(){return ed(this,Xf,"f")}_decodeWords(){return Vf(ed(this,Xf,"f"))}getWord(t){const e=ed(this,qf,"m",Qf).call(this);return(t<0||t>=e.length)&&Kf.throwArgumentError(`invalid word index: ${t}`,"index",t),e[t]}getWordIndex(t){return ed(this,qf,"m",Qf).call(this).indexOf(t)}}Xf=new WeakMap,Yf=new WeakMap,Zf=new WeakMap,qf=new WeakSet,Qf=function(){if(null==ed(this,Zf,"f")){const t=this._decodeWords();if(Oi(t.join("\n")+"\n")!==ed(this,Yf,"f"))throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);td(this,Zf,t,"f")}return ed(this,Zf,"f")};const nd=new class extends rd{constructor(){super("en","0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-EgSe0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-PM&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryFN Noc|PutQuirySSue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurEAyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOgAyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NNGradeHoldOnP Set1BOng::Rd3Ar~ow9UUngU`:3BraRo9NeO","0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60")}},sd=new T("@ethersproject/wallet@6.0.0-beta.5"),id=Object.freeze({en:nd});var od,ad=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},cd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class ld extends rd{constructor(t,e,r,n){super(t,e,n),od.set(this,void 0),ad(this,od,r,"f")}get _accent(){return cd(this,od,"f")}_decodeWords(){return function(t,e){let r=Vf(t).join(",");return e.split(/,/g).forEach((t=>{const e=t.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);if(!e)throw new Error("internal error parsing accents");let n=0;const s=function(t,e){const r=(1<=t;){const e=s>>i-t;s&=(1<(0==--s[n]&&(e=String.fromCharCode(e.charCodeAt(0),i),n++),e)))})),r.split(",")}(this._data,this._accent)}}function ud(t){return(1<24)&&sd.throwArgumentError("invalid mnemonic length","mnemonic","[ REDACTED ]");const n=ie(new Uint8Array(Math.ceil(11*r.length/8)));let s=0;for(let t=0;t>3]|=1<<7-s%8),s++}const i=32*r.length/3,o=ud(r.length/3);return(ie(ts(n.slice(0,i/8)))[0]&o)!==(n[n.length-1]&o)&&sd.throwArgumentError("invalid mnemonic checksum","mnemonic","[ REDACTED ]"),le(n.slice(0,i/8))}function fd(t,e=nd){(t.length%4||t.length<16||t.length>32)&&sd.throwArgumentError("invalid entropy size","entropy","[ REDACTED ]"),null==e&&(e=nd);const r=[0];let n=11;for(let e=0;e8?(r[r.length-1]<<=8,r[r.length-1]|=t[e],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[e]>>8-n,r.push(t[e]&((1<<8-n)-1&255)),n+=3);const s=t.length/4,i=parseInt(ts(t).substring(2,4),16)&ud(s);return r[r.length-1]<<=s,r[r.length-1]|=i>>8-s,e.join(r.map((t=>e.getWord(t))))}od=new WeakMap;const dd={};class pd{constructor(t,e,n,s,i){null==s&&(s=""),null==i&&(i=nd),sd.assertPrivate(t,dd,"Mnemonic"),r(this,{phrase:n,password:s,wordlist:i,entropy:e})}computeSeed(){const t=ei("mnemonic"+this.password,Xs.NFKD);return Sn(ei(this.phrase,Xs.NFKD),t,2048,64,"sha512")}static fromPhrase(t,e,r){const n=hd(t,r);return t=fd(sd.getBytes(n),r),new pd(dd,n,t,e,r)}static fromEntropy(t,e,r){const n=sd.getBytes(t,"entropy"),s=fd(n,r);return new pd(dd,le(n),s,e,r)}static entropyToPhrase(t,e){return fd(sd.getBytes(t,"entropy"),e)}static phraseToEntropy(t,e){return hd(t,e)}static isValidMnemonic(t,e){try{return hd(t,e),!0}catch(t){}return!1}}var wd,gd=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},md=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class yd extends Su{constructor(t,e){super(e),wd.set(this,void 0),gd(this,wd,t,"f");r(this,{address:bc(this.signingKey.publicKey)})}get signingKey(){return md(this,wd,"f")}get privateKey(){return this.signingKey.privateKey}async getAddress(){return this.address}connect(t){return new yd(md(this,wd,"f"),t)}async signTransaction(e){const r=Object.assign({},e,await t({to:e.to?Ps(e.to,this.provider):void 0,from:e.from?Ps(e.from,this.provider):void 0}));null!=r.from&&(us(r.from)!==this.address&&sd.throwArgumentError("transaction from address mismatch","tx.from",e.from),delete r.from);const n=$c.from(r);return n.signature=this.signingKey.sign(n.unsignedHash),n.serialized}async signMessage(t){return this.signingKey.sign(Ui(t)).serialized}async signTypedData(t,e,r){const n=await uo.resolveNames(t,e,r,(async t=>{if(null==this.provider)return sd.throwError("cannot resolve ENS names without a provider","UNSUPPORTED_OPERATION",{operation:"resolveName",info:{name:t}});const e=await this.provider.resolveName(t);return null==e?sd.throwError("unconfigured ENS name","UNCONFIGURED_NAME",{value:t}):e}));return this.signingKey.sign(uo.hash(n.domain,e,n.value)).serialized}}wd=new WeakMap;var bd,vd,Ed,Ad=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)},Td=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r};const kd="m/44'/60'/0'/0/0",Pd=new Uint8Array([66,105,116,99,111,105,110,32,115,101,101,100]),Nd=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");function xd(t,e){let r="";for(;t;)r="0123456789abcdef"[t%16]+r,t=Math.trunc(t/16);for(;r.length<2*e;)r="0"+r;return"0x"+r}function Od(t){const e=sd.getBytes(t);return Kt(he([e,de(ts(ts(e)),0,4)]))}const Id={};function Sd(t,e,r,n){const s=new Uint8Array(37);if(2147483648&t){if(null==n)return sd.throwError("cannot derive child of neutered node","UNSUPPORTED_OPERATION",{operation:"deriveChild"});s.set(ie(n),1)}else s.set(ie(r));for(let e=24;e>=0;e-=8)s[33+(e>>3)]=t>>24-e&255;const i=ie(Mr("sha512",e,s));return{IL:i.slice(0,32),IR:i.slice(32)}}function Rd(t,e){const r=e.split("/");if(0===r.length||"m"===r[0]&&0!==t.depth)throw new Error("invalid path - "+e);"m"===r[0]&&r.shift();let n=t;for(let t=0;t=2147483648)throw new Error("invalid path index - "+e);n=n.deriveChild(2147483648+t)}else{if(!e.match(/^[0-9]+$/))throw new Error("invalid path component - "+e);{const t=parseInt(e);if(t>=2147483648)throw new Error("invalid path index - "+e);n=n.deriveChild(t)}}}return n}class Bd extends yd{constructor(t,e,n,s,i,o,a,c,l){super(e,l),sd.assertPrivate(t,Id,"HDNodeWallet"),r(this,{publicKey:e.compressedPublicKey});r(this,{parentFingerprint:n,fingerprint:de(Nn(ts(this.publicKey)),0,4),chainCode:s,path:i,index:o,depth:a}),r(this,{mnemonic:c})}connect(t){return new Bd(Id,this.signingKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.mnemonic,t)}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return Od(he(["0x0488ADE4",xd(this.depth,1),this.parentFingerprint,xd(this.index,4),this.chainCode,he(["0x00",this.privateKey])]))}hasPath(){return null!=this.path}neuter(){return new _d(Id,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.provider)}deriveChild(t){const e=sd.getNumber(t,"index");if(e>4294967295)throw new Error("invalid index - "+String(e));let r=this.path;r&&(r+="/"+(2147483647&e),2147483648&e&&(r+="'"));const{IR:n,IL:s}=Sd(e,this.chainCode,this.publicKey,this.privateKey),i=new gc(bt((mt(s)+BigInt(this.privateKey))%Nd,32));return new Bd(Id,i,this.fingerprint,le(n),r,e,this.depth+1,this.mnemonic,this.provider)}derivePath(t){return Rd(this,t)}static fromSeed(t){return Ad(Bd,bd,"m",vd).call(Bd,t,null)}static fromPhrase(t,e="",r=kd,n=nd){r||(r=kd);const s=pd.fromPhrase(t,e,n);return Ad(Bd,bd,"m",vd).call(Bd,s.computeSeed(),s).derivePath(r)}static fromMnemonic(t,e=kd){return e||(e=kd),Ad(Bd,bd,"m",vd).call(Bd,t.computeSeed(),t).derivePath(e)}static fromExtendedKey(t){const e=ie(Jt(t));82===e.length&&Od(e.slice(0,78))===t||sd.throwArgumentError("invalid extended key","extendedKey","[ REDACTED ]");const r=e[4],n=le(e.slice(5,9)),s=parseInt(le(e.slice(9,13)).substring(2),16),i=le(e.slice(13,45)),o=e.slice(45,78);switch(le(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":{const t=le(o);return new _d(Id,bc(t),t,n,i,null,s,r,null)}case"0x0488ade4":case"0x04358394 ":if(0!==o[0])break;return new Bd(Id,new gc(o.slice(1)),n,i,null,s,r,null,null)}return sd.throwArgumentError("invalid extended key prefix","extendedKey","[ REDACTED ]")}static createRandom(t="",e=kd,r=nd){e||(e=kd);const n=pd.fromEntropy(Cn(16),t,r);return Ad(Bd,bd,"m",vd).call(Bd,n.computeSeed(),n).derivePath(e)}}bd=Bd,vd=function(t,e){const r=sd.getBytes(t,"seed");if(r.length<16||r.length>64)throw new Error("invalid seed");const n=ie(Mr("sha512",Pd,r)),s=new gc(le(n.slice(0,32)));return new Bd(Id,s,"0x00000000",le(n.slice(32)),"m",0,0,e,null)};class _d extends Ru{constructor(t,e,n,s,i,o,a,c,l){super(e,l),sd.assertPrivate(t,Id,"HDNodeVoidWallet"),r(this,{publicKey:n});r(this,{publicKey:n,fingerprint:de(Nn(ts(n)),0,4),parentFingerprint:s,chainCode:i,path:o,index:a,depth:c})}connect(t){return new _d(Id,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,t)}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return Od(he(["0x0488B21E",xd(this.depth,1),this.parentFingerprint,xd(this.index,4),this.chainCode,this.publicKey]))}hasPath(){return null!=this.path}deriveChild(t){const e=sd.getNumber(t,"index");if(e>4294967295)throw new Error("invalid index - "+String(e));let r=this.path;r&&(r+="/"+(2147483647&e),2147483648&e&&(r+="'"));const{IR:n,IL:s}=Sd(e,this.chainCode,this.publicKey,null),i=gc._addPoints(s,this.publicKey,!0),o=bc(i);return new _d(Id,o,i,this.fingerprint,le(n),r,e,this.depth+1,this.provider)}derivePath(t){return Rd(this,t)}}class Cd{constructor(t,e="",r="m/44'/60'/0'/0",n=nd){Ed.set(this,void 0),Td(this,Ed,Bd.fromPhrase(t,e,r,n),"f")}getSigner(t=0){return Ad(this,Ed,"f").deriveChild(t)}}function Fd(t){const e=sd.getNumber(t,"index");return(e<0||e>=2147483648)&&sd.throwArgumentError("invalid account index","index",e),`m/44'/60'/${e}'/0/0`} +/*! MIT License. Copyright 2015-2022 Richard Moore . See LICENSE.txt. */Ed=new WeakMap;var Ud,Ld,Dd,Md=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},jd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Gd={16:10,24:12,32:14},$d=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],zd=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],Wd=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Hd=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],Vd=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],Kd=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],Jd=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],qd=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],Xd=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],Yd=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],Zd=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],Qd=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],tp=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],ep=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],rp=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function np(t){const e=[];for(let r=0;r>2,jd(this,Dd,"f")[i][t%4]=s[t],jd(this,Ld,"f")[e-i][t%4]=s[t];let o,a=0,c=n;for(;c>16&255]<<24^zd[o>>8&255]<<16^zd[255&o]<<8^zd[o>>24&255]^$d[a]<<24,a+=1,8!=n)for(let t=1;t>8&255]<<8^zd[o>>16&255]<<16^zd[o>>24&255]<<24;for(let t=n/2+1;t>2,i=c%4,jd(this,Dd,"f")[t][i]=s[l],jd(this,Ld,"f")[e-t][i]=s[l++],c++}for(let t=1;t>24&255]^tp[o>>16&255]^ep[o>>8&255]^rp[255&o]}get key(){return jd(this,Ud,"f").slice()}encrypt(t){if(16!=t.length)throw new TypeError("invalid plaintext size (must be 16 bytes)");const e=jd(this,Dd,"f").length-1,r=[0,0,0,0];let n=np(t);for(let t=0;t<4;t++)n[t]^=jd(this,Dd,"f")[0][t];for(let t=1;t>24&255]^Vd[n[(e+1)%4]>>16&255]^Kd[n[(e+2)%4]>>8&255]^Jd[255&n[(e+3)%4]]^jd(this,Dd,"f")[t][e];n=r.slice()}const s=new Uint8Array(16);let i=0;for(let t=0;t<4;t++)i=jd(this,Dd,"f")[e][t],s[4*t]=255&(zd[n[t]>>24&255]^i>>24),s[4*t+1]=255&(zd[n[(t+1)%4]>>16&255]^i>>16),s[4*t+2]=255&(zd[n[(t+2)%4]>>8&255]^i>>8),s[4*t+3]=255&(zd[255&n[(t+3)%4]]^i);return s}decrypt(t){if(16!=t.length)throw new TypeError("invalid ciphertext size (must be 16 bytes)");const e=jd(this,Ld,"f").length-1,r=[0,0,0,0];let n=np(t);for(let t=0;t<4;t++)n[t]^=jd(this,Ld,"f")[0][t];for(let t=1;t>24&255]^Xd[n[(e+3)%4]>>16&255]^Yd[n[(e+2)%4]>>8&255]^Zd[255&n[(e+1)%4]]^jd(this,Ld,"f")[t][e];n=r.slice()}const s=new Uint8Array(16);let i=0;for(let t=0;t<4;t++)i=jd(this,Ld,"f")[e][t],s[4*t]=255&(Wd[n[t]>>24&255]^i>>24),s[4*t+1]=255&(Wd[n[(t+3)%4]>>16&255]^i>>16),s[4*t+2]=255&(Wd[n[(t+2)%4]>>8&255]^i>>8),s[4*t+3]=255&(Wd[255&n[(t+1)%4]]^i);return s}}Ud=new WeakMap,Ld=new WeakMap,Dd=new WeakMap;class ip{constructor(t,e,r){if(r&&!(this instanceof r))throw new Error(`${t} must be instantiated with "new"`);Object.defineProperties(this,{aes:{enumerable:!0,value:new sp(e)},name:{enumerable:!0,value:t}})}}var op,ap,cp=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},lp=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class up extends ip{constructor(t,e){if(super("ECC",t,up),op.set(this,void 0),ap.set(this,void 0),e){if(e.length%16)throw new TypeError("invalid iv size (must be 16 bytes)");cp(this,op,new Uint8Array(e),"f")}else cp(this,op,new Uint8Array(16),"f");cp(this,ap,this.iv,"f")}get iv(){return new Uint8Array(lp(this,op,"f"))}encrypt(t){if(t.length%16)throw new TypeError("invalid plaintext size (must be multiple of 16 bytes)");const e=new Uint8Array(t.length);for(let r=0;rNumber.MAX_SAFE_INTEGER)throw new TypeError("invalid counter initial integer value");for(let e=15;e>=0;--e)wp(this,dp,"f")[e]=t%256,t=Math.floor(t/256)}setCounterBytes(t){if(16!==t.length)throw new TypeError("invalid counter initial Uint8Array value length");wp(this,dp,"f").set(t)}increment(){for(let t=15;t>=0;t--){if(255!==wp(this,dp,"f")[t]){wp(this,dp,"f")[t]++;break}wp(this,dp,"f")[t]=0}}encrypt(t){var e,r;const n=new Uint8Array(t);for(let t=0;t16)throw new TypeError("PKCS#7 padding byte out of range");const r=t.length-e;for(let n=0;n{setTimeout((()=>{e()}),t)}))}var Np,xp=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Op=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Ip(t){try{if(!t||!te(t.privateKey,32))return null;const e=t.privateKey;return gc.computePublicKey(e)!==t.publicKey?null:new gc(e)}catch(t){console.log(t)}return null}function Sp(t){return new Promise((e=>{setTimeout((()=>{e()}),t)}))}class Rp extends yd{constructor(t,e){let r=null,n=null;if("string"==typeof t&&(r=new gc(t)),null==r){const e=function(t){try{if(!t||!t.signingKey)return null;const e=Ip(t.signingKey);return null==e||bc(e.publicKey)!==t.address||t.mnemonic&&Bd.fromMnemonic(t.mnemonic).privateKey!==e.privateKey?null:t}catch(t){console.log(t)}return null}(t);e&&(r=e.signingKey,n=e.mnemonic||null)}if(null==r){const e=function(t){try{return null==t||"string"!=typeof t.phrase||"string"!=typeof t.password||null==t.wordlist?null:Bd.fromPhrase(t.phrase,t.password,null,t.wordlist)}catch(t){console.log(t)}return null}(t);e&&(r=e.signingKey,n=e.mnemonic||null)}null==r&&(r=Ip(t)),null==r&&sd.throwArgumentError("invalid key","key","[ REDACTED ]"),super(r,e),Np.set(this,void 0),xp(this,Np,n,"f")}get mnemonic(){return Op(this,Np,"f")}connect(t){return new Rp(this,t)}async encrypt(t,e,r){throw new Error("TODO")}encryptSync(t,e){throw new Error("TODO")}static async fromEncryptedJson(t,e,r){let n=null;if(Ap(t))n=await async function(t,e,r){const n=JSON.parse(t),s=yp(e),i=kp(n);if("pbkdf2"===i.name){r&&(r(0),await Pp(0));const{salt:t,count:e,dkLen:o,algorithm:a}=i,c=Sn(s,t,e,o,a);return r&&(r(1),await Pp(0)),Tp(n,c)}if("scrypt"===i.name){const{salt:t,N:e,r:o,p:a,dkLen:c}=i;return Tp(n,await Vn(s,t,e,o,a,c,r))}throw new Error("unreachable")}(t,e,r);else{if(!vp(t))return sd.throwArgumentError("invalid JSON wallet","json","[ REDACTED ]");r&&(r(0),await Sp(0)),n=Ep(t,e),r&&(r(1),await Sp(0))}const s=new Rp(n.privateKey);return s.address!==n.address&&sd.throwArgumentError("address/privateKey mismatch","json","[ REDACTED ]"),s}static fromEncryptedJsonSync(t,e){let r=null;if(Ap(t))r=function(t,e){const r=JSON.parse(t),n=yp(e),s=kp(r);if("pbkdf2"===s.name){const{salt:t,count:e,dkLen:i,algorithm:o}=s;return Tp(r,Sn(n,t,e,i,o))}if("scrypt"===s.name){const{salt:t,N:e,r:i,p:o,dkLen:a}=s;return Tp(r,Kn(n,t,e,i,o,a))}throw new Error("unreachable")}(t,e);else{if(!vp(t))return sd.throwArgumentError("invalid JSON wallet","json","[ REDACTED ]");r=Ep(t,e)}const n=new Rp(r.privateKey);return n.address!==r.address&&sd.throwArgumentError("address/privateKey mismatch","json","[ REDACTED ]"),n}static createRandom(t,e,r){return new Rp(pd.fromEntropy(Cn(16),e,r),t)}static fromMnemonic(t,e){return new Rp(t,e)}static fromPhrase(t,e,r="",n){return new Rp(pd.fromPhrase(t,r,n),e)}}Np=new WeakMap;const Bp="ethers@6.0.0-beta.6";var _p=Object.freeze({__proto__:null,Interface:xo,getAddress:us,getIcapAddress:hs,getCreateAddress:Es,getCreate2Address:As,isAddressable:Ts,isAddress:ks,resolveAddress:Ps,arrayify:ie,decodeBase64:ae,encodeBase64:ce,isHexString:te,isBytesLike:ee,concat:he,dataLength:fe,dataSlice:de,stripZerosLeft:pe,hexlify:le,quantity:ue,zeroPadBytes:me,zeroPadValue:ge,BaseContract:Gf,Contract:$f,ContractEventPayload:vf,ContractTransactionReceipt:yf,ContractTransactionResponse:bf,EventLog:mf,computeHmac:Mr,keccak256:an,ripemd160:Nn,sha256:ts,sha512:es,pbkdf2:Sn,scrypt:Vn,scryptSync:Kn,randomBytes:Cn,lock:rs,messagePrefix:Fi,id:Oi,hashMessage:Ui,isValidName:Bi,namehash:_i,dnsEncode:Ci,solidityPacked:Gi,solidityPackedKeccak256:$i,solidityPackedSha256:zi,TypedDataEncoder:uo,isError:l,isCallException:u,Logger:T,formatFixed:Ut,parseFixed:Lt,fromTwos:Tt,toTwos:kt,mask:Pt,toArray:vt,toBigInt:mt,toHex:bt,toNumber:yt,decodeBase58:Jt,encodeBase58:Kt,formatEther:Zt,parseEther:Qt,formatUnits:Xt,parseUnits:Yt,FixedFormat:Dt,FixedNumber:Mt,defineProperties:r,resolveProperties:t,getStore:a,setStore:c,dummyProvider:nl,getDefaultProvider:hf,showThrottleMessage:Cu,AbstractProvider:pu,UnmanagedSubscriber:uu,AbstractSigner:Su,VoidSigner:Ru,WrappedSigner:Bu,EnsResolver:ca,Formatter:ul,NetworkPlugin:hl,GasCostPlugin:fl,EnsPlugin:dl,MaxPriorityFeePlugin:pl,Network:vl,Block:Xc,FeeData:qc,Log:Yc,TransactionReceipt:Zc,TransactionResponse:Qc,FallbackProvider:jh,JsonRpcProvider:oh,JsonRpcSigner:sh,StaticJsonRpcProvider:ah,AlchemyProvider:dh,AnkrProvider:hh,CloudflareProvider:ph,EtherscanProvider:wh,InfuraProvider:mh,PocketProvider:vh,IpcSocketProvider:undefined,SocketProvider:of,WebSocketProvider:uf,encodeRlp:ws,decodeRlp:vs,Signature:Ea,SigningKey:gc,formatBytes32String:ai,parseBytes32String:ci,nameprep:bi,_toEscapedUtf8String:ni,toUtf8Bytes:ei,toUtf8CodePoints:oi,toUtf8String:ii,get UnicodeNormalizationForm(){return Xs},Utf8ErrorFuncs:Qs,get Utf8ErrorReason(){return Ys},accessListify:yc,computeAddress:bc,recoverAddress:vc,Transaction:$c,defaultPath:kd,getAccountPath:Fd,HDNodeWallet:Bd,HDNodeVoidWallet:_d,HDNodeWalletManager:Cd,Mnemonic:pd,Wallet:Rp,fetchData:zo,FetchRequest:Mo,FetchResponse:_o,wordlists:id,Wordlist:Jf,WordlistOwl:rd,WordlistOwlA:ld,version:"ethers@6.0.0-beta.6"});export{pu as AbstractProvider,Su as AbstractSigner,dh as AlchemyProvider,hh as AnkrProvider,Gf as BaseContract,Xc as Block,ph as CloudflareProvider,$f as Contract,vf as ContractEventPayload,yf as ContractTransactionReceipt,bf as ContractTransactionResponse,dl as EnsPlugin,ca as EnsResolver,wh as EtherscanProvider,mf as EventLog,jh as FallbackProvider,qc as FeeData,Mo as FetchRequest,_o as FetchResponse,Dt as FixedFormat,Mt as FixedNumber,ul as Formatter,fl as GasCostPlugin,_d as HDNodeVoidWallet,Bd as HDNodeWallet,Cd as HDNodeWalletManager,mh as InfuraProvider,xo as Interface,ff as IpcSocketProvider,oh as JsonRpcProvider,sh as JsonRpcSigner,Yc as Log,T as Logger,pl as MaxPriorityFeePlugin,pd as Mnemonic,vl as Network,hl as NetworkPlugin,vh as PocketProvider,Ea as Signature,gc as SigningKey,of as SocketProvider,ah as StaticJsonRpcProvider,$c as Transaction,Zc as TransactionReceipt,Qc as TransactionResponse,uo as TypedDataEncoder,Xs as UnicodeNormalizationForm,uu as UnmanagedSubscriber,Qs as Utf8ErrorFuncs,Ys as Utf8ErrorReason,Ru as VoidSigner,Rp as Wallet,uf as WebSocketProvider,Jf as Wordlist,rd as WordlistOwl,ld as WordlistOwlA,Bu as WrappedSigner,ni as _toEscapedUtf8String,yc as accessListify,ie as arrayify,bc as computeAddress,Mr as computeHmac,he as concat,fe as dataLength,de as dataSlice,Jt as decodeBase58,ae as decodeBase64,vs as decodeRlp,kd as defaultPath,r as defineProperties,Ci as dnsEncode,nl as dummyProvider,Kt as encodeBase58,ce as encodeBase64,ws as encodeRlp,_p as ethers,zo as fetchData,ai as formatBytes32String,Zt as formatEther,Ut as formatFixed,Xt as formatUnits,Tt as fromTwos,Fd as getAccountPath,us as getAddress,As as getCreate2Address,Es as getCreateAddress,hf as getDefaultProvider,hs as getIcapAddress,a as getStore,Ui as hashMessage,le as hexlify,Oi as id,ks as isAddress,Ts as isAddressable,ee as isBytesLike,u as isCallException,l as isError,te as isHexString,Bi as isValidName,an as keccak256,rs as lock,Pt as mask,Fi as messagePrefix,_i as namehash,bi as nameprep,ci as parseBytes32String,Qt as parseEther,Lt as parseFixed,Yt as parseUnits,Sn as pbkdf2,ue as quantity,Cn as randomBytes,vc as recoverAddress,Ps as resolveAddress,t as resolveProperties,Nn as ripemd160,Vn as scrypt,Kn as scryptSync,c as setStore,ts as sha256,es as sha512,Cu as showThrottleMessage,Gi as solidityPacked,$i as solidityPackedKeccak256,zi as solidityPackedSha256,pe as stripZerosLeft,vt as toArray,mt as toBigInt,bt as toHex,yt as toNumber,kt as toTwos,ei as toUtf8Bytes,oi as toUtf8CodePoints,ii as toUtf8String,Bp as version,id as wordlists,me as zeroPadBytes,ge as zeroPadValue}; //# sourceMappingURL=ethers.min.js.map diff --git a/packages/ethers/dist/ethers.min.js.map b/packages/ethers/dist/ethers.min.js.map index 77a0a1e8e..e96d9cac9 100644 --- a/packages/ethers/dist/ethers.min.js.map +++ b/packages/ethers/dist/ethers.min.js.map @@ -1 +1 @@ -{"version":3,"file":"ethers.min.js","sources":["../../properties/lib/properties.js","../../properties/lib/events.js","../../properties/lib/storage.js","../../logger/lib/errors.js","../../logger/lib/logger.js","../../logger/lib/_version.js","../../abi/lib/_version.js","../../abi/lib/logger.js","../../abi/lib/fragments.js","../../math/lib/_version.js","../../math/lib/logger.js","../../math/lib/convert.js","../../math/lib/maths.js","../../math/lib/fixednumber.js","../../math/lib/base58.js","../../math/lib/units.js","../../bytes/lib/check.js","../../bytes/lib/_version.js","../../bytes/lib/logger.js","../../bytes/lib/array.js","../../bytes/lib/base64.js","../../bytes/lib/hex.js","../../bytes/lib/data.js","../../bytes/lib/pad.js","../../abi/lib/coders/abstract-coder.js","../../../node_modules/@noble/hashes/esm/utils.js","../../../node_modules/@noble/hashes/esm/hmac.js","../../../node_modules/@noble/hashes/esm/pbkdf2.js","../../../node_modules/@noble/hashes/esm/_sha2.js","../../../node_modules/@noble/hashes/esm/sha256.js","../../../node_modules/@noble/hashes/esm/_u64.js","../../../node_modules/@noble/hashes/esm/sha512.js","../../crypto/lib/_version.js","../../crypto/lib/logger.js","../../crypto/lib/crypto-browser.js","../../crypto/lib/hmac.js","../../../node_modules/@noble/hashes/esm/sha3.js","../../crypto/lib/keccak.js","../../../node_modules/@noble/hashes/esm/ripemd160.js","../../crypto/lib/ripemd160.js","../../crypto/lib/pbkdf2.js","../../crypto/lib/random.js","../../../node_modules/@noble/hashes/esm/scrypt.js","../../crypto/lib/scrypt.js","../../crypto/lib/sha2.js","../../crypto/lib/index.js","../../address/lib/_version.js","../../address/lib/logger.js","../../address/lib/address.js","../../rlp/lib/_version.js","../../rlp/lib/logger.js","../../rlp/lib/encode.js","../../rlp/lib/decode.js","../../address/lib/contract-address.js","../../address/lib/checks.js","../../abi/lib/typed.js","../../abi/lib/coders/address.js","../../abi/lib/coders/anonymous.js","../../abi/lib/coders/array.js","../../abi/lib/coders/boolean.js","../../abi/lib/coders/bytes.js","../../abi/lib/coders/fixed-bytes.js","../../abi/lib/coders/null.js","../../abi/lib/coders/number.js","../../strings/lib/_version.js","../../strings/lib/logger.js","../../strings/lib/utf8.js","../../strings/lib/bytes32.js","../../strings/lib/idna.js","../../abi/lib/coders/string.js","../../abi/lib/coders/tuple.js","../../abi/lib/abi-coder.js","../../hash/lib/id.js","../../hash/lib/_version.js","../../hash/lib/logger.js","../../hash/lib/namehash.js","../../hash/lib/message.js","../../hash/lib/solidity.js","../../hash/lib/typed-data.js","../../abi/lib/interface.js","../../web/lib/_version.js","../../web/lib/logger.js","../../web/lib/response.js","../../web/lib/get-url-browser.js","../../web/lib/request.js","../../web/lib/fetch-data.js","../../providers/lib/_version.js","../../providers/lib/logger.js","../../providers/lib/ens-resolver.js","../../signing-key/lib/_version.js","../../signing-key/lib/logger.js","../../signing-key/lib/signature.js","../../../node_modules/@noble/secp256k1/lib/esm/index.js","../../signing-key/lib/signing-key.js","../../transaction/lib/accesslist.js","../../transaction/lib/address.js","../../transaction/lib/_version.js","../../transaction/lib/logger.js","../../transaction/lib/transaction.js","../../providers/lib/provider.js","../../providers/lib/formatter.js","../../providers/lib/plugins-network.js","../../providers/lib/network.js","../../providers/lib/subscriber-polling.js","../../providers/lib/abstract-provider.js","../../providers/lib/abstract-signer.js","../../providers/lib/community.js","../../providers/lib/subscriber-filterid.js","../../providers/lib/provider-jsonrpc.js","../../providers/lib/provider-ankr.js","../../providers/lib/provider-alchemy.js","../../providers/lib/provider-cloudflare.js","../../providers/lib/provider-etherscan.js","../../providers/lib/provider-infura.js","../../providers/lib/provider-pocket.js","../../providers/lib/provider-fallback.js","../../providers/lib/shuffle.js","../../providers/lib/ws-browser.js","../../providers/lib/provider-socket.js","../../providers/lib/provider-websocket.js","../../providers/lib/default-provider.js","../../providers/lib/common-networks.js","../../providers/lib/provider-ipcsocket-browser.js","../../contract/lib/wrappers.js","../../contract/lib/_version.js","../../contract/lib/logger.js","../../contract/lib/contract.js","../../wordlists/lib/decode-owl.js","../../wordlists/lib/_version.js","../../wordlists/lib/logger.js","../../wordlists/lib/wordlist.js","../../wordlists/lib/wordlist-owl.js","../../wordlists/lib/lang-en.js","../../wallet/lib/logger.js","../../wallet/lib/_version.js","../../wordlists/lib/wordlists-en.js","../../wordlists/lib/wordlist-owla.js","../../wordlists/lib/decode-owla.js","../../wordlists/lib/bit-reader.js","../../wallet/lib/mnemonic.js","../../wallet/lib/base-wallet.js","../../wallet/lib/hdwallet.js","../../../node_modules/aes-js/lib/aes.js","../../../node_modules/aes-js/lib/mode.js","../../../node_modules/aes-js/lib/mode-cbc.js","../../../node_modules/aes-js/lib/mode-cfb.js","../../../node_modules/aes-js/lib/mode-ctr.js","../../wallet/lib/utils.js","../../wallet/lib/json-crowdsale.js","../../../node_modules/aes-js/lib/padding.js","../../../node_modules/aes-js/lib/mode-ofb.js","../../wallet/lib/json-keystore.js","../../wallet/lib/wallet.js","../lib/_version.js"],"sourcesContent":["//import type { BigNumber, BigNumberish } from \"./big-number\";\n//import type { Bytes, BytesLike } from \"./bytes\";\n//import type { Signature, SignatureLike } from \"./signature\";\n/*\nexport type Loose = T extends BigNumber ? BigNumberish:\n T extends number ? BigNumberish:\n T extends Bytes ? BytesLike:\n T extends Signature ? SignatureLike:\n T;\nexport type LooseObject = { [P in keyof T]?: Loose; };\n*/\n//export type Deferrable = T | Promise;\n/*\nexport type DeferrableObject = {\n [ P in keyof T ]: Deferrable\n};\n*/\n/*\nexport type Frozen = Readonly<{\n [ P in keyof T ]: T[P] extends Freezable ? Frozen: T[P];\n}>;\n\nexport interface Freezable {\n clone(): T;\n freeze(): Frozen;\n isFrozen(): boolean;\n}\n*/\n/*\nconst _data: WeakMap = new WeakMap();\n\nexport class Data implements Freezable {\n #props: {\n data: Uint8Array\n };\n\n [ index: number ]: number;\n\n constructor(lengthOrData: number | Uint8Array) {\n if (typeof(lengthOrData) === \"number\") {\n _data[this] = new Uint8Array(lengthOrData);\n } else {\n _data[this] = lengthOrData;\n }\n\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return Reflect.get(target, prop, receiver); }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n throw new Error(\"\");\n }\n return data[index];\n },\n\n set: (target, prop, value, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return false; }\n\n if (value < 0 || value > 255 || value % 1) { return false; }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n return false;\n }\n\n data[index] = value;\n\n return true;\n },\n });\n }\n\n toString(): string {\n return this.slice().toString();\n }\n\n slice(): Uint8Array {\n return _data.get(this).slice();\n }\n\n clone(): Data {\n return new Data(this.slice());\n }\n\n freeze(): Frozen {\n //Object.freeze(this.#props);\n return this;\n }\n\n isFrozen(): boolean {\n return Object.isFrozen(this.#props);\n }\n}\nconst d = new Data(4);\nconsole.log(d.toString());\nd[0] = 45;\nconsole.log(d.toString());\n*/\n/*\nexport type DeferrableObject = {\n [ P in keyof T ]: Deferrable\n};\n*/\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n/*\nexport type IsCancelled = () => Promise;\n\nexport function createPromise(resolve: (isCancelled: IsCancelled, (result: T) => void) => void, reject: (error: Error) => void, isCancelled: IsCancelled): CancellablePromise {\n let cancelled = false;\n\n const promise = new Promise((resolve, reject) => {\n \n });\n\n (>promise).cancel = function() {\n cancelled = true;\n };\n\n return (>promise);\n}\n*/\n/*\nexport class A implements Freezable {\n foo: number;\n constructor(foo: number) {\n this.foo = foo;\n }\n freeze(): Frozen {\n Object.freeze(this);\n return this;\n }\n clone(): A {\n return new A(this.foo);\n }\n}\n\nexport class B implements Freezable {\n a: A;\n constructor(a: A) {\n this.a = a;\n }\n freeze(): Frozen {\n this.a.freeze();\n Object.freeze(this);\n return this;\n }\n clone(): B {\n return new B(this.a);\n }\n}\n\nexport function test() {\n const a = new A(123);\n const b = new B(a);\n b.a = new A(234);\n const b2 = b.freeze();\n b2.a.foo = 123; // = a;\n}\n*/\nfunction checkType(value, type) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n throw new Error(\"invalid value for type\");\n}\nexport function defineProperties(target, values, types, defaults) {\n for (let key in values) {\n let value = values[key];\n const fallback = (defaults ? defaults[key] : undefined);\n if (fallback !== undefined) {\n value = fallback;\n }\n else {\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type);\n }\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _EventPayload_listener;\nimport { defineProperties } from \"./properties.js\";\nexport class EventPayload {\n constructor(emitter, listener, filter) {\n _EventPayload_listener.set(this, void 0);\n __classPrivateFieldSet(this, _EventPayload_listener, listener, \"f\");\n defineProperties(this, { emitter, filter });\n }\n async removeListener() {\n if (__classPrivateFieldGet(this, _EventPayload_listener, \"f\") == null) {\n return;\n }\n await this.emitter.off(this.filter, __classPrivateFieldGet(this, _EventPayload_listener, \"f\"));\n }\n}\n_EventPayload_listener = new WeakMap();\n//# sourceMappingURL=events.js.map","export function getStore(store, key) {\n return store[key];\n}\nexport function setStore(store, key, value) {\n if (Object.isFrozen(store)) {\n throw new Error(\"frozen object is immuatable; cannot set \" + key);\n }\n store[key] = value;\n}\n//# sourceMappingURL=storage.js.map","//export type TransactionReceipt {\n//}\n/**\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, errors.CALL_EXCEPTION)) {\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n//# sourceMappingURL=errors.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Logger_instances, _Logger_getBytes, _Logger_log;\nimport { version } from \"./_version.js\";\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\n;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nlet _globalLogger = null;\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\nfunction defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true, writable: false, value,\n });\n}\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\n// The type of error to use for various error codes\nconst ErrorConstructors = {};\nErrorConstructors.INVALID_ARGUMENT = TypeError;\nErrorConstructors.NUMERIC_FAULT = RangeError;\nErrorConstructors.BUFFER_OVERRUN = RangeError;\nexport class Logger {\n constructor(version) {\n _Logger_instances.add(this);\n defineReadOnly(this, \"version\", version || \"_\");\n }\n makeError(message, code, info) {\n {\n const details = [];\n if (info) {\n for (const key in info) {\n const value = (info[key]);\n try {\n details.push(key + \"=\" + JSON.stringify(value));\n }\n catch (error) {\n details.push(key + \"=[could not serialize object]\");\n }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${this.version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n const create = ErrorConstructors[code] || Error;\n const error = (new create(message));\n defineReadOnly(error, \"code\", code);\n if (info) {\n for (const key in info) {\n defineReadOnly(error, key, (info[key]));\n }\n }\n return error;\n }\n throwError(message, code, info) {\n throw this.makeError(message, code, info);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, \"INVALID_ARGUMENT\", {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, info) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code || \"UNKNOWN_ERROR\", info);\n }\n assertArgument(condition, message, name, value) {\n return this.assert(condition, message, \"INVALID_ARGUMENT\", {\n argument: name,\n value\n });\n }\n assertIntegerArgument(name, value, lower, upper) {\n let message = null;\n if (typeof (value) !== \"number\") {\n message = \"expected a number\";\n }\n else if (!Number.isInteger(value)) {\n message = \"invalid integer\";\n }\n else if ((lower != null && value < lower) || (upper != null && value > upper)) {\n message = \"value is out of range\";\n }\n if (message) {\n this.throwArgumentError(message, name, value);\n }\n }\n assertSafeUint53(value, message) {\n this.assertArgument((typeof (value) === \"number\"), \"invalid number\", \"value\", value);\n if (message == null) {\n message = \"value not safe\";\n }\n const operation = \"assertSafeInteger\";\n this.assert((value >= 0 && value < 0x1fffffffffffff), message, \"NUMERIC_FAULT\", {\n operation, fault: \"out-of-safe-range\", value\n });\n this.assert((value % 1) === 0, message, \"NUMERIC_FAULT\", {\n operation, fault: \"non-integer\", value\n });\n }\n assertNormalize(form) {\n if (_normalizeForms.indexOf(form) === -1) {\n this.throwError(\"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n }\n }\n assertPrivate(givenGuard, guard, className = \"\") {\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n this.throwError(`private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n }\n assertArgumentCount(count, expectedCount, message = \"\") {\n if (message) {\n message = \": \" + message;\n }\n this.assert((count >= expectedCount), \"missing arguemnt\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n this.assert((count >= expectedCount), \"too many arguemnts\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n }\n getBytes(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, false);\n }\n getBytesCopy(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, true);\n }\n getNumber(value, name) {\n switch (typeof (value)) {\n case \"bigint\":\n if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return Number(value);\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return value;\n case \"string\":\n try {\n return this.getNumber(BigInt(value), name);\n }\n catch (e) {\n this.throwArgumentError(`invalid numeric string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid numeric value\", name || \"value\", value);\n }\n getBigInt(value, name) {\n switch (typeof (value)) {\n case \"bigint\": return value;\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return BigInt(value);\n case \"string\":\n try {\n return BigInt(value);\n }\n catch (e) {\n this.throwArgumentError(`invalid BigNumberish string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid BigNumberish value\", name || \"value\", value);\n }\n debug(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.DEBUG, args);\n }\n info(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.INFO, args);\n }\n warn(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.WARNING, args);\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setLogLevel(logLevel) {\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_Logger_instances = new WeakSet(), _Logger_getBytes = function _Logger_getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x([0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n return this.throwArgumentError(\"invalid BytesLike value\", name || \"value\", value);\n}, _Logger_log = function _Logger_log(logLevel, args) {\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]) {\n return;\n }\n console.log.apply(console, args);\n};\nLogger.LogLevels = LogLevel;\n//# sourceMappingURL=logger.js.map","export const version = \"@ethersproject/logger@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","export const version = \"@ethersproject/abi@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TokenString_instances, _TokenString_offset, _TokenString_tokens, _TokenString_subTokenString, _ParamType_instances, _ParamType_walkAsync;\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n;\nexport var FormatType;\n(function (FormatType) {\n // Bare formatting, as is needed for computing a sighash of an event or function\n FormatType[\"sighash\"] = \"sighash\";\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n FormatType[\"minimal\"] = \"minimal\";\n // Human-Readable with nice spacing, including all names\n FormatType[\"full\"] = \"full\";\n // JSON-format a la Solidity\n FormatType[\"json\"] = \"json\";\n})(FormatType || (FormatType = {}));\n;\n// [ \"a\", \"b\" ] => { \"a\": 1, \"b\": 1 }\nfunction setify(items) {\n const result = new Set();\n items.forEach((k) => result.add(k));\n return Object.freeze(result);\n}\n// Visibility Keywords\nconst _kwVisib = \"constant external internal payable private public pure view\";\nconst KwVisib = setify(_kwVisib.split(\" \"));\nconst _kwTypes = \"constructor error event function struct\";\nconst KwTypes = setify(_kwTypes.split(\" \"));\nconst _kwModifiers = \"calldata memory storage payable indexed\";\nconst KwModifiers = setify(_kwModifiers.split(\" \"));\nconst _kwOther = \"tuple returns\";\n// All Keywords\nconst _keywords = [_kwTypes, _kwModifiers, _kwOther, _kwVisib].join(\" \");\nconst Keywords = setify(_keywords.split(\" \"));\n// Single character tokens\nconst SimpleTokens = {\n \"(\": \"OPEN_PAREN\", \")\": \"CLOSE_PAREN\",\n \"[\": \"OPEN_BRACKET\", \"]\": \"CLOSE_BRACKET\",\n \",\": \"COMMA\", \"@\": \"AT\"\n};\n// Parser regexes to consume the next token\nconst regexWhitespace = new RegExp(\"^(\\\\s*)\");\nconst regexNumber = new RegExp(\"^([0-9]+)\");\nconst regexIdentifier = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)\");\nconst regexType = new RegExp(\"^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))\");\nexport class TokenString {\n constructor(tokens) {\n _TokenString_instances.add(this);\n _TokenString_offset.set(this, void 0);\n _TokenString_tokens.set(this, void 0);\n __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\");\n __classPrivateFieldSet(this, _TokenString_tokens, tokens.slice(), \"f\");\n }\n get offset() { return __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n get length() { return __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length - __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n clone() { return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\")); }\n reset() { __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\"); }\n // Pops and returns the value of the next token, if it is a keyword in allowed; throws if out of tokens\n popKeyword(allowed) {\n const top = this.peek();\n if (top.type !== \"KEYWORD\" || !allowed.has(top.text)) {\n throw new Error(`expected keyword ${top.text}`);\n }\n return this.pop().text;\n }\n // Pops and returns the value of the next token if it is `type`; throws if out of tokens\n popType(type) {\n if (this.peek().type !== type) {\n throw new Error(`expected ${type}; got ${JSON.stringify(this.peek())}`);\n }\n return this.pop().text;\n }\n // Pops and returns a \"(\" TOKENS \")\"\n popParen() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = __classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, top.match + 1);\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Pops and returns the items within \"(\" ITEM1 \",\" ITEM2 \",\" ... \")\"\n popParams() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = [];\n while (__classPrivateFieldGet(this, _TokenString_offset, \"f\") < top.match - 1) {\n const link = this.peek().linkNext;\n result.push(__classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, link));\n __classPrivateFieldSet(this, _TokenString_offset, link, \"f\");\n }\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Returns the top Token, throwing if out of tokens\n peek() {\n if (__classPrivateFieldGet(this, _TokenString_offset, \"f\") >= __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length) {\n throw new Error(\"out-of-bounds\");\n }\n return __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[__classPrivateFieldGet(this, _TokenString_offset, \"f\")];\n }\n // Returns the next value, if it is a keyword in `allowed`\n peekKeyword(allowed) {\n const top = this.peekType(\"KEYWORD\");\n return (top != null && allowed.has(top)) ? top : null;\n }\n // Returns the value of the next token if it is `type`\n peekType(type) {\n if (this.length === 0) {\n return null;\n }\n const top = this.peek();\n return (top.type === type) ? top.text : null;\n }\n // Returns the next token; throws if out of tokens\n pop() {\n var _a;\n const result = this.peek();\n __classPrivateFieldSet(this, _TokenString_offset, (_a = __classPrivateFieldGet(this, _TokenString_offset, \"f\"), _a++, _a), \"f\");\n return result;\n }\n toString() {\n const tokens = [];\n for (let i = __classPrivateFieldGet(this, _TokenString_offset, \"f\"); i < __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length; i++) {\n const token = __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[i];\n tokens.push(`${token.type}:${token.text}`);\n }\n return ``;\n }\n}\n_TokenString_offset = new WeakMap(), _TokenString_tokens = new WeakMap(), _TokenString_instances = new WeakSet(), _TokenString_subTokenString = function _TokenString_subTokenString(from = 0, to = 0) {\n return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\").slice(from, to).map((t) => {\n return Object.freeze(Object.assign({}, t, {\n match: (t.match - from),\n linkBack: (t.linkBack - from),\n linkNext: (t.linkNext - from),\n }));\n return t;\n }));\n};\nexport function lex(text) {\n const tokens = [];\n const throwError = (message) => {\n const token = (offset < text.length) ? JSON.stringify(text[offset]) : \"$EOI\";\n throw new Error(`invalid token ${token} at ${offset}: ${message}`);\n };\n let brackets = [];\n let commas = [];\n let offset = 0;\n while (offset < text.length) {\n // Strip off any leading whitespace\n let cur = text.substring(offset);\n let match = cur.match(regexWhitespace);\n if (match) {\n offset += match[1].length;\n cur = text.substring(offset);\n }\n const token = { depth: brackets.length, linkBack: -1, linkNext: -1, match: -1, type: \"\", text: \"\", offset, value: -1 };\n tokens.push(token);\n let type = (SimpleTokens[cur[0]] || \"\");\n if (type) {\n token.type = type;\n token.text = cur[0];\n offset++;\n if (type === \"OPEN_PAREN\") {\n brackets.push(tokens.length - 1);\n commas.push(tokens.length - 1);\n }\n else if (type == \"CLOSE_PAREN\") {\n if (brackets.length === 0) {\n throwError(\"no matching open bracket\");\n }\n token.match = brackets.pop();\n (tokens[token.match]).match = tokens.length - 1;\n token.depth--;\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n }\n else if (type === \"COMMA\") {\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n commas.push(tokens.length - 1);\n }\n else if (type === \"OPEN_BRACKET\") {\n token.type = \"BRACKET\";\n }\n else if (type === \"CLOSE_BRACKET\") {\n // Remove the CLOSE_BRACKET\n let suffix = tokens.pop().text;\n if (tokens.length > 0 && tokens[tokens.length - 1].type === \"NUMBER\") {\n const value = tokens.pop().text;\n suffix = value + suffix;\n (tokens[tokens.length - 1]).value = logger.getNumber(value);\n }\n if (tokens.length === 0 || tokens[tokens.length - 1].type !== \"BRACKET\") {\n throw new Error(\"missing opening bracket\");\n }\n (tokens[tokens.length - 1]).text += suffix;\n }\n continue;\n }\n match = cur.match(regexIdentifier);\n if (match) {\n token.text = match[1];\n offset += token.text.length;\n if (Keywords.has(token.text)) {\n token.type = \"KEYWORD\";\n continue;\n }\n if (token.text.match(regexType)) {\n token.type = \"TYPE\";\n continue;\n }\n token.type = \"ID\";\n continue;\n }\n match = cur.match(regexNumber);\n if (match) {\n token.text = match[1];\n token.type = \"NUMBER\";\n offset += token.text.length;\n continue;\n }\n throw new Error(`unexpected token ${JSON.stringify(cur[0])} at position ${offset}`);\n }\n return new TokenString(tokens.map((t) => Object.freeze(t)));\n}\n// Check only one of `allowed` is in `set`\nfunction allowSingle(set, allowed) {\n let included = [];\n for (const key in allowed.keys()) {\n if (set.has(key)) {\n included.push(key);\n }\n }\n if (included.length > 1) {\n throw new Error(`conflicting types: ${included.join(\", \")}`);\n }\n}\n// Functions to process a Solidity Signature TokenString from left-to-right for...\n// ...the name with an optional type, returning the name\nfunction consumeName(type, tokens) {\n if (tokens.peekKeyword(KwTypes)) {\n const keyword = tokens.pop().text;\n if (keyword !== type) {\n throw new Error(`expected ${type}, got ${keyword}`);\n }\n }\n return tokens.popType(\"ID\");\n}\n// ...all keywords matching allowed, returning the keywords\nfunction consumeKeywords(tokens, allowed) {\n const keywords = new Set();\n while (true) {\n const keyword = tokens.peekType(\"KEYWORD\");\n if (keyword == null || (allowed && !allowed.has(keyword))) {\n break;\n }\n tokens.pop();\n if (keywords.has(keyword)) {\n throw new Error(`duplicate keywords: ${JSON.stringify(keyword)}`);\n }\n keywords.add(keyword);\n }\n return Object.freeze(keywords);\n}\n// ...all visibility keywords, returning the coalesced mutability\nfunction consumeMutability(tokens) {\n let modifiers = consumeKeywords(tokens, KwVisib);\n // Detect conflicting modifiers\n allowSingle(modifiers, setify(\"constant payable nonpayable\".split(\" \")));\n allowSingle(modifiers, setify(\"pure view payable nonpayable\".split(\" \")));\n // Process mutability states\n if (modifiers.has(\"view\")) {\n return \"view\";\n }\n if (modifiers.has(\"pure\")) {\n return \"pure\";\n }\n if (modifiers.has(\"payable\")) {\n return \"payable\";\n }\n if (modifiers.has(\"nonpayable\")) {\n return \"nonpayable\";\n }\n // Process legacy `constant` last\n if (modifiers.has(\"constant\")) {\n return \"view\";\n }\n return \"nonpayable\";\n}\n// ...a parameter list, returning the ParamType list\nfunction consumeParams(tokens, allowIndexed) {\n return tokens.popParams().map((t) => ParamType.fromTokens(t, allowIndexed));\n}\n// ...a gas limit, returning a BigNumber or null if none\nfunction consumeGas(tokens) {\n if (tokens.peekType(\"AT\")) {\n tokens.pop();\n if (tokens.peekType(\"NUMBER\")) {\n return logger.getBigInt(tokens.pop().text);\n }\n throw new Error(\"invalid gas\");\n }\n return null;\n}\nfunction consumeEoi(tokens) {\n if (tokens.length) {\n throw new Error(`unexpected tokens: ${tokens.toString()}`);\n }\n}\nconst regexArrayType = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nfunction verifyBasicType(type) {\n const match = type.match(regexType);\n if (!match) {\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n }\n if (type === \"uint\") {\n return \"uint256\";\n }\n if (type === \"int\") {\n return \"int256\";\n }\n if (match[2]) {\n // bytesXX\n const length = parseInt(match[2]);\n if (length === 0 || length > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"type\", type);\n }\n }\n else if (match[3]) {\n // intXX or uintXX\n const size = parseInt(match[3]);\n if (size === 0 || size > 256 || size % 8) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n }\n return type;\n}\n// Make the Fragment constructors effectively private\nconst _guard = {};\nconst internal = Symbol.for(\"_ethers_internal\");\nconst ParamTypeInternal = \"_ParamTypeInternal\";\nexport class ParamType {\n constructor(guard, name, type, baseType, indexed, components, arrayLength, arrayChildren) {\n _ParamType_instances.add(this);\n logger.assertPrivate(guard, _guard, \"ParamType\");\n Object.defineProperty(this, internal, { value: ParamTypeInternal });\n if (components) {\n components = Object.freeze(components.slice());\n }\n if (baseType === \"array\") {\n if (arrayLength == null || arrayChildren == null) {\n throw new Error(\"\");\n }\n }\n else if (arrayLength != null || arrayChildren != null) {\n throw new Error(\"\");\n }\n if (baseType === \"tuple\") {\n if (components == null) {\n throw new Error(\"\");\n }\n }\n else if (components != null) {\n throw new Error(\"\");\n }\n defineProperties(this, {\n name, type, baseType, indexed, components, arrayLength, arrayChildren\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 = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n let result = {\n type: ((this.baseType === \"tuple\") ? \"tuple\" : this.type),\n name: (this.name || undefined)\n };\n if (typeof (this.indexed) === \"boolean\") {\n result.indexed = this.indexed;\n }\n if (this.isTuple()) {\n result.components = this.components.map((c) => JSON.parse(c.format(format)));\n }\n return JSON.stringify(result);\n }\n let result = \"\";\n // Array\n if (this.isArray()) {\n result += this.arrayChildren.format(format);\n result += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n }\n else {\n if (this.isTuple()) {\n if (format !== FormatType.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map((comp) => comp.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n }\n else {\n result += this.type;\n }\n }\n if (format !== FormatType.sighash) {\n if (this.indexed === true) {\n result += \" indexed\";\n }\n if (format === FormatType.full && this.name) {\n result += \" \" + this.name;\n }\n }\n return result;\n }\n static isArray(value) {\n return value && (value.baseType === \"array\");\n }\n isArray() {\n return (this.baseType === \"array\");\n }\n isTuple() {\n return (this.baseType === \"tuple\");\n }\n isIndexable() {\n return (this.indexed != null);\n }\n walk(value, process) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v) => (this.arrayChildren.walk(v, process)));\n }\n if (this.isTuple()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid tuple value\");\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v, i) => (this.components[i].walk(v, process)));\n }\n return process(this.type, value);\n }\n async walkAsync(value, process) {\n const promises = [];\n const result = [value];\n __classPrivateFieldGet(this, _ParamType_instances, \"m\", _ParamType_walkAsync).call(this, promises, value, process, (value) => {\n result[0] = value;\n });\n if (promises.length) {\n await Promise.all(promises);\n }\n return result[0];\n }\n static from(obj, allowIndexed) {\n if (ParamType.isParamType(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n return ParamType.fromTokens(lex(obj), allowIndexed);\n }\n if (obj instanceof TokenString) {\n return ParamType.fromTokens(obj, allowIndexed);\n }\n const name = obj.name;\n if (name && (typeof (name) !== \"string\" || !name.match(regexIdentifier))) {\n logger.throwArgumentError(\"invalid name\", \"obj.name\", name);\n }\n let indexed = obj.indexed;\n if (indexed != null) {\n if (!allowIndexed) {\n logger.throwArgumentError(\"parameter cannot be indexed\", \"obj.indexed\", obj.indexed);\n }\n indexed = !!indexed;\n }\n let type = obj.type;\n let arrayMatch = type.match(regexArrayType);\n if (arrayMatch) {\n const arrayLength = arrayMatch[2];\n const arrayChildren = ParamType.from({\n type: arrayMatch[1],\n components: obj.components\n });\n return new ParamType(_guard, name, type, \"array\", indexed, null, arrayLength, arrayChildren);\n }\n if (type.substring(0, 5) === \"tuple(\" || type[0] === \"(\") {\n const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;\n const tuple = new ParamType(_guard, name, type, \"tuple\", indexed, comps, null, null);\n // @TODO: use lexer to validate and normalize type\n return tuple;\n }\n type = verifyBasicType(obj.type);\n return new ParamType(_guard, name, type, type, indexed, null, null, null);\n }\n static fromObject(obj, allowIndexed) {\n throw new Error(\"@TODO\");\n }\n static fromTokens(tokens, allowIndexed) {\n let type = \"\", baseType = \"\";\n let comps = null;\n if (consumeKeywords(tokens, setify([\"tuple\"])).has(\"tuple\") || tokens.peekType(\"OPEN_PAREN\")) {\n // Tuple\n baseType = \"tuple\";\n comps = tokens.popParams().map((t) => ParamType.from(t));\n type = `tuple(${comps.map((c) => c.format()).join(\",\")})`;\n }\n else {\n // Normal\n type = verifyBasicType(tokens.popType(\"TYPE\"));\n baseType = type;\n }\n // Check for Array\n let arrayChildren = null;\n let arrayLength = null;\n while (tokens.length && tokens.peekType(\"BRACKET\")) {\n const bracket = tokens.pop(); //arrays[i];\n arrayChildren = new ParamType(_guard, \"\", type, baseType, null, comps, arrayLength, arrayChildren);\n arrayLength = bracket.value;\n type += bracket.text;\n baseType = \"array\";\n comps = null;\n }\n let indexed = null;\n const keywords = consumeKeywords(tokens, KwModifiers);\n if (keywords.has(\"indexed\")) {\n if (!allowIndexed) {\n throw new Error(\"\");\n }\n indexed = true;\n }\n const name = (tokens.peekType(\"ID\") ? tokens.pop().text : \"\");\n if (tokens.length) {\n throw new Error(\"leftover tokens\");\n }\n return new ParamType(_guard, name, type, baseType, indexed, comps, arrayLength, arrayChildren);\n }\n static isParamType(value) {\n return (value && value[internal] === ParamTypeInternal);\n }\n}\n_ParamType_instances = new WeakSet(), _ParamType_walkAsync = function _ParamType_walkAsync(promises, value, process, setValue) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const childType = this.arrayChildren;\n const result = value.slice();\n result.forEach((value, index) => {\n __classPrivateFieldGet(childType, _ParamType_instances, \"m\", _ParamType_walkAsync).call(childType, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n if (this.isTuple()) {\n const components = this.components;\n // Convert the object into an array\n let result;\n if (Array.isArray(value)) {\n result = value.slice();\n }\n else {\n if (value == null || typeof (value) !== \"object\") {\n throw new Error(\"invlaid tuple value\");\n }\n result = components.map((param) => {\n if (!param.name) {\n throw new Error(\"cannot use object value with unnamed components\");\n }\n if (!(param.name in value)) {\n throw new Error(`missing value for component ${param.name}`);\n }\n return value[param.name];\n });\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n result.forEach((value, index) => {\n var _a;\n __classPrivateFieldGet((_a = components[index]), _ParamType_instances, \"m\", _ParamType_walkAsync).call(_a, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n const result = process(this.type, value);\n if (result.then) {\n promises.push((async function () { setValue(await result); })());\n }\n else {\n setValue(result);\n }\n};\nexport var FragmentType;\n(function (FragmentType) {\n FragmentType[\"constructor\"] = \"constructor\";\n FragmentType[\"error\"] = \"error\";\n FragmentType[\"event\"] = \"event\";\n FragmentType[\"function\"] = \"function\";\n FragmentType[\"struct\"] = \"struct\";\n})(FragmentType || (FragmentType = {}));\n;\nexport class Fragment {\n constructor(guard, type, inputs) {\n logger.assertPrivate(guard, _guard, \"Fragment\");\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { type, inputs });\n }\n static from(obj) {\n if (typeof (obj) === \"string\") {\n return this.fromString(obj);\n }\n if (obj instanceof TokenString) {\n return this.fromTokens(obj);\n }\n if (typeof (obj) === \"object\") {\n return this.fromObject(obj);\n }\n throw new Error(`unsupported type: ${obj}`);\n }\n static fromObject(obj) {\n switch (obj.type) {\n case \"constructor\": return ConstructorFragment.fromObject(obj);\n case \"error\": return ErrorFragment.fromObject(obj);\n case \"event\": return EventFragment.fromObject(obj);\n case \"function\": return FunctionFragment.fromObject(obj);\n case \"struct\": return StructFragment.fromObject(obj);\n }\n throw new Error(\"not implemented yet\");\n }\n static fromString(text) {\n try {\n Fragment.from(JSON.parse(text));\n }\n catch (e) { }\n return Fragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const type = tokens.popKeyword(KwTypes);\n switch (type) {\n case \"constructor\": return ConstructorFragment.fromTokens(tokens);\n case \"error\": return ErrorFragment.fromTokens(tokens);\n case \"event\": return EventFragment.fromTokens(tokens);\n case \"function\": return FunctionFragment.fromTokens(tokens);\n case \"struct\": return StructFragment.fromTokens(tokens);\n }\n throw new Error(`unsupported type: ${type}`);\n }\n /*\n static fromTokens(tokens: TokenString): Fragment {\n const assertDone = () => {\n if (tokens.length) { throw new Error(`unexpected tokens: ${ tokens.toString() }`); }\n });\n\n const type = (tokens.length && tokens.peek().type === \"KEYWORD\") ? tokens.peek().text: \"unknown\";\n\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens, type === \"event\");\n\n switch (type) {\n case \"event\": case \"struct\":\n assertDone();\n }\n\n }\n */\n static isConstructor(value) {\n return (value && value.type === \"constructor\");\n }\n static isError(value) {\n return (value && value.type === \"error\");\n }\n static isEvent(value) {\n return (value && value.type === \"event\");\n }\n static isFunction(value) {\n return (value && value.type === \"function\");\n }\n static isStruct(value) {\n return (value && value.type === \"struct\");\n }\n}\nexport class NamedFragment extends Fragment {\n constructor(guard, type, name, inputs) {\n super(guard, type, inputs);\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { name });\n }\n}\nfunction joinParams(format, params) {\n return \"(\" + params.map((p) => p.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n}\nexport class ErrorFragment extends NamedFragment {\n constructor(guard, name, inputs) {\n super(guard, FragmentType.error, name, inputs);\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"error\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n return result.join(\" \");\n }\n static fromString(text) {\n return ErrorFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new ErrorFragment(_guard, name, inputs);\n }\n}\nexport class EventFragment extends NamedFragment {\n constructor(guard, name, inputs, anonymous) {\n super(guard, FragmentType.event, name, inputs);\n defineProperties(this, { anonymous });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"event\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash && this.anonymous) {\n result.push(\"anonymous\");\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return EventFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"event\", tokens);\n const inputs = consumeParams(tokens, true);\n const anonymous = !!consumeKeywords(tokens, setify([\"anonymous\"])).has(\"anonymous\");\n consumeEoi(tokens);\n return new EventFragment(_guard, name, inputs, anonymous);\n }\n}\nexport class ConstructorFragment extends Fragment {\n constructor(guard, type, inputs, payable, gas) {\n super(guard, type, inputs);\n defineProperties(this, { payable, gas });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", \"UNSUPPORTED_OPERATION\", {\n operation: \"format(sighash)\"\n });\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: (this.payable ? \"payable\" : \"undefined\"),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [`constructor${joinParams(format, this.inputs)}`];\n result.push((this.payable) ? \"payable\" : \"nonpayable\");\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return ConstructorFragment.fromTokens(lex(text));\n }\n static fromObject(obj) {\n throw new Error(\"TODO\");\n }\n static fromTokens(tokens) {\n consumeKeywords(tokens, setify([\"constructor\"]));\n const inputs = consumeParams(tokens);\n const payable = !!consumeKeywords(tokens, setify([\"payable\"])).has(\"payable\");\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new ConstructorFragment(_guard, FragmentType.constructor, inputs, payable, gas);\n }\n}\nexport class FunctionFragment extends NamedFragment {\n constructor(guard, name, stateMutability, inputs, outputs, gas) {\n super(guard, FragmentType.function, name, inputs);\n outputs = Object.freeze(outputs.slice());\n const constant = (stateMutability === \"view\" || stateMutability === \"pure\");\n const payable = (stateMutability === \"payable\");\n defineProperties(this, { constant, gas, outputs, payable, stateMutability });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format))),\n outputs: this.outputs.map((o) => JSON.parse(o.format(format))),\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"function\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash) {\n if (this.stateMutability !== \"nonpayable\") {\n result.push(this.stateMutability);\n }\n if (this.outputs && this.outputs.length) {\n result.push(\"returns\");\n result.push(joinParams(format, this.outputs));\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return FunctionFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"function\", tokens);\n const inputs = consumeParams(tokens);\n const mutability = consumeMutability(tokens);\n let outputs = [];\n if (consumeKeywords(tokens, setify([\"returns\"])).has(\"returns\")) {\n outputs = consumeParams(tokens);\n }\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new FunctionFragment(_guard, name, mutability, inputs, outputs, gas);\n }\n}\nexport class StructFragment extends NamedFragment {\n format() {\n throw new Error(\"@TODO\");\n }\n static fromString(text) {\n return StructFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"struct\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new StructFragment(_guard, FragmentType.struct, name, inputs);\n }\n}\n//# sourceMappingURL=fragments.js.map","export const version = \"@ethersproject/math@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\nconst nibbles = \"0123456789abcdef\";\nconst BN_0 = BigInt(0);\n// Converts a value to a BigInt, including big endian data\nexport function toBigInt(_value) {\n if (_value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of _value) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return logger.getBigInt(_value, \"value\");\n}\nexport function toNumber(_value) {\n const value = toBigInt(_value);\n if (value < -maxValue || value > maxValue) {\n logger.throwArgumentError(\"overflow\", \"value\", _value);\n }\n return Number(value);\n}\n// Converts value to hex, optionally padding on the left to width bytes\nexport function toHex(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n let result = value.toString(16);\n if (_width == null) {\n // Ensure the value is of even length\n if (result.length % 2) {\n result = \"0\" + result;\n }\n }\n else {\n const width = logger.getNumber(_width, \"width\");\n if (width * 2 < result.length) {\n throw new Error(`value ${value} exceeds width ${width}`);\n }\n // Pad the value to the required width\n while (result.length < (width * 2)) {\n result = \"0\" + result;\n }\n }\n return \"0x\" + result;\n}\nexport function toArray(_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n//# sourceMappingURL=convert.js.map","import { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\n// Convert a value from a twos-compliment value\nexport function fromTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n // Top bit set; treat as a negative value\n if (value >> (width - BN_1)) {\n const mask = (BN_1 << width) - BN_1;\n return -(((~value) & mask) + BN_1);\n }\n return value;\n}\n// Convert value to a twos-compliment value\nexport function toTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n if (value < BN_0) {\n const mask = (BN_1 << width) - BN_1;\n return ((~(-value)) & mask) + BN_1;\n }\n return value;\n}\nexport function mask(_value, _bits) {\n const value = logger.getBigInt(_value, \"value\");\n const bits = logger.getBigInt(_bits, \"bits\");\n return value & ((BN_1 << bits) - BN_1);\n}\n//# sourceMappingURL=maths.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FixedNumber_instances, _FixedNumber_value, _FixedNumber_checkFormat;\nimport { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nimport { fromTwos, toTwos } from \"./maths.js\";\nconst _constructorGuard = {};\n//const Zero = BigInt(0);\nconst NegativeOne = BigInt(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, \"NUMERIC_FAULT\", params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\" || decimals < 0 || decimals > 256 || decimals % 1) {\n logger.throwArgumentError(\"invalid decimal length\", \"decimals\", decimals);\n }\n return BigInt(\"1\" + zeros.substring(0, decimals));\n}\nexport function formatFixed(_value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n let value = logger.getBigInt(_value, \"value\");\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n const multiplierStr = String(multiplier);\n const negative = (value < 0);\n if (negative) {\n value *= NegativeOne;\n }\n let fraction = String(value % multiplier);\n // Make sure there are enough place-holders\n while (fraction.length < multiplierStr.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n while (fraction.length > 1 && fraction.substring(fraction.length - 1) === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n let result = String(value / multiplier);\n if (multiplierStr.length !== 1) {\n result += \".\" + fraction;\n }\n if (negative) {\n result = \"-\" + result;\n }\n return result;\n}\nexport function parseFixed(value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\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 let whole = (comps[0] || \"0\"), fraction = (comps[1] || \"0\");\n // Trim trialing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > String(multiplier).length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < String(multiplier).length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigInt(whole);\n const fractionValue = BigInt(fraction);\n let wei = (wholeValue * multiplier) + fractionValue;\n if (negative) {\n wei *= NegativeOne;\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n return logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\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 if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n _FixedNumber_instances.add(this);\n //#hex: string;\n _FixedNumber_value.set(this, void 0);\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.format = FixedFormat.from(format);\n //this.#hex = hex;\n __classPrivateFieldSet(this, _FixedNumber_value, value, \"f\");\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n addUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a + b, this.format.decimals, this.format);\n }\n subUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a - b, this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * b) / this.format._multiplier, this.format.decimals, this.format);\n }\n divUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * this.format._multiplier) / b, this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0.0\" || __classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0\");\n }\n isNegative() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\")[0] === \"-\");\n }\n toString() { return __classPrivateFieldGet(this, _FixedNumber_value, \"f\"); }\n toHexString(_width) {\n throw new Error(\"TODO\");\n /*\n return toHex();\n if (width == null) { return this.#hex; }\n\n const width = logger.getNumeric(_width);\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n\n const hex = BigNumber.from(this.#hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return zeroPadLeft(hex, width / 8);\n */\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), format);\n }\n static fromValue(value, decimals = 0, format = \"fixed\") {\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format = \"fixed\") {\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric < 0) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n const hex = (function () {\n if (fixedFormat.signed) {\n return toHex(toTwos(numeric, fixedFormat.width));\n }\n return toHex(numeric, fixedFormat.width / 8);\n })();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(_value, format = \"fixed\") {\n const value = logger.getBytes(_value, \"value\");\n const fixedFormat = FixedFormat.from(format);\n if (value.length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = toBigInt(value);\n if (fixedFormat.signed) {\n numeric = fromTwos(numeric, fixedFormat.width);\n }\n const hex = toHex(toTwos(numeric, (fixedFormat.signed ? 0 : 1) + fixedFormat.width));\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (value instanceof Uint8Array) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== \"INVALID_ARGUMENT\") {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\n_FixedNumber_value = new WeakMap(), _FixedNumber_instances = new WeakSet(), _FixedNumber_checkFormat = function _FixedNumber_checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n};\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","import { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nconst Alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nlet Lookup = null;\nfunction getAlpha(letter) {\n if (Lookup == null) {\n Lookup = {};\n for (let i = 0; i < Alphabet.length; i++) {\n Lookup[Alphabet[i]] = BigInt(i);\n }\n }\n const result = Lookup[letter];\n if (result == null) {\n logger.throwArgumentError(`invalid base58 value`, \"letter\", letter);\n }\n return result;\n}\nconst BN_0 = BigInt(0);\nconst BN_58 = BigInt(58);\nexport function encodeBase58(_value) {\n let value = toBigInt(logger.getBytes(_value));\n let result = \"\";\n while (value) {\n result = Alphabet[Number(value % BN_58)] + result;\n value /= BN_58;\n }\n return result;\n}\nexport function decodeBase58(value) {\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result *= BN_58;\n result += getAlpha(value[i]);\n }\n return toHex(result);\n}\n//# sourceMappingURL=base58.js.map","import { formatFixed, parseFixed } from \"./fixednumber.js\";\nimport { logger } from \"./logger.js\";\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\nexport function formatUnits(value, unit) {\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return formatFixed(value, (unit != null) ? unit : 18);\n}\nexport function parseUnits(value, unit) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return parseFixed(value, (unit != null) ? unit : 18);\n}\nexport function formatEther(wei) {\n return formatUnits(wei, 18);\n}\nexport function parseEther(ether) {\n return parseUnits(ether, 18);\n}\n//# sourceMappingURL=units.js.map","export function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\n//# sourceMappingURL=check.js.map","export const version = \"@ethersproject/bytes@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { isBytesLike } from \"./check.js\";\nimport { logger } from \"./logger.js\";\nlet BN_8 = null;\nlet BN_255 = null;\ntry {\n BN_8 = BigInt(\"8\");\n BN_255 = BigInt(\"255\");\n}\ncatch (error) {\n console.log(\"Unsupported bigint\", error);\n}\nfunction isHexable(value) {\n return (value && typeof (value.toHexString) === \"function\");\n}\nexport function arrayify(data) {\n if (data == null) {\n logger.throwArgumentError(\"cannot arrayify nullish\", \"data\", data);\n }\n if (typeof (data) === \"number\") {\n let v = logger.getNumber(data, \"data\");\n const result = [];\n while (v) {\n result.unshift(v & 0xff);\n v = parseInt(String(v / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (BN_8 && typeof (data) === \"bigint\") {\n const result = [];\n while (data) {\n result.unshift(Number(data & BN_255));\n data >>= BN_8;\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (isHexable(data)) {\n return arrayify(data.toHexString());\n }\n if (typeof (data) === \"string\") {\n let hex = data;\n //if (options.allowMissingPrefix && hex.substring(0, 2) !== \"0x\") {\n // hex = \"0x\" + hex;\n //}\n if (!hex.match(/^0x[0-9a-f]*$/i)) {\n throw new RangeError(`invalid hex data string (${JSON.stringify(data)})`);\n }\n const result = [];\n for (let i = 2; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return new Uint8Array(result);\n }\n if (data instanceof Uint8Array) {\n return new Uint8Array(data);\n }\n throw new TypeError(`cannot arrayify ${JSON.stringify(data)}`);\n}\nexport function _noCopyArrayify(data) {\n if (!isBytesLike(data)) {\n logger.throwArgumentError(\"invalid BytesLike value\", \"data\", data);\n } // @TODO: ArgumentE>\n if (data instanceof Uint8Array) {\n return data;\n }\n return arrayify(data);\n}\n//# sourceMappingURL=array.js.map","import { logger } from \"./logger.js\";\nexport function decodeBase64(textData) {\n return new Uint8Array(Buffer.from(textData, \"base64\"));\n}\n;\nexport function encodeBase64(data) {\n return Buffer.from(logger.getBytes(data, \"data\")).toString(\"base64\");\n}\n//# sourceMappingURL=base64.js.map","import { arrayify, _noCopyArrayify } from \"./array.js\";\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(data) {\n const bytes = _noCopyArrayify(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\nexport function quantity(value) {\n let result = hexlify(arrayify(value)).substring(2);\n while (result.substring(0, 1) === \"0\") {\n result = result.substring(1);\n }\n if (result === \"\") {\n result = \"0\";\n }\n return \"0x\" + result;\n}\n//# sourceMappingURL=hex.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { isHexString } from \"./check.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return _noCopyArrayify(data).length;\n}\nexport function dataSlice(data, start, end) {\n const bytes = _noCopyArrayify(data);\n if (end != null && end > bytes.length) {\n logger.throwError(\"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.substring(0, 2) == \"00\") {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\n//# sourceMappingURL=data.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nfunction zeroPad(data, length, left) {\n const bytes = _noCopyArrayify(data);\n if (length < bytes.length) {\n logger.throwError(\"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n }\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=pad.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Result_instances, _Result_indices, _Result_throwError, _Writer_instances, _Writer_data, _Writer_dataLength, _Writer_writeData, _Reader_instances, _Reader_data, _Reader_offset, _Reader_peekBytes;\nimport { toArray, toBigInt, toNumber } from \"@ethersproject/math\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nexport const WordSize = 32;\nconst Padding = new Uint8Array(WordSize);\n// Properties used to immediate pass through to the underlying object\n// - `then` is used to detect if an object is a Promise for await\nconst passProperties = [\"then\"];\nconst _guard = {};\nexport class Result extends Array {\n constructor(guard, items, keys) {\n logger.assertPrivate(guard, _guard, \"Result\");\n super(...items);\n _Result_instances.add(this);\n _Result_indices.set(this, void 0);\n // Name lookup table\n __classPrivateFieldSet(this, _Result_indices, new Map(), \"f\");\n if (keys) {\n keys.forEach((key, index) => {\n if (key == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _Result_indices, \"f\").has(key)) {\n (__classPrivateFieldGet(this, _Result_indices, \"f\").get(key)).push(index);\n }\n else {\n __classPrivateFieldGet(this, _Result_indices, \"f\").set(key, [index]);\n }\n });\n }\n Object.freeze(this);\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"string\") {\n if (prop.match(/^[0-9]+$/)) {\n const index = logger.getNumber(prop, \"%index\");\n if (index < 0 || index >= this.length) {\n throw new RangeError(\"out of result range\");\n }\n const item = target[index];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `index ${index}`, item);\n }\n return item;\n }\n // Pass important checks (like `then` for Promise) through\n if (prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n // Something that could be a result keyword value\n if (!(prop in target)) {\n return target.getValue(prop);\n }\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n }\n slice(start, end) {\n if (start == null) {\n start = 0;\n }\n if (end == null) {\n end = this.length;\n }\n const result = [];\n for (let i = start; i < end; i++) {\n let value;\n try {\n value = this[i];\n }\n catch (error) {\n value = error.error;\n }\n result.push(value);\n }\n return result;\n }\n getValue(name) {\n const index = __classPrivateFieldGet(this, _Result_indices, \"f\").get(name);\n if (index != null && index.length === 1) {\n const item = this[index[0]];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `property ${JSON.stringify(name)}`, item);\n }\n return item;\n }\n throw new Error(`no named parameter: ${JSON.stringify(name)}`);\n }\n static fromItems(items, keys) {\n return new Result(_guard, items, keys);\n }\n}\n_Result_indices = new WeakMap(), _Result_instances = new WeakSet(), _Result_throwError = function _Result_throwError(name, error) {\n const wrapped = new Error(`deferred error during ABI decoding triggered accessing ${name}`);\n wrapped.error = error;\n throw wrapped;\n};\nexport function checkResultErrors(result) {\n // Find the first error (if any)\n const errors = [];\n const checkErrors = function (path, object) {\n if (!Array.isArray(object)) {\n return;\n }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n try {\n checkErrors(childPath, object[key]);\n }\n catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n };\n checkErrors([], result);\n return errors;\n}\nfunction getValue(value) {\n let bytes = toArray(value);\n if (bytes.length > WordSize) {\n logger.throwError(\"value out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes,\n length: WordSize,\n offset: bytes.length\n });\n }\n if (bytes.length !== WordSize) {\n bytes = arrayify(concat([Padding.slice(bytes.length % WordSize), bytes]));\n }\n return bytes;\n}\nexport class Coder {\n constructor(name, type, localName, dynamic) {\n defineProperties(this, { name, type, localName, dynamic }, {\n name: \"string\", type: \"string\", localName: \"string\", dynamic: \"boolean\"\n });\n }\n _throwError(message, value) {\n return logger.throwArgumentError(message, this.localName, value);\n }\n}\nexport class Writer {\n constructor() {\n _Writer_instances.add(this);\n // An array of WordSize lengthed objects to concatenation\n _Writer_data.set(this, void 0);\n _Writer_dataLength.set(this, void 0);\n __classPrivateFieldSet(this, _Writer_data, [], \"f\");\n __classPrivateFieldSet(this, _Writer_dataLength, 0, \"f\");\n }\n get data() {\n return concat(__classPrivateFieldGet(this, _Writer_data, \"f\"));\n }\n get length() { return __classPrivateFieldGet(this, _Writer_dataLength, \"f\"); }\n appendWriter(writer) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, arrayify(writer.data));\n }\n // Arrayish item; pad on the right to *nearest* WordSize\n writeBytes(value) {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % WordSize;\n if (paddingOffset) {\n bytes = arrayify(concat([bytes, Padding.slice(paddingOffset)]));\n }\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, bytes);\n }\n // Numeric item; pad on the left *to* WordSize\n writeValue(value) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, getValue(value));\n }\n // Inserts a numeric place-holder, returning a callback that can\n // be used to asjust the value later\n writeUpdatableValue() {\n const offset = __classPrivateFieldGet(this, _Writer_data, \"f\").length;\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(Padding);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + WordSize, \"f\");\n return (value) => {\n __classPrivateFieldGet(this, _Writer_data, \"f\")[offset] = getValue(value);\n };\n }\n}\n_Writer_data = new WeakMap(), _Writer_dataLength = new WeakMap(), _Writer_instances = new WeakSet(), _Writer_writeData = function _Writer_writeData(data) {\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(data);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + data.length, \"f\");\n return data.length;\n};\nexport class Reader {\n constructor(data, allowLoose) {\n _Reader_instances.add(this);\n _Reader_data.set(this, void 0);\n _Reader_offset.set(this, void 0);\n defineProperties(this, { allowLoose: !!allowLoose });\n __classPrivateFieldSet(this, _Reader_data, arrayify(data), \"f\");\n __classPrivateFieldSet(this, _Reader_offset, 0, \"f\");\n }\n get data() { return hexlify(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n get dataLength() { return __classPrivateFieldGet(this, _Reader_data, \"f\").length; }\n get consumed() { return __classPrivateFieldGet(this, _Reader_offset, \"f\"); }\n get bytes() { return new Uint8Array(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n // Create a sub-reader with the same underlying data, but offset\n subReader(offset) {\n return new Reader(__classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\") + offset), this.allowLoose);\n }\n // Read bytes\n readBytes(length, loose) {\n let bytes = __classPrivateFieldGet(this, _Reader_instances, \"m\", _Reader_peekBytes).call(this, 0, length, !!loose);\n __classPrivateFieldSet(this, _Reader_offset, __classPrivateFieldGet(this, _Reader_offset, \"f\") + bytes.length, \"f\");\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n // Read a numeric values\n readValue() {\n return toBigInt(this.readBytes(WordSize));\n }\n readIndex() {\n return toNumber(this.readBytes(WordSize));\n }\n}\n_Reader_data = new WeakMap(), _Reader_offset = new WeakMap(), _Reader_instances = new WeakSet(), _Reader_peekBytes = function _Reader_peekBytes(offset, length, loose) {\n let alignedLength = Math.ceil(length / WordSize) * WordSize;\n if (__classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength > __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n if (this.allowLoose && loose && __classPrivateFieldGet(this, _Reader_offset, \"f\") + length <= __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n alignedLength = length;\n }\n else {\n logger.throwError(\"data out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: arrayify(__classPrivateFieldGet(this, _Reader_data, \"f\")),\n length: __classPrivateFieldGet(this, _Reader_data, \"f\").length,\n offset: __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength\n });\n }\n }\n return __classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\"), __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength);\n};\n//# sourceMappingURL=abstract-coder.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianess.\n// So, just to be sure not to corrupt anything.\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nexport function bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('deadbeef')\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte))\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// Currently avoid insertion of polyfills with packers (browserify/webpack/etc)\n// But setTimeout is pretty slow, maybe worth to investigate howto do minimal polyfill here\nexport const nextTick = (() => {\n const nodeRequire = typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n try {\n if (nodeRequire) {\n const { setImmediate } = nodeRequire('timers');\n return () => new Promise((resolve) => setImmediate(resolve));\n }\n }\n catch (e) { }\n return () => new Promise((resolve) => setTimeout(resolve, 0));\n})();\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\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)\n continue;\n await nextTick();\n ts += diff;\n }\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nexport function assertNumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexport function assertBool(b) {\n if (typeof b !== 'boolean') {\n throw new Error(`Expected boolean, not ${b}`);\n }\n}\nexport function assertBytes(bytes, ...lengths) {\n if (bytes instanceof Uint8Array && (!lengths.length || lengths.includes(bytes.length))) {\n return;\n }\n throw new TypeError(`Expected ${lengths} bytes, not ${typeof bytes} with length=${bytes.length}`);\n}\nexport function assertHash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n assertNumber(hash.outputLen);\n assertNumber(hash.blockLen);\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(def, _opts) {\n if (_opts !== undefined && (typeof _opts !== 'object' || !isPlainObject(_opts)))\n throw new TypeError('Options should be object or undefined');\n const opts = Object.assign(def, _opts);\n return opts;\n}\nexport function wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n return new Uint8Array(crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\n","import { assertHash, Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nclass HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (!(this.iHash instanceof Hash))\n throw new TypeError('Expected instance of class which extends utils.Hash');\n const blockLen = (this.blockLen = this.iHash.blockLen);\n this.outputLen = this.iHash.outputLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > this.iHash.blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length !== this.outputLen)\n throw new Error('HMAC: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n","import { hmac } from './hmac.js';\n// prettier-ignore\nimport { createView, toBytes, assertNumber, assertHash, checkOpts, asyncLoop } from './utils.js';\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n assertHash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n assertNumber(c);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n if (c < 1)\n throw new Error('PBKDF2: iterations (c) should be >= 1');\n const password = toBytes(_password);\n const salt = toBytes(_salt);\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n u.fill(0);\n return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n */\nexport function pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexport async function pbkdf2Async(hash, password, salt, opts) {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await asyncLoop(c - 1, asyncTick, (i) => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n","import { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n const { view, buffer, blockLen, finished } = this;\n if (finished)\n throw new Error('digest() was already called');\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 // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length < this.outputLen)\n throw new Error('_Sha2: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // NOTE: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64bit of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n this.get().forEach((v, i) => oview.setUint32(4 * i, v, isLE));\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = wrapConstructor(() => new SHA256());\n","const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\nexport function fromBig(n, le = false) {\n if (le)\n 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}\nexport function split(lst, 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}\nexport const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nexport const shrSH = (h, l, s) => h >>> s;\nexport const shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nexport const rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexport const rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexport const rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nexport const rotr32H = (h, l) => l;\nexport const rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nexport const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexport const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexport const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\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.\nexport function add(Ah, Al, Bh, Bl) {\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\nexport const add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexport const add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexport const add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexport const add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexport const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexport const add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n","import { SHA2 } from './_sha2.js';\nimport * as u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = wrapConstructor(() => new SHA512());\nexport const sha512_256 = wrapConstructor(() => new SHA512_256());\nexport const sha384 = wrapConstructor(() => new SHA384());\n","export const version = \"@ethersproject/crypto@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","/* Browser Crypto Shims */\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { pbkdf2 } from \"@noble/hashes/pbkdf2\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nimport { logger } from \"./logger.js\";\nfunction getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst anyGlobal = getGlobal();\nlet crypto = anyGlobal.crypto || anyGlobal.msCrypto;\nexport function createHash(algo) {\n switch (algo) {\n case \"sha256\": return sha256.create();\n case \"sha512\": return sha512.create();\n }\n return logger.throwArgumentError(\"invalid hashing algorithm name\", \"algorithm\", algo);\n}\nexport function createHmac(_algo, key) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid hmac algorithm\", \"algorithm\", _algo);\n }\n return hmac.create(algo, key);\n}\nexport function pbkdf2Sync(password, salt, iterations, keylen, _algo) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid pbkdf2 algorithm\", \"algorithm\", _algo);\n }\n return pbkdf2(algo, password, salt, { c: iterations, dkLen: keylen });\n}\nexport function randomBytes(length) {\n if (crypto == null) {\n return logger.throwError(\"platform does not support secure random numbers\", \"UNSUPPORTED_OPERATION\", {\n operation: \"randomBytes\"\n });\n }\n if (length <= 0 || length > 1024 || (length % 1) || length != length) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return result;\n}\n//# sourceMappingURL=crypto-browser.js.map","import { createHmac } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _computeHmac = function (algorithm, key, data) {\n return \"0x\" + createHmac(algorithm, key).update(data).digest(\"hex\");\n};\nlet __computeHmac = _computeHmac;\nexport function computeHmac(algorithm, _key, _data) {\n const key = logger.getBytes(_key, \"key\");\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__computeHmac(algorithm, key, data));\n}\ncomputeHmac._ = _computeHmac;\ncomputeHmac.lock = function () { locked = true; };\ncomputeHmac.register = function (func) {\n if (locked) {\n throw new Error(\"computeHmac is locked\");\n }\n __computeHmac = func;\n};\nObject.freeze(computeHmac);\n//# sourceMappingURL=hmac.js.map","import * as u64 from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapConstructorWithOpts, assertNumber, } from './utils.js';\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = 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)\n t ^= _1n << ((_1n << BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = u64.split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => s > 32 ? u64.rotlBH(h, l, s) : u64.rotlSH(h, l, s);\nconst rotlL = (h, l, s) => s > 32 ? u64.rotlBL(h, l, s) : u64.rotlSL(h, l, s);\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 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++)\n 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++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n 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}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n assertNumber(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 keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (this.finished)\n throw new Error('digest() was already called');\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++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n 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)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array))\n throw new Error('Keccak: invalid output buffer');\n this.finish();\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= this.blockLen)\n this.keccak();\n const take = Math.min(this.blockLen - this.posOut, len - pos);\n out.set(this.state.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n assertNumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n if (out.length < this.outputLen)\n throw new Error('Keccak: invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finish();\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) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (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}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = gen(0x06, 136, 256 / 8);\nexport const sha3_384 = gen(0x06, 104, 384 / 8);\nexport const sha3_512 = gen(0x06, 72, 512 / 8);\nexport const keccak_224 = 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 = gen(0x01, 136, 256 / 8);\nexport const keccak_384 = gen(0x01, 104, 384 / 8);\nexport const keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen !== undefined ? opts.dkLen : outputLen, true));\nexport const shake128 = genShake(0x1f, 168, 128 / 8);\nexport const shake256 = genShake(0x1f, 136, 256 / 8);\n","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\nexport function keccak256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","import { SHA2 } from './_sha2.js';\nimport { wrapConstructor } from './utils.js';\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\nconst Rho = new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = Uint8Array.from({ length: 16 }, (_, i) => i);\nconst Pi = Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n for (let j of [idxL, idxR])\n j.push(j[i].map((k) => Rho[k]));\nconst shifts = [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = new Uint32Array([0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]);\nconst Kr = new Uint32Array([0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]);\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | (word >>> (32 - shift));\n// It's called f() in spec.\nfunction f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n else if (group === 1)\n return (x & y) | (~x & z);\n else if (group === 2)\n return (x | ~y) ^ z;\n else if (group === 3)\n return (x & z) | (y & ~z);\n else\n return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst BUF = new Uint32Array(16);\nexport class RIPEMD160 extends SHA2 {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + f(group, bl, cl, dl) + BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + f(rGroup, br, cr, dr) + BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n BUF.fill(0);\n }\n destroy() {\n this.destroyed = true;\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a hash function from 1990s.\n * @param message - msg that would be hashed\n */\nexport const ripemd160 = wrapConstructor(() => new RIPEMD160());\n","import { ripemd160 as noble_ripemd160 } from \"@noble/hashes/ripemd160\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _ripemd160 = function (data) {\n return noble_ripemd160(data);\n};\nlet __ripemd160 = _ripemd160;\nexport function ripemd160(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__ripemd160(data));\n}\nripemd160._ = _ripemd160;\nripemd160.lock = function () { locked = true; };\nripemd160.register = function (func) {\n if (locked) {\n throw new TypeError(\"ripemd160 is locked\");\n }\n __ripemd160 = func;\n};\nObject.freeze(ripemd160);\n//# sourceMappingURL=ripemd160.js.map","import { pbkdf2Sync } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _pbkdf2 = function (password, salt, iterations, keylen, algo) {\n return pbkdf2Sync(password, salt, iterations, keylen, algo);\n};\nlet __pbkdf2 = _pbkdf2;\nexport function pbkdf2(_password, _salt, iterations, keylen, algo) {\n const password = logger.getBytes(_password, \"password\");\n const salt = logger.getBytes(_salt, \"salt\");\n return hexlify(__pbkdf2(password, salt, iterations, keylen, algo));\n}\npbkdf2._ = _pbkdf2;\npbkdf2.lock = function () { locked = true; };\npbkdf2.register = function (func) {\n if (locked) {\n throw new Error(\"pbkdf2 is locked\");\n }\n __pbkdf2 = func;\n};\nObject.freeze(pbkdf2);\n//# sourceMappingURL=pbkdf2.js.map","import { randomBytes as crypto_random } from \"crypto\"; /*-browser*/\nlet locked = false;\nconst _randomBytes = function (length) {\n return new Uint8Array(crypto_random(length));\n};\nlet __randomBytes = _randomBytes;\nexport function randomBytes(length) {\n return __randomBytes(length);\n}\nrandomBytes._ = _randomBytes;\nrandomBytes.lock = function () { locked = true; };\nrandomBytes.register = function (func) {\n if (locked) {\n throw new Error(\"random is locked\");\n }\n __randomBytes = func;\n};\nObject.freeze(randomBytes);\n//# sourceMappingURL=random.js.map","import { sha256 } from './sha256.js';\nimport { pbkdf2 } from './pbkdf2.js';\nimport { assertNumber, asyncLoop, checkOpts, u32 } from './utils.js';\n// RFC 7914 Scrypt KDF\n// Left rotate for uint32\nconst rotl = (a, b) => (a << b) | (a >>> (32 - b));\n// The main Scrypt loop: uses Salsa extensively.\n// Six versions of the function were tried, this is the fastest one.\n// prettier-ignore\nfunction XorAndSalsa(prev, pi, input, ii, out, oi) {\n // Based on https://cr.yp.to/salsa20.html\n // Xor blocks\n let y00 = prev[pi++] ^ input[ii++], y01 = prev[pi++] ^ input[ii++];\n let y02 = prev[pi++] ^ input[ii++], y03 = prev[pi++] ^ input[ii++];\n let y04 = prev[pi++] ^ input[ii++], y05 = prev[pi++] ^ input[ii++];\n let y06 = prev[pi++] ^ input[ii++], y07 = prev[pi++] ^ input[ii++];\n let y08 = prev[pi++] ^ input[ii++], y09 = prev[pi++] ^ input[ii++];\n let y10 = prev[pi++] ^ input[ii++], y11 = prev[pi++] ^ input[ii++];\n let y12 = prev[pi++] ^ input[ii++], y13 = prev[pi++] ^ input[ii++];\n let y14 = prev[pi++] ^ input[ii++], y15 = prev[pi++] ^ input[ii++];\n // Save state to temporary variables (salsa)\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n // Main loop (salsa)\n for (let i = 0; i < 8; i += 2) {\n x04 ^= rotl(x00 + x12 | 0, 7);\n x08 ^= rotl(x04 + x00 | 0, 9);\n x12 ^= rotl(x08 + x04 | 0, 13);\n x00 ^= rotl(x12 + x08 | 0, 18);\n x09 ^= rotl(x05 + x01 | 0, 7);\n x13 ^= rotl(x09 + x05 | 0, 9);\n x01 ^= rotl(x13 + x09 | 0, 13);\n x05 ^= rotl(x01 + x13 | 0, 18);\n x14 ^= rotl(x10 + x06 | 0, 7);\n x02 ^= rotl(x14 + x10 | 0, 9);\n x06 ^= rotl(x02 + x14 | 0, 13);\n x10 ^= rotl(x06 + x02 | 0, 18);\n x03 ^= rotl(x15 + x11 | 0, 7);\n x07 ^= rotl(x03 + x15 | 0, 9);\n x11 ^= rotl(x07 + x03 | 0, 13);\n x15 ^= rotl(x11 + x07 | 0, 18);\n x01 ^= rotl(x00 + x03 | 0, 7);\n x02 ^= rotl(x01 + x00 | 0, 9);\n x03 ^= rotl(x02 + x01 | 0, 13);\n x00 ^= rotl(x03 + x02 | 0, 18);\n x06 ^= rotl(x05 + x04 | 0, 7);\n x07 ^= rotl(x06 + x05 | 0, 9);\n x04 ^= rotl(x07 + x06 | 0, 13);\n x05 ^= rotl(x04 + x07 | 0, 18);\n x11 ^= rotl(x10 + x09 | 0, 7);\n x08 ^= rotl(x11 + x10 | 0, 9);\n x09 ^= rotl(x08 + x11 | 0, 13);\n x10 ^= rotl(x09 + x08 | 0, 18);\n x12 ^= rotl(x15 + x14 | 0, 7);\n x13 ^= rotl(x12 + x15 | 0, 9);\n x14 ^= rotl(x13 + x12 | 0, 13);\n x15 ^= rotl(x14 + x13 | 0, 18);\n }\n // Write output (salsa)\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\nfunction BlockMix(input, ii, out, oi, r) {\n // The block B is r 128-byte chunks (which is equivalent of 2r 64-byte chunks)\n let head = oi + 0;\n let tail = oi + 16 * r;\n for (let i = 0; i < 16; i++)\n out[tail + i] = input[ii + (2 * r - 1) * 16 + i]; // X ← B[2r−1]\n for (let i = 0; i < r; i++, head += 16, ii += 16) {\n // We write odd & even Yi at same time. Even: 0bXXXXX0 Odd: 0bXXXXX1\n XorAndSalsa(out, tail, input, ii, out, head); // head[i] = Salsa(blockIn[2*i] ^ tail[i-1])\n if (i > 0)\n tail += 16; // First iteration overwrites tmp value in tail\n XorAndSalsa(out, head, input, (ii += 16), out, tail); // tail[i] = Salsa(blockIn[2*i+1] ^ head[i])\n }\n}\n// Common prologue and epilogue for sync/async functions\nfunction scryptInit(password, salt, _opts) {\n // Maxmem - 1GB+1KB by default\n const opts = checkOpts({\n dkLen: 32,\n asyncTick: 10,\n maxmem: 1024 ** 3 + 1024,\n }, _opts);\n const { N, r, p, dkLen, asyncTick, maxmem, onProgress } = opts;\n assertNumber(N);\n assertNumber(r);\n assertNumber(p);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n assertNumber(maxmem);\n if (onProgress !== undefined && typeof onProgress !== 'function')\n throw new Error('progressCb should be function');\n const blockSize = 128 * r;\n const blockSize32 = blockSize / 4;\n if (N <= 1 || (N & (N - 1)) !== 0 || N >= 2 ** (blockSize / 8) || N > 2 ** 32) {\n // NOTE: we limit N to be less than 2**32 because of 32 bit variant of Integrify function\n // There is no JS engines that allows alocate more than 4GB per single Uint8Array for now, but can change in future.\n throw new Error('Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32');\n }\n if (p < 0 || p > ((2 ** 32 - 1) * 32) / blockSize) {\n throw new Error('Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)');\n }\n if (dkLen < 0 || dkLen > (2 ** 32 - 1) * 32) {\n throw new Error('Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32');\n }\n const memUsed = blockSize * (N + p);\n if (memUsed > maxmem) {\n throw new Error(`Scrypt: parameters too large, ${memUsed} (128 * r * (N + p)) > ${maxmem} (maxmem)`);\n }\n // [B0...Bp−1] ← PBKDF2HMAC-SHA256(Passphrase, Salt, 1, blockSize*ParallelizationFactor)\n // Since it has only one iteration there is no reason to use async variant\n const B = pbkdf2(sha256, password, salt, { c: 1, dkLen: blockSize * p });\n const B32 = u32(B);\n // Re-used between parallel iterations. Array(iterations) of B\n const V = u32(new Uint8Array(blockSize * N));\n const tmp = u32(new Uint8Array(blockSize));\n let blockMixCb = () => { };\n if (onProgress) {\n const totalBlockMix = 2 * N * p;\n // Invoke callback if progress changes from 10.01 to 10.02\n // Allows to draw smooth progress bar on up to 8K screen\n const callbackPer = Math.max(Math.floor(totalBlockMix / 10000), 1);\n let blockMixCnt = 0;\n blockMixCb = () => {\n blockMixCnt++;\n if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix))\n onProgress(blockMixCnt / totalBlockMix);\n };\n }\n return { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick };\n}\nfunction scryptOutput(password, dkLen, B, V, tmp) {\n const res = pbkdf2(sha256, password, B, { c: 1, dkLen });\n B.fill(0);\n V.fill(0);\n tmp.fill(0);\n return res;\n}\n/**\n * Scrypt KDF from RFC 7914.\n * @param password - pass\n * @param salt - salt\n * @param opts - parameters\n * - `N` is cpu/mem work factor (power of 2 e.g. 2**18)\n * - `r` is block size (8 is common), fine-tunes sequential memory read size and performance\n * - `p` is parallelization factor (1 is common)\n * - `dkLen` is output key length in bytes e.g. 32.\n * - `asyncTick` - (default: 10) max time in ms for which async function can block execution\n * - `maxmem` - (default: `1024 ** 3 + 1024` aka 1GB+1KB). A limit that the app could use for scrypt\n * - `onProgress` - callback function that would be executed for progress report\n * @returns Derived key\n */\nexport function scrypt(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n for (let i = 0, pos = 0; i < N - 1; i++) {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n }\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n for (let i = 0; i < N; i++) {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n }\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n/**\n * Scrypt KDF from RFC 7914.\n */\nexport async function scryptAsync(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n let pos = 0;\n await asyncLoop(N - 1, asyncTick, (i) => {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n });\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n await asyncLoop(N, asyncTick, (i) => {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n });\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n","import { scrypt as _nobleSync, scryptAsync as _nobleAsync } from \"@noble/hashes/scrypt\";\nimport { hexlify as H } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet lockedSync = false, lockedAsync = false;\nconst _scryptAsync = async function (passwd, salt, N, r, p, dkLen, onProgress) {\n return await _nobleAsync(passwd, salt, { N, r, p, dkLen, onProgress });\n};\nconst _scryptSync = function (passwd, salt, N, r, p, dkLen) {\n return _nobleSync(passwd, salt, { N, r, p, dkLen });\n};\nlet __scryptAsync = _scryptAsync;\nlet __scryptSync = _scryptSync;\nexport async function scrypt(_passwd, _salt, N, r, p, dkLen, progress) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(await __scryptAsync(passwd, salt, N, r, p, dkLen, progress));\n}\nscrypt._ = _scryptAsync;\nscrypt.lock = function () { lockedAsync = true; };\nscrypt.register = function (func) {\n if (lockedAsync) {\n throw new Error(\"scrypt is locked\");\n }\n __scryptAsync = func;\n};\nObject.freeze(scrypt);\nexport function scryptSync(_passwd, _salt, N, r, p, dkLen) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(__scryptSync(passwd, salt, N, r, p, dkLen));\n}\nscryptSync._ = _scryptSync;\nscryptSync.lock = function () { lockedSync = true; };\nscryptSync.register = function (func) {\n if (lockedSync) {\n throw new Error(\"scryptSync is locked\");\n }\n __scryptSync = func;\n};\nObject.freeze(scryptSync);\n//# sourceMappingURL=scrypt.js.map","import { createHash } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nconst _sha256 = function (data) {\n return createHash(\"sha256\").update(data).digest();\n};\nconst _sha512 = function (data) {\n return createHash(\"sha512\").update(data).digest();\n};\nlet __sha256 = _sha256;\nlet __sha512 = _sha512;\nlet locked256 = false, locked512 = false;\nexport function sha256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha256(data));\n}\nsha256._ = _sha256;\nsha256.lock = function () { locked256 = true; };\nsha256.register = function (func) {\n if (locked256) {\n throw new Error(\"sha256 is locked\");\n }\n __sha256 = func;\n};\nObject.freeze(sha256);\nexport function sha512(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha512(data));\n}\nsha512._ = _sha512;\nsha512.lock = function () { locked512 = true; };\nsha512.register = function (func) {\n if (locked512) {\n throw new Error(\"sha512 is locked\");\n }\n __sha512 = func;\n};\nObject.freeze(sha256);\n//# sourceMappingURL=sha2.js.map","// We import all these so we can export lock()\nimport { computeHmac } from \"./hmac.js\";\nimport { keccak256 } from \"./keccak.js\";\nimport { ripemd160 } from \"./ripemd160.js\";\nimport { pbkdf2 } from \"./pbkdf2.js\";\nimport { randomBytes } from \"./random.js\";\nimport { scrypt, scryptSync } from \"./scrypt.js\";\nimport { sha256, sha512 } from \"./sha2.js\";\nexport { computeHmac, randomBytes, keccak256, ripemd160, sha256, sha512, pbkdf2, scrypt, scryptSync };\nexport function lock() {\n computeHmac.lock();\n keccak256.lock();\n pbkdf2.lock();\n randomBytes.lock();\n ripemd160.lock();\n scrypt.lock();\n scryptSync.lock();\n sha256.lock();\n sha512.lock();\n}\n//# sourceMappingURL=index.js.map","export const version = \"@ethersproject/address@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { arrayify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\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 return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\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 let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\nexport function getAddress(address) {\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\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 return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\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 let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n return logger.throwArgumentError(\"invalid address\", \"address\", address);\n}\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/rlp@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { logger } from \"./logger.js\";\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n const data = Array.prototype.slice.call(logger.getBytes(object, \"object\"));\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 const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nconst nibbles = \"0123456789abcdef\";\nexport function encodeRlp(object) {\n let result = \"0x\";\n for (const v of _encode(object)) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0xf];\n }\n return result;\n}\n//# sourceMappingURL=encode.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction hexlifyByte(value) {\n let result = value.toString(16);\n while (result.length < 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length, offset\n });\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: 0, offset: 1\n });\n }\n const checkOffset = (offset) => {\n if (offset > data.length) {\n logger.throwError(\"data short segment too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: data.length, offset\n });\n }\n };\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n checkOffset(offset + 1 + length);\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\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 checkOffset(offset + 1 + length);\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlifyByte(data[offset]) };\n}\nexport function decodeRlp(_data) {\n const data = logger.getBytes(_data, \"data\");\n const decoded = _decode(data, 0);\n if (decoded.consumed !== data.length) {\n logger.throwArgumentError(\"unexpected junk after rlp payload\", \"data\", _data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=decode.js.map","import { concat, dataSlice } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { encodeRlp } from \"@ethersproject/rlp\";\nimport { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getCreateAddress(tx) {\n const from = getAddress(tx.from);\n const nonce = logger.getBigInt(tx.nonce, \"tx.nonce\");\n let nonceHex = nonce.toString(16);\n if (nonceHex === \"0\") {\n nonceHex = \"0x\";\n }\n else if (nonceHex.length % 2) {\n nonceHex = \"0x0\" + nonceHex;\n }\n else {\n nonceHex = \"0x\" + nonceHex;\n }\n return getAddress(dataSlice(keccak256(encodeRlp([from, nonceHex])), 12));\n}\nexport function getCreate2Address(_from, _salt, _initCodeHash) {\n const from = getAddress(_from);\n const salt = logger.getBytes(_salt, \"salt\");\n const initCodeHash = logger.getBytes(_initCodeHash, \"initCodeHash\");\n if (salt.length !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", _salt);\n }\n if (initCodeHash.length !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", _initCodeHash);\n }\n return getAddress(dataSlice(keccak256(concat([\"0xff\", from, salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=contract-address.js.map","import { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\n// Resolves an Ethereum address, ENS name or Addressable object,\n// throwing if the result is null; an explicit null returns null\n//export async function resolveAddress(target?: null, resolver?: null | NameResolver): Promise;\n//export async function resolveAddress(target: string | Addressable, resolver?: null | NameResolver): Promise;\n//export async function resolveAddress(target: null | undefined | string | Addressable, resolver?: null | NameResolver) {\nexport async function resolveAddress(target, resolver) {\n //if (target == null) { return null; }\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n if (resolver == null) {\n return logger.throwError(\"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n });\n }\n const result = await resolver.resolveName(target);\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n return logger.throwError(\"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n }\n return getAddress(result);\n }\n else if (isAddressable(target)) {\n const result = await target.getAddress();\n if (result == null) {\n logger.throwArgumentError(\"addressable resolved to null\", \"target\", target);\n }\n return getAddress(result);\n }\n return logger.throwArgumentError(\"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Typed_options;\nimport { defineProperties } from \"@ethersproject/properties\";\nconst _gaurd = {};\nfunction n(value, width) {\n let signed = false;\n if (width < 0) {\n signed = true;\n width *= -1;\n }\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `${signed ? \"\" : \"u\"}int${width}`, value, { signed, width });\n}\nfunction b(value, size) {\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `bytes${(size) ? size : \"\"}`, value, { size });\n}\nconst _typedSymbol = Symbol.for(\"_ethers_typed\");\nexport class Typed {\n constructor(gaurd, type, value, options = null) {\n _Typed_options.set(this, void 0);\n if (gaurd !== _gaurd) {\n throw new Error(\"private constructor\");\n }\n defineProperties(this, { _typedSymbol, type, value });\n __classPrivateFieldSet(this, _Typed_options, options, \"f\");\n // Check the value is valid\n this.format();\n }\n format() {\n if (this.type === \"array\") {\n throw new Error(\"\");\n }\n else if (this.type === \"dynamicArray\") {\n throw new Error(\"\");\n }\n else if (this.type === \"tuple\") {\n return `tuple(${this.value.map((v) => v.format()).join(\",\")})`;\n }\n return this.type;\n }\n defaultValue() {\n return 0;\n }\n minValue() {\n return 0;\n }\n maxValue() {\n return 0;\n }\n isBigInt() {\n return !!(this.type.match(/^u?int[0-9]+$/));\n }\n isData() {\n return (this.type.substring(0, 5) === \"bytes\");\n }\n isString() {\n return (this.type === \"string\");\n }\n get tupleName() {\n if (this.type !== \"tuple\") {\n throw TypeError(\"not a tuple\");\n }\n return __classPrivateFieldGet(this, _Typed_options, \"f\");\n }\n // Returns the length of this type as an array\n // - `null` indicates the length is unforced, it could be dynamic\n // - `-1` indicates the length is dynamic\n // - any other value indicates it is a static array and is its length\n get arrayLength() {\n if (this.type !== \"array\") {\n throw TypeError(\"not an array\");\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === true) {\n return -1;\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === false) {\n return (this.value).length;\n }\n return null;\n }\n static from(type, value) {\n return new Typed(_gaurd, type, value);\n }\n static uint8(v) { return n(v, 8); }\n static uint16(v) { return n(v, 16); }\n static uint24(v) { return n(v, 24); }\n static uint32(v) { return n(v, 32); }\n static uint40(v) { return n(v, 40); }\n static uint48(v) { return n(v, 46); }\n static uint56(v) { return n(v, 56); }\n static uint64(v) { return n(v, 64); }\n static uint72(v) { return n(v, 72); }\n static uint80(v) { return n(v, 80); }\n static uint88(v) { return n(v, 88); }\n static uint96(v) { return n(v, 96); }\n static uint104(v) { return n(v, 104); }\n static uint112(v) { return n(v, 112); }\n static uint120(v) { return n(v, 120); }\n static uint128(v) { return n(v, 128); }\n static uint136(v) { return n(v, 136); }\n static uint144(v) { return n(v, 144); }\n static uint152(v) { return n(v, 152); }\n static uint160(v) { return n(v, 160); }\n static uint168(v) { return n(v, 168); }\n static uint176(v) { return n(v, 176); }\n static uint184(v) { return n(v, 184); }\n static uint192(v) { return n(v, 192); }\n static uint200(v) { return n(v, 200); }\n static uint208(v) { return n(v, 208); }\n static uint216(v) { return n(v, 216); }\n static uint224(v) { return n(v, 224); }\n static uint232(v) { return n(v, 232); }\n static uint240(v) { return n(v, 240); }\n static uint248(v) { return n(v, 248); }\n static uint256(v) { return n(v, 256); }\n static uint(v) { return n(v, 256); }\n static int8(v) { return n(v, -8); }\n static int16(v) { return n(v, -16); }\n static int24(v) { return n(v, -24); }\n static int32(v) { return n(v, -32); }\n static int40(v) { return n(v, -40); }\n static int48(v) { return n(v, -46); }\n static int56(v) { return n(v, -56); }\n static int64(v) { return n(v, -64); }\n static int72(v) { return n(v, -72); }\n static int80(v) { return n(v, -80); }\n static int88(v) { return n(v, -88); }\n static int96(v) { return n(v, -96); }\n static int104(v) { return n(v, -104); }\n static int112(v) { return n(v, -112); }\n static int120(v) { return n(v, -120); }\n static int128(v) { return n(v, -128); }\n static int136(v) { return n(v, -136); }\n static int144(v) { return n(v, -144); }\n static int152(v) { return n(v, -152); }\n static int160(v) { return n(v, -160); }\n static int168(v) { return n(v, -168); }\n static int176(v) { return n(v, -176); }\n static int184(v) { return n(v, -184); }\n static int192(v) { return n(v, -192); }\n static int200(v) { return n(v, -200); }\n static int208(v) { return n(v, -208); }\n static int216(v) { return n(v, -216); }\n static int224(v) { return n(v, -224); }\n static int232(v) { return n(v, -232); }\n static int240(v) { return n(v, -240); }\n static int248(v) { return n(v, -248); }\n static int256(v) { return n(v, -256); }\n static int(v) { return n(v, -256); }\n static bytes(v) { return b(v); }\n static bytes1(v) { return b(v, 1); }\n static bytes2(v) { return b(v, 2); }\n static bytes3(v) { return b(v, 3); }\n static bytes4(v) { return b(v, 4); }\n static bytes5(v) { return b(v, 5); }\n static bytes6(v) { return b(v, 6); }\n static bytes7(v) { return b(v, 7); }\n static bytes8(v) { return b(v, 8); }\n static bytes9(v) { return b(v, 9); }\n static bytes10(v) { return b(v, 10); }\n static bytes11(v) { return b(v, 11); }\n static bytes12(v) { return b(v, 12); }\n static bytes13(v) { return b(v, 13); }\n static bytes14(v) { return b(v, 14); }\n static bytes15(v) { return b(v, 15); }\n static bytes16(v) { return b(v, 16); }\n static bytes17(v) { return b(v, 17); }\n static bytes18(v) { return b(v, 18); }\n static bytes19(v) { return b(v, 19); }\n static bytes20(v) { return b(v, 20); }\n static bytes21(v) { return b(v, 21); }\n static bytes22(v) { return b(v, 22); }\n static bytes23(v) { return b(v, 23); }\n static bytes24(v) { return b(v, 24); }\n static bytes25(v) { return b(v, 25); }\n static bytes26(v) { return b(v, 26); }\n static bytes27(v) { return b(v, 27); }\n static bytes28(v) { return b(v, 28); }\n static bytes29(v) { return b(v, 29); }\n static bytes30(v) { return b(v, 30); }\n static bytes31(v) { return b(v, 31); }\n static bytes32(v) { return b(v, 32); }\n static address(v) { return new Typed(_gaurd, \"address\", v); }\n static bool(v) { return new Typed(_gaurd, \"bool\", !!v); }\n static string(v) { return new Typed(_gaurd, \"string\", v); }\n static array(v, dynamic) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"array\", v, dynamic);\n }\n static tuple(v, name) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"tuple\", v, name);\n }\n static overrides(v) {\n return new Typed(_gaurd, \"overrides\", Object.assign({}, v));\n }\n static isTyped(value) {\n return (value && value._typedSymbol === _typedSymbol);\n }\n static dereference(value, type) {\n if (Typed.isTyped(value)) {\n if (value.type !== type) {\n throw new Error(`invalid type: expecetd ${type}, got ${value.type}`);\n }\n return value.value;\n }\n return value;\n }\n}\n_Typed_options = new WeakMap();\n//# sourceMappingURL=typed.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class AddressCoder extends Coder {\n constructor(localName) {\n super(\"address\", \"address\", localName, false);\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000\";\n }\n encode(writer, _value) {\n let value = Typed.dereference(_value, \"string\");\n try {\n value = getAddress(value);\n }\n catch (error) {\n return this._throwError(error.message, _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n return getAddress(toHex(reader.readValue(), 20));\n }\n}\n//# sourceMappingURL=address.js.map","import { Coder } from \"./abstract-coder.js\";\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n constructor(coder) {\n super(coder.name, coder.type, \"_\", coder.dynamic);\n this.coder = coder;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(writer, value) {\n return this.coder.encode(writer, value);\n }\n decode(reader) {\n return this.coder.decode(reader);\n }\n}\n//# sourceMappingURL=anonymous.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { isError } from \"@ethersproject/logger\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, Result, WordSize, Writer } from \"./abstract-coder.js\";\nimport { AnonymousCoder } from \"./anonymous.js\";\nexport function pack(writer, coders, values) {\n let arrayValues = [];\n if (Array.isArray(values)) {\n arrayValues = values;\n }\n else if (values && typeof (values) === \"object\") {\n let unique = {};\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n unique[name] = true;\n return values[name];\n });\n }\n else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n let staticWriter = new Writer();\n let dynamicWriter = new Writer();\n let updateFuncs = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n }\n else {\n coder.encode(staticWriter, value);\n }\n });\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\nexport function unpack(reader, coders) {\n let values = [];\n let keys = [];\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n coders.forEach((coder) => {\n let value = null;\n if (coder.dynamic) {\n let offset = reader.readIndex();\n let offsetReader = baseReader.subReader(offset);\n try {\n value = coder.decode(offsetReader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\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 }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n if (value == undefined) {\n throw new Error(\"investigate\");\n }\n values.push(value);\n keys.push(coder.localName || null);\n });\n return Result.fromItems(values, keys);\n}\nexport class ArrayCoder extends Coder {\n constructor(coder, length, localName) {\n const type = (coder.type + \"[\" + (length >= 0 ? length : \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n defineProperties(this, { coder, length });\n }\n defaultValue() {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n const result = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"array\");\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n let count = this.length;\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n logger.assertArgumentCount(value.length, count, \"coder array\" + (this.localName ? (\" \" + this.localName) : \"\"));\n let coders = [];\n for (let i = 0; i < value.length; i++) {\n coders.push(this.coder);\n }\n return pack(writer, coders, value);\n }\n decode(reader) {\n let count = this.length;\n if (count === -1) {\n count = reader.readIndex();\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 * WordSize > reader.dataLength) {\n logger.throwError(\"insufficient data length\", \"BUFFER_OVERRUN\", {\n buffer: reader.bytes,\n offset: count * WordSize,\n length: reader.dataLength\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) {\n coders.push(new AnonymousCoder(this.coder));\n }\n return unpack(reader, coders);\n }\n}\n//# sourceMappingURL=array.js.map","import { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class BooleanCoder extends Coder {\n constructor(localName) {\n super(\"bool\", \"bool\", localName, false);\n }\n defaultValue() {\n return false;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"bool\");\n return writer.writeValue(value ? 1 : 0);\n }\n decode(reader) {\n return !!reader.readValue();\n }\n}\n//# sourceMappingURL=boolean.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class DynamicBytesCoder extends Coder {\n constructor(type, localName) {\n super(type, type, localName, true);\n }\n defaultValue() {\n return \"0x\";\n }\n encode(writer, value) {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n decode(reader) {\n return reader.readBytes(reader.readIndex(), true);\n }\n}\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"bytes\", localName);\n }\n decode(reader) {\n return hexlify(super.decode(reader));\n }\n}\n//# sourceMappingURL=bytes.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class FixedBytesCoder extends Coder {\n constructor(size, localName) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n defineProperties(this, { size }, { size: \"number\" });\n }\n defaultValue() {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n encode(writer, _value) {\n let data = arrayify(Typed.dereference(_value, this.type));\n if (data.length !== this.size) {\n this._throwError(\"incorrect data length\", _value);\n }\n return writer.writeBytes(data);\n }\n decode(reader) {\n return hexlify(reader.readBytes(this.size));\n }\n}\n//# sourceMappingURL=fixed-bytes.js.map","import { Coder } from \"./abstract-coder.js\";\nconst Empty = new Uint8Array([]);\nexport class NullCoder extends Coder {\n constructor(localName) {\n super(\"null\", \"\", localName, false);\n }\n defaultValue() {\n return null;\n }\n encode(writer, value) {\n if (value != null) {\n this._throwError(\"not null\", value);\n }\n return writer.writeBytes(Empty);\n }\n decode(reader) {\n reader.readBytes(0);\n return null;\n }\n}\n//# sourceMappingURL=null.js.map","import { fromTwos, mask, toTwos } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, WordSize } from \"./abstract-coder.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nexport class NumberCoder extends Coder {\n constructor(size, signed, localName) {\n const name = ((signed ? \"int\" : \"uint\") + (size * 8));\n super(name, name, localName, false);\n defineProperties(this, { size, signed }, { size: \"number\", signed: \"boolean\" });\n }\n defaultValue() {\n return 0;\n }\n encode(writer, _value) {\n let value = logger.getBigInt(Typed.dereference(_value, this.type));\n // Check bounds are safe for encoding\n let maxUintValue = mask(BN_MAX_UINT256, WordSize * 8);\n if (this.signed) {\n let bounds = mask(maxUintValue, (this.size * 8) - 1);\n if (value > bounds || value < -(bounds + BN_1)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n }\n else if (value < BN_0 || value > mask(maxUintValue, this.size * 8)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n value = mask(toTwos(value, this.size * 8), this.size * 8);\n if (this.signed) {\n value = toTwos(fromTwos(value, this.size * 8), 8 * WordSize);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n let value = mask(reader.readValue(), this.size * 8);\n if (this.signed) {\n value = fromTwos(value, this.size * 8);\n }\n return value;\n }\n}\n//# sourceMappingURL=number.js.map","export const version = \"@ethersproject/strings@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\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 Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\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 Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\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) {\n break;\n }\n i++;\n }\n return i;\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 // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push((badCodepoint != null) ? badCodepoint : -1);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = logger.getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\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 }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\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 // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\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 // See above loop for invalid continuation byte\n if (res === null) {\n 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 // 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 // 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 result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\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 if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\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 return new Uint8Array(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\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 if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","import { zeroPadBytes } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nimport { toUtf8Bytes, toUtf8String } from \"./utf8.js\";\nexport function formatBytes32String(text) {\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n // Check we have room for null-termination\n if (bytes.length > 31) {\n throw new Error(\"bytes32 string must be less than 32 bytes\");\n }\n // Zero-pad (implicitly null-terminates)\n return zeroPadBytes(bytes, 32);\n}\nexport function parseBytes32String(_bytes) {\n const data = logger.getBytes(_bytes, \"bytes\");\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) {\n throw new Error(\"invalid bytes32 - not 32 bytes long\");\n }\n if (data[31] !== 0) {\n throw new Error(\"invalid bytes32 string - no null terminator\");\n }\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) {\n length--;\n }\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n//# sourceMappingURL=bytes32.js.map","import { logger } from \"./logger.js\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8.js\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"should not happen; bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, _func) {\n const func = _func || function (value) { return [parseInt(value, 16)]; };\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n const range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n if (range.s == null) {\n throw new Error(\"should not happenl bad range\");\n }\n return [codepoint + range.s];\n }\n const codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n const shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n const complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_PROHIBITED\", \"value\", value);\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_UNASSIGNED\", \"value\", value);\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n logger.throwArgumentError(\"invalid hyphen\", \"value\", value);\n }\n // IDNA: 4.2.4\n if (name.length > 63) {\n logger.throwArgumentError(\"too long\", \"value\", value);\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","import { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { Typed } from \"../typed.js\";\nimport { DynamicBytesCoder } from \"./bytes.js\";\nexport class StringCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"string\", localName);\n }\n defaultValue() {\n return \"\";\n }\n encode(writer, _value) {\n return super.encode(writer, toUtf8Bytes(Typed.dereference(_value, \"string\")));\n }\n decode(reader) {\n return toUtf8String(super.decode(reader));\n }\n}\n//# sourceMappingURL=string.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nimport { pack, unpack } from \"./array.js\";\nexport class TupleCoder extends Coder {\n constructor(coders, localName) {\n let dynamic = false;\n const types = [];\n coders.forEach((coder) => {\n if (coder.dynamic) {\n dynamic = true;\n }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n super(\"tuple\", type, localName, dynamic);\n defineProperties(this, { coders: Object.freeze(coders.slice()) });\n }\n defaultValue() {\n const values = [];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\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]) {\n accum[name] = 0;\n }\n accum[name]++;\n }\n return accum;\n }, {});\n // Add named values\n this.coders.forEach((coder, index) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) {\n return;\n }\n if (name === \"length\") {\n name = \"_length\";\n }\n if (values[name] != null) {\n return;\n }\n values[name] = values[index];\n });\n return Object.freeze(values);\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"tuple\");\n return pack(writer, this.coders, value);\n }\n decode(reader) {\n return unpack(reader, this.coders);\n }\n}\n//# sourceMappingURL=tuple.js.map","// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbiCoder_instances, _AbiCoder_getCoder;\nimport { logger } from \"./logger.js\";\nimport { Reader, Writer } from \"./coders/abstract-coder.js\";\nimport { AddressCoder } from \"./coders/address.js\";\nimport { ArrayCoder } from \"./coders/array.js\";\nimport { BooleanCoder } from \"./coders/boolean.js\";\nimport { BytesCoder } from \"./coders/bytes.js\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes.js\";\nimport { NullCoder } from \"./coders/null.js\";\nimport { NumberCoder } from \"./coders/number.js\";\nimport { StringCoder } from \"./coders/string.js\";\nimport { TupleCoder } from \"./coders/tuple.js\";\nimport { ParamType } from \"./fragments.js\";\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\nexport class AbiCoder {\n constructor() {\n _AbiCoder_instances.add(this);\n }\n getDefaultValue(types) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n encode(types, values) {\n logger.assertArgumentCount(values.length, types.length, \"types/values length mismatch\");\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n const writer = new Writer();\n coder.encode(writer, values);\n return writer.data;\n }\n decode(types, data, loose) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(new Reader(data, loose));\n }\n}\n_AbiCoder_instances = new WeakSet(), _AbiCoder_getCoder = function _AbiCoder_getCoder(param) {\n if (param.isArray()) {\n return new ArrayCoder(__classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, param.arrayChildren), param.arrayLength, param.name);\n }\n if (param.isTuple()) {\n return new TupleCoder(param.components.map((c) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, c)), param.name);\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 \"\":\n return new NullCoder(param.name);\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 // 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 return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n};\nexport const defaultAbiCoder = new AbiCoder();\n//# sourceMappingURL=abi-coder.js.map","import { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","export const version = \"@ethersproject/hash@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { nameprep, toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nconst Partition = new RegExp(\"^((.*)\\\\.)?([^.]+)$\");\nexport function isValidName(name) {\n try {\n const comps = name.split(\".\");\n for (let i = 0; i < comps.length; i++) {\n if (nameprep(comps[i]).length === 0) {\n throw new Error(\"empty\");\n }\n }\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let current = name;\n let result = Zeros;\n while (current.length) {\n const partition = current.match(Partition);\n if (partition == null || partition[2] === \"\") {\n return logger.throwArgumentError(\"invalid ENS name; missing component\", \"name\", name);\n }\n const label = toUtf8Bytes(nameprep(partition[3]));\n result = keccak256(concat([result, keccak256(label)]));\n current = partition[2] || \"\";\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid DNS name; not a string\", \"name\", name);\n }\n if (name === \"\") {\n return \"0x00\";\n }\n // @TODO: should we enforce the 255 octet limit?\n return concat(name.split(\".\").map((comp) => {\n if (comp === \"\") {\n logger.throwArgumentError(\"invalid DNS name; missing component\", \"name\", name);\n }\n // We jam in an _ prefix to fill in with the length later\n // Note: Nameprep throws if the component is over 63 bytes\n const bytes = toUtf8Bytes(\"_\" + nameprep(comp));\n bytes[0] = bytes.length - 1;\n return bytes;\n })) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","import { concat, dataLength, hexlify, zeroPadBytes, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 as _keccak256, sha256 as _sha256 } from \"@ethersproject/crypto\";\nimport { toTwos } from \"@ethersproject/math\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\nfunction _pack(type, value, isArray) {\n switch (type) {\n case \"address\":\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return logger.getBytes(value);\n case \"bool\":\n value = (!!value ? \"0x01\" : \"0x00\");\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n }\n let match = type.match(regexNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n return logger.throwArgumentError(\"invalid number type\", \"type\", type);\n }\n if (isArray) {\n size = 256;\n }\n value = toTwos(value, size);\n return logger.getBytes(zeroPadValue(value, size / 8));\n }\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n if (String(size) !== match[1] || size === 0 || size > 32) {\n return logger.throwArgumentError(\"invalid bytes type\", \"type\", type);\n }\n if (dataLength(value) !== size) {\n return logger.throwArgumentError(`invalid value for ${type}`, \"value\", value);\n }\n if (isArray) {\n return logger.getBytes(zeroPadBytes(value, 32));\n }\n return value;\n }\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(`invalid array length for ${type}`, \"value\", value);\n }\n const result = [];\n value.forEach(function (value) {\n result.push(_pack(baseType, value, true));\n });\n return logger.getBytes(concat(result));\n }\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n}\n// @TODO: Array Enum\nexport function solidityPacked(types, values) {\n if (types.length != values.length) {\n logger.throwArgumentError(\"wrong number of values; expected ${ types.length }\", \"values\", values);\n }\n const tight = [];\n types.forEach(function (type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\nexport function solidityPackedKeccak256(types, values) {\n return _keccak256(solidityPacked(types, values));\n}\nexport function solidityPackedSha256(types, values) {\n return _sha256(solidityPacked(types, values));\n}\n//# sourceMappingURL=solidity.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TypedDataEncoder_instances, _TypedDataEncoder_types, _TypedDataEncoder_fullTypes, _TypedDataEncoder_encoderCache, _TypedDataEncoder_getEncoder;\n//import { TypedDataDomain, TypedDataField } from \"@ethersproject/providerabstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { mask, toHex, toTwos } from \"@ethersproject/math\";\nimport { id } from \"./id.js\";\nimport { logger } from \"./logger.js\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst BN__1 = BigInt(-1);\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n;\n;\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return concat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = toHex(BN_1, 32);\nconst hexFalse = toHex(BN_0, 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n return logger.getBigInt(value, \"domain.chainId\");\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n const bytes = logger.getBytes(value, \"domain.salt\");\n if (bytes.length !== 32) {\n logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n return hexlify(bytes);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\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 const boundsUpper = mask(BN_MAX_UINT256, signed ? (width - 1) : width);\n const boundsLower = signed ? ((boundsUpper + BN_1) * BN__1) : BN_0;\n return function (_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < boundsLower || value > boundsUpper) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return toHex(toTwos(value, 256), 32);\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 return function (value) {\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 switch (type) {\n case \"address\": return function (value) {\n return zeroPadValue(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n _TypedDataEncoder_instances.add(this);\n _TypedDataEncoder_types.set(this, void 0);\n _TypedDataEncoder_fullTypes.set(this, void 0);\n _TypedDataEncoder_encoderCache.set(this, void 0);\n __classPrivateFieldSet(this, _TypedDataEncoder_types, JSON.stringify(types), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_fullTypes, new Map(), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_encoderCache, new Map(), \"f\");\n // Link struct types to their direct child structs\n const links = new Map();\n // Link structs to structs which contain them as a child\n const parents = new Map();\n // Link all subtypes within a given struct\n const subtypes = new Map();\n Object.keys(types).forEach((type) => {\n links.set(type, new Set());\n parents.set(type, []);\n subtypes.set(type, new Set());\n });\n for (const name in types) {\n const uniqueNames = new Set();\n for (const field of types[name]) {\n // Check each field has a unique name\n if (uniqueNames.has(field.name)) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames.add(field.name);\n // Get the base type (drop any array specifiers)\n const baseType = (field.type.match(/^([^\\x5b]*)(\\x5b|$)/))[1] || null;\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n continue;\n }\n if (!parents.has(baseType)) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents.get(baseType).push(name);\n links.get(name).add(baseType);\n }\n }\n // Deduce the primary type\n const primaryTypes = Array.from(parents.keys()).filter((n) => (parents.get(n).length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\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 defineProperties(this, { primaryType: primaryTypes[0] });\n // Check for circular type references\n function checkCircular(type, found) {\n if (found.has(type)) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found.add(type);\n for (const child of links.get(type)) {\n if (!parents.has(child)) {\n continue;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n for (const subtype of found) {\n subtypes.get(subtype).add(child);\n }\n }\n found.delete(type);\n }\n checkCircular(this.primaryType, new Set());\n // Compute each fully describe type\n for (const [name, set] of subtypes) {\n const st = Array.from(set);\n st.sort();\n __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").set(name, encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\"));\n }\n }\n get types() {\n return JSON.parse(__classPrivateFieldGet(this, _TypedDataEncoder_types, \"f\"));\n }\n getEncoder(type) {\n let encoder = __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").get(type);\n if (!encoder) {\n encoder = __classPrivateFieldGet(this, _TypedDataEncoder_instances, \"m\", _TypedDataEncoder_getEncoder).call(this, type);\n __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").set(type, encoder);\n }\n return encoder;\n }\n encodeType(name) {\n const result = __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(name);\n if (!result) {\n return logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => this._visit(subtype, v, callback));\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 return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\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 domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return concat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain, types, value, resolveName) {\n // Make a copy to isolate it from the object passed in\n domain = Object.assign({}, domain);\n // Look up all ENS names\n const ensCache = {};\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 // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = Object.assign({}, types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(logger.getBytes(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return logger.getBigInt(value).toString();\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 return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n_TypedDataEncoder_types = new WeakMap(), _TypedDataEncoder_fullTypes = new WeakMap(), _TypedDataEncoder_encoderCache = new WeakMap(), _TypedDataEncoder_instances = new WeakSet(), _TypedDataEncoder_getEncoder = function _TypedDataEncoder_getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(subtype)) {\n result = result.map(keccak256);\n }\n return keccak256(concat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(type));\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(type)) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return concat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n};\n//# sourceMappingURL=typed-data.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Interface_instances, _Interface_errors, _Interface_events, _Interface_functions, _Interface_abiCoder, _Interface_getFunction, _Interface_getEvent;\nimport { arrayify, concat, dataSlice, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { defaultAbiCoder } from \"./abi-coder.js\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder.js\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatType, Fragment, FunctionFragment, ParamType } from \"./fragments.js\";\nimport { logger } from \"./logger.js\";\nimport { Typed } from \"./typed.js\";\nexport { checkResultErrors, Result };\nexport class LogDescription {\n constructor(fragment, topic, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, signature, topic, args\n });\n }\n}\nexport class TransactionDescription {\n constructor(fragment, selector, args, value) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector, value\n });\n }\n}\nexport class ErrorDescription {\n constructor(fragment, selector, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector\n });\n }\n}\nexport class Indexed {\n constructor(hash) {\n defineProperties(this, { hash, _isIndexed: true });\n }\n static isIndexed(value) {\n return !!(value && value._isIndexed);\n }\n}\n// https://docs.soliditylang.org/en/v0.8.13/control-structures.html?highlight=panic#panic-via-assert-and-error-via-require\nconst PanicReasons = {\n \"0\": \"generic panic\",\n \"1\": \"assert(false)\",\n \"17\": \"arithmetic overflow\",\n \"18\": \"division or modulo by zero\",\n \"33\": \"enum overflow\",\n \"34\": \"invalid encoded storage byte array accessed\",\n \"49\": \"out-of-bounds array access; popping on an empty array\",\n \"50\": \"out-of-bounds access of an array or bytesN\",\n \"65\": \"out of memory\",\n \"81\": \"uninitialized function\",\n};\nconst BuiltinErrors = {\n \"0x08c379a0\": {\n signature: \"Error(string)\",\n name: \"Error\",\n inputs: [\"string\"],\n reason: (message) => {\n return `reverted with reason string ${JSON.stringify(message)}`;\n }\n },\n \"0x4e487b71\": {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n inputs: [\"uint256\"],\n reason: (code) => {\n let reason = \"unknown panic code\";\n if (code >= 0 && code <= 0xff && PanicReasons[code.toString()]) {\n reason = PanicReasons[code.toString()];\n }\n return `reverted with panic code 0x${code.toString(16)} (${reason})`;\n }\n }\n};\nexport class Interface {\n constructor(fragments) {\n _Interface_instances.add(this);\n _Interface_errors.set(this, void 0);\n _Interface_events.set(this, void 0);\n _Interface_functions.set(this, void 0);\n // #structs: Map;\n _Interface_abiCoder.set(this, void 0);\n let abi = [];\n if (typeof (fragments) === \"string\") {\n abi = JSON.parse(fragments);\n }\n else {\n abi = fragments;\n }\n __classPrivateFieldSet(this, _Interface_functions, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_errors, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_events, new Map(), \"f\");\n // this.#structs = new Map();\n defineProperties(this, {\n fragments: Object.freeze(abi.map((f) => Fragment.from(f)).filter((f) => (f != null))),\n });\n __classPrivateFieldSet(this, _Interface_abiCoder, this.getAbiCoder(), \"f\");\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket;\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 defineProperties(this, { deploy: fragment });\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = __classPrivateFieldGet(this, _Interface_functions, \"f\");\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = __classPrivateFieldGet(this, _Interface_events, \"f\");\n break;\n case \"error\":\n bucket = __classPrivateFieldGet(this, _Interface_errors, \"f\");\n break;\n default:\n return;\n }\n const signature = fragment.format();\n if (bucket.has(signature)) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n bucket.set(signature, fragment);\n });\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineProperties(this, {\n deploy: ConstructorFragment.fromString(\"constructor()\")\n });\n }\n }\n // @TODO: multi sig?\n format(format) {\n if (!format) {\n format = FormatType.full;\n }\n if (format === FormatType.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n const abi = this.fragments.map((f) => f.format(format));\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatType.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n return abi;\n }\n getAbiCoder() {\n return defaultAbiCoder;\n }\n getFunctionName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, null, false)).name;\n }\n getFunction(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, values || null, true);\n }\n getEventName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, null, false)).name;\n }\n getEvent(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, values || null, true);\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(key, values) {\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_errors, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching error\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_errors, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", key);\n }\n else if (matching.length > 1) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching errors\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_errors, \"f\").get(ErrorFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching error\", \"signature\", key);\n }\n // Get the 4-byte selector used by Solidity to identify a function\n getSelector(fragment) {\n /*\n if (typeof(fragment) === \"string\") {\n const matches: Array = [ ];\n\n try { matches.push(this.getFunction(fragment)); } catch (error) { }\n try { matches.push(this.getError(fragment)); } catch (_) { }\n\n if (matches.length === 0) {\n logger.throwArgumentError(\"unknown fragment\", \"key\", fragment);\n } else if (matches.length > 1) {\n logger.throwArgumentError(\"ambiguous fragment matches function and error\", \"key\", fragment);\n }\n\n fragment = matches[0];\n }\n */\n return dataSlice(id(fragment.format()), 0, 4);\n }\n // Get the 32-byte topic hash used by Solidity to identify an event\n getEventTopic(fragment) {\n //if (typeof(fragment) === \"string\") { fragment = this.getEvent(eventFragment); }\n return id(fragment.format());\n }\n _decodeParams(params, data) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(params, data);\n }\n _encodeParams(params, values) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(params, values);\n }\n encodeDeploy(values) {\n return this._encodeParams(this.deploy.inputs, values || []);\n }\n decodeErrorResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n encodeErrorResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match function ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n let message = \"invalid length for result data\";\n const bytes = arrayify(data);\n if ((bytes.length % 32) === 0) {\n try {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.outputs, bytes);\n }\n catch (error) {\n message = \"could not decode result data\";\n }\n }\n // Call returned data with no error, but the data is junk\n return logger.throwError(message, \"BAD_DATA\", {\n value: hexlify(bytes),\n info: { method: fragment.name, signature: fragment.format() }\n });\n }\n makeError(fragment, _data, tx) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n const data = logger.getBytes(_data);\n let args = undefined;\n if (tx) {\n try {\n args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, tx.data || \"0x\");\n }\n catch (error) {\n console.log(error);\n }\n }\n let errorArgs = undefined;\n let errorName = undefined;\n let errorSignature = undefined;\n let reason = \"unknown reason\";\n if (data.length === 0) {\n reason = \"missing error reason\";\n }\n else if ((data.length % 32) === 4) {\n const selector = hexlify(data.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n try {\n errorName = builtin.name;\n errorSignature = builtin.signature;\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(builtin.inputs, data.slice(4));\n reason = builtin.reason(...errorArgs);\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n else {\n reason = \"unknown custom error\";\n try {\n const error = this.getError(selector);\n errorName = error.name;\n errorSignature = error.format();\n reason = `custom error: ${errorSignature}`;\n try {\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(error.inputs, data.slice(4));\n }\n catch (error) {\n reason = `custom error: ${errorSignature} (coult not decode error data)`;\n }\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n }\n return logger.makeError(\"call revert exception\", \"CALL_EXCEPTION\", {\n data: hexlify(data), transaction: null,\n method: fragment.name, signature: fragment.format(), args,\n errorArgs, errorName, errorSignature, reason\n });\n }\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment, values) {\n if (typeof (functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n return hexlify(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(functionFragment.outputs, values || []));\n }\n /*\n spelunk(inputs: Array, values: ReadonlyArray, processfunc: (type: string, value: any) => Promise): Promise> {\n const promises: Array> = [ ];\n const process = function(type: ParamType, value: any): any {\n if (type.baseType === \"array\") {\n return descend(type.child\n }\n if (type. === \"address\") {\n }\n };\n \n const descend = function (inputs: Array, values: ReadonlyArray) {\n if (inputs.length !== values.length) { throw new Error(\"length mismatch\"); }\n \n };\n \n const result: Array = [ ];\n values.forEach((value, index) => {\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 */\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), \"UNEXPECTED_ARGUMENT\", {\n count: values.length,\n expectedCount: eventFragment.inputs.length\n });\n }\n const topics = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n const encodeTopic = (param, value) => {\n if (param.type === \"string\") {\n return id(value);\n }\n else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n // Check addresses are valid\n if (param.type === \"address\") {\n __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([\"address\"], [value]);\n }\n return zeroPadValue(hexlify(value), 32);\n //@TOOD should probably be return toHex(value, 32)\n };\n values.forEach((value, index) => {\n const param = eventFragment.inputs[index];\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 if (value == null) {\n topics.push(null);\n }\n else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n }\n else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n }\n else {\n topics.push(encodeTopic(param, value));\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n }\n encodeEventLog(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n const topics = [];\n const dataTypes = [];\n const dataValues = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\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 }\n else if (param.type === \"bytes\") {\n topics.push(keccak256(value));\n }\n else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n }\n else {\n topics.push(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([param.type], [value]));\n }\n }\n else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n return {\n data: __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(dataTypes, dataValues),\n topics: topics\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment, data, topics) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (topics != null && !eventFragment.anonymous) {\n const eventTopic = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== eventTopic) {\n logger.throwArgumentError(\"fragment/topic mismatch\", \"topics[0]\", topics[0]);\n }\n topics = topics.slice(1);\n }\n const indexed = [];\n const nonIndexed = [];\n const dynamic = [];\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 }\n else {\n indexed.push(param);\n dynamic.push(false);\n }\n }\n else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n const resultIndexed = (topics != null) ? __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(indexed, concat(topics)) : null;\n const resultNonIndexed = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(nonIndexed, data, true);\n //const result: (Array & { [ key: string ]: any }) = [ ];\n const values = [];\n const keys = [];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n let value = null;\n if (param.indexed) {\n if (resultIndexed == null) {\n value = new Indexed(null);\n }\n else if (dynamic[index]) {\n value = new Indexed(resultIndexed[indexedIndex++]);\n }\n else {\n try {\n value = resultIndexed[indexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n }\n else {\n try {\n value = resultNonIndexed[nonIndexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n values.push(value);\n keys.push(param.name || null);\n });\n return Result.fromItems(values, keys);\n }\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx) {\n const data = logger.getBytes(tx.data, \"tx.data\");\n const value = logger.getBigInt((tx.value != null) ? tx.value : 0, \"tx.value\");\n const fragment = this.getFunction(hexlify(data.slice(0, 4)));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, data.slice(4));\n return new TransactionDescription(fragment, this.getSelector(fragment), args, value);\n }\n // @TODO\n //parseCallResult(data: BytesLike): ??\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log) {\n const fragment = this.getEvent(log.topics[0]);\n if (!fragment || fragment.anonymous) {\n 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 return new LogDescription(fragment, this.getEventTopic(fragment), this.decodeEventLog(fragment, log.data, log.topics));\n }\n parseError(data) {\n const hexData = hexlify(data);\n const fragment = this.getError(dataSlice(hexData, 0, 4));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, dataSlice(hexData, 4));\n return new ErrorDescription(fragment, this.getSelector(fragment), args);\n }\n static from(value) {\n // Already an Interface, which is immutable\n if (value instanceof Interface) {\n return value;\n }\n // JSON\n if (typeof (value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n // Maybe an interface from an older version, or from a symlinked copy\n if (typeof (value.format) === \"function\") {\n return new Interface(value.format(FormatType.json));\n }\n // Array of fragments\n return new Interface(value);\n }\n}\n_Interface_errors = new WeakMap(), _Interface_events = new WeakMap(), _Interface_functions = new WeakMap(), _Interface_abiCoder = new WeakMap(), _Interface_instances = new WeakSet(), _Interface_getFunction = function _Interface_getFunction(key, values, forceUnique) {\n // Selector\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_functions, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching function\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_functions, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n const lastValue = (values.length > 0) ? values[values.length - 1] : null;\n let valueLength = values.length;\n let allowOptions = true;\n if (Typed.isTyped(lastValue) && lastValue.type === \"overrides\") {\n allowOptions = false;\n valueLength--;\n }\n // Remove all matches that don't have a compatible length. The args\n // may contain an overrides, so the match may have n or n - 1 parameters\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs.length;\n if (inputs !== valueLength && (!allowOptions || inputs !== valueLength - 1)) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // We are past the inputs\n if (j >= inputs.length) {\n if (values[j].type === \"overrides\") {\n continue;\n }\n matching.splice(i, 1);\n break;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n // We found a single matching signature with an overrides, but the\n // last value is something that cannot possibly be an options\n if (matching.length === 1 && values && values.length !== matching[0].inputs.length) {\n const lastArg = values[values.length - 1];\n if (lastArg == null || Array.isArray(lastArg) || typeof (lastArg) !== \"object\") {\n matching.splice(0, 1);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n logger.throwArgumentError(`multiple matching functions (i.e. ${matchStr})`, \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_functions, \"f\").get(FunctionFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching function\", \"signature\", key);\n}, _Interface_getEvent = function _Interface_getEvent(key, values, forceUnique) {\n // EventTopic\n if (isHexString(key)) {\n const eventTopic = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_events, \"f\").values()) {\n if (eventTopic === this.getEventTopic(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching event\", \"eventTopic\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_events, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n // Remove all matches that don't have a compatible length.\n for (let i = matching.length - 1; i >= 0; i--) {\n if (matching[i].inputs.length < values.length) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching events\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_events, \"f\").get(EventFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching event\", \"signature\", key);\n};\n//# sourceMappingURL=interface.js.map","export const version = \"@ethersproject/web@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchResponse_props, _FetchResponse_error;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties, getStore } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\n;\nexport class FetchResponse {\n constructor(statusCode, statusMessage, headers, body, request) {\n _FetchResponse_props.set(this, void 0);\n _FetchResponse_error.set(this, void 0);\n __classPrivateFieldSet(this, _FetchResponse_props, {\n statusCode,\n statusMessage,\n headers: Object.freeze(Object.assign({}, Object.keys(headers).reduce((accum, k) => {\n accum[k.toLowerCase()] = headers[k];\n return accum;\n }, {}))),\n body: ((body == null) ? null : new Uint8Array(body)),\n request: (request || null),\n }, \"f\");\n __classPrivateFieldSet(this, _FetchResponse_error, { message: \"\" }, \"f\");\n }\n toString() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return ``;\n }\n get statusCode() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusCode\"); }\n get statusMessage() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusMessage\"); }\n get headers() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"headers\"); }\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? null : new Uint8Array(body);\n }\n get bodyText() {\n try {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? \"\" : toUtf8String(body);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid UTF-8 data\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyText\", info: { response: this }\n });\n }\n }\n get bodyJson() {\n try {\n return JSON.parse(this.bodyText);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid JSON\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyJson\", info: { response: this }\n });\n }\n }\n [(_FetchResponse_props = new WeakMap(), _FetchResponse_error = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n makeServerError(message, error) {\n let statusMessage;\n if (!message) {\n message = `${this.statusCode} ${this.statusMessage}`;\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${message})`;\n }\n else {\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${message})`;\n }\n const response = new FetchResponse(599, statusMessage, this.headers, this.body, getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\") || undefined);\n __classPrivateFieldSet(response, _FetchResponse_error, { message, error }, \"f\");\n return response;\n }\n throwThrottleError(message, stall) {\n if (stall == null) {\n stall = 1000;\n }\n if (typeof (stall) !== \"number\" || !Number.isInteger(stall) || stall < 0) {\n logger.throwArgumentError(\"invalid stall timeout\", \"stall\", stall);\n }\n const error = new Error(message || \"throttling requests\");\n defineProperties(error, { stall, throttle: true });\n throw error;\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n hasBody() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body != null);\n }\n get request() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\"); }\n ok() {\n return (__classPrivateFieldGet(this, _FetchResponse_error, \"f\").message === \"\" && this.statusCode >= 200 && this.statusCode < 300);\n }\n assertOk() {\n if (this.ok()) {\n return;\n }\n let { message, error } = __classPrivateFieldGet(this, _FetchResponse_error, \"f\");\n if (message === \"\") {\n message = `server response ${this.statusCode} ${this.statusMessage}`;\n }\n logger.throwError(message, \"SERVER_ERROR\", {\n request: (this.request || \"unknown request\"), response: this, error\n });\n }\n}\n//# sourceMappingURL=response.js.map","import { logger } from \"./logger.js\";\nimport { FetchResponse } from \"./response.js\";\nexport async function getUrl(req, timeout) {\n const protocol = req.url.split(\":\")[0].toLowerCase();\n if (protocol !== \"http\" && protocol !== \"https\") {\n logger.throwError(`unsupported protocol ${protocol}`, \"UNSUPPORTED_OPERATION\", {\n info: { protocol },\n operation: \"request\"\n });\n }\n if (req.credentials && !req.allowInsecureAuthentication) {\n logger.throwError(\"insecure authorized connections unsupported\", \"UNSUPPORTED_OPERATION\", {\n operation: \"request\"\n });\n }\n const init = {\n method: req.method,\n headers: new Headers(Array.from(req)),\n body: req.body || undefined,\n };\n const resp = await fetch(req.url, init);\n const headers = {};\n resp.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n const body = new Uint8Array(await resp.arrayBuffer());\n return new FetchResponse(resp.status, resp.statusText, headers, body, req);\n}\n//# sourceMappingURL=get-url-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchRequest_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nfunction check(value, type, name) {\n if (typeof (value) !== type) {\n throw new Error(`invalid ${name}`);\n }\n return value;\n}\nexport class FetchRequest {\n constructor(url) {\n _FetchRequest_props.set(this, void 0);\n __classPrivateFieldSet(this, _FetchRequest_props, {\n allowInsecure: false,\n gzip: false,\n headers: {},\n method: \"\",\n timeout: 300,\n url: check(url, \"string\", \"url\")\n }, \"f\");\n }\n // URL\n get url() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\"); }\n set url(url) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\", check(url, \"string\", \"url\"));\n }\n // Body\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body == null) {\n return null;\n }\n if (this.isFrozen()) {\n return new Uint8Array(body);\n }\n return body;\n }\n set body(body) {\n if (body == null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", undefined);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", undefined);\n }\n else if (typeof (body) === \"string\") {\n // @TODO: utf8-check\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(body));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"text/plain\");\n }\n else if (body instanceof Uint8Array) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", body);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/octet-stream\");\n }\n else if (typeof (body) === \"object\") {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(JSON.stringify(body)));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/json\");\n }\n else {\n throw new Error(\"invalid body\");\n }\n }\n hasBody() {\n return (getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\") != null);\n }\n // Method (default: GET with no body, POST with a body)\n get method() {\n const method = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\");\n if (method) {\n return method.toUpperCase();\n }\n if (this.body) {\n return \"POST\";\n }\n return \"GET\";\n }\n set method(method) {\n if (method == null) {\n method = \"\";\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\", check(method, \"string\", \"method\"));\n }\n // Headers (automatically fills content-type if not explicitly set)\n get headers() {\n const headers = Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\"));\n const bodyType = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\");\n if (this.credentials) { /* TODO */ }\n ;\n if (this.allowGzip) {\n headers[\"accept-encoding\"] = \"gzip\";\n }\n if (headers[\"content-type\"] == null && bodyType) {\n headers[\"content-type\"] = bodyType;\n }\n if (this.body) {\n headers[\"content-length\"] = String(this.body.length);\n }\n return Object.freeze(headers);\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n setHeader(key, value) {\n const headers = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\");\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", headers);\n headers[check(key, \"string\", \"key\").toLowerCase()] = String(value);\n }\n clearHeaders() {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", {});\n }\n [(_FetchRequest_props = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n // Configure an Authorization header\n get credentials() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\") || null;\n }\n setCredentials(username, password) {\n if (username.match(/:/)) {\n logger.throwArgumentError(\"invalid basic authentication username\", \"username\", \"[REDACTED]\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\", `${username}:${password}`);\n // @TODO:\n //const auth = username + \":\" + password;\n //this.setHeader(\"authorization\", \"Basic \" + base64Encode(toUtf8Bytes(auth)))\n //this.setHeader(\"authorization\", \"Basic TODO:\" + auth);\n }\n // Configure the request to allow gzipped responses\n get allowGzip() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\");\n }\n set allowGzip(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\", !!value);\n }\n // Allow credentials to be sent over an insecure (non-HTTPS) channel\n get allowInsecureAuthentication() {\n return !!getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\");\n }\n set allowInsecureAuthentication(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\", check(value, \"boolean\", \"allowInsecureAuthentication\"));\n }\n // Timeout (seconds)\n get timeout() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\"); }\n set timeout(timeout) {\n timeout = check(timeout, \"number\", \"timeout\");\n if (timeout <= 0) {\n throw new Error(\"invalid timerout\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\", timeout);\n }\n redirect(location) {\n // Redirection; for now we only support absolute locataions\n const current = this.url.split(\":\")[0].toLowerCase();\n const target = location.split(\":\")[0].toLowerCase();\n if (this.method !== \"GET\" || (current === \"https\" && target === \"http\") ||\n !location.match(/^https?:/)) {\n return logger.throwError(`unsupported redirect`, \"UNSUPPORTED_OPERATION\", {\n operation: `redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(location)})`\n });\n }\n // Create a copy of this request, with a new URL\n const req = new FetchRequest(location);\n req.method = \"GET\";\n req.allowGzip = this.allowGzip;\n req.timeout = this.timeout;\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"body\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\"));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Do not forward credentials unless on the same domain; only absolute\n //req.allowInsecure = false;\n // paths are currently supported; may want a way to specify to forward?\n //setStore(req.#props, \"creds\", getStore(this.#pros, \"creds\"));\n return req;\n }\n clone() {\n const clone = new FetchRequest(this.url);\n // Preserve \"default method\" (i.e. null)\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"method\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\"));\n // Preserve \"default body\" with type, copying the Uint8Array is present\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"body\", (body == null) ? undefined : new Uint8Array(body));\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Preserve \"default headers\"\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n // Credentials is readonly, so we copy internally\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"creds\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\"));\n if (this.allowGzip) {\n clone.allowGzip = true;\n }\n clone.timeout = this.timeout;\n if (this.allowInsecureAuthentication) {\n clone.allowInsecureAuthentication = true;\n }\n return clone;\n }\n freeze() {\n // Copy the body so any changes to previous access do not modify it\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body != null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", new Uint8Array(body));\n }\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\").headers);\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n }\n}\n//# sourceMappingURL=request.js.map","import { decodeBase64 } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { getUrl } from \"./get-url.js\"; /*-browser*/\nimport { logger } from \"./logger.js\";\nimport { FetchRequest } from \"./request.js\";\nimport { FetchResponse } from \"./response.js\";\nasync function delay(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\n// @TODO: Add option for global preflightRequest?\nfunction getTime() { return (new Date()).getTime(); }\nfunction unpercent(value) {\n value = value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n });\n return toUtf8Bytes(value);\n}\nlet lockGateways = false;\nlet ipfsGateway = \"https:/\\/gateway.ipfs.io/\";\nlet arGateway = \"https:/\\/gateway.ar.io/\";\nexport async function fetchData(connection) {\n const conn = (typeof (connection) === \"string\") ? {\n request: new FetchRequest(connection)\n } : (connection instanceof FetchRequest) ? {\n request: connection\n } : Object.assign({}, connection);\n if (conn.request == null) {\n return logger.throwArgumentError(\"missing request\", \"connection\", connection);\n }\n let req = conn.request.clone().freeze();\n switch (conn.request.url.split(\":\")[0]) {\n case \"data\": {\n const match = req.url.match(/^data:([^;:]*)?(;base64)?,(.*)$/i);\n if (match) {\n try {\n const headers = {\n \"content-type\": (match[1] ? match[1] : \"text/plain\")\n };\n const body = (match[2] ? decodeBase64(match[3]) : unpercent(match[3]));\n return new FetchResponse(200, \"OK\", headers, body, req.clone());\n }\n catch (error) {\n return new FetchResponse(400, \"BAD REQUEST (invalid base64 encoded data)\", {}, null, req.clone());\n }\n }\n return new FetchResponse(500, \"INTERNAL SERVER ERROR (unsupported dara URI)\", {}, null, req.clone());\n }\n case \"ipfs\":\n case \"ipns\":\n case \"ar\":\n throw new Error(\"not implemented yet\");\n console.log(\"FF\", arGateway, ipfsGateway);\n case \"http\":\n case \"https\":\n break;\n default:\n throw new Error(\"unsupported scheme\");\n }\n const attempts = (conn.throttleLimit != null) ? conn.throttleLimit : 12;\n if (!Number.isInteger(attempts) || attempts < 1) {\n return logger.throwArgumentError(\"invalid throttleLimit\", \"connection\", connection);\n }\n const slotInterval = (conn.throttleSlotInterval != null) ? conn.throttleSlotInterval : 100;\n //logger.assertInteger(slotInterval, \"connection.throttleSlotInterval\", connection.throttleSlotInterval);\n if (!Number.isInteger(slotInterval) || attempts < 0) {\n return logger.throwArgumentError(\"invalid throttleSlotInterval\", \"connection\", connection);\n }\n const retryFunc = (conn.throttleRetry != null) ? conn.throttleRetry : null;\n if (retryFunc && typeof (retryFunc) !== \"function\") {\n return logger.throwArgumentError(\"invalid throttleRetry callback\", \"connection\", connection);\n }\n const preflightRequest = conn.preflightRequest || null;\n if (preflightRequest && typeof (preflightRequest) !== \"function\") {\n return logger.throwArgumentError(\"invalid preflightRequest callback\", \"connection\", connection);\n }\n const processResponse = conn.processResponse || null;\n if (processResponse && typeof (processResponse) !== \"function\") {\n return logger.throwArgumentError(\"invalid processResponse callback\", \"connection\", connection);\n }\n // Start time of this fetch (for timeouts)\n const t0 = getTime();\n let response = null;\n for (let a = 0; a < attempts; a++) {\n let request = req.clone();\n if (preflightRequest) {\n request = (await preflightRequest(request.freeze())).clone();\n }\n const remainingTime = getTime() - t0;\n if (remainingTime < 0) {\n return logger.throwError(\"timeout\", \"TIMEOUT\", { operation: \"request\", reason: \"timeout\", request });\n }\n response = await getUrl(request, remainingTime);\n // Retry logic (server forced)\n if (a < attempts) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Try following the redirect; the request will through if the\n // type of redirect is not supported\n try {\n req = request.redirect(response.headers.location || \"\");\n continue;\n }\n catch (error) { }\n ;\n // Things won't get any better on another attempt; abort\n return response;\n }\n else if (response.statusCode === 429) {\n if (retryFunc == null || (await retryFunc(request.freeze(), response, a))) {\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof (retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n await delay(parseInt(retryAfter));\n }\n else {\n await delay(slotInterval * Math.trunc(Math.random() * Math.pow(2, a)));\n }\n continue;\n }\n }\n }\n // Optional post-processing response; also allows trapping\n // HTTP status errors and doing \"something different\",\n // including any further throttling.\n if (processResponse) {\n try {\n return await processResponse(request, response);\n }\n catch (error) {\n // response.throwThrottleError\n if (error.throttle && typeof (error.stall) === \"number\") {\n if (a < attempts) {\n await delay(error.stall);\n continue;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\", error);\n }\n // Something went wrong during processing; throw a 5xx server error\n response.makeServerError(\"error in post-processing function\", error).assertOk();\n }\n }\n return response;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\");\n}\nfetchData.lock = function () {\n lockGateways = true;\n};\n// @TODO: Allow a master Gateway function\nfetchData.setGateway = function (gateway) {\n};\nfetchData.setIpfsGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setIpfsGateway\"\n });\n }\n ipfsGateway = gateway;\n};\nfetchData.setArGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setArGateway\"\n });\n }\n arGateway = gateway;\n};\n//# sourceMappingURL=fetch-data.js.map","export const version = \"@ethersproject/providers@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _a, _EnsResolver_supports2544, _EnsResolver_getResolver;\nimport { concat, dataSlice, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { encodeBase58, toArray, toNumber } from \"@ethersproject/math\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData } from \"@ethersproject/web\";\nimport { logger } from \"./logger.js\";\nconst BN_1 = BigInt(1);\nconst Empty = new Uint8Array([]);\nconst HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n const offset = toNumber(dataSlice(result, start, start + 32));\n const length = toNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n}\nfunction parseString(result, start) {\n try {\n const bytes = parseBytes(result, start);\n if (bytes != null) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(Empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\n// @TODO: This should use the fetch-data:ipfs gateway\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link) {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n }\n else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n }\n else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n return `https:/\\/gateway.ipfs.io/ipfs/${link}`;\n}\n;\n;\nexport class MulticoinProviderPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n validate(proivder) {\n return this;\n }\n supportsCoinType(coinType) {\n return false;\n }\n async encodeAddress(coinType, address) {\n throw new Error(\"unsupported coin\");\n }\n async decodeAddress(coinType, data) {\n throw new Error(\"unsupported coin\");\n }\n}\nconst BasicMulticoinPluginId = \"org.ethers.provider-prugins.basicmulticoin\";\nexport class BasicMulticoinProviderPlugin extends MulticoinProviderPlugin {\n constructor() {\n super(BasicMulticoinPluginId);\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];\nexport class EnsResolver {\n constructor(provider, address, name) {\n // For EIP-2544 names, the ancestor that provided the resolver\n _EnsResolver_supports2544.set(this, void 0);\n defineProperties(this, { provider, address, name });\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n }\n async supportsWildcard() {\n if (!__classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\")) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n __classPrivateFieldSet(this, _EnsResolver_supports2544, this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return (logger.getBigInt(result) === BN_1);\n }).catch((error) => {\n if (error.code === \"CALL_EXCEPTION\") {\n return false;\n }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n throw error;\n }), \"f\");\n }\n return await __classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\");\n }\n async _fetch(selector, parameters = \"0x\") {\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const addrData = concat([selector, namehash(this.name), parameters]);\n const tx = {\n to: this.address,\n enableCcipRead: true,\n data: addrData\n };\n // Wildcard support; use EIP-2544 to resolve the request\n let wrapped = false;\n if (await this.supportsWildcard()) {\n wrapped = true;\n // selector(\"resolve(bytes,bytes)\")\n tx.data = concat([\"0x9061b923\", encodeBytes([dnsEncode(this.name), addrData])]);\n }\n try {\n let data = await this.provider.call(tx);\n if ((logger.getBytes(data).length % 32) === 4) {\n return logger.throwError(\"resolver threw error\", \"CALL_EXCEPTION\", {\n transaction: tx, data\n });\n }\n if (wrapped) {\n return parseBytes(data, 0);\n }\n return data;\n }\n catch (error) {\n if (error.code !== \"CALL_EXCEPTION\") {\n throw error;\n }\n }\n return null;\n }\n async getAddress(coinType = 60) {\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n // No address\n if (result === \"0x\" || result === HashZero) {\n return null;\n }\n const network = await this.provider.getNetwork();\n return network.formatter.callAddress(result);\n }\n catch (error) {\n if (error.code === \"CALL_EXCEPTION\") {\n return null;\n }\n throw error;\n }\n }\n let coinPlugin = null;\n for (const plugin of this.provider.plugins) {\n if (!(plugin instanceof MulticoinProviderPlugin)) {\n continue;\n }\n if (plugin.supportsCoinType(coinType)) {\n coinPlugin = plugin;\n break;\n }\n }\n if (coinPlugin == null) {\n return null;\n }\n // keccak256(\"addr(bytes32,uint256\")\n const data = parseBytes((await this._fetch(\"0xf1cb7e06\", numPad(coinType))) || \"0x\", 0);\n // No address\n if (data == null || data === \"0x\") {\n return null;\n }\n // Compute the address\n const address = await coinPlugin.encodeAddress(coinType, data);\n if (address != null) {\n return address;\n }\n return logger.throwError(`invalid coin data`, \"UNSUPPORTED_OPERATION\", {\n operation: `getAddress(${coinType})`,\n info: { coinType, data }\n });\n }\n async getText(key) {\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\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 const calldata = logger.getBytes(concat([numPad(64), numPad(keyBytes.length), keyBytes]));\n const hexBytes = parseBytes((await this._fetch(\"0x59d1d43c\", bytesPad(calldata))) || \"0x\", 0);\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n return toUtf8String(hexBytes);\n }\n async getContentHash() {\n // keccak256(\"contenthash()\")\n const hexBytes = parseBytes((await this._fetch(\"0xbc1c58d1\")) || \"0x\", 0);\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n // IPFS (CID: 1, Type: 70=DAG-PB, 72=libp2p-key)\n const ipfs = hexBytes.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const scheme = (ipfs[1] === \"e3010170\") ? \"ipfs\" : \"ipns\";\n const length = parseInt(ipfs[4], 16);\n if (ipfs[5].length === length * 2) {\n return `${scheme}:/\\/${encodeBase58(\"0x\" + ipfs[2])}`;\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 && swarm[1].length === 64) {\n return `bzz:/\\/${swarm[1]}`;\n }\n return logger.throwError(`invalid or unsupported content hash data`, \"UNSUPPORTED_OPERATION\", {\n operation: \"getContentHash()\",\n info: { data: hexBytes }\n });\n }\n async getAvatar() {\n return (await this._getAvatar()).url;\n }\n async _getAvatar() {\n const linkage = [{ type: \"name\", value: 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) {\n linkage.push({ type: \"!avatar\", value: \"\" });\n throw new Error(\"!avatar\");\n }\n linkage.push({ type: \"avatar\", value: avatar });\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) {\n continue;\n }\n const scheme = match[1].toLowerCase();\n switch (scheme) {\n case \"https\":\n case \"data\":\n linkage.push({ type: \"url\", value: avatar });\n return { linkage, url: avatar };\n case \"ipfs\": {\n const url = getIpfsLink(avatar);\n linkage.push({ type: \"ipfs\", value: avatar });\n linkage.push({ type: \"url\", value: url });\n return { linkage, url };\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, value: avatar });\n // The owner of this name\n const owner = await this.getAddress();\n if (owner == null) {\n linkage.push({ type: \"!owner\", value: \"\" });\n throw new Error(\"!owner\");\n }\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) {\n linkage.push({ type: `!${scheme}caip`, value: (match[2] || \"\") });\n throw new Error(\"!caip\");\n }\n const formatter = (await this.provider.getNetwork()).formatter;\n const addr = formatter.address(comps[0]);\n const tokenId = numPad(comps[1]);\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = formatter.callAddress(await this.provider.call({\n to: addr, data: concat([\"0x6352211e\", tokenId])\n }));\n if (owner !== tokenOwner) {\n linkage.push({ type: \"!owner\", value: tokenOwner });\n throw new Error(\"!owner\");\n }\n linkage.push({ type: \"owner\", value: tokenOwner });\n }\n else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = logger.getBigInt(await this.provider.call({\n to: addr, data: concat([\"0x00fdd58e\", zeroPadValue(owner, 32), tokenId])\n }));\n if (!balance) {\n linkage.push({ type: \"!balance\", value: \"0\" });\n throw new Error(\"!balance\");\n }\n linkage.push({ type: \"balance\", value: balance.toString() });\n }\n // Call the token contract for the metadata URL\n const tx = {\n to: comps[0],\n data: concat([selector, tokenId])\n };\n let metadataUrl = parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) {\n linkage.push({ type: \"!metadata-url\", value: \"\" });\n throw new Error(\"!metadata-url\");\n }\n linkage.push({ type: \"metadata-url-base\", value: metadataUrl });\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", hexlify(tokenId).substring(2));\n linkage.push({ type: \"metadata-url-expanded\", value: metadataUrl });\n }\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n linkage.push({ type: \"metadata-url\", value: metadataUrl });\n // Get the token metadata\n let metadata = {};\n const response = await fetchData(metadataUrl);\n response.assertOk();\n try {\n metadata = response.bodyJson;\n }\n catch (error) {\n try {\n linkage.push({ type: \"!metadata\", value: response.bodyText });\n }\n catch (error) {\n const bytes = response.body;\n if (bytes) {\n linkage.push({ type: \"!metadata\", value: hexlify(bytes) });\n }\n throw error;\n }\n throw error;\n }\n if (!metadata) {\n linkage.push({ type: \"!metadata\", value: \"\" });\n throw new Error(\"!metadata\");\n }\n linkage.push({ type: \"metadata\", value: JSON.stringify(metadata) });\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof (imageUrl) !== \"string\") {\n linkage.push({ type: \"!imageUrl\", value: \"\" });\n throw new Error(\"!imageUrl\");\n }\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n }\n else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) {\n linkage.push({ type: \"!imageUrl-ipfs\", value: imageUrl });\n throw new Error(\"!imageUrl-ipfs\");\n }\n linkage.push({ type: \"imageUrl-ipfs\", value: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n linkage.push({ type: \"url\", value: imageUrl });\n return { linkage, url: imageUrl };\n }\n }\n }\n }\n catch (error) {\n console.log(\"EE\", error);\n }\n return { linkage, url: null };\n }\n static async fromName(provider, name) {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") {\n return null;\n }\n // Optimization since the eth node cannot change and does\n // not have a wildcar resolver\n if (name !== \"eth\" && currentName === \"eth\") {\n return null;\n }\n // Check the current node for a resolver\n const addr = await __classPrivateFieldGet(EnsResolver, _a, \"m\", _EnsResolver_getResolver).call(EnsResolver, provider, currentName);\n // Found a resolver!\n if (addr != null) {\n const resolver = new EnsResolver(provider, addr, name);\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) {\n return null;\n }\n return resolver;\n }\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n }\n}\n_a = EnsResolver, _EnsResolver_supports2544 = new WeakMap(), _EnsResolver_getResolver = async function _EnsResolver_getResolver(provider, name) {\n const network = await provider.getNetwork();\n const ensPlugin = network.getPlugin(\"org.ethers.plugins.ens\");\n // No ENS...\n if (!ensPlugin) {\n return logger.throwError(\"network does not support ENS\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getResolver\", info: { network: network.name }\n });\n }\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await provider.call({\n to: ensPlugin.address,\n data: concat([\"0x0178b8bf\", namehash(name)]),\n enableCcipRead: true\n });\n const addr = network.formatter.callAddress(addrData);\n if (addr === dataSlice(HashZero, 0, 20)) {\n return null;\n }\n return addr;\n }\n catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32),\n // so probably a link error\n throw error;\n }\n return null;\n};\n//# sourceMappingURL=ens-resolver.js.map","export const version = \"@ethersproject/signing-key@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Signature_props;\nimport { concat, dataLength, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n// Constants\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst _guard = {};\nconst Zero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nexport class Signature {\n constructor(guard, r, s, v) {\n _Signature_props.set(this, void 0);\n logger.assertPrivate(guard, _guard, \"Signature\");\n __classPrivateFieldSet(this, _Signature_props, { r, s, v, networkV: null }, \"f\");\n }\n get r() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\"); }\n set r(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\", hexlify(value));\n }\n get s() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\"); }\n set s(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n else if (logger.getBytes(value)[0] & 0x80) {\n logger.throwArgumentError(\"non-canonical s\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\", hexlify(value));\n }\n get v() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\"); }\n set v(value) {\n const v = logger.getNumber(value, \"value\");\n if (v !== 27 && v !== 28) {\n throw new Error(\"@TODO\");\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\", v);\n }\n get networkV() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"networkV\"); }\n get legacyChainId() {\n const v = this.networkV;\n if (v == null) {\n return null;\n }\n return Signature.getChainId(v);\n }\n get yParity() {\n if (this.v === 27) {\n return 0;\n }\n return 1;\n /*\n // When v is 0 or 1 it is the recid directly\n if (this.v.isZero()) { return 0; }\n if (this.v.eq(1)) { return 1; }\n\n // Otherwise, odd (e.g. 27) is 0 and even (e.g. 28) is 1\n return this.v.and(1).isZero() ? 1: 0;\n */\n }\n get yParityAndS() {\n // The EIP-2098 compact representation\n const yParityAndS = logger.getBytes(this.s);\n if (this.yParity) {\n yParityAndS[0] |= 0x80;\n }\n return hexlify(yParityAndS);\n }\n get compactSerialized() {\n return concat([this.r, this.yParityAndS]);\n }\n get serialized() {\n return concat([this.r, this.s, (this.yParity ? \"0x1c\" : \"0x1b\")]);\n }\n [(_Signature_props = new WeakMap(), Symbol.for('nodejs.util.inspect.custom'))]() {\n return `Signature { r: \"${this.r}\", s: \"${this.s}\", yParity: ${this.yParity}, networkV: ${this.networkV} }`;\n }\n clone() {\n const clone = new Signature(_guard, this.r, this.s, this.v);\n if (this.networkV) {\n setStore(__classPrivateFieldGet(clone, _Signature_props, \"f\"), \"networkV\", this.networkV);\n }\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n }\n toJSON() {\n const networkV = this.networkV;\n return {\n _type: \"signature\",\n networkV: ((networkV != null) ? networkV.toString() : null),\n r: this.r, s: this.s, v: this.v,\n };\n }\n static create() {\n return new Signature(_guard, Zero, Zero, 27);\n }\n // Get the chain ID from an EIP-155 v\n static getChainId(v) {\n const bv = logger.getBigInt(v, \"v\");\n // The v is not an EIP-155 v, so it is the unspecified chain ID\n if ((bv == BN_27) || (bv == BN_28)) {\n return BN_0;\n }\n // Bad value for an EIP-155 v\n if (bv < BN_35) {\n logger.throwArgumentError(\"invalid EIP-155 v\", \"v\", v);\n }\n return (bv - BN_35) / BN_2;\n }\n // Get the EIP-155 v transformed for a given chainId\n static getChainIdV(chainId, v) {\n return (logger.getBigInt(chainId) * BN_2) + BigInt(35 + v - 27);\n }\n // Convert an EIP-155 v into a normalized v\n static getNormalizedV(v) {\n const bv = logger.getBigInt(v);\n if (bv == BN_0) {\n return 27;\n }\n if (bv == BN_1) {\n return 28;\n }\n // Otherwise, EIP-155 v means odd is 27 and even is 28\n return (bv & BN_1) ? 27 : 28;\n }\n static from(sig) {\n const throwError = (message) => {\n return logger.throwArgumentError(message, \"signature\", sig);\n };\n if (typeof (sig) === \"string\") {\n const bytes = logger.getBytes(sig, \"signature\");\n if (bytes.length === 64) {\n const r = hexlify(bytes.slice(0, 32));\n const s = bytes.slice(32, 64);\n const v = (s[0] & 0x80) ? 28 : 27;\n s[0] &= 0x7f;\n return new Signature(_guard, r, hexlify(s), v);\n }\n if (dataLength(sig) !== 65) {\n const r = hexlify(sig.slice(0, 32));\n const s = bytes.slice(32, 64);\n if (s[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n const v = Signature.getNormalizedV(bytes[64]);\n return new Signature(_guard, r, hexlify(s), v);\n }\n return throwError(\"invlaid raw signature length\");\n }\n if (sig instanceof Signature) {\n return sig.clone();\n }\n // Get r\n const r = sig.r;\n if (r == null) {\n throwError(\"missing r\");\n }\n if (!isHexString(r, 32)) {\n throwError(\"invalid r\");\n }\n // Get s; by any means necessary (we check consistency below)\n const s = (function (s, yParityAndS) {\n if (s != null) {\n if (!isHexString(s, 32)) {\n throwError(\"invalid s\");\n }\n return s;\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n const bytes = logger.getBytes(yParityAndS);\n bytes[0] &= 0x7f;\n return hexlify(bytes);\n }\n return throwError(\"missing s\");\n })(sig.s, sig.yParityAndS);\n if (logger.getBytes(s)[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n // Get v; by any means necessary (we check consistency below)\n const { networkV, v } = (function (_v, yParityAndS, yParity) {\n if (_v != null) {\n const v = logger.getBigInt(_v);\n return {\n networkV: ((v >= BN_35) ? v : undefined),\n v: Signature.getNormalizedV(v)\n };\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n return { v: ((logger.getBytes(yParityAndS)[0] & 0x80) ? 28 : 27) };\n }\n if (yParity != null) {\n switch (yParity) {\n case 0: return { v: 27 };\n case 1: return { v: 28 };\n }\n return throwError(\"invalid yParity\");\n }\n return throwError(\"missing v\");\n })(sig.v, sig.yParityAndS, sig.yParity);\n const result = new Signature(_guard, r, s, v);\n if (networkV) {\n setStore(__classPrivateFieldGet(result, _Signature_props, \"f\"), \"networkV\", networkV);\n }\n // If multiple of v, yParity, yParityAndS we given, check they match\n if (\"yParity\" in sig && sig.yParity !== result.yParity) {\n throwError(\"yParity mismatch\");\n }\n else if (\"yParityAndS\" in sig && sig.yParityAndS !== result.yParityAndS) {\n throwError(\"yParityAndS mismatch\");\n }\n return result;\n }\n}\n//# sourceMappingURL=signature.js.map","/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst POW_2_256 = _2n ** BigInt(256);\nconst CURVE = {\n a: _0n,\n b: BigInt(7),\n P: POW_2_256 - _2n ** BigInt(32) - BigInt(977),\n n: POW_2_256 - BigInt('432420386565659656852420866394968145599'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n};\nexport { CURVE };\nfunction weistrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 ** _2n);\n const B = mod(Y1 ** _2n);\n const C = mod(B ** _2n);\n const D = mod(_2n * (mod((X1 + B) ** _2n) - A - C));\n const E = mod(_3n * A);\n const F = mod(E ** _2n);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H ** _2n);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r ** _2n - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n let n = normalizeScalar(scalar);\n const G = JacobianPoint.BASE;\n const P0 = JacobianPoint.ZERO;\n if (n === _0n)\n return P0;\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.ZERO;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) {\n let pr = precomputes[offset];\n if (window % 2)\n pr = pr.negate();\n f = f.add(pr);\n }\n else {\n let cached = precomputes[offset + Math.abs(wbits) - 1];\n if (wbits < 0)\n cached = cached.negate();\n p = p.add(cached);\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ = invert(this.z)) {\n const { x, y, z } = this;\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weistrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, 33));\n const y = bytesToNumber(bytes.subarray(33, 65));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n return this.fromCompressedHex(bytes);\n }\n if (len === 65 && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n msgHash = ensureBytes(msgHash);\n const h = truncateHash(msgHash);\n const { r, s } = normalizeSignature(signature);\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Cannot recover signature: invalid recovery bit');\n }\n if (h === _0n)\n throw new Error('Cannot recover signature: msgHash cannot be 0');\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(r));\n const { n } = CURVE;\n const rinv = invert(r, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.y & _1n ? '03' : '02';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weistrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nexport class Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = isUint8a(hex);\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = isUint8a(hex);\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n }\n toDERRawBytes(isCompressed = false) {\n return hexToBytes(this.toDERHex(isCompressed));\n }\n toDERHex(isCompressed = false) {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n if (isCompressed)\n return sHex;\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const rLen = numberToHexUnpadded(rHex.length / 2);\n const sLen = numberToHexUnpadded(sHex.length / 2);\n const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nfunction concatBytes(...arrays) {\n if (!arrays.every(isUint8a))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nfunction isUint8a(bytes) {\n return bytes instanceof Uint8Array;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nfunction numTo32bStr(num) {\n if (num > POW_2_256)\n throw new Error('Expected number < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n return hexToBytes(numTo32bStr(num));\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst POW_2_128 = _2n ** BigInt(128);\nfunction splitScalarEndo(k) {\n const { n } = CURVE;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n const { n } = CURVE;\n const byteLength = hash.length;\n const delta = byteLength * 8 - 256;\n let h = bytesToNumber(hash);\n if (delta > 0)\n h = h >> BigInt(delta);\n if (h >= n)\n h -= n;\n return h;\n}\nclass HmacDrbg {\n constructor() {\n this.v = new Uint8Array(32).fill(1);\n this.k = new Uint8Array(32).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n if (typeof utils.hmacSha256Sync !== 'function')\n throw new Error('utils.hmacSha256Sync is undefined, you need to set it');\n const res = utils.hmacSha256Sync(this.k, ...values);\n if (res instanceof Promise)\n throw new Error('To use sync sign(), ensure utils.hmacSha256 is sync');\n return res;\n }\n incr() {\n if (this.counter >= 1000) {\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n }\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n this.v = await this.hmac(this.v);\n return this.v;\n }\n generateSync() {\n this.incr();\n this.v = this.hmacSync(this.v);\n return this.v;\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n const k = bytesToNumber(kBytes);\n if (!isWithinCurveOrder(k))\n return;\n const { n } = CURVE;\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(invert(k, n) * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n const sig = new Signature(r, s);\n const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 64)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (isUint8a(key)) {\n if (key.length !== 32)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isPub(item) {\n const arr = isUint8a(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === 33 || len === 65;\n if (str)\n return len === 66 || len === 130;\n if (item instanceof Point)\n return true;\n return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n const hex = numTo32bStr(num);\n return hexToBytes(hex);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = utils.randomBytes(32);\n const e = ensureBytes(extraEntropy);\n if (e.length !== 32)\n throw new Error('sign: Expected 32 bytes of extra data');\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n let { sig, recovery } = recSig;\n const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n if (canonical && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n await drbg.reseed(seed);\n while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n drbg.reseedSync(seed);\n while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n if (h === _0n)\n return false;\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nasync function taggedHash(tag, ...messages) {\n const tagB = new Uint8Array(tag.split('').map((c) => c.charCodeAt(0)));\n const tagH = await utils.sha256(tagB);\n const h = await utils.sha256(concatBytes(tagH, tagH, ...messages));\n return bytesToNumber(h);\n}\nasync function createChallenge(x, P, message) {\n const rx = numTo32b(x);\n const t = await taggedHash('BIP0340/challenge', rx, P.toRawX(), message);\n return mod(t, CURVE.n);\n}\nfunction hasEvenY(point) {\n return (point.y & _1n) === _0n;\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nasync function schnorrSign(message, privateKey, auxRand = utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n const { n } = CURVE;\n const m = ensureBytes(message);\n const d0 = normalizePrivateKey(privateKey);\n const rand = ensureBytes(auxRand);\n if (rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n const P = Point.fromPrivateKey(d0);\n const d = hasEvenY(P) ? d0 : n - d0;\n const t0h = await taggedHash('BIP0340/aux', rand);\n const t = d ^ t0h;\n const k0h = await taggedHash('BIP0340/nonce', numTo32b(t), P.toRawX(), m);\n const k0 = mod(k0h, n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const R = Point.fromPrivateKey(k0);\n const k = hasEvenY(R) ? k0 : n - k0;\n const e = await createChallenge(R.x, P, m);\n const sig = new SchnorrSignature(R.x, mod(k + e * d, n)).toRawBytes();\n const isValid = await schnorrVerify(sig, m, P.toRawX());\n if (!isValid)\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n let sig;\n try {\n sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n const m = ensureBytes(message);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const e = await createChallenge(r, P, m);\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !hasEvenY(R) || R.x !== r)\n return false;\n return true;\n}\nexport const schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n if (hash.length < 40 || hash.length > 1024)\n throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n const num = mod(bytesToNumber(hash), CURVE.n);\n if (num === _0n || num === _1n)\n throw new Error('Invalid private key');\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => {\n return utils.hashToPrivateKey(utils.randomBytes(40));\n },\n bytesToHex,\n mod,\n sha256: async (message) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', message.buffer);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n return Uint8Array.from(createHash('sha256').update(message).digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n};\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SigningKey_privateKey;\nimport * as secp256k1 from \"@noble/secp256k1\";\nimport { arrayify, concat, dataLength, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac } from \"@ethersproject/crypto\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"./signature.js\";\nimport { logger } from \"./logger.js\";\n// Make noble-secp256k1 sync\nsecp256k1.utils.hmacSha256Sync = function (key, ...messages) {\n return arrayify(computeHmac(\"sha256\", key, concat(messages)));\n};\nexport class SigningKey {\n constructor(privateKey) {\n _SigningKey_privateKey.set(this, void 0);\n logger.assertArgument((dataLength(privateKey) === 32), \"invalid private key length\", \"privateKey\", \"[REDACTED]\");\n __classPrivateFieldSet(this, _SigningKey_privateKey, hexlify(privateKey), \"f\");\n }\n get privateKey() { return __classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"); }\n get publicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")); }\n get compressedPublicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"), true); }\n sign(digest) {\n logger.assertArgument((dataLength(digest) === 32), \"invalid digest length\", \"digest\", digest);\n const [sigDer, recid] = secp256k1.signSync(arrayify(digest), arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), {\n recovered: true,\n canonical: true\n });\n const sig = secp256k1.Signature.fromHex(sigDer);\n return Signature.from({\n r: toHex(\"0x\" + sig.r.toString(16), 32),\n s: toHex(\"0x\" + sig.s.toString(16), 32),\n v: (recid ? 0x1c : 0x1b)\n }).freeze();\n }\n computeShardSecret(other) {\n const pubKey = SigningKey.computePublicKey(other);\n return hexlify(secp256k1.getSharedSecret(arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), pubKey));\n }\n static computePublicKey(key, compressed) {\n let bytes = logger.getBytes(key, \"key\");\n if (bytes.length === 32) {\n const pubKey = secp256k1.getPublicKey(bytes, !!compressed);\n return hexlify(pubKey);\n }\n if (bytes.length === 64) {\n const pub = new Uint8Array(65);\n pub[0] = 0x04;\n pub.set(bytes, 1);\n bytes = pub;\n }\n const point = secp256k1.Point.fromHex(bytes);\n return hexlify(point.toRawBytes(compressed));\n }\n static recoverPublicKey(digest, signature) {\n const sig = Signature.from(signature);\n const der = secp256k1.Signature.fromCompact(arrayify(concat([sig.r, sig.s]))).toDERRawBytes();\n const pubKey = secp256k1.recoverPublicKey(arrayify(digest), der, sig.yParity);\n if (pubKey != null) {\n return hexlify(pubKey);\n }\n return logger.throwArgumentError(\"invalid signautre for digest\", \"signature\", signature);\n }\n static _addPoints(p0, p1, compressed) {\n const pub0 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p0).substring(2));\n const pub1 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p1).substring(2));\n return \"0x\" + pub0.add(pub1).toHex(!!compressed);\n }\n}\n_SigningKey_privateKey = new WeakMap();\n/*\nconst key = new SigningKey(\"0x1234567890123456789012345678901234567890123456789012345678901234\");\nconsole.log(key);\nconsole.log(key.sign(\"0x1234567890123456789012345678901234567890123456789012345678901234\"));\n{\n const privKey = \"0x1234567812345678123456781234567812345678123456781234567812345678\";\n const signingKey = new SigningKey(privKey);\n console.log(\"0\", signingKey, signingKey.publicKey, signingKey.publicKeyCompressed);\n\n let pubKey = SigningKey.computePublicKey(privKey);\n let pubKeyComp = SigningKey.computePublicKey(privKey, true);\n let pubKeyRaw = \"0x\" + SigningKey.computePublicKey(privKey).substring(4);\n console.log(\"A\", pubKey, pubKeyComp);\n\n let a = SigningKey.computePublicKey(pubKey);\n let b = SigningKey.computePublicKey(pubKey, true);\n console.log(\"B\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyComp);\n b = SigningKey.computePublicKey(pubKeyComp, true);\n console.log(\"C\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyRaw);\n b = SigningKey.computePublicKey(pubKeyRaw, true);\n console.log(\"D\", a, b);\n\n const digest = \"0x1122334411223344112233441122334411223344112233441122334411223344\";\n const sig = signingKey.sign(digest);\n console.log(\"SS\", sig, sig.r, sig.s, sig.yParity);\n\n console.log(\"R\", SigningKey.recoverPublicKey(digest, sig));\n}\n*/\n//# sourceMappingURL=signing-key.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { dataLength } from \"@ethersproject/bytes\";\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (dataLength(storageKey) !== 32) {\n //logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }>\n throw new Error(\"\");\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n //logger.throwArgumentError(\"access list expected to be [ address, storageKeys[>\n throw new Error(\"\");\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = 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//# sourceMappingURL=accesslist.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nexport function computeAddress(key) {\n const publicKey = SigningKey.computePublicKey(key, false);\n return getAddress(keccak256(\"0x\" + publicKey.substring(4)).substring(26));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(SigningKey.recoverPublicKey(digest, signature));\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/transaction@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Transaction_props;\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toArray } from \"@ethersproject/math\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { decodeRlp, encodeRlp } from \"@ethersproject/rlp\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"./accesslist.js\";\nimport { recoverAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst BN_MAX_UINT = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleData(value, param) {\n try {\n return hexlify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid data\", param, value);\n }\n}\nfunction handleAccessList(value, param) {\n try {\n return accessListify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid accessList\", param, value);\n }\n}\nfunction handleNumber(_value, param) {\n if (_value === \"0x\") {\n return 0;\n }\n return logger.getNumber(_value, param);\n}\nfunction handleUint(_value, param) {\n if (_value === \"0x\") {\n return BN_0;\n }\n const value = logger.getBigInt(_value, param);\n if (value > BN_MAX_UINT) {\n logger.throwArgumentError(\"value exceeds uint size\", param, value);\n }\n return value;\n}\nfunction formatNumber(_value, name) {\n const value = logger.getBigInt(_value, \"value\");\n const result = toArray(value);\n if (result.length > 32) {\n logger.throwArgumentError(`value too large`, `tx.${name}`, value);\n }\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _parseLegacy(data) {\n const fields = decodeRlp(data);\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 6)) {\n return logger.throwArgumentError(\"invalid field count for legacy transaction\", \"data\", data);\n }\n const tx = {\n type: 0,\n nonce: handleNumber(fields[0], \"nonce\"),\n gasPrice: handleUint(fields[1], \"gasPrice\"),\n gasLimit: handleUint(fields[2], \"gasLimit\"),\n to: handleAddress(fields[3]),\n value: handleUint(fields[4], \"value\"),\n data: handleData(fields[5], \"dta\"),\n chainId: BN_0\n };\n // Legacy unsigned transaction\n if (fields.length === 6) {\n return tx;\n }\n const v = handleUint(fields[6], \"v\");\n const r = handleUint(fields[7], \"r\");\n const s = handleUint(fields[8], \"s\");\n if (r === BN_0 && s === BN_0) {\n // EIP-155 unsigned transaction\n tx.chainId = v;\n }\n else {\n // Compute the EIP-155 chain ID (or 0 for legacy)\n let chainId = (v - BN_35) / BN_2;\n if (chainId < BN_0) {\n chainId = BN_0;\n }\n tx.chainId = chainId;\n // Signed Legacy Transaction\n if (chainId === BN_0 && (v < BN_27 || v > BN_28)) {\n logger.throwArgumentError(\"non-canonical legacy v\", \"v\", fields[6]);\n }\n tx.signature = Signature.from({\n r: zeroPadValue(fields[7], 32),\n s: zeroPadValue(fields[8], 32),\n v\n });\n tx.hash = keccak256(data);\n }\n return tx;\n}\nfunction _serializeLegacy(tx, sig) {\n const fields = [\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n ];\n let chainId = BN_0;\n if (tx.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = logger.getBigInt(tx.chainId, \"tx.chainId\");\n // We have a chainId in the tx and an EIP-155 v in the signature,\n // make sure they agree with each other\n if (sig && sig.networkV != null && sig.legacyChainId !== chainId) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n }\n else if (sig) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n const legacy = sig.legacyChainId;\n if (legacy != null) {\n chainId = legacy;\n }\n }\n // Requesting an unsigned transaction\n if (!sig) {\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== BN_0) {\n fields.push(toArray(chainId));\n fields.push(\"0x\");\n fields.push(\"0x\");\n }\n return encodeRlp(fields);\n }\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = BigInt(27 + sig.yParity);\n if (chainId !== BN_0) {\n v = Signature.getChainIdV(chainId, sig.v);\n }\n else if (BigInt(sig.v) !== v) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n fields.push(toArray(v));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n return encodeRlp(fields);\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n let yParity;\n try {\n yParity = handleNumber(fields[0], \"yParity\");\n if (yParity !== 0 && yParity !== 1) {\n throw new Error(\"bad yParity\");\n }\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid yParity\", \"yParity\", fields[0]);\n }\n const r = zeroPadValue(fields[1], 32);\n const s = zeroPadValue(fields[2], 32);\n const signature = Signature.from({ r, s, yParity });\n tx.signature = signature;\n}\nfunction _parseEip1559(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 12)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 2\", \"data\", hexlify(data));\n }\n const maxPriorityFeePerGas = handleUint(fields[2], \"maxPriorityFeePerGas\");\n const maxFeePerGas = handleUint(fields[3], \"maxFeePerGas\");\n const tx = {\n type: 2,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleUint(fields[4], \"gasLimit\"),\n to: handleAddress(fields[5]),\n value: handleUint(fields[6], \"value\"),\n data: handleData(fields[7], \"data\"),\n accessList: handleAccessList(fields[8], \"accessList\"),\n };\n // Unsigned EIP-1559 Transaction\n if (fields.length === 9) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _serializeEip1559(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(tx.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"yParity\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x02\", encodeRlp(fields)]);\n}\nfunction _parseEip2930(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 8 && fields.length !== 11)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 1\", \"data\", hexlify(data));\n }\n const tx = {\n type: 1,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n gasPrice: handleUint(fields[2], \"gasPrice\"),\n gasLimit: handleUint(fields[3], \"gasLimit\"),\n to: handleAddress(fields[4]),\n value: handleUint(fields[5], \"value\"),\n data: handleData(fields[6], \"data\"),\n accessList: handleAccessList(fields[7], \"accessList\")\n };\n // Unsigned EIP-2930 Transaction\n if (fields.length === 8) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(8), _serializeEip2930);\n return tx;\n}\nfunction _serializeEip2930(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"recoveryParam\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x01\", encodeRlp(fields)]);\n}\nexport class Transaction {\n constructor() {\n _Transaction_props.set(this, void 0);\n __classPrivateFieldSet(this, _Transaction_props, {\n type: null,\n to: null,\n nonce: 0,\n gasLimit: BigInt(0),\n gasPrice: null,\n maxPriorityFeePerGas: null,\n maxFeePerGas: null,\n data: \"0x\",\n value: BigInt(0),\n chainId: BigInt(0),\n sig: null,\n accessList: null\n }, \"f\");\n }\n // A type of null indicates the type will be populated automatically\n get type() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\"); }\n get typeName() {\n switch (this.type) {\n case 0: return \"legacy\";\n case 1: return \"eip-2930\";\n case 2: return \"eip-1559\";\n }\n return null;\n }\n set type(value) {\n switch (value) {\n case null:\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", null);\n break;\n case 0:\n case \"legacy\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 0);\n break;\n case 1:\n case \"berlin\":\n case \"eip-2930\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 1);\n break;\n case 2:\n case \"london\":\n case \"eip-1559\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 2);\n break;\n default:\n throw new Error(`unsupported transaction type`);\n }\n }\n get to() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\"); }\n set to(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\", (value == null) ? null : getAddress(value));\n }\n get nonce() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\"); }\n set nonce(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\", logger.getNumber(value, \"value\")); }\n get gasLimit() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\"); }\n set gasLimit(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\", logger.getBigInt(value)); }\n get gasPrice() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\");\n if (value == null && (this.type === 0 || this.type === 1)) {\n return BN_0;\n }\n return value;\n }\n set gasPrice(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\", (value == null) ? null : logger.getBigInt(value, \"gasPrice\"));\n }\n get maxPriorityFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxPriorityFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxPriorityFeePerGas\"));\n }\n get maxFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxFeePerGas\"));\n }\n get data() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\"); }\n set data(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\", hexlify(value)); }\n get value() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\"); }\n set value(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\", logger.getBigInt(value, \"value\"));\n }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\", logger.getBigInt(value)); }\n get signature() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\") || null; }\n set signature(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\", (value == null) ? null : Signature.from(value));\n }\n get accessList() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\") || null;\n if (value == null && (this.type === 1 || this.type === 2)) {\n return [];\n }\n return value;\n }\n set accessList(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\", (value == null) ? null : accessListify(value));\n }\n get hash() {\n if (this.signature == null) {\n throw new Error(\"cannot hash unsigned transaction; maybe you meant .unsignedHash\");\n }\n return keccak256(this.serialized);\n }\n get unsignedHash() {\n return keccak256(this.unsignedSerialized);\n }\n get from() {\n if (this.signature == null) {\n return null;\n }\n return recoverAddress(this.unsignedSerialized, this.signature);\n }\n get fromPublicKey() {\n if (this.signature == null) {\n return null;\n }\n // use ecrecover\n return \"\";\n }\n isSigned() {\n return this.signature != null;\n }\n get serialized() {\n if (this.signature == null) {\n throw new Error(\"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized\");\n }\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this, this.signature);\n case 1:\n return _serializeEip2930(this, this.signature);\n case 2:\n return _serializeEip1559(this, this.signature);\n }\n throw new Error(\"unsupported type\");\n }\n get unsignedSerialized() {\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this);\n case 1:\n return _serializeEip2930(this);\n case 2:\n return _serializeEip1559(this);\n }\n throw new Error(\"unsupported type\");\n }\n // Validates properties and lists possible types this transaction adheres to\n inferTypes() {\n // Checks that there are no conflicting properties set\n const hasGasPrice = this.gasPrice != null;\n const hasFee = (this.maxFeePerGas != null || this.maxPriorityFeePerGas != null);\n const hasAccessList = (this.accessList != null);\n //if (hasGasPrice && hasFee) {\n // throw new Error(\"transaction cannot have gasPrice and maxFeePerGas\");\n //}\n if (this.maxFeePerGas != null && this.maxPriorityFeePerGas != null) {\n if (this.maxFeePerGas < this.maxPriorityFeePerGas) {\n throw new Error(\"priorityFee cannot be more than maxFee\");\n }\n }\n //if (this.type === 2 && hasGasPrice) {\n // throw new Error(\"eip-1559 transaction cannot have gasPrice\");\n //}\n if ((this.type === 0 || this.type === 1) && hasFee) {\n throw new Error(\"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas\");\n }\n if (this.type === 0 && hasAccessList) {\n throw new Error(\"legacy transaction cannot have accessList\");\n }\n const types = [];\n // Explicit type\n if (this.type != null) {\n types.push(this.type);\n }\n else {\n if (hasFee) {\n types.push(2);\n }\n else if (hasGasPrice) {\n types.push(1);\n if (!hasAccessList) {\n types.push(0);\n }\n }\n else if (hasAccessList) {\n types.push(1);\n types.push(2);\n }\n else {\n types.push(0);\n types.push(1);\n types.push(2);\n }\n }\n types.sort();\n return types;\n }\n isLegacy() { return (this.type === 0); }\n isBerlin() { return (this.type === 1); }\n isLondon() { return (this.type === 2); }\n clone() {\n return Transaction.from(this);\n }\n freeze() {\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").sig = (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig.clone().freeze());\n }\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").accessList = Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList.map((set) => {\n Object.freeze(set.storageKeys);\n return Object.freeze(set);\n }));\n }\n Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n }\n static from(tx) {\n if (typeof (tx) === \"string\") {\n const payload = arrayify(tx);\n if (payload[0] >= 0x7f) { // @TODO: > vs >= ??\n return Transaction.from(_parseLegacy(payload));\n }\n switch (payload[0]) {\n case 1: return Transaction.from(_parseEip2930(payload));\n case 2: return Transaction.from(_parseEip1559(payload));\n }\n throw new Error(\"unsupported transaction type\");\n }\n const result = new Transaction();\n if (tx.type != null) {\n result.type = tx.type;\n }\n if (tx.to != null) {\n result.to = tx.to;\n }\n if (tx.nonce != null) {\n result.nonce = tx.nonce;\n }\n if (tx.gasLimit != null) {\n result.gasLimit = tx.gasLimit;\n }\n if (tx.gasPrice != null) {\n result.gasPrice = tx.gasPrice;\n }\n if (tx.maxPriorityFeePerGas != null) {\n result.maxPriorityFeePerGas = tx.maxPriorityFeePerGas;\n }\n if (tx.maxFeePerGas != null) {\n result.maxFeePerGas = tx.maxFeePerGas;\n }\n if (tx.data != null) {\n result.data = tx.data;\n }\n if (tx.value != null) {\n result.value = tx.value;\n }\n if (tx.chainId != null) {\n result.chainId = tx.chainId;\n }\n if (tx.signature != null) {\n result.signature = Signature.from(tx.signature);\n }\n if (tx.accessList != null) {\n result.accessList = tx.accessList;\n }\n if (tx.hash != null) {\n if (result.isSigned()) {\n if (result.hash !== tx.hash) {\n throw new Error(\"hash mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a hashs\");\n }\n }\n if (tx.from != null) {\n if (result.isSigned()) {\n if (result.from.toLowerCase() !== (tx.from || \"\").toLowerCase()) {\n throw new Error(\"from mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a from\");\n }\n }\n return result;\n }\n}\n_Transaction_props = new WeakMap();\n//# sourceMappingURL=transaction.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Block_transactions, _TransactionReceipt_logs;\n//import { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\n// -----------------------\nfunction getValue(value) {\n if (value == null) {\n return null;\n }\n return value;\n}\nfunction toJson(value) {\n if (value == null) {\n return null;\n }\n return value.toString();\n}\n// @TODO? implements Required\nexport class FeeData {\n constructor(gasPrice, maxFeePerGas, maxPriorityFeePerGas) {\n defineProperties(this, {\n gasPrice: getValue(gasPrice),\n maxFeePerGas: getValue(maxFeePerGas),\n maxPriorityFeePerGas: getValue(maxPriorityFeePerGas)\n });\n }\n toJSON() {\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = this;\n return {\n _type: \"FeeData\",\n gasPrice: toJson(gasPrice),\n maxFeePerGas: toJson(maxFeePerGas),\n maxPriorityFeePerGas: toJson(maxPriorityFeePerGas),\n };\n }\n}\n;\nexport function copyRequest(req) {\n const result = {};\n // These could be addresses, ENS names or Addressables\n if (req.to) {\n result.to = req.to;\n }\n if (req.from) {\n result.from = req.from;\n }\n if (req.data) {\n result.data = hexlify(req.data);\n }\n const bigIntKeys = \"chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value\".split(/,/);\n for (const key in bigIntKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getBigInt(req[key], `request.${key}`);\n }\n const numberKeys = \"type,nonce\".split(/,/);\n for (const key in numberKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getNumber(req[key], `request.${key}`);\n }\n if (req.accessList) {\n result.accessList = accessListify(req.accessList);\n }\n if (\"blockTag\" in req) {\n result.blockTag = req.blockTag;\n }\n if (\"enableCcipRead\" in req) {\n result.enableCcipReadEnabled = !!req.enableCcipRead;\n }\n if (\"customData\" in req) {\n result.customData = req.customData;\n }\n return result;\n}\n;\nexport class Block {\n constructor(block, provider) {\n _Block_transactions.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _Block_transactions, Object.freeze(block.transactions.map((tx) => {\n if (typeof (tx) !== \"string\" && tx.provider !== provider) {\n throw new Error(\"provider mismatch\");\n }\n return tx;\n })), \"f\");\n ;\n defineProperties(this, {\n provider,\n hash: getValue(block.hash),\n number: block.number,\n timestamp: block.timestamp,\n parentHash: block.parentHash,\n nonce: block.nonce,\n difficulty: block.difficulty,\n gasLimit: block.gasLimit,\n gasUsed: block.gasUsed,\n miner: block.miner,\n extraData: block.extraData,\n baseFeePerGas: getValue(block.baseFeePerGas)\n });\n }\n get transactions() { return __classPrivateFieldGet(this, _Block_transactions, \"f\"); }\n //connect(provider: Provider): Block {\n // return new Block(this, provider);\n //}\n toJSON() {\n const { baseFeePerGas, difficulty, extraData, gasLimit, gasUsed, hash, miner, nonce, number, parentHash, timestamp, transactions } = this;\n return {\n _type: \"Block\",\n baseFeePerGas: toJson(baseFeePerGas),\n difficulty: toJson(difficulty),\n extraData,\n gasLimit: toJson(gasLimit),\n gasUsed: toJson(gasUsed),\n hash, miner, nonce, number, parentHash, timestamp,\n transactions,\n };\n }\n [(_Block_transactions = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return {\n value: this.transactions[index++], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get length() { return this.transactions.length; }\n get date() {\n if (this.timestamp == null) {\n return null;\n }\n return new Date(this.timestamp * 1000);\n }\n async getTransaction(index) {\n const tx = this.transactions[index];\n if (tx == null) {\n throw new Error(\"no such tx\");\n }\n if (typeof (tx) === \"string\") {\n return (await this.provider.getTransaction(tx));\n }\n else {\n return tx;\n }\n }\n isMined() { return !!this.hash; }\n isLondon() { return !!this.baseFeePerGas; }\n orphanedEvent() {\n if (!this.isMined()) {\n throw new Error(\"\");\n }\n return createOrphanedBlockFilter(this);\n }\n}\nexport class Log {\n constructor(log, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n const topics = Object.freeze(log.topics.slice());\n defineProperties(this, {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n removed: log.removed,\n address: log.address,\n data: log.data,\n topics,\n index: log.index,\n transactionIndex: log.transactionIndex,\n });\n }\n //connect(provider: Provider): Log {\n // return new Log(this, provider);\n //}\n toJSON() {\n const { address, blockHash, blockNumber, data, index, removed, topics, transactionHash, transactionIndex } = this;\n return {\n _type: \"log\",\n address, blockHash, blockNumber, data, index,\n removed, topics, transactionHash, transactionIndex\n };\n }\n async getBlock() {\n return (await this.provider.getBlock(this.blockHash));\n }\n async getTransaction() {\n return (await this.provider.getTransaction(this.transactionHash));\n }\n async getTransactionReceipt() {\n return (await this.provider.getTransactionReceipt(this.transactionHash));\n }\n removedEvent() {\n return createRemovedLogFilter(this);\n }\n}\nexport class TransactionReceipt {\n constructor(tx, provider) {\n _TransactionReceipt_logs.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _TransactionReceipt_logs, Object.freeze(tx.logs.map((log) => {\n if (provider !== log.provider) {\n //return log.connect(provider);\n throw new Error(\"provider mismatch\");\n }\n return log;\n })), \"f\");\n defineProperties(this, {\n provider,\n to: tx.to,\n from: tx.from,\n contractAddress: tx.contractAddress,\n hash: tx.hash,\n index: tx.index,\n blockHash: tx.blockHash,\n blockNumber: tx.blockNumber,\n logsBloom: tx.logsBloom,\n gasUsed: tx.gasUsed,\n cumulativeGasUsed: tx.cumulativeGasUsed,\n gasPrice: (tx.effectiveGasPrice || tx.gasPrice),\n byzantium: tx.byzantium,\n status: tx.status,\n root: tx.root\n });\n }\n get logs() { return __classPrivateFieldGet(this, _TransactionReceipt_logs, \"f\"); }\n //connect(provider: Provider): TransactionReceipt {\n // return new TransactionReceipt(this, provider);\n //}\n toJSON() {\n const { to, from, contractAddress, hash, index, blockHash, blockNumber, logsBloom, logs, byzantium, status, root } = this;\n return {\n _type: \"TransactionReceipt\",\n blockHash, blockNumber, byzantium, contractAddress,\n cumulativeGasUsed: toJson(this.cumulativeGasUsed),\n from,\n gasPrice: toJson(this.gasPrice),\n gasUsed: toJson(this.gasUsed),\n hash, index, logs, logsBloom, root, status, to\n };\n }\n get length() { return this.logs.length; }\n [(_TransactionReceipt_logs = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return { value: this.logs[index++], done: false };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get fee() {\n return this.gasUsed * this.gasPrice;\n }\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.hash);\n if (tx == null) {\n throw new Error(\"TODO\");\n }\n return tx;\n }\n async confirmations() {\n return (await this.provider.getBlockNumber()) - this.blockNumber + 1;\n }\n removedEvent() {\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transction cannot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"reorderedEvent(other)\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\n;\nexport class TransactionResponse {\n constructor(tx, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n this.blockNumber = (tx.blockNumber != null) ? tx.blockNumber : null;\n this.blockHash = (tx.blockHash != null) ? tx.blockHash : null;\n this.hash = tx.hash;\n this.index = tx.index;\n this.type = tx.type;\n this.from = tx.from;\n this.to = tx.to || null;\n this.gasLimit = tx.gasLimit;\n this.nonce = tx.nonce;\n this.data = tx.data;\n this.value = tx.value;\n this.gasPrice = tx.gasPrice;\n this.maxPriorityFeePerGas = (tx.maxPriorityFeePerGas != null) ? tx.maxPriorityFeePerGas : null;\n this.maxFeePerGas = (tx.maxFeePerGas != null) ? tx.maxFeePerGas : null;\n this.chainId = tx.chainId;\n this.signature = tx.signature;\n this.accessList = (tx.accessList != null) ? tx.accessList : null;\n }\n //connect(provider: Provider): TransactionResponse {\n // return new TransactionResponse(this, provider);\n //}\n toJSON() {\n const { blockNumber, blockHash, index, hash, type, to, from, nonce, data, signature, accessList } = this;\n return {\n _type: \"TransactionReceipt\",\n accessList, blockNumber, blockHash,\n chainId: toJson(this.chainId),\n data, from,\n gasLimit: toJson(this.gasLimit),\n gasPrice: toJson(this.gasPrice),\n hash,\n maxFeePerGas: toJson(this.maxFeePerGas),\n maxPriorityFeePerGas: toJson(this.maxPriorityFeePerGas),\n nonce, signature, to, index, type,\n value: toJson(this.value),\n };\n }\n async getBlock() {\n let blockNumber = this.blockNumber;\n if (blockNumber == null) {\n const tx = await this.getTransaction();\n if (tx) {\n blockNumber = tx.blockNumber;\n }\n }\n if (blockNumber == null) {\n return null;\n }\n const block = this.provider.getBlock(blockNumber);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n return this.provider.getTransaction(this.hash);\n }\n async wait(confirms) {\n return this.provider.waitForTransaction(this.hash, confirms);\n }\n isMined() {\n return (this.blockHash != null);\n }\n isLegacy() {\n return (this.type === 0);\n }\n isBerlin() {\n return (this.type === 1);\n }\n isLondon() {\n return (this.type === 2);\n }\n removedEvent() {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\nfunction createOrphanedBlockFilter(block) {\n return { orphan: \"drop-block\", hash: block.hash, number: block.number };\n}\nfunction createReorderedTransactionFilter(tx, other) {\n return { orphan: \"reorder-transaction\", tx, other };\n}\nfunction createRemovedTransactionFilter(tx) {\n return { orphan: \"drop-transaction\", tx };\n}\nfunction createRemovedLogFilter(log) {\n return { orphan: \"drop-log\", log: {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n address: log.address,\n data: log.data,\n topics: Object.freeze(log.topics.slice()),\n index: log.index\n } };\n}\nfunction fail() {\n throw new Error(\"this provider should not be used\");\n}\nclass DummyProvider {\n get provider() { return this; }\n async getNetwork() { return fail(); }\n async getFeeData() { return fail(); }\n async estimateGas(tx) { return fail(); }\n async call(tx) { return fail(); }\n async resolveName(name) { return fail(); }\n // State\n async getBlockNumber() { return fail(); }\n // Account\n async getBalanceOf(address, blockTag) {\n return fail();\n }\n async getTransactionCountOf(address, blockTag) {\n return fail();\n }\n async getCode(address, blockTag) {\n return fail();\n }\n async getStorageAt(address, position, blockTag) {\n return fail();\n }\n // Write\n async broadcastTransaction(signedTx) { return fail(); }\n // Queries\n async getBlock(blockHashOrBlockTag) {\n return fail();\n }\n async getBlockWithTransactions(blockHashOrBlockTag) {\n return fail();\n }\n async getTransaction(hash) {\n return fail();\n }\n async getTransactionReceipt(hash) {\n return fail();\n }\n // Bloom-filter Queries\n async getLogs(filter) {\n return fail();\n }\n // ENS\n async lookupAddress(address) {\n return fail();\n }\n async waitForTransaction(hash, confirms, timeout) {\n return fail();\n }\n async waitForBlock(blockTag) {\n return fail();\n }\n // EventEmitterable\n async on(event, listener) { return fail(); }\n async once(event, listener) { return fail(); }\n async emit(event, ...args) { return fail(); }\n async listenerCount(event) { return fail(); }\n async listeners(event) { return fail(); }\n async off(event, listener) { return fail(); }\n async removeAllListeners(event) { return fail(); }\n async addListener(event, listener) { return fail(); }\n async removeListener(event, listener) { return fail(); }\n}\n// A singleton provider instance that can be used as a placeholder. This\n// allows API that have a Provider added later to not require a null check.\nexport const dummyProvider = new DummyProvider();\n//# sourceMappingURL=provider.js.map","// Belongs to Networks; requires abstract-provider\n// provider requires abstract-provider and network\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Formatter_format, _Formatter_baseBlock;\n/**\n * Formatter\n *\n * This is responsibile for converting much of the various\n * loose network values into a concrete ethers-ready value.\n *\n * For example, converting addresses to checksum addresses,\n * validating a hash is 32 bytes, and so on.\n *\n * By sub-classing this class and providing it in a custom\n * Network object this allows exotic (non-Ethereum) networks\n * to be fairly simple to adapt to ethers.\n */\nimport { getAddress, getCreateAddress } from \"@ethersproject/address\";\nimport { dataLength, dataSlice, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { Block, Log, TransactionReceipt, TransactionResponse } from \"./provider.js\";\nimport { logger } from \"./logger.js\";\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n//export type AccessListSet = { address: string, storageKeys: Array };\n//export type AccessList = Array;\n//export type AccessListish = AccessList |\n// Array<[ string, Array ]> |\n// Record>;\nfunction stringify(value) {\n if (typeof (value) !== \"string\") {\n throw new Error(\"invalid string\");\n }\n return value;\n}\nexport class Formatter {\n constructor() {\n _Formatter_format.set(this, void 0);\n _Formatter_baseBlock.set(this, void 0);\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 number = this.number.bind(this);\n const uint256 = this.uint256.bind(this);\n const topics = this.arrayOf(hash);\n __classPrivateFieldSet(this, _Formatter_format, {\n address,\n bigNumber,\n blockTag,\n data,\n hash,\n number,\n uint256,\n topics,\n filter: this.object({\n fromBlock: this.allowNull(blockTag, undefined),\n toBlock: this.allowNull(blockTag, undefined),\n blockHash: this.allowNull(hash, undefined),\n address: this.allowNull(address, undefined),\n topics: this.allowNull(topics, undefined)\n }),\n transactionRequest: this.object({\n from: this.allowNull(address),\n type: this.allowNull(number),\n to: this.allowNull(address),\n nonce: this.allowNull(number),\n gasLimit: this.allowNull(uint256),\n gasPrice: this.allowNull(uint256),\n maxFeePerGas: this.allowNull(uint256),\n maxPriorityFeePerGas: this.allowNull(uint256),\n data: this.allowNull(data),\n value: this.allowNull(uint256),\n }),\n transactionResponse: this.object({\n hash: hash,\n index: number,\n type: this.allowNull(number, 0),\n // These can be null for pending blocks\n blockHash: this.allowNull(hash),\n blockNumber: this.allowNull(number),\n // For Legacy transactions, this comes from the v\n chainId: this.allowNull(number),\n from: address,\n to: this.address,\n gasLimit: bigNumber,\n gasPrice: this.allowNull(bigNumber),\n maxFeePerGas: this.allowNull(bigNumber),\n maxPriorityFeePerGas: this.allowNull(bigNumber),\n value: bigNumber,\n data: data,\n nonce: number,\n r: hash,\n s: hash,\n v: number,\n accessList: this.allowNull(this.accessList)\n }, {\n index: [\"transactionIndex\"]\n }),\n }, \"f\");\n __classPrivateFieldSet(this, _Formatter_baseBlock, this.object({\n number: number,\n hash: this.allowNull(hash, null),\n timestamp: number,\n parentHash: hash,\n nonce: this.allowNull(stringify, \"0x0000000000000000\"),\n difficulty: bigNumber,\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n miner: this.allowNull(address, \"0x0000000000000000000000000000000000000000\"),\n extraData: stringify,\n baseFeePerGas: this.allowNull(bigNumber),\n }), \"f\");\n }\n // An address\n address(value) {\n return getAddress(value);\n }\n // An address from a call result; may be zero-padded\n callAddress(value) {\n if (dataLength(value) !== 32 || dataSlice(value, 0, 12) !== \"0x000000000000000000000000\") {\n logger.throwArgumentError(\"invalid call address\", \"value\", value);\n }\n return this.address(dataSlice(value, 12));\n }\n // An address from a transaction (e.g. { from: string, nonce: number })\n contractAddress(value) {\n return getCreateAddress({\n from: this.address(value.from),\n nonce: logger.getNumber(value.nonce, \"value.nonce\")\n });\n }\n // Block Tag\n blockTag(value) {\n if (value == null) {\n return \"latest\";\n }\n switch (value) {\n case \"earliest\":\n return \"0x0\";\n case \"latest\":\n case \"pending\":\n return value;\n }\n if (typeof (value) === \"number\" || (isHexString(value) && dataLength(value) < 32)) {\n return quantity(value);\n }\n return logger.throwArgumentError(\"invalid blockTag\", \"value\", value);\n }\n // Block objects\n block(value, provider) {\n const params = __classPrivateFieldGet(this, _Formatter_baseBlock, \"f\").call(this, value);\n params.transactions = value.transactions.map((t) => this.hash(t));\n return new Block(params, provider);\n }\n blockWithTransactions(value, provider) {\n throw new Error();\n }\n // Transactions\n transactionRequest(value, provider) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionRequest(value);\n }\n transactionResponse(value, provider) {\n value = Object.assign({}, value);\n // @TODO: Use the remap feature\n if (value.data == null && value.input != null) {\n value.data = value.input;\n }\n if (value.gasLimit == null && value.gas) {\n value.gasLimit = value.gas;\n }\n value = __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionResponse(value);\n const sig = Signature.from({ r: value.r, s: value.s, v: value.v });\n value.signature = sig;\n if (value.chainId == null) {\n value.chainId = sig.legacyChainId;\n }\n return new TransactionResponse(value, provider);\n }\n // Receipts\n log(value, provider) {\n const log = this.object({\n address: this.address,\n blockHash: this.hash,\n blockNumber: this.number,\n data: this.data,\n index: this.number,\n removed: this.boolean,\n topics: this.topics,\n transactionHash: this.hash,\n transactionIndex: this.number,\n }, {\n index: [\"logIndex\"]\n })(value);\n return new Log(log, provider);\n }\n receipt(value, provider) {\n const receipt = this.object({\n blockHash: this.hash,\n blockNumber: this.number,\n contractAddress: this.allowNull(this.address),\n cumulativeGasUsed: this.bigNumber,\n from: this.address,\n gasUsed: this.bigNumber,\n logs: this.arrayOf((v) => (this.log(v, provider))),\n logsBloom: this.data,\n root: this.allowNull(this.data),\n status: this.allowNull(this.number),\n to: this.address,\n gasPrice: this.allowNull(this.bigNumber),\n hash: this.hash,\n index: this.number,\n type: this.allowNull(this.number, 0),\n }, {\n hash: [\"transactionHash\"],\n gasPrice: [\"effectiveGasPrice\"],\n index: [\"transactionIndex\"]\n })(value);\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (receipt.root != null) {\n if (receipt.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = parseInt(receipt.root);\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (receipt.status != null && receipt.status !== value) {\n return logger.throwError(\"alt-root-status/status mismatch\", \"BAD_DATA\", {\n value: { root: receipt.root, status: receipt.status }\n });\n }\n receipt.status = value;\n delete receipt.root;\n }\n else {\n return logger.throwError(\"invalid alt-root-status\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n else if (!isHexString(receipt.root, 32)) {\n // Must be a valid bytes32\n return logger.throwError(\"invalid receipt root hash\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n //receipt.byzantium = (receipt.root == null);\n return new TransactionReceipt(receipt, provider);\n }\n // Fitlers\n topics(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").topics(value);\n }\n filter(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").filter(value);\n }\n filterLog(value) {\n console.log(\"ME\", value);\n return null;\n }\n // Converts a serialized transaction to a TransactionResponse\n transaction(value) {\n throw new Error();\n }\n // Useful utility formatters functions, which if need be use the\n // methods within the formatter to ensure internal compatibility\n // Access List; converts an AccessListish to an AccessList\n accessList(value) {\n return accessListify(value);\n }\n // Converts falsish values to a specific value, otherwise use the formatter. Calls preserve `this`.\n allowFalsish(format, ifFalse) {\n return ((value) => {\n if (!value) {\n return ifFalse;\n }\n return format.call(this, value);\n });\n }\n // Allows null, optionally replacing it with a default value. Calls preserve `this`.\n allowNull(format, ifNull) {\n return ((value) => {\n if (value == null) {\n return ifNull;\n }\n return format.call(this, value);\n });\n }\n // Requires an Array satisfying the formatter. Calls preserves `this`.\n arrayOf(format) {\n return ((array) => {\n if (!Array.isArray(array)) {\n throw new Error(\"not an array\");\n }\n return array.map((i) => format.call(this, i));\n });\n }\n // Requires a value which is a value BigNumber\n bigNumber(value) {\n return logger.getBigInt(value, \"value\");\n }\n uint256(value) {\n const result = this.bigNumber(value);\n if (result < 0 || result > BN_MAX_UINT256) {\n logger.throwArgumentError(\"invalid uint256\", \"value\", value);\n }\n return result;\n }\n // Requires a value which is a value boolean or string equivalent\n boolean(value) {\n switch (value) {\n case true:\n case \"true\":\n return true;\n case false:\n case \"false\":\n return false;\n }\n return logger.throwArgumentError(`invalid boolean; ${JSON.stringify(value)}`, \"value\", value);\n }\n // Requires a value which is a valid hexstring. If dataOrLength is true,\n // the length must be even (i.e. a datahexstring) or if it is a number,\n // specifies teh number of bytes value must represent\n _hexstring(dataOrLength) {\n if (dataOrLength == null) {\n dataOrLength = false;\n }\n return (function (value) {\n if (isHexString(value, dataOrLength)) {\n return value.toLowerCase();\n }\n throw new Error(\"bad hexstring\");\n });\n }\n data(value) {\n if (dataLength(value) == null) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return value;\n }\n // Requires a network-native hash\n hash(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").data(value);\n }\n // Requires a valid number, within the IEEE 754 safe range\n number(value) {\n return logger.getNumber(value);\n }\n // Requires an object which matches a fleet of other formatters\n // Any FormatFunc may return `undefined` to have the value omitted\n // from the result object. Calls preserve `this`.\n object(format, altNames) {\n return ((value) => {\n const result = {};\n for (const key in format) {\n let srcKey = key;\n if (altNames && key in altNames && !(srcKey in value)) {\n for (const altKey of altNames[key]) {\n if (altKey in value) {\n srcKey = altKey;\n break;\n }\n }\n }\n try {\n const nv = format[key].call(this, value[srcKey]);\n if (nv !== undefined) {\n result[key] = nv;\n }\n }\n catch (error) {\n const message = (error instanceof Error) ? error.message : \"not-an-error\";\n logger.throwError(`invalid value for value.${key} (${message})`, \"BAD_DATA\", { value });\n }\n }\n return result;\n });\n }\n // Requires a value which matches a network-native storage slot\n storageSlot(value) {\n return toHex(logger.getBigInt(value), 32);\n }\n}\n_Formatter_format = new WeakMap(), _Formatter_baseBlock = new WeakMap();\n//# sourceMappingURL=formatter.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\nconst EnsAddress = \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\";\nexport class NetworkPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n clone() {\n return new NetworkPlugin(this.name);\n }\n validate(network) {\n return this;\n }\n}\nexport class GasCostPlugin extends NetworkPlugin {\n constructor(effectiveBlock = 0, costs) {\n super(`org.ethers.plugins.gas-cost#${(effectiveBlock || 0)}`);\n const props = { effectiveBlock };\n function set(name, nullish) {\n let value = (costs || {})[name];\n if (value == null) {\n value = nullish;\n }\n if (typeof (value) !== \"number\") {\n logger.throwArgumentError(`invalud value for ${name}`, \"costs\", costs);\n }\n props[name] = value;\n }\n set(\"txBase\", 21000);\n set(\"txCreate\", 32000);\n set(\"txDataZero\", 4);\n set(\"txDataNonzero\", 16);\n set(\"txAccessListStorageKey\", 1900);\n set(\"txAccessListAddress\", 2400);\n defineProperties(this, props);\n }\n clone() {\n return new GasCostPlugin(this.effectiveBlock, this);\n }\n}\n// Networks shoudl use this plugin to specify the contract address\n// and network necessary to resolve ENS names.\nexport class EnsPlugin extends NetworkPlugin {\n constructor(address, targetNetwork) {\n super(\"org.ethers.plugins.ens\");\n defineProperties(this, {\n address: (address || EnsAddress),\n targetNetwork: ((targetNetwork == null) ? 1 : targetNetwork)\n });\n }\n clone() {\n return new EnsPlugin(this.address, this.targetNetwork);\n }\n validate(network) {\n network.formatter.address(this.address);\n return this;\n }\n}\nexport class MaxPriorityFeePlugin extends NetworkPlugin {\n constructor(priorityFee) {\n super(\"org.ethers.plugins.max-priority-fee\");\n defineProperties(this, {\n priorityFee: logger.getBigInt(priorityFee)\n });\n }\n async getPriorityFee(provider) {\n return this.priorityFee;\n }\n clone() {\n return new MaxPriorityFeePlugin(this.priorityFee);\n }\n}\n//# sourceMappingURL=plugins-network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Network_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { Formatter } from \"./formatter.js\";\nimport { logger } from \"./logger.js\";\nimport { EnsPlugin, GasCostPlugin } from \"./plugins-network.js\";\n/* * * *\n// Networks which operation against an L2 can use this plugin to\n// specify how to access L1, for the purpose of resolving ENS,\n// for example.\nexport class LayerOneConnectionPlugin extends NetworkPlugin {\n readonly provider!: Provider;\n// @TODO: Rename to ChainAccess and allow for connecting to any chain\n constructor(provider: Provider) {\n super(\"org.ethers.plugins.layer-one-connection\");\n defineProperties(this, { provider });\n }\n\n clone(): LayerOneConnectionPlugin {\n return new LayerOneConnectionPlugin(this.provider);\n }\n}\n*/\n/* * * *\nexport class PriceOraclePlugin extends NetworkPlugin {\n readonly address!: string;\n\n constructor(address: string) {\n super(\"org.ethers.plugins.price-oracle\");\n defineProperties(this, { address });\n }\n\n clone(): PriceOraclePlugin {\n return new PriceOraclePlugin(this.address);\n }\n}\n*/\n// Networks or clients with a higher need for security (such as clients\n// that may automatically make CCIP requests without user interaction)\n// can use this plugin to anonymize requests or intercept CCIP requests\n// to notify and/or receive authorization from the user\n/* * * *\nexport type FetchDataFunc = (req: Frozen) => Promise;\nexport class CcipPreflightPlugin extends NetworkPlugin {\n readonly fetchData!: FetchDataFunc;\n\n constructor(fetchData: FetchDataFunc) {\n super(\"org.ethers.plugins.ccip-preflight\");\n defineProperties(this, { fetchData });\n }\n\n clone(): CcipPreflightPlugin {\n return new CcipPreflightPlugin(this.fetchData);\n }\n}\n*/\nconst Networks = new Map();\nconst defaultFormatter = new Formatter();\nexport class Network {\n constructor(name, _chainId, formatter) {\n _Network_props.set(this, void 0);\n const chainId = logger.getBigInt(_chainId);\n if (formatter == null) {\n formatter = defaultFormatter;\n }\n const plugins = new Map();\n __classPrivateFieldSet(this, _Network_props, { name, chainId, formatter, plugins }, \"f\");\n }\n toJSON() {\n return { name: this.name, chainId: this.chainId };\n }\n get name() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\"); }\n set name(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\", value); }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\", logger.getBigInt(value, \"chainId\")); }\n get formatter() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\"); }\n set formatter(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\", value); }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _Network_props, \"f\").plugins.values());\n }\n attachPlugin(plugin) {\n if (this.isFrozen()) {\n throw new Error(\"frozen\");\n }\n if (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _Network_props, \"f\").plugins.set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(name)) || null;\n }\n // Gets a list of Plugins which match basename, ignoring any fragment\n getPlugins(basename) {\n return (this.plugins.filter((p) => (p.name.split(\"#\")[0] === basename)));\n }\n clone() {\n const clone = new Network(this.name, this.chainId, this.formatter);\n this.plugins.forEach((plugin) => {\n clone.attachPlugin(plugin.clone());\n });\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Network_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Network_props, \"f\"));\n }\n computeIntrinsicGas(tx) {\n const costs = this.getPlugin(\"org.ethers.gas-cost\") || (new GasCostPlugin());\n let gas = costs.txBase;\n if (tx.to == null) {\n gas += costs.txCreate;\n }\n if (tx.data) {\n for (let i = 2; i < tx.data.length; i += 2) {\n if (tx.data.substring(i, i + 2) === \"00\") {\n gas += costs.txDataZero;\n }\n else {\n gas += costs.txDataNonzero;\n }\n }\n }\n if (tx.accessList) {\n const accessList = this.formatter.accessList(tx.accessList);\n for (const addr in accessList) {\n gas += costs.txAccessListAddress + costs.txAccessListStorageKey * accessList[addr].storageKeys.length;\n }\n }\n return gas;\n }\n static from(network) {\n // Default network\n if (network == null) {\n return Network.from(\"homestead\");\n }\n // Canonical name or chain ID\n if (typeof (network) === \"number\") {\n network = BigInt(network);\n }\n if (typeof (network) === \"string\" || typeof (network) === \"bigint\") {\n const networkFunc = Networks.get(network);\n if (networkFunc) {\n return networkFunc();\n }\n if (typeof (network) === \"bigint\") {\n return new Network(\"unknown\", network);\n }\n logger.throwArgumentError(\"unknown network\", \"network\", network);\n }\n // Clonable with network-like abilities\n if (typeof (network.clone) === \"function\") {\n const clone = network.clone();\n //if (typeof(network.name) !== \"string\" || typeof(network.chainId) !== \"number\") {\n //}\n return clone;\n }\n // Networkish\n if (typeof (network) === \"object\") {\n if (typeof (network.name) !== \"string\" || typeof (network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network object name or chainId\", \"network\", network);\n }\n const custom = new Network((network.name), (network.chainId));\n if (network.ensAddress || network.ensNetwork != null) {\n custom.attachPlugin(new EnsPlugin(network.ensAddress, network.ensNetwork));\n }\n //if ((network).layerOneConnection) {\n // custom.attachPlugin(new LayerOneConnectionPlugin((network).layerOneConnection));\n //}\n return custom;\n }\n return logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n static register(nameOrChainId, networkFunc) {\n if (typeof (nameOrChainId) === \"number\") {\n nameOrChainId = BigInt(nameOrChainId);\n }\n const existing = Networks.get(nameOrChainId);\n if (existing) {\n logger.throwArgumentError(`conflicting network for ${JSON.stringify(existing.name)}`, \"nameOrChainId\", nameOrChainId);\n }\n Networks.set(nameOrChainId, networkFunc);\n }\n}\n_Network_props = new WeakMap();\n//# sourceMappingURL=network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PollingBlockSubscriber_instances, _PollingBlockSubscriber_provider, _PollingBlockSubscriber_poller, _PollingBlockSubscriber_interval, _PollingBlockSubscriber_blockNumber, _PollingBlockSubscriber_poll, _OnBlockSubscriber_provider, _OnBlockSubscriber_poll, _PollingOrphanSubscriber_filter, _PollingTransactionSubscriber_hash, _PollingEventSubscriber_instances, _PollingEventSubscriber_provider, _PollingEventSubscriber_filter, _PollingEventSubscriber_poller, _PollingEventSubscriber_blockNumber, _PollingEventSubscriber_poll;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport function getPollingSubscriber(provider, event) {\n if (event === \"block\") {\n return new PollingBlockSubscriber(provider);\n }\n if (isHexString(event, 32)) {\n return new PollingTransactionSubscriber(provider, event);\n }\n return logger.throwError(\"unsupported polling event\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getPollingSubscriber\", info: { event }\n });\n}\n// @TODO: refactor this\nexport class PollingBlockSubscriber {\n constructor(provider) {\n _PollingBlockSubscriber_instances.add(this);\n _PollingBlockSubscriber_provider.set(this, void 0);\n _PollingBlockSubscriber_poller.set(this, void 0);\n _PollingBlockSubscriber_interval.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingBlockSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, 4000, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\"); }\n set pollingInterval(value) { __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, value, \"f\"); }\n start() {\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber already running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).call(this);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n }\n stop() {\n if (!__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber not running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._clearTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\"));\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingBlockSubscriber_provider = new WeakMap(), _PollingBlockSubscriber_poller = new WeakMap(), _PollingBlockSubscriber_interval = new WeakMap(), _PollingBlockSubscriber_blockNumber = new WeakMap(), _PollingBlockSubscriber_instances = new WeakSet(), _PollingBlockSubscriber_poll = async function _PollingBlockSubscriber_poll() {\n const blockNumber = await __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").getBlockNumber();\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n return;\n }\n // @TODO: Put a cap on the maximum number of events per loop?\n if (blockNumber !== __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\")) {\n for (let b = __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") + 1; b <= blockNumber; b++) {\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").emit(\"block\", b);\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n};\nexport class OnBlockSubscriber {\n constructor(provider) {\n _OnBlockSubscriber_provider.set(this, void 0);\n _OnBlockSubscriber_poll.set(this, void 0);\n __classPrivateFieldSet(this, _OnBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _OnBlockSubscriber_poll, (blockNumber) => {\n this._poll(blockNumber, __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\"));\n }, \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"sub-classes must override this\");\n }\n start() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\").call(this, -2);\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n pause(dropWhilePaused) { this.stop(); }\n resume() { this.start(); }\n}\n_OnBlockSubscriber_provider = new WeakMap(), _OnBlockSubscriber_poll = new WeakMap();\nexport class PollingOrphanSubscriber extends OnBlockSubscriber {\n constructor(provider, filter) {\n super(provider);\n _PollingOrphanSubscriber_filter.set(this, void 0);\n __classPrivateFieldSet(this, _PollingOrphanSubscriber_filter, copy(filter), \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"@TODO\");\n console.log(__classPrivateFieldGet(this, _PollingOrphanSubscriber_filter, \"f\"));\n }\n}\n_PollingOrphanSubscriber_filter = new WeakMap();\nexport class PollingTransactionSubscriber extends OnBlockSubscriber {\n constructor(provider, hash) {\n super(provider);\n _PollingTransactionSubscriber_hash.set(this, void 0);\n __classPrivateFieldSet(this, _PollingTransactionSubscriber_hash, hash, \"f\");\n }\n async _poll(blockNumber, provider) {\n const tx = await provider.getTransactionReceipt(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"));\n if (tx) {\n provider.emit(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"), tx);\n }\n }\n}\n_PollingTransactionSubscriber_hash = new WeakMap();\nexport class PollingEventSubscriber {\n constructor(provider, filter) {\n _PollingEventSubscriber_instances.add(this);\n _PollingEventSubscriber_provider.set(this, void 0);\n _PollingEventSubscriber_filter.set(this, void 0);\n _PollingEventSubscriber_poller.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingEventSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingEventSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_filter, copy(filter), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_poller, __classPrivateFieldGet(this, _PollingEventSubscriber_instances, \"m\", _PollingEventSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n start() {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getBlockNumber().then((blockNumber) => {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n });\n }\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingEventSubscriber_provider = new WeakMap(), _PollingEventSubscriber_filter = new WeakMap(), _PollingEventSubscriber_poller = new WeakMap(), _PollingEventSubscriber_blockNumber = new WeakMap(), _PollingEventSubscriber_instances = new WeakSet(), _PollingEventSubscriber_poll = async function _PollingEventSubscriber_poll(blockNumber) {\n // The initial block hasn't been determined yet\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n return;\n }\n const filter = copy(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"));\n filter.fromBlock = __classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") + 1;\n filter.toBlock = blockNumber;\n const logs = await __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getLogs(filter);\n // No logs could just mean the node has not indexed them yet,\n // so we keep a sliding window of 60 blocks to keep scanning\n if (logs.length === 0) {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") < blockNumber - 60) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber - 60, \"f\");\n }\n return;\n }\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n for (const log of logs) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").emit(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"), log);\n }\n};\n//# sourceMappingURL=subscriber-polling.js.map","// @TODO\n// Event coalescence\n// When we register an event with an async value (e.g. address is a Signer\n// or ENS name), we need to add it immeidately for the Event API, but also\n// need time to resolve the address. Upon resolving the address, we need to\n// migrate the listener to the static event. We also need to maintain a map\n// of Signer/ENS name to address so we can sync respond to listenerCount.\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractProvider_instances, _AbstractProvider_subs, _AbstractProvider_plugins, _AbstractProvider_pausedState, _AbstractProvider_networkPromise, _AbstractProvider_anyNetwork, _AbstractProvider_performCache, _AbstractProvider_nextTimer, _AbstractProvider_timers, _AbstractProvider_disableCcipRead, _AbstractProvider_perform, _AbstractProvider_call, _AbstractProvider_getBlock, _AbstractProvider_hasSub, _AbstractProvider_getSub;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { concat, dataLength, dataSlice, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { toArray } from \"@ethersproject/math\";\nimport { defineProperties, EventPayload, resolveProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { EnsResolver } from \"./ens-resolver.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { FeeData } from \"./provider.js\";\nimport { PollingBlockSubscriber, PollingEventSubscriber, PollingOrphanSubscriber, PollingTransactionSubscriber } from \"./subscriber-polling.js\";\n// Constants\nconst BN_2 = BigInt(2);\nconst MAX_CCIP_REDIRECTS = 10;\nfunction getTag(prefix, value) {\n return prefix + \":\" + JSON.stringify(value, (k, v) => {\n if (typeof (v) === \"bigint\") {\n return `bigint:${v.toString()}`;\n }\n if (typeof (v) === \"string\") {\n return v.toLowerCase();\n }\n // Sort object keys\n if (typeof (v) === \"object\" && !Array.isArray(v)) {\n const keys = Object.keys(v);\n keys.sort();\n return keys.reduce((accum, key) => {\n accum[key] = v[key];\n return accum;\n }, {});\n }\n return v;\n });\n}\nexport class UnmanagedSubscriber {\n constructor(name) { defineProperties(this, { name }); }\n start() { }\n stop() { }\n pause(dropWhilePaused) { }\n resume() { }\n}\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\n// Normalize a ProviderEvent into a Subscription\n// @TODO: Make events sync if possible; like block\n//function getSyncSubscription(_event: ProviderEvent): Subscription {\n//}\nasync function getSubscription(_event, provider) {\n if (_event == null) {\n throw new Error(\"invalid event\");\n }\n // Normalize topic array info an EventFilter\n if (Array.isArray(_event)) {\n _event = { topics: _event };\n }\n if (typeof (_event) === \"string\") {\n switch (_event) {\n case \"block\":\n case \"pending\":\n case \"debug\":\n case \"network\": {\n return { type: _event, tag: _event };\n }\n }\n }\n if (isHexString(_event, 32)) {\n const hash = _event.toLowerCase();\n return { type: \"transaction\", tag: getTag(\"tx\", { hash }), hash };\n }\n if (_event.orphan) {\n const event = _event;\n // @TODO: Should lowercase and whatnot things here instead of copy...\n return { type: \"orphan\", tag: getTag(\"orphan\", event), filter: copy(event) };\n }\n if ((_event.address || _event.topics)) {\n const event = _event;\n const filter = {\n topics: ((event.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n }))\n };\n if (event.address) {\n const addresses = [];\n const promises = [];\n const addAddress = (addr) => {\n if (isHexString(addr)) {\n addresses.push(addr);\n }\n else {\n promises.push((async () => {\n addresses.push(await resolveAddress(addr, provider));\n })());\n }\n };\n if (Array.isArray(event.address)) {\n event.address.forEach(addAddress);\n }\n else {\n addAddress(event.address);\n }\n if (promises.length) {\n await Promise.all(promises);\n }\n filter.address = concisify(addresses.map((a) => a.toLowerCase()));\n }\n return { filter, tag: getTag(\"event\", filter), type: \"event\" };\n }\n return logger.throwArgumentError(\"unknown ProviderEvent\", \"event\", _event);\n}\nfunction getTime() { return (new Date()).getTime(); }\nexport function copyRequest(tx) {\n // @TODO: copy the copy from contracts and use it from this\n return tx;\n}\nexport class AbstractProvider {\n // @TODO: This should be a () => Promise so network can be\n // done when needed; or rely entirely on _detectNetwork?\n constructor(_network) {\n _AbstractProvider_instances.add(this);\n _AbstractProvider_subs.set(this, void 0);\n _AbstractProvider_plugins.set(this, void 0);\n // null=unpaused, true=paused+dropWhilePaused, false=paused\n _AbstractProvider_pausedState.set(this, void 0);\n _AbstractProvider_networkPromise.set(this, void 0);\n _AbstractProvider_anyNetwork.set(this, void 0);\n _AbstractProvider_performCache.set(this, void 0);\n _AbstractProvider_nextTimer.set(this, void 0);\n _AbstractProvider_timers.set(this, void 0);\n _AbstractProvider_disableCcipRead.set(this, void 0);\n if (_network === \"any\") {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, true, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n else if (_network) {\n const network = Network.from(_network);\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(network), \"f\");\n setTimeout(() => { this.emit(\"network\", network, null); }, 0);\n }\n else {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n __classPrivateFieldSet(this, _AbstractProvider_performCache, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_plugins, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_nextTimer, 0, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_timers, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, false, \"f\");\n }\n get provider() { return this; }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").values());\n }\n attachPlugin(plugin) {\n if (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(name)) || null;\n }\n set disableCcipRead(value) { __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, !!value, \"f\"); }\n get disableCcipRead() { return __classPrivateFieldGet(this, _AbstractProvider_disableCcipRead, \"f\"); }\n async ccipReadFetch(tx, calldata, urls) {\n if (this.disableCcipRead || urls.length === 0 || tx.to == null) {\n return null;\n }\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n const errorMessages = [];\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\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 //const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n // value.status = response.statusCode;\n // return value;\n //});\n const request = new FetchRequest(href);\n if (url.indexOf(\"{data}\") === -1) {\n request.body = { data, sender };\n }\n let errorMessage = \"unknown error\";\n const resp = await fetchData(request);\n try {\n const result = resp.bodyJson;\n if (result.data) {\n return result.data;\n }\n if (result.message) {\n errorMessage = result.message;\n }\n }\n catch (error) { }\n // 4xx indicates the result is not present; stop\n if (resp.statusCode >= 400 && resp.statusCode < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${errorMessage}`, \"OFFCHAIN_FAULT\", {\n reason: \"404_MISSING_RESOURCE\",\n transaction: tx, info: { url, errorMessage }\n });\n }\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n return logger.throwError(`error encountered during CCIP fetch: ${errorMessages.map((m) => JSON.stringify(m)).join(\", \")}`, \"OFFCHAIN_FAULT\", {\n reason: \"500_SERVER_ERROR\",\n transaction: tx, info: { urls, errorMessages }\n });\n }\n _wrapTransaction(tx, hash, blockNumber) {\n return tx;\n }\n _detectNetwork() {\n return logger.throwError(\"sub-classes must implement this\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_detectNetwork\"\n });\n }\n async _perform(req) {\n return logger.throwError(`unsupported method: ${req.method}`, \"UNSUPPORTED_OPERATION\", {\n operation: req.method,\n info: req\n });\n }\n // State\n async getBlockNumber() {\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getBlockNumber\" }), \"%response\");\n }\n async _getAddress(address) {\n if (typeof (address) === \"string\") {\n return address;\n }\n return await address.getAddress();\n }\n async _getBlockTag(blockTag) {\n const network = await this.getNetwork();\n if (typeof (blockTag) === \"number\" && Number.isSafeInteger(blockTag) && blockTag < 0) {\n //let blockNumber = await this._getApproxBlockNumber(500);\n let blockNumber = await this.getBlockNumber();\n blockNumber += blockTag;\n if (blockNumber < 0) {\n blockNumber = 0;\n }\n return network.formatter.blockTag(blockNumber);\n }\n return network.formatter.blockTag(blockTag);\n }\n async getNetwork() {\n // No explicit network was set and this is our first time\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") == null) {\n // Detect the current network (shared with all calls)\n const detectNetwork = this._detectNetwork().then((network) => {\n this.emit(\"network\", network, null);\n return network;\n }, (error) => {\n // Reset the networkPromise on failure, so we will try again\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === detectNetwork) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n throw error;\n });\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, detectNetwork, \"f\");\n return await detectNetwork;\n }\n const networkPromise = __classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\");\n const [expected, actual] = await Promise.all([\n networkPromise,\n this._detectNetwork() // The actual connected network\n ]);\n if (expected.chainId !== actual.chainId) {\n if (__classPrivateFieldGet(this, _AbstractProvider_anyNetwork, \"f\")) {\n // The \"any\" network can change, so notify listeners\n this.emit(\"network\", actual, expected);\n // Update the network if something else hasn't already changed it\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === networkPromise) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(actual), \"f\");\n }\n }\n else {\n // Otherwise, we do not allow changes to the underlying network\n logger.throwError(`network changed: ${expected.chainId} => ${actual.chainId} `, \"NETWORK_ERROR\", {\n event: \"changed\"\n });\n }\n }\n return expected.clone().freeze();\n }\n async getFeeData() {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: ((async () => {\n try {\n const gasPrice = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getGasPrice\" });\n return logger.getBigInt(gasPrice, \"%response\");\n }\n catch (error) { }\n return null;\n })())\n });\n let maxFeePerGas = null, maxPriorityFeePerGas = null;\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 maxPriorityFeePerGas = BigInt(\"1500000000\");\n // Allow a network to override their maximum priority fee per gas\n const priorityFeePlugin = (await this.getNetwork()).getPlugin(\"org.ethers.plugins.max-priority-fee\");\n if (priorityFeePlugin) {\n maxPriorityFeePerGas = await priorityFeePlugin.getPriorityFee(this);\n }\n maxFeePerGas = (block.baseFeePerGas * BN_2) + maxPriorityFeePerGas;\n }\n return new FeeData(gasPrice, maxFeePerGas, maxPriorityFeePerGas);\n }\n async _getTransaction(_request) {\n const network = await this.getNetwork();\n // Fill in any addresses\n const request = Object.assign({}, _request, await resolveProperties({\n to: (_request.to ? resolveAddress(_request.to, this) : undefined),\n from: (_request.from ? resolveAddress(_request.from, this) : undefined),\n }));\n return network.formatter.transactionRequest(request);\n }\n async estimateGas(_tx) {\n const transaction = await this._getTransaction(_tx);\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"estimateGas\", transaction\n }), \"%response\");\n }\n async call(_tx) {\n const { tx, blockTag } = await resolveProperties({\n tx: this._getTransaction(_tx),\n blockTag: this._getBlockTag(_tx.blockTag)\n });\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, tx, blockTag, _tx.enableCcipRead ? 0 : -1);\n }\n // Account\n async getBalanceOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBalance\", address, blockTag\n }), \"%response\");\n }\n async getTransactionCountOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getTransactionCount\", address, blockTag\n }), \"%response\");\n }\n async getCode(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getCode\", address, blockTag\n }));\n }\n async getStorageAt(_address, _position, _blockTag) {\n const position = logger.getBigInt(_position);\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getStorageAt\", address, position, blockTag\n }));\n }\n // Write\n async broadcastTransaction(signedTx) {\n throw new Error();\n return {};\n }\n // Queries\n async getBlock(block) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, false);\n if (params == null) {\n return null;\n }\n return format.block(params, this);\n }\n async getBlockWithTransactions(block) {\n const format = (await this.getNetwork()).formatter;\n const params = __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, true);\n if (params == null) {\n return null;\n }\n return format.blockWithTransactions(params, this);\n }\n async getTransaction(hash) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n return format.transactionResponse(params, this);\n }\n async getTransactionReceipt(hash) {\n const format = (await this.getNetwork()).formatter;\n const receipt = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransactionReceipt\", hash });\n if (receipt == null) {\n return null;\n }\n // Some backends did not backfill the effectiveGasPrice into old transactions\n // in the receipt, so we look it up manually and inject it.\n if (receipt.gasPrice == null && receipt.effectiveGasPrice == null) {\n const tx = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n receipt.effectiveGasPrice = tx.gasPrice;\n }\n return format.receipt(receipt, this);\n }\n async _getFilter(filter) {\n // Create a canonical representation of the topics\n const topics = (filter.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const blockHash = (\"blockHash\" in filter) ? filter.blockHash : undefined;\n const lookup = {};\n // Addresses could be async (ENS names or Addressables)\n if (filter.address) {\n if (Array.isArray(filter.address)) {\n lookup.address = Promise.all(filter.address.map((a) => resolveAddress(a, this)));\n }\n else {\n lookup.address = resolveAddress(filter.address, this);\n }\n }\n // Block Tags could be async (i.e. relative)\n const addBlockTag = (key) => {\n if (filter[key] == null) {\n return;\n }\n lookup[key] = this._getBlockTag(filter[key]);\n };\n addBlockTag(\"fromBlock\");\n addBlockTag(\"toBlock\");\n // Wait for all properties to resolve\n const result = await resolveProperties(lookup);\n // Make sure things are canonical\n if (Array.isArray(result.address)) {\n result.address.sort();\n }\n result.topics = topics;\n if (blockHash) {\n if (filter.fromBlock || filter.toBlock) {\n throw new Error(\"invalid filter\");\n }\n result.blockHash = blockHash;\n }\n return result;\n }\n // Bloom-filter Queries\n async getLogs(_filter) {\n const { network, filter } = await resolveProperties({\n network: this.getNetwork(),\n filter: this._getFilter(_filter)\n });\n return (await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getLogs\", filter })).map((l) => {\n return network.formatter.log(l, this);\n });\n }\n // ENS\n _getProvider(chainId) {\n return logger.throwError(\"provider cannot connect to target network\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_getProvider()\"\n });\n }\n async getResolver(name) {\n return await EnsResolver.fromName(this, name);\n }\n async getAvatar(name) {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAvatar();\n }\n return null;\n }\n async resolveName(name) {\n if (typeof (name) === \"string\") {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAddress();\n }\n }\n else {\n const address = await name.getAddress();\n if (address == null) {\n return logger.throwArgumentError(\"Addressable returned no address\", \"name\", name);\n }\n return address;\n }\n return null;\n }\n async lookupAddress(address) {\n throw new Error();\n //return \"TODO\";\n }\n async waitForTransaction(hash, confirms = 1, timeout) {\n if (confirms === 0) {\n return this.getTransactionReceipt(hash);\n }\n return new Promise(async (resolve, reject) => {\n let timer = null;\n const listener = (async (blockNumber) => {\n try {\n const receipt = await this.getTransactionReceipt(hash);\n if (receipt != null) {\n if (blockNumber - receipt.blockNumber + 1 >= confirms) {\n resolve(receipt);\n this.off(\"block\", listener);\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n return;\n }\n }\n }\n catch (error) {\n console.log(\"EEE\", error);\n }\n this.once(\"block\", listener);\n });\n if (timeout != null) {\n timer = setTimeout(() => {\n if (timer == null) {\n return;\n }\n timer = null;\n this.off(\"block\", listener);\n reject(logger.makeError(\"timeout\", \"TIMEOUT\", { reason: \"timeout\" }));\n }, timeout);\n }\n listener(await this.getBlockNumber());\n });\n }\n async waitForBlock(blockTag) {\n throw new Error();\n //return new Block({ }, this);\n }\n _clearTimeout(timerId) {\n const timer = __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").get(timerId);\n if (!timer) {\n return;\n }\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n }\n _setTimeout(_func, timeout = 0) {\n var _a, _b;\n const timerId = (__classPrivateFieldSet(this, _AbstractProvider_nextTimer, (_b = __classPrivateFieldGet(this, _AbstractProvider_nextTimer, \"f\"), _a = _b++, _b), \"f\"), _a);\n const func = () => {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n _func();\n };\n if (this.paused) {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer: null, func, time: timeout });\n }\n else {\n const timer = setTimeout(func, timeout);\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer, func, time: getTime() });\n }\n return timerId;\n }\n _forEachSubscriber(func) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n func(sub.subscriber);\n }\n }\n // Event API; sub-classes should override this; any supported\n // event filter will have been munged into an EventFilter\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"debug\":\n case \"network\":\n return new UnmanagedSubscriber(sub.type);\n case \"block\":\n return new PollingBlockSubscriber(this);\n case \"event\":\n return new PollingEventSubscriber(this, sub.filter);\n case \"transaction\":\n return new PollingTransactionSubscriber(this, sub.hash);\n case \"orphan\":\n return new PollingOrphanSubscriber(this, sub.filter);\n }\n throw new Error(`unsupported event: ${sub.type}`);\n }\n _recoverSubscriber(oldSub, newSub) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n if (sub.subscriber === oldSub) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n sub.subscriber = newSub;\n if (sub.started) {\n newSub.start();\n }\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n newSub.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n break;\n }\n }\n }\n async on(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: false });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async once(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: true });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async emit(event, ...args) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event, args);\n if (!sub) {\n return false;\n }\n ;\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const payload = new EventPayload(this, (once ? null : listener), event);\n try {\n listener.call(this, ...args, payload);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n let total = 0;\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n let result = [];\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (!listener || sub.listeners.length === 0) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const { tag, started, subscriber } = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n else {\n for (const [tag, { started, subscriber }] of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\")) {\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return this.off(event, listener);\n }\n // Sub-classes should override this to shutdown any sockets, etc.\n // but MUST call this super.shutdown.\n async shutdown() {\n // Stop all listeners\n this.removeAllListeners();\n // Shut down all tiemrs\n for (const timerId of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").keys()) {\n this._clearTimeout(timerId);\n }\n }\n get paused() { return (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null); }\n pause(dropWhilePaused) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == !!dropWhilePaused) {\n return;\n }\n return logger.throwError(\"cannot change pause type; resume first\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause\"\n });\n }\n this._forEachSubscriber((s) => s.pause(dropWhilePaused));\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, !!dropWhilePaused, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Clear the timer\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n // Remaining time needed for when we become unpaused\n timer.time = getTime() - timer.time;\n }\n }\n resume() {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == null) {\n return;\n }\n this._forEachSubscriber((s) => s.resume());\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Remaining time when we were paused\n let timeout = timer.time;\n if (timeout < 0) {\n timeout = 0;\n }\n // Start time (in cause paused, so we con compute remaininf time)\n timer.time = getTime();\n // Start the timer\n setTimeout(timer.func, timeout);\n }\n }\n}\n_AbstractProvider_subs = new WeakMap(), _AbstractProvider_plugins = new WeakMap(), _AbstractProvider_pausedState = new WeakMap(), _AbstractProvider_networkPromise = new WeakMap(), _AbstractProvider_anyNetwork = new WeakMap(), _AbstractProvider_performCache = new WeakMap(), _AbstractProvider_nextTimer = new WeakMap(), _AbstractProvider_timers = new WeakMap(), _AbstractProvider_disableCcipRead = new WeakMap(), _AbstractProvider_instances = new WeakSet(), _AbstractProvider_perform = \n// Shares multiple identical requests made during the same 250ms\nasync function _AbstractProvider_perform(req) {\n // Create a tag\n const tag = getTag(req.method, req);\n let perform = __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag);\n if (!perform) {\n perform = this._perform(req);\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").set(tag, perform);\n setTimeout(() => {\n if (__classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag) === perform) {\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").delete(tag);\n }\n }, 250);\n }\n return await perform;\n}, _AbstractProvider_call = async function _AbstractProvider_call(tx, blockTag, attempt) {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", \"OFFCHAIN_FAULT\", {\n reason: \"TOO_MANY_REDIRECTS\",\n transaction: Object.assign({}, tx, { blockTag, enableCcipRead: true })\n });\n }\n const transaction = copyRequest(tx);\n try {\n return hexlify(await this._perform({ method: \"call\", transaction, blockTag }));\n }\n catch (error) {\n // CCIP Read OffchainLookup\n if (!this.disableCcipRead && isCallException(error) && attempt >= 0 && blockTag === \"latest\" && transaction.to != null && dataSlice(error.data, 0, 4) === \"0x556f1830\") {\n const data = error.data;\n const txSender = await resolveAddress(transaction.to, this);\n // Parse the CCIP Read Arguments\n let ccipArgs;\n try {\n ccipArgs = parseOffchainLookup(dataSlice(error.data, 4));\n }\n catch (error) {\n return logger.throwError(error.message, \"OFFCHAIN_FAULT\", {\n reason: \"BAD_DATA\",\n transaction, info: { data }\n });\n }\n // Check the sender of the OffchainLookup matches the transaction\n if (ccipArgs.sender.toLowerCase() !== txSender.toLowerCase()) {\n return logger.throwError(\"CCIP Read sender mismatch\", \"CALL_EXCEPTION\", {\n data, transaction,\n errorSignature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n errorName: \"OffchainLookup\",\n errorArgs: ccipArgs.errorArgs\n });\n }\n const ccipResult = await this.ccipReadFetch(transaction, ccipArgs.calldata, ccipArgs.urls);\n if (ccipResult == null) {\n return logger.throwError(\"CCIP Read failed to fetch data\", \"OFFCHAIN_FAULT\", {\n reason: \"FETCH_FAILED\",\n transaction, info: { data: error.data, errorArgs: ccipArgs.errorArgs }\n });\n }\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, {\n to: txSender,\n data: concat([\n ccipArgs.selector, encodeBytes([ccipResult, ccipArgs.extraData])\n ]),\n }, blockTag, attempt + 1);\n }\n throw error;\n }\n}, _AbstractProvider_getBlock = async function _AbstractProvider_getBlock(block, includeTransactions) {\n const format = (await this.getNetwork()).formatter;\n if (isHexString(block, 32)) {\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockHash: block, includeTransactions\n });\n }\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockTag: format.blockTag(block), includeTransactions\n });\n}, _AbstractProvider_hasSub = async function _AbstractProvider_hasSub(event, emitArgs) {\n let sub = await getSubscription(event, this);\n // This is a log that is removing an existing log; we actually want\n // to emit an orphan event for the removed log\n if (sub.type === \"event\" && emitArgs && emitArgs.length > 0 && emitArgs[0].removed === true) {\n sub = await getSubscription({ orphan: \"drop-log\", log: emitArgs[0] }, this);\n }\n return __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(sub.tag) || null;\n}, _AbstractProvider_getSub = async function _AbstractProvider_getSub(event) {\n const subscription = await getSubscription(event, this);\n // Prevent tampering with our tag in any subclass' _getSubscriber\n const tag = subscription.tag;\n let sub = __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(tag);\n if (!sub) {\n const subscriber = this._getSubscriber(subscription);\n const addressableMap = new WeakMap();\n const nameMap = new Map();\n sub = { subscriber, tag, addressableMap, nameMap, started: false, listeners: [] };\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").set(tag, sub);\n }\n return sub;\n};\nfunction _parseString(result, start) {\n try {\n const bytes = _parseBytes(result, start);\n if (bytes) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction _parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n try {\n const offset = logger.getNumber(dataSlice(result, start, start + 32));\n const length = logger.getNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\nconst empty = new Uint8Array([]);\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\nconst zeros = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseOffchainLookup(data) {\n const result = {\n sender: \"\", urls: [], calldata: \"\", selector: \"\", extraData: \"\", errorArgs: []\n };\n if (dataLength(data) < 5 * 32) {\n throw new Error(\"insufficient OffchainLookup data\");\n }\n const sender = dataSlice(data, 0, 32);\n if (dataSlice(sender, 0, 12) !== dataSlice(zeros, 0, 12)) {\n throw new Error(\"corrupt OffchainLookup sender\");\n }\n result.sender = dataSlice(sender, 12);\n // Read the URLs from the response\n try {\n const urls = [];\n const urlsOffset = logger.getNumber(dataSlice(data, 32, 64));\n const urlsLength = logger.getNumber(dataSlice(data, urlsOffset, urlsOffset + 32));\n const urlsData = dataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n throw new Error(\"abort\");\n }\n urls.push(url);\n }\n result.urls = urls;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup urls\");\n }\n // Get the CCIP calldata to forward\n try {\n const calldata = _parseBytes(data, 64);\n if (calldata == null) {\n throw new Error(\"abort\");\n }\n result.calldata = calldata;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup calldata\");\n }\n // Get the callbackSelector (bytes4)\n if (dataSlice(data, 100, 128) !== dataSlice(zeros, 0, 28)) {\n throw new Error(\"corrupt OffchainLookup callbaackSelector\");\n }\n result.selector = dataSlice(data, 96, 100);\n // Get the extra data to send back to the contract as context\n try {\n const extraData = _parseBytes(data, 128);\n if (extraData == null) {\n throw new Error(\"abort\");\n }\n result.extraData = extraData;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup extraData\");\n }\n result.errorArgs = \"sender,urls,calldata,selector,extraData\".split(/,/).map((k) => result[k]);\n return result;\n}\n//# sourceMappingURL=abstract-provider.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AbstractSigner_instances, _AbstractSigner_checkProvider, _AbstractSigner_fromify, _VoidSigner_instances, _VoidSigner_throwUnsupported, _WrappedSigner_signer;\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class AbstractSigner {\n constructor(provider) {\n _AbstractSigner_instances.add(this);\n defineProperties(this, { provider: (provider || null) });\n }\n async getBalance(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getBalance\").getBalanceOf(await this.getAddress(), blockTag);\n }\n async getTransactionCount(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getTransactionCount\").getTransactionCountOf(await this.getAddress(), blockTag);\n }\n async estimateGas(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"estimateGas\").estimateGas(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async call(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"call\").call(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async populateTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"populateTransaction\");\n //let pop: Deferrable = Object.assign({ }, tx);\n let pop = Object.assign({}, tx);\n if (pop.to != null) {\n pop.to = provider.resolveName(pop.to).then((to) => {\n if (to == null) {\n return logger.throwArgumentError(\"transaction to ENS name not configured\", \"tx.to\", pop.to);\n }\n return to;\n });\n }\n if (pop.from != null) {\n const from = pop.from;\n pop.from = Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n return logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n return address;\n });\n }\n if (pop.nonce == null) {\n pop.nonce = this.getTransactionCount();\n }\n pop = resolveProperties(pop);\n if (pop.gasLimit == null) {\n pop.gasLimit = provider.estimateGas(pop);\n }\n pop = resolveProperties(pop);\n //@TODO: Copy logic from AbstractSigner in v5\n return await resolveProperties(pop);\n }\n async resolveName(name) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"resolveName\");\n return await provider.resolveName(name);\n }\n async sendTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"sendTransaction\");\n const txObj = Transaction.from(await this.populateTransaction(tx));\n return await provider.broadcastTransaction(await this.signTransaction(txObj));\n }\n}\n_AbstractSigner_instances = new WeakSet(), _AbstractSigner_checkProvider = function _AbstractSigner_checkProvider(operation) {\n if (this.provider) {\n return this.provider;\n }\n return logger.throwError(\"missing provider\", \"UNSUPPORTED_OPERATION\", { operation });\n}, _AbstractSigner_fromify = async function _AbstractSigner_fromify(tx) {\n tx = Object.assign({}, tx);\n const actions = [];\n if (tx.from != null) {\n const from = tx.from;\n actions.push(Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n tx.from = address;\n }));\n }\n await Promise.all(actions);\n return tx;\n};\nexport class VoidSigner extends AbstractSigner {\n constructor(address, provider) {\n super(provider);\n _VoidSigner_instances.add(this);\n defineProperties(this, { address });\n }\n async getAddress() { return this.address; }\n connect(provider) {\n return new VoidSigner(this.address, provider);\n }\n async signTransaction(tx) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"transactions\", \"signTransaction\");\n }\n async signMessage(message) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"messages\", \"signMessage\");\n }\n async signTypedData(domain, types, value) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"typed-data\", \"signTypedData\");\n }\n}\n_VoidSigner_instances = new WeakSet(), _VoidSigner_throwUnsupported = function _VoidSigner_throwUnsupported(suffix, operation) {\n return logger.throwError(`VoidSigner cannot sign ${suffix}`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n};\nexport class WrappedSigner extends AbstractSigner {\n //get provider(): null | Provider { return this.#signer.provider; }\n constructor(signer) {\n super(signer.provider);\n _WrappedSigner_signer.set(this, void 0);\n __classPrivateFieldSet(this, _WrappedSigner_signer, signer, \"f\");\n }\n async getAddress() {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").getAddress();\n }\n connect(provider) {\n return new WrappedSigner(__classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").connect(provider));\n }\n async signTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTransaction(tx);\n }\n async sendTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").sendTransaction(tx);\n }\n async signMessage(message) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signMessage(message);\n }\n async signTypedData(domain, types, value) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTypedData(domain, types, value);\n }\n}\n_WrappedSigner_signer = new WeakMap();\n//# sourceMappingURL=abstract-signer.js.map","// Show the throttle message only once\nconst shown = new Set();\nexport function showThrottleMessage(service) {\n if (shown.has(service)) {\n return;\n }\n shown.add(service);\n console.log(\"========= NOTICE =========\");\n console.log(`Request-Rate Exceeded for ${service} (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//# sourceMappingURL=community.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FilterIdSubscriber_instances, _FilterIdSubscriber_provider, _FilterIdSubscriber_filterIdPromise, _FilterIdSubscriber_poller, _FilterIdSubscriber_network, _FilterIdSubscriber_poll, _FilterIdSubscriber_teardown, _FilterIdEventSubscriber_event;\nimport { PollingEventSubscriber } from \"./subscriber-polling.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport class FilterIdSubscriber {\n constructor(provider) {\n _FilterIdSubscriber_instances.add(this);\n _FilterIdSubscriber_provider.set(this, void 0);\n _FilterIdSubscriber_filterIdPromise.set(this, void 0);\n _FilterIdSubscriber_poller.set(this, void 0);\n _FilterIdSubscriber_network.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_poller, __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, null, \"f\");\n }\n _subscribe(provider) {\n throw new Error(\"subclasses must override this\");\n }\n _emitResults(provider, result) {\n throw new Error(\"subclasses must override this\");\n }\n _recover(provider) {\n throw new Error(\"subclasses must override this\");\n }\n start() { __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).call(this, -2); }\n stop() {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n if (dropWhilePaused) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n resume() { this.start(); }\n}\n_FilterIdSubscriber_provider = new WeakMap(), _FilterIdSubscriber_filterIdPromise = new WeakMap(), _FilterIdSubscriber_poller = new WeakMap(), _FilterIdSubscriber_network = new WeakMap(), _FilterIdSubscriber_instances = new WeakSet(), _FilterIdSubscriber_poll = async function _FilterIdSubscriber_poll(blockNumber) {\n try {\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\") == null) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, this._subscribe(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")), \"f\");\n }\n const filterId = await __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterId == null) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")._recoverSubscriber(this, this._recover(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")));\n return;\n }\n const network = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").getNetwork();\n if (!__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\")) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, network, \"f\");\n }\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\").chainId !== network.chainId) {\n throw new Error(\"chaid changed\");\n }\n const result = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_getFilterChanges\", [filterId]);\n await this._emitResults(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\"), result);\n }\n catch (error) {\n console.log(\"@TODO\", error);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").once(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n}, _FilterIdSubscriber_teardown = function _FilterIdSubscriber_teardown() {\n const filterIdPromise = __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterIdPromise) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n filterIdPromise.then((filterId) => {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_uninstallFilter\", [filterId]);\n });\n }\n};\nexport class FilterIdEventSubscriber extends FilterIdSubscriber {\n constructor(provider, filter) {\n super(provider);\n _FilterIdEventSubscriber_event.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdEventSubscriber_event, copy(filter), \"f\");\n }\n _recover(provider) {\n return new PollingEventSubscriber(provider, __classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"));\n }\n async _subscribe(provider) {\n const filterId = await provider.send(\"eth_newFilter\", [__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\")]);\n console.log(\"____SUB\", filterId);\n return filterId;\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n const log = network.formatter.log(result, provider);\n provider.emit(__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"), log);\n }\n }\n}\n_FilterIdEventSubscriber_event = new WeakMap();\nexport class FilterIdPendingSubscriber extends FilterIdSubscriber {\n async _subscribe(provider) {\n return await provider.send(\"eth_newPendingTransactionFilter\", []);\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n provider.emit(\"pending\", network.formatter.hash(result));\n }\n }\n}\n//# sourceMappingURL=subscriber-filterid.js.map","// @TODO:\n// - Add the batching API\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _JsonRpcApiProvider_nextId, _JsonRpcApiProvider_options, _JsonRpcProvider_connect, _JsonRpcProvider_pollingInterval;\n// https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/ethereum/eth1.0-apis/assembled-spec/openrpc.json&uiSchema%5BappBar%5D%5Bui:splitView%5D=true&uiSchema%5BappBar%5D%5Bui:input%5D=false&uiSchema%5BappBar%5D%5Bui:examplesDropdown%5D=false\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { TypedDataEncoder } from \"@ethersproject/hash\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { AbstractProvider, UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { FilterIdEventSubscriber, FilterIdPendingSubscriber } from \"./subscriber-filterid.js\";\nimport { logger } from \"./logger.js\";\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nconst Primitive = \"bigint,boolean,function,number,string,symbol\".split(/,/g);\n//const Methods = \"getAddress,then\".split(/,/g);\nfunction deepCopy(value) {\n if (value == null || Primitive.indexOf(typeof (value)) >= 0) {\n return value;\n }\n // Keep any Addressable\n if (typeof (value.getAddress) === \"function\") {\n return value;\n }\n if (Array.isArray(value)) {\n return (value.map(deepCopy));\n }\n if (typeof (value) === \"object\") {\n return Object.keys(value).reduce((accum, key) => {\n accum[key] = value[key];\n return accum;\n }, {});\n }\n throw new Error(`should not happen: ${value} (${typeof (value)})`);\n}\nfunction getLowerCase(value) {\n if (value) {\n return value.toLowerCase();\n }\n return value;\n}\nfunction isPollable(value) {\n return (value && typeof (value.pollingInterval) === \"number\");\n}\nconst defaultOptions = {\n // Default to use filter ID (the FilterIdSubscriber will\n // fallback onto polling if subscription fails)\n polling: false,\n // Maximum batch size (in bytes)\n batchMaxSize: (1 << 20),\n // How long to wait before dispatching a new batch\n batchStallTime: 250,\n};\n// @TODO: Unchecked Signers\nexport class JsonRpcSigner {\n constructor(provider, address) {\n defineProperties(this, { provider, address });\n }\n connect(provider) {\n return logger.throwError(\"cannot reconnect JsonRpcSigner\", \"UNSUPPORTED_OPERATION\", {\n operation: \"signer.connect\"\n });\n }\n async getAddress() {\n return this.address;\n }\n async getNetwork() {\n return await this.provider.getNetwork();\n }\n async getFeeData() {\n return await this.provider.getFeeData();\n }\n async estimateGas(tx) {\n return await this.provider.estimateGas(tx);\n }\n async call(tx) {\n return await this.provider.call(tx);\n }\n async resolveName(name) {\n return await this.provider.resolveName(name);\n }\n async getBalance(blockTag) {\n return await this.provider.getBalanceOf(this.address);\n }\n async getTransactionCount(blockTag) {\n return await this.provider.getTransactionCountOf(this.address);\n }\n // Returns just the hash of the transaction after sent, which is what\n // the bare JSON-RPC API does;\n async sendUncheckedTransaction(_tx) {\n const tx = deepCopy(_tx);\n const promises = [];\n // Make sure the from matches the sender\n if (tx.from) {\n const _from = tx.from;\n promises.push((async () => {\n const from = await resolveAddress(_from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n })());\n }\n else {\n tx.from = this.address;\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 (tx.gasLimit == null) {\n promises.push((async () => {\n tx.gasLimit = await this.provider.estimateGas(Object.assign(Object.assign({}, tx), { from: this.address }));\n })());\n }\n // The address may be an ENS name or Addressable\n if (tx.to != null) {\n const _to = tx.to;\n promises.push((async () => {\n tx.to = await resolveAddress(_to, this.provider);\n })());\n }\n // Wait until all of our properties are filled in\n if (promises.length) {\n await Promise.all(promises);\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return this.provider.send(\"eth_sendTransaction\", [hexTx]);\n }\n async sendTransaction(tx) {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider.getBlockNumber();\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(tx);\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 (new Promise((resolve, reject) => {\n const timeouts = [1000, 100];\n const checkTx = async () => {\n // Try getting the transaction\n const tx = await this.provider.getTransaction(hash);\n if (tx != null) {\n resolve(this.provider._wrapTransaction(tx, hash, blockNumber));\n return;\n }\n // Wait another 4 seconds\n this.provider._setTimeout(() => { checkTx(); }, timeouts.pop() || 4000);\n };\n checkTx();\n }));\n }\n async signTransaction(_tx) {\n const tx = deepCopy(_tx);\n // Make sure the from matches the sender\n if (tx.from) {\n const from = await resolveAddress(tx.from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n return logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n }\n else {\n tx.from = this.address;\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return await this.provider.send(\"eth_sign_Transaction\", [hexTx]);\n }\n async signMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"personal_sign\", [\n hexlify(message), this.address.toLowerCase()\n ]);\n }\n async signTypedData(domain, types, _value) {\n const value = deepCopy(_value);\n // Populate any ENS names (in-place)\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (value) => {\n const address = await resolveAddress(value);\n if (address == null) {\n return logger.throwArgumentError(\"TypedData does not support null address\", \"value\", value);\n }\n return address;\n });\n return await this.provider.send(\"eth_signTypedData_v4\", [\n this.address.toLowerCase(),\n JSON.stringify(TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n }\n async unlock(password) {\n return this.provider.send(\"personal_unlockAccount\", [\n this.address.toLowerCase(), password, null\n ]);\n }\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n async _legacySignMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"eth_sign\", [\n this.address.toLowerCase(), hexlify(message)\n ]);\n }\n}\nexport class JsonRpcApiProvider extends AbstractProvider {\n constructor(network) {\n super(network);\n _JsonRpcApiProvider_nextId.set(this, void 0);\n _JsonRpcApiProvider_options.set(this, void 0);\n __classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, 1, \"f\");\n __classPrivateFieldSet(this, _JsonRpcApiProvider_options, Object.assign({}, defaultOptions), \"f\");\n }\n _getOptions(key) {\n return __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key];\n }\n _setOptions(options) {\n // Validate all the options\n for (const _key in options) {\n const key = _key;\n const value = options[key];\n if (typeof (value) !== typeof (__classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key])) {\n return logger.throwArgumentError(\"invalid option value\", `options.${key}`, value);\n }\n }\n // Update the values\n for (const _key in options) {\n const key = _key;\n __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key] = (options[key]);\n }\n }\n prepareRequest(method, params) {\n var _a, _b;\n return {\n method, params, id: (__classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, (_b = __classPrivateFieldGet(this, _JsonRpcApiProvider_nextId, \"f\"), _a = _b++, _b), \"f\"), _a), jsonrpc: \"2.0\"\n };\n }\n // Sends the payload to the backend\n //async sendPayload(payload: any): Promise {\n // throw new Error(\"sub-class must implement this\");\n //}\n async send(method, params) {\n // @TODO: This should construct and queue the payload\n throw new Error(\"sub-class must implement this\");\n }\n async getSigner(address = 0) {\n const network = await this.getNetwork();\n const accounts = await this.send(\"eth_accounts\", []);\n // Account index\n if (typeof (address) === \"number\") {\n if (address > accounts.length) {\n throw new Error(\"no such account\");\n }\n return new JsonRpcSigner(this, accounts[address]);\n }\n // Account address\n address = network.formatter.address(address);\n for (const account of accounts) {\n if (network.formatter.address(account) === account) {\n return new JsonRpcSigner(this, account);\n }\n }\n throw new Error(\"invalid account\");\n }\n // Sub-classes can override this; it detects the *actual* network we\n // are connected to\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" })));\n }\n _getSubscriber(sub) {\n // Pending Filters aren't availble via polling\n if (sub.type === \"pending\") {\n return new FilterIdPendingSubscriber(this);\n }\n if (sub.type === \"event\") {\n return new FilterIdEventSubscriber(this, sub.filter);\n }\n // Orphaned Logs are handled automatically, by the filter, since\n // logs with removed are emitted by it\n if (sub.type === \"orphan\" && sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"orphan\");\n }\n return super._getSubscriber(sub);\n }\n getRpcTransaction(tx) {\n const result = {};\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n let dstKey = key;\n if (key === \"gasLimit\") {\n dstKey = \"gas\";\n }\n result[dstKey] = quantity(tx[key]);\n });\n // Make sure addresses and data are lowercase\n [\"from\", \"to\", \"data\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n result[key] = hexlify(tx[key]);\n });\n // Normalize the access list object\n if (tx.accessList) {\n result[\"accessList\"] = accessListify(tx.accessList);\n }\n return result;\n }\n getRpcRequest(req) {\n switch (req.method) {\n case \"chainId\":\n return { method: \"eth_chainId\", args: [] };\n case \"getBlockNumber\":\n return { method: \"eth_blockNumber\", args: [] };\n case \"getGasPrice\":\n return { method: \"eth_gasPrice\", args: [] };\n case \"getBalance\":\n return {\n method: \"eth_getBalance\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getTransactionCount\":\n return {\n method: \"eth_getTransactionCount\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getCode\":\n return {\n method: \"eth_getCode\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getStorageAt\":\n return {\n method: \"eth_getStorageAt\",\n args: [\n getLowerCase(req.address),\n (\"0x\" + req.position.toString(16)),\n req.blockTag\n ]\n };\n case \"sendTransaction\":\n return {\n method: \"eth_sendRawTransaction\",\n args: [req.signedTransaction]\n };\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return {\n method: \"eth_getBlockByNumber\",\n args: [req.blockTag, !!req.includeTransactions]\n };\n }\n else if (\"blockHash\" in req) {\n return {\n method: \"eth_getBlockByHash\",\n args: [req.blockHash, !!req.includeTransactions]\n };\n }\n break;\n case \"getTransaction\":\n return {\n method: \"eth_getTransactionByHash\",\n args: [req.hash]\n };\n case \"getTransactionReceipt\":\n return {\n method: \"eth_getTransactionReceipt\",\n args: [req.hash]\n };\n case \"call\":\n return {\n method: \"eth_call\",\n args: [this.getRpcTransaction(req.transaction), req.blockTag]\n };\n case \"estimateGas\": {\n return {\n method: \"eth_estimateGas\",\n args: [this.getRpcTransaction(req.transaction)]\n };\n }\n case \"getLogs\":\n if (req.filter && req.filter.address != null) {\n if (Array.isArray(req.filter.address)) {\n req.filter.address = req.filter.address.map(getLowerCase);\n }\n else {\n req.filter.address = getLowerCase(req.filter.address);\n }\n }\n return { method: \"eth_getLogs\", args: [req.filter] };\n }\n return null;\n }\n getRpcError(method, args, error) {\n if (method === \"eth_call\") {\n const result = spelunkData(error);\n if (result) {\n // @TODO: Extract errorSignature, errorName, errorArgs, reason if\n // it is Error(string) or Panic(uint25)\n return logger.makeError(\"execution reverted during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: result.data,\n transaction: args[0]\n });\n }\n return logger.makeError(\"missing revert data during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: \"0x\", transaction: args[0], info: { error }\n });\n }\n if (method === \"eth_estimateGas\") {\n }\n const message = JSON.stringify(spelunkMessage(error));\n if (message.match(/insufficient funds|base fee exceeds gas limit/)) {\n return logger.makeError(\"insufficient funds for intrinsic transaction cost\", \"INSUFFICIENT_FUNDS\", {\n transaction: args[0]\n });\n }\n if (message.match(/nonce/) && message.match(/too low/)) {\n return logger.makeError(\"nonce has already been used\", \"NONCE_EXPIRED\", {\n transaction: args[0]\n });\n }\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction/) && message.match(/underpriced/)) {\n return logger.makeError(\"replacement fee too low\", \"REPLACEMENT_UNDERPRICED\", {\n transaction: args[0]\n });\n }\n if (message.match(/only replay-protected/)) {\n return logger.makeError(\"legacy pre-eip-155 transactions not supported\", \"UNSUPPORTED_OPERATION\", {\n operation: method, info: { transaction: args[0] }\n });\n }\n if (method === \"estimateGas\" && message.match(/gas required exceeds allowance|always failing transaction|execution reverted/)) {\n return logger.makeError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", \"UNPREDICTABLE_GAS_LIMIT\", {\n transaction: args[0]\n });\n }\n return error;\n }\n async _perform(req) {\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 (req.method === \"call\" || req.method === \"estimateGas\") {\n let tx = req.transaction;\n if (tx && tx.type != null && logger.getBigInt(tx.type)) {\n // If there are no EIP-1559 properties, it might be non-EIP-a559\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 req = Object.assign({}, req, {\n transaction: Object.assign({}, tx, { type: undefined })\n });\n }\n }\n }\n }\n const request = this.getRpcRequest(req);\n if (request != null) {\n this.emit(\"debug\", { type: \"sendRequest\", request });\n try {\n const result = await this.send(request.method, request.args);\n //console.log(\"RR\", result);\n this.emit(\"debug\", { type: \"getResponse\", result });\n return result;\n }\n catch (error) {\n this.emit(\"debug\", { type: \"getError\", error });\n throw this.getRpcError(request.method, request.args, error);\n }\n }\n return super._perform(req);\n }\n}\n_JsonRpcApiProvider_nextId = new WeakMap(), _JsonRpcApiProvider_options = new WeakMap();\nexport class JsonRpcProvider extends JsonRpcApiProvider {\n constructor(url, network) {\n if (url == null) {\n url = \"http:/\\/localhost:8545\";\n }\n super(network);\n _JsonRpcProvider_connect.set(this, void 0);\n _JsonRpcProvider_pollingInterval.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, { request: new FetchRequest(url) }, \"f\");\n }\n else {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, Object.assign({}, url), \"f\");\n __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request = __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request.clone();\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, 4000, \"f\");\n }\n async send(method, params) {\n params = copy(params);\n // Configure a POST connection for the requested method\n const connection = Object.assign({}, __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\"));\n connection.request = connection.request.clone();\n connection.request.body = this.prepareRequest(method, params);\n const response = await fetchData(connection);\n response.assertOk();\n const result = response.bodyJson;\n if (\"error\" in result) {\n return logger.throwError(\"error from JSON-RPC\", \"UNKNOWN_ERROR\", {\n result\n });\n }\n return result.result;\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\"); }\n set pollingInterval(value) {\n if (!Number.isInteger(value) || value < 0) {\n throw new Error(\"invalid interval\");\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, value, \"f\");\n this._forEachSubscriber((sub) => {\n if (isPollable(sub)) {\n sub.pollingInterval = __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\");\n }\n });\n }\n}\n_JsonRpcProvider_connect = new WeakMap(), _JsonRpcProvider_pollingInterval = new WeakMap();\n// This class should only be used when it is not possible for the\n// underlying network to change, such as with INFURA. If you are\n// using MetaMask or some other client which allows users to change\n// their network DO NOT USE THIS. Bad things will happen.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n constructor(url, network) {\n super(url, network);\n defineProperties(this, { network });\n }\n async _detectNetwork() {\n return this.network;\n }\n}\nfunction spelunkData(value) {\n if (value == null) {\n return null;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\" && value.message.match(\"reverted\") && isHexString(value.data)) {\n return { message: value.message, data: value.data };\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n const result = spelunkData(value[key]);\n if (result) {\n return result;\n }\n }\n return null;\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return spelunkData(JSON.parse(value));\n }\n catch (error) { }\n }\n return null;\n}\nfunction _spelunkMessage(value, result) {\n if (value == null) {\n return;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\") {\n result.push(value.message);\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n _spelunkMessage(value[key], result);\n }\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return _spelunkMessage(JSON.parse(value), result);\n }\n catch (error) { }\n }\n}\nfunction spelunkMessage(value) {\n const result = [];\n _spelunkMessage(value, result);\n return result;\n}\n//# sourceMappingURL=provider-jsonrpc.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth\";\n case \"matic\":\n return \"rpc.ankr.com/polygon\";\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AnkrProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const connection = AnkrProvider.getConnection(network, apiKey);\n super(connection, network);\n defineProperties(this, { apiKey });\n // Ankr does not support filterId, so we force polling\n super._setOptions({ polling: true });\n }\n _getProvider(chainId) {\n try {\n return new AnkrProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"AnkrProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=provider-ankr.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.alchemyapi.io\";\n case \"ropsten\":\n return \"eth-ropsten.alchemyapi.io\";\n case \"rinkeby\":\n return \"eth-rinkeby.alchemyapi.io\";\n case \"goerli\":\n return \"eth-goerli.alchemyapi.io\";\n case \"kovan\":\n return \"eth-kovan.alchemyapi.io\";\n case \"matic\":\n return \"polygon-mainnet.g.alchemy.com\";\n case \"maticmum\":\n return \"polygon-mumbai.g.alchemy.com\";\n case \"arbitrum\":\n return \"arb-mainnet.g.alchemy.com\";\n case \"arbitrum-rinkeby\":\n return \"arb-rinkeby.g.alchemy.com\";\n case \"optimism\":\n return \"opt-mainnet.g.alchemy.com\";\n case \"optimism-kovan\":\n return \"opt-kovan.g.alchemy.com\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AlchemyProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n super(AlchemyProvider.getConnection(network, apiKey), network);\n defineProperties(this, { apiKey });\n }\n _getProvider(chainId) {\n try {\n return new AlchemyProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v2/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"alchemy\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n}\n//# sourceMappingURL=provider-alchemy.js.map","import { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nexport class CloudflareProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\") {\n const network = Network.from(_network);\n if (network.name !== \"homestead\") {\n return logger.throwArgumentError(\"unsupported network\", \"network\", _network);\n }\n super(\"https:/\\/cloudflare-eth.com/\", network);\n }\n}\n//# sourceMappingURL=provider-cloudflare.js.map","import { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { isError } from \"@ethersproject/logger\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nif (false) {\n console.log(isHexString, isError);\n} // @TODO\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { NetworkPlugin } from \"./plugins-network.js\";\nimport { logger } from \"./logger.js\";\nconst defaultApiKey = \"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB\";\nconst EtherscanPluginId = \"org.ethers.plugins.etherscan\";\nexport class EtherscanPlugin extends NetworkPlugin {\n constructor(baseUrl, communityApiKey) {\n super(EtherscanPluginId);\n //if (communityApiKey == null) { communityApiKey = null; }\n defineProperties(this, { baseUrl, communityApiKey });\n }\n clone() {\n return new EtherscanPlugin(this.baseUrl, this.communityApiKey);\n }\n}\nexport class EtherscanProvider extends AbstractProvider {\n constructor(_network, apiKey) {\n super();\n const network = Network.from(_network);\n if (apiKey == null) {\n const plugin = network.getPlugin(EtherscanPluginId);\n if (plugin) {\n apiKey = plugin.communityApiKey;\n }\n else {\n apiKey = defaultApiKey;\n }\n }\n defineProperties(this, { apiKey, network });\n // Test that the network is supported by Etherscan\n this.getBaseUrl();\n }\n getBaseUrl() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return plugin.baseUrl;\n }\n switch (this.network.name) {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"ropsten\":\n return \"https:/\\/api-ropsten.etherscan.io\";\n case \"rinkeby\":\n return \"https:/\\/api-rinkeby.etherscan.io\";\n case \"kovan\":\n return \"https:/\\/api-kovan.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n default:\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network);\n }\n getUrl(module, params) {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${key}=${value}`;\n }\n return accum;\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${this.apiKey}` : \"\");\n return `${this.getBaseUrl()}/api?module=${module}${query}${apiKey}`;\n }\n getPostUrl() {\n return `${this.getBaseUrl()}/api`;\n }\n getPostData(module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n async detectNetwork() {\n return this.network;\n }\n async fetch(module, params, post) {\n const url = (post ? this.getPostUrl() : this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params) : null);\n /*\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n */\n const request = new FetchRequest(url);\n const connection = {\n request,\n throttleSlotInterval: 1000,\n processResponse: async (request, response) => {\n const result = response.hasBody() ? JSON.parse(toUtf8String(response.body)) : {};\n const throttle = ((typeof (result.result) === \"string\") ? result.result : \"\").toLowerCase().indexOf(\"rate limit\") >= 0;\n if (module === \"proxy\") {\n // This JSON response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && throttle) {\n response.throwThrottleError(result.result);\n }\n }\n else {\n if (throttle) {\n response.throwThrottleError(result.result);\n }\n }\n return response;\n },\n };\n if (payload) {\n request.setHeader(\"content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n request.body = Object.keys(payload).map((k) => `${k}=${payload[k]}`).join(\"&\");\n }\n const response = await fetchData(connection);\n response.assertOk();\n if (!response.hasBody()) {\n throw new Error();\n }\n /*\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n */\n const result = JSON.parse(toUtf8String(response.body));\n if (module === \"proxy\") {\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n if (result.error) {\n // @TODO: not any\n const error = new Error(result.error.message || \"unknown error\");\n if (result.error.code) {\n error.code = result.error.code;\n }\n if (result.error.data) {\n error.data = result.error.data;\n }\n throw error;\n }\n return result.result;\n }\n else {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n if (result.status != 1 || result.message != \"OK\") {\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n // if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n // error.throttleRetry = true;\n // }\n throw error;\n }\n return result.result;\n }\n }\n // The transaction has already been sanitized by the calls in Provider\n _getTransactionPostData(transaction) {\n const result = {};\n for (let key in transaction) {\n if (transaction[key] == null) {\n continue;\n }\n let value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = quantity(hexlify(value));\n }\n else if (key === \"accessList\") {\n value = \"[\" + this.network.formatter.accessList(value).map((set) => {\n return `{address:\"${set.address}\",storageKeys:[\"${set.storageKeys.join('\",\"')}\"]}`;\n }).join(\",\") + \"]\";\n }\n else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n }\n _checkError(req, error, transaction) {\n /*\n let body = \"\";\n if (isError(error, Logger.Errors.SERVER_ERROR) && error.response && error.response.hasBody()) {\n body = toUtf8String(error.response.body);\n }\n console.log(body);\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\" && body) {\n \n // Etherscan keeps changing their string\n if (body.match(/reverted/i) || body.match(/VM execution error/i)) {\n \n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n if (!isHexString(data)) { data = \"0x\"; }\n \n logger.throwError(\"call exception\", Logger.Errors.CALL_EXCEPTION, {\n error, data\n });\n }\n }\n \n // Get the message from any nested error structure\n let message = error.message;\n if (isError(error, Logger.Errors.SERVER_ERROR)) {\n if (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 }\n message = (message || \"\").toLowerCase();\n \n // \"Insufficient funds. The account you tried to send transaction from\n // does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.Errors.INSUFFICIENT_FUNDS, {\n error, transaction, info: { method }\n });\n }\n \n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.Errors.NONCE_EXPIRED, {\n error, transaction, info: { method }\n });\n }\n \n // \"Transaction gas price is too low. There is another transaction with\n // same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.Errors.REPLACEMENT_UNDERPRICED, {\n error, transaction, info: { method }\n });\n }\n \n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.Errors.UNPREDICTABLE_GAS_LIMIT, {\n error, transaction, info: { method }\n });\n }\n */\n throw error;\n }\n async _detectNetwork() {\n return this.network;\n }\n async _perform(req) {\n switch (req.method) {\n case \"chainId\":\n return this.network.chainId;\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: req.address,\n position: req.position,\n tag: req.blockTag\n });\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: req.signedTransaction\n }, true).catch((error) => {\n return this._checkError(req, error, req.signedTransaction);\n });\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: req.blockTag,\n boolean: (req.includeTransactions ? \"true\" : \"false\")\n });\n }\n return logger.throwError(\"getBlock by blockHash not supported by Etherscan\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getBlock(blockHash)\"\n });\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: req.hash\n });\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: req.hash\n });\n case \"call\": {\n if (req.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n case \"estimateGas\": {\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n /*\n case \"getLogs\": {\n // Needs to complain if more than one address is passed in\n const args: Record = { action: \"getLogs\" }\n \n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n \n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n \n if (params.filter.address) {\n args.address = params.filter.address;\n }\n \n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.Errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.Errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n \n const logs: Array = await this.fetch(\"logs\", args);\n \n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n \n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n \n log.blockHash = blocks[log.blockNumber];\n }\n \n return logs;\n }\n */\n default:\n break;\n }\n return super._perform(req);\n }\n async getNetwork() {\n return this.network;\n }\n async getEtherPrice() {\n if (this.network.name !== \"homestead\") {\n return 0.0;\n }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n }\n isCommunityResource() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return (plugin.communityApiKey === this.apiKey);\n }\n return (defaultApiKey === this.apiKey);\n }\n}\n/*\n(async function() {\n const provider = new EtherscanProvider();\n console.log(provider);\n console.log(await provider.getBlockNumber());\n / *\n provider.on(\"block\", (b) => {\n console.log(\"BB\", b);\n });\n console.log(await provider.getTransactionReceipt(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\"));\n\n provider.once(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\", (tx) => {\n console.log(\"TT\", tx);\n });\n * /\n try {\n console.log(await provider.getBlock(100));\n } catch (error) {\n console.log(error);\n }\n\n try {\n console.log(await provider.getBlock(13821768));\n } catch (error) {\n console.log(error);\n }\n\n})();\n*/\n//# sourceMappingURL=provider-etherscan.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultProjectId = \"84842078b09946638c03157f83405213\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"mainnet.infura.io\";\n case \"ropsten\":\n return \"ropsten.infura.io\";\n case \"rinkeby\":\n return \"rinkeby.infura.io\";\n case \"kovan\":\n return \"kovan.infura.io\";\n case \"goerli\":\n return \"goerli.infura.io\";\n case \"matic\":\n return \"polygon-mainnet.infura.io\";\n case \"maticmum\":\n return \"polygon-mumbai.infura.io\";\n case \"optimism\":\n return \"optimism-mainnet.infura.io\";\n case \"optimism-kovan\":\n return \"optimism-kovan.infura.io\";\n case \"arbitrum\":\n return \"arbitrum-mainnet.infura.io\";\n case \"arbitrum-rinkeby\":\n return \"arbitrum-rinkeby.infura.io\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class InfuraProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", projectId, projectSecret) {\n const network = Network.from(_network);\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const connection = InfuraProvider.getConnection(network, projectId, projectSecret);\n super(connection, network);\n defineProperties(this, { projectId, projectSecret });\n }\n _getProvider(chainId) {\n try {\n return new InfuraProvider(chainId, this.projectId, this.projectSecret);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, projectId, projectSecret) {\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v3/${projectId}`);\n request.allowGzip = true;\n if (projectSecret) {\n request.setCredentials(\"\", projectSecret);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (projectId === defaultProjectId) {\n showThrottleMessage(\"InfuraProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\n//# sourceMappingURL=provider-infura.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\n// These are load-balancer-based application IDs\nconst defaultAppIds = {\n homestead: \"6004bcd10040261633ade990\",\n ropsten: \"6004bd4d0040261633ade991\",\n rinkeby: \"6004bda20040261633ade994\",\n goerli: \"6004bd860040261633ade992\",\n};\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.gateway.pokt.network\";\n case \"ropsten\":\n return \"eth-ropsten.gateway.pokt.network\";\n case \"rinkeby\":\n return \"eth-rinkeby.gateway.pokt.network\";\n case \"goerli\":\n return \"eth-goerli.gateway.pokt.network\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nfunction normalizeApiKey(network, _appId, applicationSecretKey, loadBalancer) {\n loadBalancer = !!loadBalancer;\n let community = false;\n let applicationId = _appId;\n if (applicationId == null) {\n applicationId = defaultAppIds[network.name];\n if (applicationId == null) {\n logger.throwArgumentError(\"network does not support default applicationId\", \"applicationId\", _appId);\n }\n loadBalancer = true;\n community = true;\n }\n else if (applicationId === defaultAppIds[network.name]) {\n loadBalancer = true;\n community = true;\n }\n if (applicationSecretKey == null) {\n applicationSecretKey = null;\n }\n return { applicationId, applicationSecretKey, community, loadBalancer };\n}\nexport class PocketProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", _appId, _secretKey, _loadBalancer) {\n const network = Network.from(_network);\n const { applicationId, applicationSecretKey, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n const connection = PocketProvider.getConnection(network, applicationId, applicationSecretKey, loadBalancer);\n super(connection, network);\n defineProperties(this, { applicationId, applicationSecretKey, loadBalancer });\n }\n static getConnection(network, _appId, _secretKey, _loadBalancer) {\n const { applicationId, applicationSecretKey, community, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n let url = `https:/\\/${getHost(network.name)}/v1/`;\n if (loadBalancer) {\n url += \"lb/\";\n }\n url += applicationId;\n const request = new FetchRequest(url);\n request.allowGzip = true;\n if (applicationSecretKey) {\n request.setCredentials(\"\", applicationSecretKey);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (community) {\n showThrottleMessage(\"PocketProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.applicationId === defaultAppIds[this.network.name]);\n }\n}\n//# sourceMappingURL=provider-pocket.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FallbackProvider_instances, _FallbackProvider_configs, _FallbackProvider_height, _FallbackProvider_initialSyncPromise, _FallbackProvider_getNextConfig, _FallbackProvider_addRunner, _FallbackProvider_initialSync, _FallbackProvider_checkQuorum, _FallbackProvider_waitForQuorum;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { shuffle } from \"./shuffle.js\";\n//const BN_0 = BigInt(\"0\");\nconst BN_1 = BigInt(\"1\");\nconst BN_2 = BigInt(\"2\");\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\nfunction getTime() { return (new Date()).getTime(); }\n;\nconst defaultConfig = { stallTimeout: 400, priority: 1, weight: 1 };\nconst defaultState = {\n blockNumber: -2, requests: 0, lateResponses: 0, errorResponses: 0,\n outOfSync: -1, unsupportedEvents: 0, rollingDuration: 0, score: 0,\n _network: null, _updateNumber: null, _totalTime: 0\n};\nasync function waitForSync(config, blockNumber) {\n while (config.blockNumber < 0 || config.blockNumber < blockNumber) {\n if (!config._updateNumber) {\n config._updateNumber = (async () => {\n const blockNumber = await config.provider.getBlockNumber();\n if (blockNumber > config.blockNumber) {\n config.blockNumber = blockNumber;\n }\n config._updateNumber = null;\n })();\n }\n await config._updateNumber;\n config.outOfSync++;\n }\n}\n// Normalizes a result to a string that can be used to compare against\n// other results using normal string equality\nfunction normalize(network, value, req) {\n switch (req.method) {\n case \"chainId\":\n return logger.getBigInt(value).toString();\n case \"getBlockNumber\":\n return logger.getNumber(value).toString();\n case \"getGasPrice\":\n return logger.getBigInt(value).toString();\n case \"getBalance\":\n return logger.getBigInt(value).toString();\n case \"getTransactionCount\":\n return logger.getNumber(value).toString();\n case \"getCode\":\n return hexlify(value);\n case \"getStorageAt\":\n return hexlify(value);\n case \"getBlock\":\n if (req.includeTransactions) {\n return JSON.stringify(network.formatter.blockWithTransactions(value));\n }\n return JSON.stringify(network.formatter.block(value));\n case \"getTransaction\":\n return JSON.stringify(network.formatter.transactionResponse(value));\n case \"getTransactionReceipt\":\n return JSON.stringify(network.formatter.receipt(value));\n case \"call\":\n return hexlify(value);\n case \"estimateGas\":\n return logger.getBigInt(value).toString();\n case \"getLogs\":\n return JSON.stringify(value.map((v) => network.formatter.log(v)));\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}\n// This strategy picks the highest wieght result, as long as the weight is\n// equal to or greater than quorum\nfunction checkQuorum(quorum, results) {\n const tally = new Map();\n for (const { result, normal, weight } of results) {\n const t = tally.get(normal) || { result, weight: 0 };\n t.weight += weight;\n tally.set(normal, t);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n if (weight >= quorum && weight > bestWeight) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\n/*\nfunction getMean(results: Array): bigint {\n const total = results.reduce((a, r) => (a + BigInt(r.result)), BN_0);\n return total / BigInt(results.length);\n}\n*/\nfunction getMedian(results) {\n // Get the sorted values\n const values = results.map((r) => BigInt(r.result));\n values.sort((a, b) => ((a < b) ? -1 : (b > a) ? 1 : 0));\n const mid = values.length / 2;\n // Odd-length; take the middle value\n if (values.length % 2) {\n return values[mid];\n }\n // Even length; take the ceiling of the mean of the center two values\n return (values[mid - 1] + values[mid] + BN_1) / BN_2;\n}\nfunction getFuzzyMode(quorum, results) {\n if (quorum === 1) {\n return logger.getNumber(getMedian(results), \"%internal\");\n }\n const tally = new Map();\n const add = (result, weight) => {\n const t = tally.get(result) || { result, weight: 0 };\n t.weight += weight;\n tally.set(result, t);\n };\n for (const { weight, result } of results) {\n const r = logger.getNumber(result);\n add(r - 1, weight);\n add(r, weight);\n add(r + 1, weight);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n // Use this result, if this result meets quorum and has either:\n // - a better weight\n // - or equal weight, but the result is larger\n if (weight >= quorum && (weight > bestWeight || (bestResult != null && weight === bestWeight && result > bestResult))) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\nexport class FallbackProvider extends AbstractProvider {\n constructor(providers, network) {\n super(network);\n _FallbackProvider_instances.add(this);\n _FallbackProvider_configs.set(this, void 0);\n _FallbackProvider_height.set(this, void 0);\n _FallbackProvider_initialSyncPromise.set(this, void 0);\n __classPrivateFieldSet(this, _FallbackProvider_configs, providers.map((p) => {\n if (p instanceof AbstractProvider) {\n return Object.assign({ provider: p }, defaultConfig, defaultState);\n }\n else {\n return Object.assign({}, defaultConfig, p, defaultState);\n }\n }), \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_height, -2, \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, null, \"f\");\n this.quorum = 2; //Math.ceil(providers.length / 2);\n this.eventQuorum = 1;\n this.eventWorkers = 1;\n if (this.quorum > __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").reduce((a, c) => (a + c.weight), 0)) {\n logger.throwArgumentError(\"quorum exceed provider wieght\", \"quorum\", this.quorum);\n }\n }\n // @TOOD: Copy these and only return public values\n get providerConfigs() {\n return __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n }\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" }))).freeze();\n }\n async _perform(req) {\n await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_initialSync).call(this);\n // Bootstrap enough to meet quorum\n const running = new Set();\n for (let i = 0; i < this.quorum; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n const result = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n for (const runner of running) {\n runner.done = true;\n }\n return result;\n }\n}\n_FallbackProvider_configs = new WeakMap(), _FallbackProvider_height = new WeakMap(), _FallbackProvider_initialSyncPromise = new WeakMap(), _FallbackProvider_instances = new WeakSet(), _FallbackProvider_getNextConfig = function _FallbackProvider_getNextConfig(configs) {\n // Shuffle the states, sorted by priority\n const allConfigs = __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n shuffle(allConfigs);\n allConfigs.sort((a, b) => (b.priority - a.priority));\n for (const config of allConfigs) {\n if (configs.indexOf(config) === -1) {\n return config;\n }\n }\n return null;\n}, _FallbackProvider_addRunner = function _FallbackProvider_addRunner(running, req) {\n const config = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_getNextConfig).call(this, Array.from(running).map((r) => r.config));\n if (config == null) {\n return null;\n }\n const result = {};\n const runner = {\n config, result, didBump: false, done: false,\n perform: null, staller: null\n };\n const now = getTime();\n runner.perform = (async () => {\n try {\n config.requests++;\n result.result = await config.provider._perform(req);\n }\n catch (error) {\n config.errorResponses++;\n result.error = error;\n }\n if (runner.done) {\n config.lateResponses++;\n }\n const dt = (getTime() - now);\n config._totalTime += dt;\n config.rollingDuration = 0.95 * config.rollingDuration + 0.05 * dt;\n runner.perform = null;\n })();\n runner.staller = (async () => {\n await stall(config.stallTimeout);\n runner.staller = null;\n })();\n running.add(runner);\n return runner;\n}, _FallbackProvider_initialSync = \n// Initializes the blockNumber and network for each runner and\n// blocks until initialized\nasync function _FallbackProvider_initialSync() {\n let initialSync = __classPrivateFieldGet(this, _FallbackProvider_initialSyncPromise, \"f\");\n if (!initialSync) {\n const promises = [];\n __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").forEach((config) => {\n promises.push(waitForSync(config, 0));\n promises.push((async () => {\n config._network = await config.provider.getNetwork();\n })());\n });\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, initialSync = (async () => {\n // Wait for all providers to have a block number and network\n await Promise.all(promises);\n // Check all the networks match\n let chainId = null;\n for (const config of __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\")) {\n const network = (config._network);\n if (chainId == null) {\n chainId = network.chainId;\n }\n else if (network.chainId !== chainId) {\n logger.throwError(\"cannot mix providers on different networks\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FallbackProvider\"\n });\n }\n }\n })(), \"f\");\n }\n await initialSync;\n}, _FallbackProvider_checkQuorum = async function _FallbackProvider_checkQuorum(running, req) {\n // Get all the result objects\n const results = [];\n for (const runner of running) {\n if (\"result\" in runner.result) {\n const result = runner.result.result;\n results.push({\n result,\n normal: normalize((runner.config._network), result, req),\n weight: runner.config.weight\n });\n }\n }\n // Are there enough results to event meet quorum?\n if (results.reduce((a, r) => (a + r.weight), 0) < this.quorum) {\n return undefined;\n }\n switch (req.method) {\n case \"getBlockNumber\": {\n // We need to get the bootstrap block height\n if (__classPrivateFieldGet(this, _FallbackProvider_height, \"f\") === -2) {\n const height = Math.ceil(logger.getNumber(getMedian(__classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").map((c) => ({\n result: c.blockNumber,\n normal: logger.getNumber(c.blockNumber).toString(),\n weight: c.weight\n }))), \"%internal\"));\n __classPrivateFieldSet(this, _FallbackProvider_height, height, \"f\");\n }\n const mode = getFuzzyMode(this.quorum, results);\n if (mode === undefined) {\n return undefined;\n }\n if (mode > __classPrivateFieldGet(this, _FallbackProvider_height, \"f\")) {\n __classPrivateFieldSet(this, _FallbackProvider_height, mode, \"f\");\n }\n return __classPrivateFieldGet(this, _FallbackProvider_height, \"f\");\n }\n case \"getGasPrice\":\n case \"estimateGas\":\n return getMedian(results);\n case \"getBlock\":\n // Pending blocks are mempool dependant and already\n // quite untrustworthy\n if (\"blockTag\" in req && req.blockTag === \"pending\") {\n return results[0].result;\n }\n return checkQuorum(this.quorum, results);\n case \"chainId\":\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n case \"getLogs\":\n return checkQuorum(this.quorum, results);\n case \"call\":\n // @TODO: Check errors\n return checkQuorum(this.quorum, results);\n case \"sendTransaction\":\n throw new Error(\"TODO\");\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}, _FallbackProvider_waitForQuorum = async function _FallbackProvider_waitForQuorum(running, req) {\n if (running.size === 0) {\n throw new Error(\"no runners?!\");\n }\n // Any promises that are interesting to watch for; an expired stall\n // or a successful perform\n const interesting = [];\n //const results: Array = [ ];\n //const errors: Array = [ ];\n let newRunners = 0;\n for (const runner of running) {\n // @TODO: use runner.perfom != null\n /*\n if (\"result\" in runner.result) {\n results.push(runner.result.result);\n } else if (\"error\" in runner.result) {\n errors.push(runner.result.error);\n }\n*/\n // No responses, yet; keep an eye on it\n if (runner.perform) {\n interesting.push(runner.perform);\n }\n // Still stalling...\n if (runner.staller) {\n interesting.push(runner.staller);\n continue;\n }\n // This runner has already triggered another runner\n if (runner.didBump) {\n continue;\n }\n // Got a response (result or error) or stalled; kick off another runner\n runner.didBump = true;\n newRunners++;\n }\n // Check for quorum\n /*\n console.log({ results, errors } );\n if (results.length >= this.quorum) {\n return results[0];\n }\n\n if (errors.length >= this.quorum) {\n return errors[0];\n }\n */\n const value = await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_checkQuorum).call(this, running, req);\n if (value !== undefined) {\n if (value instanceof Error) {\n throw value;\n }\n return value;\n }\n // Add any new runners, because a staller timed out or a result\n // or error response came in.\n for (let i = 0; i < newRunners; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n if (interesting.length === 0) {\n throw new Error(\"quorum not met\");\n // return logger.throwError(\"failed to meet quorum\", \"\", {\n // });\n }\n // Wait for someone to either complete its perform or trigger a stall\n await Promise.race(interesting);\n return await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n};\n//# sourceMappingURL=provider-fallback.js.map","export function shuffle(array) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n}\n//# sourceMappingURL=shuffle.js.map","function getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst _WebSocket = getGlobal().WebSocket;\nexport { _WebSocket as WebSocket };\n//# sourceMappingURL=ws-browser.js.map","/**\n * SocketProvider\n *\n * Generic long-lived socket provider.\n *\n * Sub-classing notes\n * - a sub-class MUST call the `_start()` method once connected\n * - a sub-class MUST override the `_write(string)` method\n * - a sub-class MUST call `_processMessage(string)` for each message\n */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SocketSubscriber_provider, _SocketSubscriber_filter, _SocketSubscriber_filterId, _SocketSubscriber_paused, _SocketSubscriber_emitPromise, _SocketEventSubscriber_logFilter, _SocketEventSubscriber_formatter, _SocketProvider_callbacks, _SocketProvider_ready, _SocketProvider_subs, _SocketProvider_pending;\nimport { UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { JsonRpcApiProvider } from \"./provider-jsonrpc.js\";\nexport class SocketSubscriber {\n constructor(provider, filter) {\n _SocketSubscriber_provider.set(this, void 0);\n _SocketSubscriber_filter.set(this, void 0);\n _SocketSubscriber_filterId.set(this, void 0);\n _SocketSubscriber_paused.set(this, void 0);\n _SocketSubscriber_emitPromise.set(this, void 0);\n __classPrivateFieldSet(this, _SocketSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n get filter() { return JSON.parse(__classPrivateFieldGet(this, _SocketSubscriber_filter, \"f\")); }\n start() {\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_subscribe\", this.filter).then((filterId) => {\n ;\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\")._register(filterId, this);\n return filterId;\n }), \"f\");\n }\n stop() {\n (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\")).then((filterId) => {\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_unsubscribe\", [filterId]);\n });\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n }\n // @TODO: pause should trap the current blockNumber, unsub, and on resume use getLogs\n // and resume\n pause(dropWhilePaused) {\n if (!dropWhilePaused) {\n logger.throwError(\"preserve logs while paused not supported by SocketSubscriber yet\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause(false)\"\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_paused, !!dropWhilePaused, \"f\");\n }\n resume() {\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n }\n _handleMessage(message) {\n if (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\") == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _SocketSubscriber_paused, \"f\") === null) {\n let emitPromise = __classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\");\n if (emitPromise == null) {\n emitPromise = this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n }\n else {\n emitPromise = emitPromise.then(async () => {\n await this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, emitPromise.then(() => {\n if (__classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\") === emitPromise) {\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n }), \"f\");\n }\n }\n async _emit(provider, message) {\n throw new Error(\"sub-classes must implemente this; _emit\");\n }\n}\n_SocketSubscriber_provider = new WeakMap(), _SocketSubscriber_filter = new WeakMap(), _SocketSubscriber_filterId = new WeakMap(), _SocketSubscriber_paused = new WeakMap(), _SocketSubscriber_emitPromise = new WeakMap();\nexport class SocketBlockSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newHeads\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"block\", parseInt(message.number));\n }\n}\nexport class SocketPendingSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newPendingTransactions\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"pending\", message);\n }\n}\nexport class SocketEventSubscriber extends SocketSubscriber {\n constructor(provider, filter) {\n super(provider, [\"logs\", filter]);\n _SocketEventSubscriber_logFilter.set(this, void 0);\n _SocketEventSubscriber_formatter.set(this, void 0);\n __classPrivateFieldSet(this, _SocketEventSubscriber_logFilter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketEventSubscriber_formatter, provider.getNetwork().then((network) => network.formatter), \"f\");\n }\n get logFilter() { return JSON.parse(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\")); }\n async _emit(provider, message) {\n const formatter = await __classPrivateFieldGet(this, _SocketEventSubscriber_formatter, \"f\");\n provider.emit(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\"), formatter.log(message, provider));\n }\n}\n_SocketEventSubscriber_logFilter = new WeakMap(), _SocketEventSubscriber_formatter = new WeakMap();\nexport class SocketProvider extends JsonRpcApiProvider {\n constructor(network) {\n super(network);\n _SocketProvider_callbacks.set(this, void 0);\n _SocketProvider_ready.set(this, void 0);\n // Maps each filterId to its subscriber\n _SocketProvider_subs.set(this, void 0);\n // If any events come in before a subscriber has finished\n // registering, queue them\n _SocketProvider_pending.set(this, void 0);\n __classPrivateFieldSet(this, _SocketProvider_callbacks, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_ready, false, \"f\");\n __classPrivateFieldSet(this, _SocketProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_pending, new Map(), \"f\");\n }\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"close\":\n return new UnmanagedSubscriber(\"close\");\n case \"block\":\n return new SocketBlockSubscriber(this);\n case \"pending\":\n return new SocketPendingSubscriber(this);\n case \"event\":\n return new SocketEventSubscriber(this, sub.filter);\n case \"orphan\":\n // Handled auto-matically within AbstractProvider\n // when the log.removed = true\n if (sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"drop-log\");\n }\n }\n return super._getSubscriber(sub);\n }\n _register(filterId, subscriber) {\n __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").set(filterId, subscriber);\n const pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending) {\n for (const message of pending) {\n subscriber._handleMessage(message);\n }\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").delete(filterId);\n }\n }\n async send(method, params) {\n const payload = this.prepareRequest(method, params);\n const promise = new Promise((resolve, reject) => {\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").set(payload.id, { payload, resolve, reject });\n });\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n await this._write(JSON.stringify(payload));\n }\n return await promise;\n }\n // Sub-classes must call this once they are connected\n async _start() {\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n return;\n }\n __classPrivateFieldSet(this, _SocketProvider_ready, true, \"f\");\n for (const { payload } of __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").values()) {\n await this._write(JSON.stringify(payload));\n }\n }\n // Sub-classes must call this for each message\n async _processMessage(message) {\n const result = JSON.parse(message);\n if (\"id\" in result) {\n const promise = __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").get(result.id);\n if (!promise) {\n console.log(\"Weird... Response for not a thing we sent\");\n return;\n }\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").delete(result.id);\n if (\"error\" in result) {\n const { message, code, data } = result.error;\n const error = logger.makeError(message || \"unkonwn error\", \"SERVER_ERROR\", {\n request: `ws:${JSON.stringify(promise.payload)}`,\n info: { code, data }\n });\n promise.reject(error);\n }\n else {\n promise.resolve(result.result);\n }\n }\n else if (result.method === \"eth_subscription\") {\n const filterId = result.params.subscription;\n const subscriber = __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").get(filterId);\n if (subscriber) {\n subscriber._handleMessage(result.params.result);\n }\n else {\n let pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending == null) {\n pending = [];\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").set(filterId, pending);\n }\n pending.push(result.params.result);\n }\n }\n }\n async _write(message) {\n throw new Error(\"sub-classes must override this\");\n }\n}\n_SocketProvider_callbacks = new WeakMap(), _SocketProvider_ready = new WeakMap(), _SocketProvider_subs = new WeakMap(), _SocketProvider_pending = new WeakMap();\n//# sourceMappingURL=provider-socket.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WebSocketProvider_websocket;\nimport { WebSocket } from \"ws\"; /*-browser*/\nimport { SocketProvider } from \"./provider-socket.js\";\nexport class WebSocketProvider extends SocketProvider {\n constructor(url, network) {\n super(network);\n _WebSocketProvider_websocket.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, new WebSocket(url), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, url, \"f\");\n }\n this.websocket.onopen = () => {\n this._start();\n };\n this.websocket.onmessage = (message) => {\n this._processMessage(message.data);\n };\n }\n get websocket() { return __classPrivateFieldGet(this, _WebSocketProvider_websocket, \"f\"); }\n async _write(message) {\n this.websocket.send(message);\n }\n}\n_WebSocketProvider_websocket = new WeakMap();\n//# sourceMappingURL=provider-websocket.js.map","import { AnkrProvider } from \"./provider-ankr.js\";\nimport { AlchemyProvider } from \"./provider-alchemy.js\";\nimport { CloudflareProvider } from \"./provider-cloudflare.js\";\nimport { EtherscanProvider } from \"./provider-etherscan.js\";\nimport { InfuraProvider } from \"./provider-infura.js\";\nimport { PocketProvider } from \"./provider-pocket.js\";\nimport { FallbackProvider } from \"./provider-fallback.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nimport { WebSocketProvider } from \"./provider-websocket.js\";\nfunction isWebSocketLike(value) {\n return (value && typeof (value.send) === \"function\" &&\n typeof (value.close) === \"function\");\n}\nexport function getDefaultProvider(network, options) {\n if (options == null) {\n options = {};\n }\n if (typeof (network) === \"string\" && network.match(/^https?:/)) {\n return new JsonRpcProvider(network);\n }\n if (typeof (network) === \"string\" && network.match(/^wss?:/) || isWebSocketLike(network)) {\n return new WebSocketProvider(network);\n }\n const providers = [];\n if (options.alchemy !== \"-\") {\n try {\n providers.push(new AlchemyProvider(network, options.alchemy));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.ankr !== \"-\") {\n try {\n providers.push(new AnkrProvider(network, options.ankr));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.cloudflare !== \"-\") {\n try {\n providers.push(new CloudflareProvider(network));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.etherscan !== \"-\") {\n try {\n providers.push(new EtherscanProvider(network, options.etherscan));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.infura !== \"-\") {\n try {\n let projectId = options.infura;\n let projectSecret = undefined;\n if (typeof (projectId) === \"object\") {\n projectSecret = projectId.projectSecret;\n projectId = projectId.projectId;\n }\n providers.push(new InfuraProvider(network, projectId, projectSecret));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.pocket !== \"-\") {\n try {\n let appId = options.pocket;\n let secretKey = undefined;\n let loadBalancer = undefined;\n if (typeof (appId) === \"object\") {\n loadBalancer = !!appId.loadBalancer;\n secretKey = appId.secretKey;\n appId = appId.appId;\n }\n providers.push(new PocketProvider(network, appId, secretKey, loadBalancer));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (providers.length === 0) {\n throw new Error(\"TODO\");\n }\n if (providers.length === 1) {\n return providers[0];\n }\n return new FallbackProvider(providers);\n}\n//# sourceMappingURL=default-provider.js.map","import { EnsPlugin, GasCostPlugin, MaxPriorityFeePlugin } from \"./plugins-network.js\";\nimport { EtherscanPlugin } from \"./provider-etherscan.js\";\nimport { Network as _Network } from \"./network.js\";\n// See: https://chainlist.org\nfunction injectCommonNetworks(Network) {\n /// Register popular Ethereum networks\n function registerEth(name, chainId, options) {\n const func = function () {\n const network = new Network(name, chainId);\n // We use 0 to disable ENS\n if (options.ensNetwork != null) {\n network.attachPlugin(new EnsPlugin(null, options.ensNetwork));\n }\n if (options.priorityFee) {\n network.attachPlugin(new MaxPriorityFeePlugin(options.priorityFee));\n }\n if (options.etherscan) {\n const { url, apiKey } = options.etherscan;\n network.attachPlugin(new EtherscanPlugin(url, apiKey));\n }\n network.attachPlugin(new GasCostPlugin());\n return network;\n };\n // Register the network by name and chain ID\n Network.register(name, func);\n Network.register(chainId, func);\n if (options.altNames) {\n options.altNames.forEach((name) => {\n Network.register(name, func);\n });\n }\n }\n registerEth(\"homestead\", 1, { ensNetwork: 1, altNames: [\"mainnet\"] });\n registerEth(\"ropsten\", 3, { ensNetwork: 3 });\n registerEth(\"rinkeby\", 4, { ensNetwork: 4 });\n registerEth(\"goerli\", 5, { ensNetwork: 5 });\n registerEth(\"kovan\", 42, { ensNetwork: 42 });\n registerEth(\"classic\", 61, {});\n registerEth(\"classicKotti\", 6, {});\n registerEth(\"xdai\", 100, { ensNetwork: 1 });\n // Polygon has a 35 gwei maxPriorityFee requirement\n registerEth(\"matic\", 137, {\n ensNetwork: 1,\n priorityFee: 35000000000,\n etherscan: {\n apiKey: \"W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7\",\n url: \"https:/\\/api.polygonscan.com/\"\n }\n });\n registerEth(\"maticMumbai\", 80001, {\n priorityFee: 35000000000,\n etherscan: {\n apiKey: \"W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7\",\n url: \"https:/\\/api-testnet.polygonscan.com/\"\n }\n });\n registerEth(\"bnb\", 56, {\n ensNetwork: 1,\n etherscan: {\n apiKey: \"EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9\",\n url: \"http:/\\/api.bscscan.com\"\n }\n });\n registerEth(\"bnbt\", 97, {\n etherscan: {\n apiKey: \"EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9\",\n url: \"http:/\\/api-testnet.bscscan.com\"\n }\n });\n return Network;\n}\nconst Network = injectCommonNetworks(_Network);\nexport { Network };\n//# sourceMappingURL=common-networks.js.map","const IpcSocketProvider = undefined;\nexport { IpcSocketProvider };\n//# sourceMappingURL=provider-ipcsocket-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ContractTransactionReceipt_interface, _ContractTransactionResponse_interface;\nimport { defineProperties, EventPayload } from \"@ethersproject/properties\";\nimport { Log, TransactionReceipt, TransactionResponse } from \"@ethersproject/providers\";\nexport class EventLog extends Log {\n constructor(log, iface, fragment) {\n super(log, log.provider);\n const args = iface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, interface: iface });\n }\n get eventName() { return this.fragment.name; }\n get eventSignature() { return this.fragment.format(); }\n}\nexport class ContractTransactionReceipt extends TransactionReceipt {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionReceipt_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionReceipt_interface, iface, \"f\");\n }\n get logs() {\n return super.logs.map((log) => {\n const fragment = log.topics.length ? __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\").getEvent(log.topics[0]) : null;\n if (fragment) {\n return new EventLog(log, __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\"), fragment);\n }\n else {\n return log;\n }\n });\n }\n}\n_ContractTransactionReceipt_interface = new WeakMap();\nexport class ContractTransactionResponse extends TransactionResponse {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionResponse_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionResponse_interface, iface, \"f\");\n }\n async wait(confirms) {\n const receipt = await super.wait();\n if (receipt == null) {\n return null;\n }\n return new ContractTransactionReceipt(__classPrivateFieldGet(this, _ContractTransactionResponse_interface, \"f\"), this.provider, receipt);\n }\n}\n_ContractTransactionResponse_interface = new WeakMap();\nexport class ContractEventPayload extends EventPayload {\n constructor(contract, listener, filter, fragment, _log) {\n super(contract, listener, filter);\n const log = new EventLog(_log, contract.interface, fragment);\n const args = contract.interface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, log });\n }\n get eventName() {\n return this.fragment.name;\n }\n get eventSignature() {\n return this.fragment.format();\n }\n async getBlock() {\n return await this.log.getBlock();\n }\n async getTransaction() {\n return await this.log.getTransaction();\n }\n async getTransactionReceipt() {\n return await this.log.getTransactionReceipt();\n }\n}\n//# sourceMappingURL=wrappers.js.map","export const version = \"@ethersproject/contract@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PreparedTopicFilter_filter;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { Interface, Typed } from \"@ethersproject/abi\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { copyRequest } from \"@ethersproject/providers\";\nimport { ContractEventPayload, ContractTransactionResponse, EventLog } from \"./wrappers.js\";\nimport { logger } from \"./logger.js\";\nfunction canCall(value) {\n return (value && typeof (value.call) === \"function\");\n}\nfunction canEstimate(value) {\n return (value && typeof (value.estimateGas) === \"function\");\n}\nfunction canResolve(value) {\n return (value && typeof (value.resolveName) === \"function\");\n}\nfunction canSend(value) {\n return (value && typeof (value.sendTransaction) === \"function\");\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\nclass PreparedTopicFilter {\n constructor(contract, fragment, args) {\n _PreparedTopicFilter_filter.set(this, void 0);\n defineProperties(this, { fragment });\n if (fragment.inputs.length < args.length) {\n throw new Error(\"too many arguments\");\n }\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(contract.runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n __classPrivateFieldSet(this, _PreparedTopicFilter_filter, (async function () {\n const resolvedArgs = await Promise.all(fragment.inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n return contract.interface.encodeFilterTopics(fragment, resolvedArgs);\n })(), \"f\");\n }\n getTopicFilter() {\n return __classPrivateFieldGet(this, _PreparedTopicFilter_filter, \"f\");\n }\n}\n_PreparedTopicFilter_filter = new WeakMap();\n// A = Arguments passed in as a tuple\n// R = The result type of the call (i.e. if only one return type,\n// the qualified type, otherwise Result)\n// D = The type the default call will return (i.e. R for view/pure,\n// TransactionResponse otherwise)\n//export interface ContractMethod = Array, R = any, D extends R | ContractTransactionResponse = ContractTransactionResponse> {\nfunction _WrappedMethodBase() {\n return Function;\n}\nfunction getRunner(value, feature) {\n if (value == null) {\n return null;\n }\n if (typeof (value[feature]) === \"function\") {\n return value;\n }\n if (value.provider && typeof (value.provider[feature]) === \"function\") {\n return value.provider;\n }\n return null;\n}\nfunction getProvider(value) {\n if (value == null) {\n return null;\n }\n return value.provider || null;\n}\nexport async function copyOverrides(arg) {\n // Create a shallow copy (we'll deep-ify anything needed during normalizing)\n const overrides = copyRequest(Typed.dereference(arg, \"overrides\"));\n // Some sanity checking; these are what these methods adds\n //if ((overrides).to) {\n if (overrides.to) {\n logger.throwArgumentError(\"cannot override to\", \"overrides.to\", overrides.to);\n }\n else if (overrides.data) {\n logger.throwArgumentError(\"cannot override data\", \"overrides.data\", overrides.data);\n }\n // Resolve any from\n if (overrides.from) {\n overrides.from = await resolveAddress(overrides.from);\n }\n return overrides;\n}\nexport async function resolveArgs(_runner, inputs, args) {\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(_runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n return await Promise.all(inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n}\nclass WrappedMethod extends _WrappedMethodBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getFunctionName(key),\n _contract: contract, _key: key\n });\n const proxy = new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n const fragment = target.getFragment(...args);\n if (fragment.constant) {\n return await target.staticCall(...args);\n }\n return await target.send(...args);\n },\n });\n return proxy;\n }\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n get fragment() {\n return this._contract.interface.getFunction(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getFunction(this._key, args);\n }\n async populateTransaction(...args) {\n const fragment = this.getFragment(...args);\n // If an overrides was passed in, copy it and normalize the values\n let overrides = {};\n if (fragment.inputs.length + 1 === args.length) {\n overrides = await copyOverrides(args.pop());\n }\n if (fragment.inputs.length !== args.length) {\n throw new Error(\"internal error: fragment inputs doesn't match arguments; should not happen\");\n }\n const resolvedArgs = await resolveArgs(this._contract.runner, fragment.inputs, args);\n return Object.assign({}, overrides, await resolveProperties({\n to: this._contract.getAddress(),\n data: this._contract.interface.encodeFunctionData(fragment, resolvedArgs)\n }));\n }\n async staticCall(...args) {\n const result = await this.staticCallResult(...args);\n if (result.length === 1) {\n return result[0];\n }\n return result;\n }\n async send(...args) {\n const runner = this._contract.runner;\n if (!canSend(runner)) {\n return logger.throwError(\"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", {\n operation: \"sendTransaction\"\n });\n }\n const tx = await runner.sendTransaction(await this.populateTransaction(...args));\n const provider = getProvider(this._contract.runner);\n return new ContractTransactionResponse(this._contract.interface, provider, tx);\n }\n async estimateGas(...args) {\n const runner = getRunner(this._contract.runner, \"estimateGas\");\n if (!canEstimate(runner)) {\n return logger.throwError(\"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", {\n operation: \"estimateGas\"\n });\n }\n return await runner.estimateGas(await this.populateTransaction(...args));\n }\n async staticCallResult(...args) {\n const runner = getRunner(this._contract.runner, \"call\");\n if (!canCall(runner)) {\n return logger.throwError(\"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", {\n operation: \"call\"\n });\n }\n const fragment = this.getFragment(...args);\n const tx = await this.populateTransaction(...args);\n let result = \"0x\";\n try {\n result = await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error)) {\n throw this._contract.interface.makeError(fragment, error.data, tx);\n }\n throw error;\n }\n return this._contract.interface.decodeFunctionResult(fragment, result);\n }\n}\nfunction _WrappedEventBase() {\n return Function;\n}\nclass WrappedEvent extends _WrappedEventBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getEventName(key),\n _contract: contract, _key: key\n });\n return new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n return new PreparedTopicFilter(contract, target.getFragment(...args), args);\n },\n });\n }\n // Only works on non-ambiguous keys\n get fragment() {\n return this._contract.interface.getEvent(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getEvent(this._key, args);\n }\n}\n;\n// The combination of TypeScrype, Private Fields and Proxies makes\n// the world go boom; so we hide variables with some trickery keeping\n// a symbol attached to each BaseContract which its sub-class (even\n// via a Proxy) can reach and use to look up its internal values.\nconst internal = Symbol.for(\"_ethersInternal_contract\");\nconst internalValues = new WeakMap();\nfunction setInternal(contract, values) {\n internalValues.set(contract[internal], values);\n}\nfunction getInternal(contract) {\n return internalValues.get(contract[internal]);\n}\nfunction isDeferred(value) {\n return (value && typeof (value) === \"object\" && (\"getTopicFilter\" in value) &&\n (typeof (value.getTopicFilter) === \"function\") && value.fragment);\n}\nasync function getSubTag(contract, event) {\n let fragment;\n let topics;\n if (Array.isArray(event)) {\n // Topics; e.g. `[ \"0x1234...89ab\" ]`\n fragment = contract.interface.getEvent(event[0]);\n topics = event;\n }\n else if (typeof (event) === \"string\") {\n // Event name (name or signature); `\"Transfer\"`\n fragment = contract.interface.getEvent(event);\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else if (isDeferred(event)) {\n // Deferred Topic Filter; e.g. `contract.filter.Transfer(from)`\n fragment = event.fragment;\n topics = await event.getTopicFilter();\n }\n else if (\"fragment\" in event) {\n // ContractEvent; e.g. `contract.filter.Transfer`\n fragment = event.fragment;\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else {\n console.log(event);\n throw new Error(\"TODO\");\n }\n // Normalize topics and sort TopicSets\n topics = topics.map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const tag = topics.map((t) => {\n if (t == null) {\n return \"null\";\n }\n if (Array.isArray(t)) {\n return t.join(\"|\");\n }\n return t;\n }).join(\"&\");\n return { fragment, tag, topics };\n}\nasync function hasSub(contract, event) {\n const { subs } = getInternal(contract);\n return subs.get((await getSubTag(contract, event)).tag) || null;\n}\nasync function getSub(contract, event) {\n // Make sure our runner can actually subscribe to events\n const provider = getProvider(contract.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not support subscribing\", \"UNSUPPORTED_OPERATION\", {\n operation: \"on\"\n });\n }\n const { fragment, tag, topics } = await getSubTag(contract, event);\n const { addr, subs } = getInternal(contract);\n let sub = subs.get(tag);\n if (!sub) {\n const address = (addr ? addr : contract);\n const filter = { address, topics };\n const listener = (log) => {\n const payload = new ContractEventPayload(contract, null, event, fragment, log);\n emit(contract, event, payload.args, payload);\n };\n let started = false;\n const start = () => {\n if (started) {\n return;\n }\n provider.on(filter, listener);\n started = true;\n };\n const stop = () => {\n if (!started) {\n return;\n }\n provider.off(filter, listener);\n started = false;\n };\n sub = { tag, listeners: [], start, stop };\n subs.set(tag, sub);\n }\n return sub;\n}\nasync function _emit(contract, event, args, payload) {\n await lastEmit;\n const sub = await hasSub(contract, event);\n if (!sub) {\n return false;\n }\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const passArgs = args.slice();\n if (payload) {\n passArgs.push(new ContractEventPayload(contract, (once ? null : listener), event, payload.fragment, payload.log));\n }\n try {\n listener.call(contract, ...passArgs);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n}\n// We use this to ensure one emit resolves before firing the next to\n// ensure correct ordering (note this cannot throw and just adds the\n// notice to the event queu using setTimeout).\nlet lastEmit = Promise.resolve();\nasync function emit(contract, event, args, payload) {\n try {\n await lastEmit;\n }\n catch (error) { }\n const resultPromise = _emit(contract, event, args, payload);\n lastEmit = resultPromise;\n return await resultPromise;\n}\nconst passProperties = [\"then\"];\nexport class BaseContract {\n constructor(target, abi, runner = null, _deployTx) {\n const iface = Interface.from(abi);\n defineProperties(this, { target, runner, interface: iface });\n Object.defineProperty(this, internal, { value: {} });\n let addrPromise;\n let addr = null;\n let deployTx = null;\n if (_deployTx) {\n const provider = getProvider(runner);\n deployTx = new ContractTransactionResponse(this.interface, provider, _deployTx);\n }\n let subs = new Map();\n // Resolve the target as the address\n if (typeof (target) === \"string\") {\n if (isHexString(target)) {\n addr = target;\n addrPromise = Promise.resolve(target);\n }\n else {\n const resolver = getRunner(runner, \"resolveName\");\n if (!canResolve(resolver)) {\n throw logger.makeError(\"contract runner does not support name resolution\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\"\n });\n }\n addrPromise = resolver.resolveName(target).then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n }\n else {\n addrPromise = target.getAddress().then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n // Set our private values\n setInternal(this, { addrPromise, addr, deployTx, subs });\n // Add the event filters\n const filters = new Proxy({}, {\n get: (target, _prop, receiver) => {\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = this.getEvent(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract event: ${prop}`);\n }\n });\n defineProperties(this, { filters });\n // Return a Proxy that will respond to functions\n return new Proxy(this, {\n get: (target, _prop, receiver) => {\n if (_prop in target || passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = target.getFunction(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract method: ${prop}`);\n }\n });\n }\n async getAddress() { return await getInternal(this).addrPromise; }\n async getDeployedCode() {\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getDeployedCode\"\n });\n }\n const code = await provider.getCode(await this.getAddress());\n if (code === \"0x\") {\n return null;\n }\n return code;\n }\n async waitForDeployment() {\n // We have the deployement transaction; just use that (throws if deployement fails)\n const deployTx = this.deploymentTransaction();\n if (deployTx) {\n await deployTx.wait();\n return this;\n }\n // Check for code\n const code = await this.getDeployedCode();\n if (code != null) {\n return this;\n }\n // Make sure we can subscribe to a provider event\n const provider = getProvider(this.runner);\n if (provider == null) {\n return logger.throwError(\"contract runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"waitForDeployment\"\n });\n }\n return new Promise((resolve, reject) => {\n const checkCode = async () => {\n try {\n const code = await this.getDeployedCode();\n if (code != null) {\n return resolve(this);\n }\n provider.once(\"block\", checkCode);\n }\n catch (error) {\n reject(error);\n }\n };\n checkCode();\n });\n }\n deploymentTransaction() {\n return getInternal(this).deployTx;\n }\n getFunction(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedMethod(this, key));\n }\n getEvent(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedEvent(this, key));\n }\n async queryTransaction(hash) {\n // Is this useful?\n throw new Error(\"@TODO\");\n }\n async queryFilter(event, fromBlock = 0, toBlock = \"latest\") {\n const { addr, addrPromise } = getInternal(this);\n const address = (addr ? addr : (await addrPromise));\n const { fragment, topics } = await getSubTag(this, event);\n const filter = { address, topics, fromBlock, toBlock };\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not have a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"queryFilter\"\n });\n }\n return (await provider.getLogs(filter)).map((log) => {\n return new EventLog(log, this.interface, fragment);\n });\n }\n async on(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: false });\n sub.start();\n return this;\n }\n async once(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: true });\n sub.start();\n return this;\n }\n async emit(event, ...args) {\n return await emit(this, event, args, null);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n const { subs } = getInternal(this);\n let total = 0;\n for (const { listeners } of subs.values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n const { subs } = getInternal(this);\n let result = [];\n for (const { listeners } of subs.values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (listener == null || sub.listeners.length === 0) {\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n else {\n const { subs } = getInternal(this);\n for (const { tag, stop } of subs.values()) {\n stop();\n subs.delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return await this.off(event, listener);\n }\n static buildClass(abi) {\n class CustomContract extends BaseContract {\n constructor(address, runner = null) {\n super(address, abi, runner);\n }\n }\n return CustomContract;\n }\n ;\n static from(target, abi, runner = null) {\n const contract = new this(target, abi, runner);\n return contract;\n }\n}\nfunction _ContractBase() {\n return BaseContract;\n}\nexport class Contract extends _ContractBase() {\n}\n//# sourceMappingURL=contract.js.map","const subsChrs = \" !#$%&'()*+,-./<=>?@[]^_`{|}~\";\nconst Word = /^[a-z]*$/i;\nfunction unfold(words, sep) {\n let initial = 97;\n return words.reduce((accum, word) => {\n if (word === sep) {\n initial++;\n }\n else if (word.match(Word)) {\n accum.push(String.fromCharCode(initial) + word);\n }\n else {\n initial = 97;\n accum.push(word);\n }\n return accum;\n }, []);\n}\nexport function decode(data, subs) {\n // Replace all the substitutions with their expanded form\n for (let i = subsChrs.length - 1; i >= 0; i--) {\n data = data.split(subsChrs[i]).join(subs.substring(2 * i, 2 * i + 2));\n }\n // Get all tle clumps; each suffix, first-increment and second-increment\n const clumps = [];\n const leftover = data.replace(/(:|([0-9])|([A-Z][a-z]*))/g, (all, item, semi, word) => {\n if (semi) {\n for (let i = parseInt(semi); i >= 0; i--) {\n clumps.push(\";\");\n }\n }\n else {\n clumps.push(item.toLowerCase());\n }\n return \"\";\n });\n if (leftover) {\n throw new Error(`leftovers: ${JSON.stringify(leftover)}`);\n }\n return unfold(unfold(clumps, \";\"), \":\");\n}\nexport function decodeOwl(data) {\n if (data[0] !== \"0\") {\n throw TypeError(\"unsupported auwl data\");\n }\n return decode(data.substring(1 + 2 * subsChrs.length), data.substring(1, 1 + 2 * subsChrs.length));\n}\n//# sourceMappingURL=decode-owl.js.map","export const version = \"@ethersproject/wordlists@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { defineProperties } from \"@ethersproject/properties\";\nexport class Wordlist {\n constructor(locale) {\n defineProperties(this, { locale });\n }\n // Subclasses may override this\n split(mnemonic) {\n return mnemonic.toLowerCase().split(/ +/g);\n }\n // Subclasses may override this\n join(words) {\n return words.join(\" \");\n }\n}\n//# sourceMappingURL=wordlist.js.map","// Use the encode-latin.js script to create the necessary\n// data files to be consumed by this class\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwl_instances, _WordlistOwl_data, _WordlistOwl_checksum, _WordlistOwl_words, _WordlistOwl_loadWords;\nimport { id } from \"@ethersproject/hash\";\nimport { decodeOwl } from \"./decode-owl.js\";\nimport { logger } from \"./logger.js\";\nimport { Wordlist } from \"./wordlist.js\";\nexport class WordlistOwl extends Wordlist {\n constructor(locale, data, checksum) {\n super(locale);\n _WordlistOwl_instances.add(this);\n _WordlistOwl_data.set(this, void 0);\n _WordlistOwl_checksum.set(this, void 0);\n _WordlistOwl_words.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwl_data, data, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_checksum, checksum, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_words, null, \"f\");\n }\n get _data() { return __classPrivateFieldGet(this, _WordlistOwl_data, \"f\"); }\n _decodeWords() {\n return decodeOwl(__classPrivateFieldGet(this, _WordlistOwl_data, \"f\"));\n }\n getWord(index) {\n const words = __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this);\n if (index < 0 || index >= words.length) {\n logger.throwArgumentError(`invalid word index: ${index}`, \"index\", index);\n }\n return words[index];\n }\n getWordIndex(word) {\n return __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this).indexOf(word);\n }\n}\n_WordlistOwl_data = new WeakMap(), _WordlistOwl_checksum = new WeakMap(), _WordlistOwl_words = new WeakMap(), _WordlistOwl_instances = new WeakSet(), _WordlistOwl_loadWords = function _WordlistOwl_loadWords() {\n if (__classPrivateFieldGet(this, _WordlistOwl_words, \"f\") == null) {\n const words = this._decodeWords();\n // Verify the computed list matches the official list\n const checksum = id(words.join(\"\\n\") + \"\\n\");\n /* c8 ignore start */\n if (checksum !== __classPrivateFieldGet(this, _WordlistOwl_checksum, \"f\")) {\n throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);\n }\n /* c8 ignore stop */\n __classPrivateFieldSet(this, _WordlistOwl_words, words, \"f\");\n }\n return __classPrivateFieldGet(this, _WordlistOwl_words, \"f\");\n};\n//# sourceMappingURL=wordlist-owl.js.map","import { WordlistOwl } from \"./wordlist-owl.js\";\nconst words = \"0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-EgSe0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-PM&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryFN Noc|PutQuirySSue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurEAyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOgAyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NNGradeHoldOnP Set1BOng::Rd3Ar~ow9UUngU`:3BraRo9NeO\";\nconst checksum = \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\";\nexport class LangEn extends WordlistOwl {\n constructor() { super(\"en\", words, checksum); }\n}\nexport const langEn = new LangEn();\n//# sourceMappingURL=lang-en.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","export const version = \"@ethersproject/wallet@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { langEn as en } from \"./lang-en.js\";\nexport const wordlists = Object.freeze({\n en\n});\n//# sourceMappingURL=wordlists-en.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwlA_accent;\nimport { WordlistOwl } from \"./wordlist-owl.js\";\nimport { decodeOwlA } from \"./decode-owla.js\";\nexport class WordlistOwlA extends WordlistOwl {\n constructor(locale, data, accent, checksum) {\n super(locale, data, checksum);\n _WordlistOwlA_accent.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwlA_accent, accent, \"f\");\n }\n get _accent() { return __classPrivateFieldGet(this, _WordlistOwlA_accent, \"f\"); }\n _decodeWords() {\n return decodeOwlA(this._data, this._accent);\n }\n}\n_WordlistOwlA_accent = new WeakMap();\n//# sourceMappingURL=wordlist-owla.js.map","import { decodeBits } from \"./bit-reader.js\";\nimport { decodeOwl } from \"./decode-owl.js\";\nexport function decodeOwlA(data, accents) {\n let words = decodeOwl(data).join(\",\");\n // Inject the accents\n accents.split(/,/g).forEach((accent) => {\n const match = accent.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);\n if (!match) {\n throw new Error(\"internal error parsing accents\");\n }\n let posOffset = 0;\n const positions = decodeBits(parseInt(match[3]), match[4]);\n const charCode = parseInt(match[2]);\n const regex = new RegExp(`([${match[1]}])`, \"g\");\n words = words.replace(regex, (all, letter) => {\n const rem = --positions[posOffset];\n if (rem === 0) {\n letter = String.fromCharCode(letter.charCodeAt(0), charCode);\n posOffset++;\n }\n return letter;\n });\n });\n return words.split(\",\");\n}\n//# sourceMappingURL=decode-owla.js.map","const Base64 = \")!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_\";\nexport function decodeBits(width, data) {\n const maxValue = (1 << width) - 1;\n const result = [];\n let accum = 0, bits = 0, flood = 0;\n for (let i = 0; i < data.length; i++) {\n // Accumulate 6 bits of data\n accum = ((accum << 6) | Base64.indexOf(data[i]));\n bits += 6;\n // While we have enough for a word...\n while (bits >= width) {\n // ...read the word\n const value = (accum >> (bits - width));\n accum &= (1 << (bits - width)) - 1;\n bits -= width;\n // A value of 0 indicates we exceeded maxValue, it\n // floods over into the next value\n if (value === 0) {\n flood += maxValue;\n }\n else {\n result.push(value + flood);\n flood = 0;\n }\n }\n }\n return result;\n}\n//# sourceMappingURL=bit-reader.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { pbkdf2, sha256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { langEn } from \"@ethersproject/wordlists\";\nimport { logger } from \"./logger.js\";\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits) {\n return ((1 << bits) - 1) << (8 - bits) & 0xff;\n}\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits) {\n return ((1 << bits) - 1) & 0xff;\n}\nfunction mnemonicToEntropy(mnemonic, wordlist = langEn) {\n logger.assertNormalize(\"NFKD\");\n if (wordlist == null) {\n wordlist = langEn;\n }\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0 || words.length < 12 || words.length > 24) {\n logger.throwArgumentError(\"invalid mnemonic length\", \"mnemonic\", \"[ REDACTED ]\");\n }\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) {\n logger.throwArgumentError(`invalid mnemonic word at index ${i}`, \"mnemonic\", \"[ REDACTED ]\");\n }\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n const entropyBits = 32 * words.length / 3;\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n logger.throwArgumentError(\"invalid mnemonic checksum\", \"mnemonic\", \"[ REDACTED ]\");\n }\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\nfunction entropyToMnemonic(entropy, wordlist = langEn) {\n if ((entropy.length % 4) || entropy.length < 16 || entropy.length > 32) {\n logger.throwArgumentError(\"invalid entropy size\", \"entropy\", \"[ REDACTED ]\");\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n const indices = [0];\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n remainingBits -= 8;\n // This byte will complete an 11-bit index\n }\n else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n remainingBits += 3;\n }\n }\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = parseInt(sha256(entropy).substring(2, 4), 16) & getUpperMask(checksumBits);\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n return wordlist.join(indices.map((index) => wordlist.getWord(index)));\n}\nconst _guard = {};\nexport class Mnemonic {\n constructor(guard, entropy, phrase, password, wordlist) {\n if (password == null) {\n password = \"\";\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n logger.assertPrivate(guard, _guard, \"Mnemonic\");\n defineProperties(this, { phrase, password, wordlist, entropy });\n }\n computeSeed() {\n const salt = toUtf8Bytes(\"mnemonic\" + this.password, UnicodeNormalizationForm.NFKD);\n return pbkdf2(toUtf8Bytes(this.phrase, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n }\n static fromPhrase(phrase, password, wordlist) {\n // Normalize the case and space; throws if invalid\n const entropy = mnemonicToEntropy(phrase, wordlist);\n phrase = entropyToMnemonic(logger.getBytes(entropy), wordlist);\n return new Mnemonic(_guard, entropy, phrase, password, wordlist);\n }\n static fromEntropy(_entropy, password, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n const phrase = entropyToMnemonic(entropy, wordlist);\n return new Mnemonic(_guard, hexlify(entropy), phrase, password, wordlist);\n }\n static entropyToPhrase(_entropy, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n return entropyToMnemonic(entropy, wordlist);\n }\n static phraseToEntropy(phrase, wordlist) {\n return mnemonicToEntropy(phrase, wordlist);\n }\n static isValidMnemonic(phrase, wordlist) {\n try {\n mnemonicToEntropy(phrase, wordlist);\n return true;\n }\n catch (error) { }\n return false;\n }\n}\n//# sourceMappingURL=mnemonic.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _BaseWallet_signingKey;\nimport { getAddress, resolveAddress } from \"@ethersproject/address\";\nimport { hashMessage, TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { AbstractSigner } from \"@ethersproject/providers\";\nimport { computeAddress, Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class BaseWallet extends AbstractSigner {\n constructor(privateKey, provider) {\n super(provider);\n _BaseWallet_signingKey.set(this, void 0);\n __classPrivateFieldSet(this, _BaseWallet_signingKey, privateKey, \"f\");\n const address = computeAddress(this.signingKey.publicKey);\n defineProperties(this, { address });\n }\n // Store these in getters to reduce visibility in console.log\n get signingKey() { return __classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"); }\n get privateKey() { return this.signingKey.privateKey; }\n async getAddress() { return this.address; }\n connect(provider) {\n return new BaseWallet(__classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"), provider);\n }\n async signTransaction(_tx) {\n // Replace any Addressable or ENS name with an address\n const tx = Object.assign({}, _tx, await resolveProperties({\n to: (_tx.to ? resolveAddress(_tx.to, this.provider) : undefined),\n from: (_tx.from ? resolveAddress(_tx.from, this.provider) : undefined)\n }));\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"tx.from\", _tx.from);\n }\n delete tx.from;\n }\n // Build the transaction\n const btx = Transaction.from(tx);\n btx.signature = this.signingKey.sign(btx.unsignedHash);\n return btx.serialized;\n }\n async signMessage(message) {\n return this.signingKey.sign(hashMessage(message)).serialized;\n }\n async signTypedData(domain, types, value) {\n // Populate any ENS names\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (name) => {\n if (this.provider == null) {\n return logger.throwError(\"cannot resolve ENS names without a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n info: { name }\n });\n }\n const address = await this.provider.resolveName(name);\n if (address == null) {\n return logger.throwError(\"unconfigured ENS name\", \"UNCONFIGURED_NAME\", {\n value: name\n });\n }\n return address;\n });\n return this.signingKey.sign(TypedDataEncoder.hash(populated.domain, types, populated.value)).serialized;\n }\n}\n_BaseWallet_signingKey = new WeakMap();\n//# sourceMappingURL=base-wallet.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _a, _HDNodeWallet_fromSeed, _HDNodeWalletManager_root;\nimport { arrayify, concat, dataSlice, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac, randomBytes, ripemd160, sha256 } from \"@ethersproject/crypto\";\nimport { decodeBase58, encodeBase58, toBigInt, toHex } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { VoidSigner } from \"@ethersproject/providers\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { langEn } from \"@ethersproject/wordlists/lib/lang-en.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nimport { BaseWallet } from \"./base-wallet.js\";\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n// \"Bitcoin seed\"\nconst MasterSecret = new Uint8Array([66, 105, 116, 99, 111, 105, 110, 32, 115, 101, 101, 100]);\nconst HardenedBit = 0x80000000;\nconst N = BigInt(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\nconst Nibbles = \"0123456789abcdef\";\nfunction zpad(value, length) {\n let result = \"\";\n while (value) {\n result = Nibbles[value % 16] + result;\n value = Math.trunc(value / 16);\n }\n while (result.length < length * 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction encodeBase58Check(_value) {\n const value = logger.getBytes(_value);\n const check = dataSlice(sha256(sha256(value)), 0, 4);\n const bytes = concat([value, check]);\n return encodeBase58(bytes);\n}\nconst _guard = {};\nfunction ser_I(index, chainCode, publicKey, privateKey) {\n const data = new Uint8Array(37);\n if (index & HardenedBit) {\n if (privateKey == null) {\n return logger.throwError(\"cannot derive child of neutered node\", \"UNSUPPORTED_OPERATION\", {\n operation: \"deriveChild\"\n });\n }\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(privateKey), 1);\n }\n else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(publicKey));\n }\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) {\n data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff);\n }\n const I = arrayify(computeHmac(\"sha512\", chainCode, data));\n return { IL: I.slice(0, 32), IR: I.slice(32) };\n}\nfunction derivePath(node, path) {\n const components = path.split(\"/\");\n if (components.length === 0 || (components[0] === \"m\" && node.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n if (components[0] === \"m\") {\n components.shift();\n }\n let result = node;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(HardenedBit + index);\n }\n else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(index);\n }\n else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n return result;\n}\nexport class HDNodeWallet extends BaseWallet {\n constructor(guard, signingKey, parentFingerprint, chainCode, path, index, depth, mnemonic, provider) {\n super(signingKey, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeWallet\");\n defineProperties(this, { publicKey: signingKey.compressedPublicKey });\n const fingerprint = dataSlice(ripemd160(sha256(this.publicKey)), 0, 4);\n defineProperties(this, {\n parentFingerprint, fingerprint,\n chainCode, path, index, depth\n });\n defineProperties(this, { mnemonic });\n }\n connect(provider) {\n return new HDNodeWallet(_guard, this.signingKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.mnemonic, provider);\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488ADE4\", zpad(this.depth, 1), this.parentFingerprint,\n zpad(this.index, 4), this.chainCode,\n concat([\"0x00\", this.privateKey])\n ]));\n }\n hasPath() { return (this.path != null); }\n neuter() {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.provider);\n }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, this.privateKey);\n const ki = new SigningKey(toHex((toBigInt(IL) + BigInt(this.privateKey)) % N, 32));\n return new HDNodeWallet(_guard, ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.mnemonic, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n static fromSeed(seed) {\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, seed, null);\n }\n static fromPhrase(phrase, password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromPhrase(phrase, password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromMnemonic(mnemonic, path = defaultPath) {\n if (!path) {\n path = defaultPath;\n }\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromExtendedKey(extendedKey) {\n const bytes = arrayify(decodeBase58(extendedKey)); // @TODO: redact\n if (bytes.length !== 82 || encodeBase58Check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[ REDACTED ]\");\n }\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\":\n case \"0x043587cf\": {\n const publicKey = hexlify(key);\n return new HDNodeVoidWallet(_guard, computeAddress(publicKey), publicKey, parentFingerprint, chainCode, null, index, depth, null);\n }\n // Private Key\n case \"0x0488ade4\":\n case \"0x04358394 \":\n if (key[0] !== 0) {\n break;\n }\n return new HDNodeWallet(_guard, new SigningKey(key.slice(1)), parentFingerprint, chainCode, null, index, depth, null, null);\n }\n return logger.throwArgumentError(\"invalid extended key prefix\", \"extendedKey\", \"[ REDACTED ]\");\n }\n static createRandom(password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromEntropy(randomBytes(16), password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n}\n_a = HDNodeWallet, _HDNodeWallet_fromSeed = function _HDNodeWallet_fromSeed(_seed, mnemonic) {\n const seed = logger.getBytes(_seed, \"seed\");\n if (seed.length < 16 || seed.length > 64) {\n throw new Error(\"invalid seed\");\n }\n const I = arrayify(computeHmac(\"sha512\", MasterSecret, seed));\n const signingKey = new SigningKey(hexlify(I.slice(0, 32)));\n return new HDNodeWallet(_guard, signingKey, \"0x00000000\", hexlify(I.slice(32)), \"m\", 0, 0, mnemonic, null);\n};\nexport class HDNodeVoidWallet extends VoidSigner {\n constructor(guard, address, publicKey, parentFingerprint, chainCode, path, index, depth, provider) {\n super(address, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeVoidWallet\");\n defineProperties(this, { publicKey });\n const fingerprint = dataSlice(ripemd160(sha256(publicKey)), 0, 4);\n defineProperties(this, {\n publicKey, fingerprint, parentFingerprint, chainCode, path, index, depth\n });\n }\n connect(provider) {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, provider);\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488B21E\",\n zpad(this.depth, 1),\n this.parentFingerprint,\n zpad(this.index, 4),\n this.chainCode,\n this.publicKey,\n ]));\n }\n hasPath() { return (this.path != null); }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, null);\n const Ki = SigningKey._addPoints(IL, this.publicKey, true);\n const address = computeAddress(Ki);\n return new HDNodeVoidWallet(_guard, address, Ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n}\nexport class HDNodeWalletManager {\n constructor(phrase, password = \"\", path = \"m/44'/60'/0'/0\", locale = langEn) {\n _HDNodeWalletManager_root.set(this, void 0);\n __classPrivateFieldSet(this, _HDNodeWalletManager_root, HDNodeWallet.fromPhrase(phrase, password, path, locale), \"f\");\n }\n getSigner(index = 0) {\n return __classPrivateFieldGet(this, _HDNodeWalletManager_root, \"f\").deriveChild(index);\n }\n}\n_HDNodeWalletManager_root = new WeakMap();\nexport function getAccountPath(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index < 0 || index >= HardenedBit) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${index}'/0/0`;\n}\n//# sourceMappingURL=hdwallet.js.map","/*! MIT License. Copyright 2015-2022 Richard Moore . See LICENSE.txt. */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AES_key, _AES_Kd, _AES_Ke;\n// Number of rounds by keysize\nconst numberOfRounds = { 16: 10, 24: 12, 32: 14 };\n// Round constant words\nconst rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n// S-box and Inverse S-box (S is for Substitution)\nconst S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\nconst Si = [0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n// Transformations for encryption\nconst T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\nconst T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\nconst T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\nconst T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n// Transformations for decryption\nconst T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\nconst T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\nconst T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\nconst T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n// Transformations for decryption key expansion\nconst U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\nconst U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\nconst U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\nconst U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\nfunction convertToInt32(bytes) {\n const result = [];\n for (let i = 0; i < bytes.length; i += 4) {\n result.push((bytes[i] << 24) | (bytes[i + 1] << 16) | (bytes[i + 2] << 8) | bytes[i + 3]);\n }\n return result;\n}\nexport class AES {\n constructor(key) {\n _AES_key.set(this, void 0);\n _AES_Kd.set(this, void 0);\n _AES_Ke.set(this, void 0);\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n __classPrivateFieldSet(this, _AES_key, new Uint8Array(key), \"f\");\n const rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new TypeError('invalid key size (must be 16, 24 or 32 bytes)');\n }\n // encryption round keys\n __classPrivateFieldSet(this, _AES_Ke, [], \"f\");\n // decryption round keys\n __classPrivateFieldSet(this, _AES_Kd, [], \"f\");\n for (let i = 0; i <= rounds; i++) {\n __classPrivateFieldGet(this, _AES_Ke, \"f\").push([0, 0, 0, 0]);\n __classPrivateFieldGet(this, _AES_Kd, \"f\").push([0, 0, 0, 0]);\n }\n const roundKeyCount = (rounds + 1) * 4;\n const KC = this.key.length / 4;\n // convert the key into ints\n const tk = convertToInt32(this.key);\n // copy values into round key arrays\n let index;\n for (let i = 0; i < KC; i++) {\n index = i >> 2;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[index][i % 4] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - index][i % 4] = tk[i];\n }\n // key expansion (fips-197 section 5.2)\n let rconpointer = 0;\n let t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (let i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n }\n else {\n for (let i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n tk[KC / 2] ^= (S[tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n for (let i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n // copy values into round key arrays\n let i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][c] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - r][c] = tk[i++];\n t++;\n }\n }\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (let r = 1; r < rounds; r++) {\n for (let c = 0; c < 4; c++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[tt & 0xFF]);\n }\n }\n }\n get key() { return __classPrivateFieldGet(this, _AES_key, \"f\").slice(); }\n encrypt(plaintext) {\n if (plaintext.length != 16) {\n throw new TypeError('invalid plaintext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Ke, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(plaintext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Ke, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T1[(t[i] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[t[(i + 3) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Ke, \"f\")[rounds][i];\n result[4 * i] = (S[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[t[(i + 3) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n decrypt(ciphertext) {\n if (ciphertext.length != 16) {\n throw new TypeError('invalid ciphertext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Kd, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(ciphertext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Kd, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T5[(t[i] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[t[(i + 1) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds][i];\n result[4 * i] = (Si[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[t[(i + 1) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n}\n_AES_key = new WeakMap(), _AES_Kd = new WeakMap(), _AES_Ke = new WeakMap();\n//# sourceMappingURL=aes.js.map","import { AES } from \"./aes.js\";\nexport class ModeOfOperation {\n constructor(name, key, cls) {\n if (cls && !(this instanceof cls)) {\n throw new Error(`${name} must be instantiated with \"new\"`);\n }\n Object.defineProperties(this, {\n aes: { enumerable: true, value: new AES(key) },\n name: { enumerable: true, value: name }\n });\n }\n}\n//# sourceMappingURL=mode.js.map","// Cipher Block Chaining\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CBC_iv, _CBC_lastBlock;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CBC extends ModeOfOperation {\n constructor(key, iv) {\n super(\"ECC\", key, CBC);\n _CBC_iv.set(this, void 0);\n _CBC_lastBlock.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CBC_iv, \"f\")); }\n encrypt(plaintext) {\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext.length);\n for (let i = 0; i < plaintext.length; i += 16) {\n for (let j = 0; j < 16; j++) {\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] ^= plaintext[i + j];\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.aes.encrypt(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\")), \"f\");\n ciphertext.set(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\"), i);\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n const plaintext = new Uint8Array(ciphertext.length);\n for (let i = 0; i < ciphertext.length; i += 16) {\n const block = this.aes.decrypt(ciphertext.subarray(i, i + 16));\n for (let j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j];\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] = ciphertext[i + j];\n }\n }\n return plaintext;\n }\n}\n_CBC_iv = new WeakMap(), _CBC_lastBlock = new WeakMap();\n//# sourceMappingURL=mode-cbc.js.map","// Cipher Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CFB_instances, _CFB_iv, _CFB_shiftRegister, _CFB_shift;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CFB extends ModeOfOperation {\n constructor(key, iv, segmentSize = 8) {\n super(\"CFB\", key, CFB);\n _CFB_instances.add(this);\n _CFB_iv.set(this, void 0);\n _CFB_shiftRegister.set(this, void 0);\n // This library currently only handles byte-aligned segmentSize\n if (!Number.isInteger(segmentSize) || (segmentSize % 8)) {\n throw new TypeError(\"invalid segmentSize\");\n }\n Object.defineProperties(this, {\n segmentSize: { enumerable: true, value: segmentSize }\n });\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CFB_shiftRegister, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CFB_iv, \"f\")); }\n encrypt(plaintext) {\n if (8 * plaintext.length % this.segmentSize) {\n throw new TypeError(\"invalid plaintext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n ciphertext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (8 * ciphertext.length % this.segmentSize) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const plaintext = new Uint8Array(ciphertext);\n for (let i = 0; i < plaintext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return plaintext;\n }\n}\n_CFB_iv = new WeakMap(), _CFB_shiftRegister = new WeakMap(), _CFB_instances = new WeakSet(), _CFB_shift = function _CFB_shift(data) {\n const segmentSize = this.segmentSize / 8;\n // Shift the register\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").subarray(segmentSize));\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(data.subarray(0, segmentSize), 16 - segmentSize);\n};\n//# sourceMappingURL=mode-cfb.js.map","// Counter Mode\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CTR_remaining, _CTR_remainingIndex, _CTR_counter;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CTR extends ModeOfOperation {\n constructor(key, initialValue) {\n super(\"CTR\", key, CTR);\n // Remaining bytes for the one-time pad\n _CTR_remaining.set(this, void 0);\n _CTR_remainingIndex.set(this, void 0);\n // The current counter\n _CTR_counter.set(this, void 0);\n __classPrivateFieldSet(this, _CTR_counter, new Uint8Array(16), \"f\");\n __classPrivateFieldGet(this, _CTR_counter, \"f\").fill(0);\n __classPrivateFieldSet(this, _CTR_remaining, __classPrivateFieldGet(this, _CTR_counter, \"f\"), \"f\"); // This will be discarded immediately\n __classPrivateFieldSet(this, _CTR_remainingIndex, 16, \"f\");\n if (initialValue == null) {\n initialValue = 1;\n }\n if (typeof (initialValue) === \"number\") {\n this.setCounterValue(initialValue);\n }\n else {\n this.setCounterBytes(initialValue);\n }\n }\n get counter() { return new Uint8Array(__classPrivateFieldGet(this, _CTR_counter, \"f\")); }\n setCounterValue(value) {\n if (!Number.isInteger(value) || value < 0 || value > Number.MAX_SAFE_INTEGER) {\n throw new TypeError(\"invalid counter initial integer value\");\n }\n for (let index = 15; index >= 0; --index) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[index] = value % 256;\n value = Math.floor(value / 256);\n }\n }\n setCounterBytes(value) {\n if (value.length !== 16) {\n throw new TypeError(\"invalid counter initial Uint8Array value length\");\n }\n __classPrivateFieldGet(this, _CTR_counter, \"f\").set(value);\n }\n increment() {\n for (let i = 15; i >= 0; i--) {\n if (__classPrivateFieldGet(this, _CTR_counter, \"f\")[i] === 255) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i] = 0;\n }\n else {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i]++;\n break;\n }\n }\n }\n encrypt(plaintext) {\n var _a, _b;\n const crypttext = new Uint8Array(plaintext);\n for (let i = 0; i < crypttext.length; i++) {\n if (__classPrivateFieldGet(this, _CTR_remainingIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _CTR_remaining, this.aes.encrypt(__classPrivateFieldGet(this, _CTR_counter, \"f\")), \"f\");\n __classPrivateFieldSet(this, _CTR_remainingIndex, 0, \"f\");\n this.increment();\n }\n crypttext[i] ^= __classPrivateFieldGet(this, _CTR_remaining, \"f\")[__classPrivateFieldSet(this, _CTR_remainingIndex, (_b = __classPrivateFieldGet(this, _CTR_remainingIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return crypttext;\n }\n decrypt(ciphertext) {\n return this.encrypt(ciphertext);\n }\n}\n_CTR_remaining = new WeakMap(), _CTR_remainingIndex = new WeakMap(), _CTR_counter = new WeakMap();\n//# sourceMappingURL=mode-ctr.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\nimport { logger } from \"./logger.js\";\nexport function looseArrayify(hexString) {\n if (typeof (hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\nexport function zpad(value, length) {\n value = String(value);\n while (value.length < length) {\n value = '0' + value;\n }\n return value;\n}\nexport function getPassword(password) {\n if (typeof (password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\nexport function spelunk(object, _path) {\n const match = _path.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);\n if (match == null) {\n return logger.throwArgumentError(\"invalid path\", \"path\", _path);\n }\n const path = match[1];\n const type = match[3];\n const reqd = (match[4] === \"!\");\n let cur = object;\n for (const comp of path.toLowerCase().split('.')) {\n // Search for a child object with a case-insensitive matching key\n if (Array.isArray(cur)) {\n if (!comp.match(/^[0-9]+$/)) {\n break;\n }\n cur = cur[parseInt(comp)];\n }\n else if (typeof (cur) === \"object\") {\n let found = null;\n for (const key in cur) {\n if (key.toLowerCase() === comp) {\n found = cur[key];\n break;\n }\n }\n cur = found;\n }\n else {\n cur = null;\n }\n if (cur == null) {\n break;\n }\n }\n if (reqd && cur == null) {\n logger.throwArgumentError(\"missing required value\", \"path\", path);\n }\n if (type && cur != null) {\n if (type === \"int\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9]+$/)) {\n return parseInt(cur);\n }\n else if (Number.isSafeInteger(cur)) {\n return cur;\n }\n }\n if (type === \"number\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9.]*$/)) {\n return parseFloat(cur);\n }\n }\n if (type === \"data\") {\n if (typeof (cur) === \"string\") {\n return looseArrayify(cur);\n }\n }\n if (type === \"array\" && Array.isArray(cur)) {\n return cur;\n }\n if (type === typeof (cur)) {\n return cur;\n }\n logger.throwArgumentError(`wrong type found for ${type} `, \"path\", path);\n }\n return cur;\n}\n/*\nexport function follow(object: any, path: string): null | string {\n let currentChild = object;\n\n for (const comp of path.toLowerCase().split('/')) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comp) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n if (matchingChild === null) { return null; }\n\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// \"path/to/something:type!\"\nexport function followRequired(data: any, path: string): string {\n const value = follow(data, path);\n if (value != null) { return value; }\n return logger.throwArgumentError(\"invalid value\", `data:${ path }`,\n JSON.stringify(data));\n}\n*/\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes) {\n const bytes = logger.getBytes(randomBytes, \"randomBytes\");\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const value = hexlify(bytes);\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n//# sourceMappingURL=utils.js.map","import { CBC, pkcs7Strip } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { pbkdf2 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, looseArrayify, spelunk } from \"./utils.js\";\nexport function isCrowdsaleJson(json) {\n try {\n const data = JSON.parse(json);\n if (data.encseed) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\n// See: https://github.com/ethereum/pyethsaletool\nexport function decryptCrowdsaleJson(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n // Ethereum Address\n const address = getAddress(spelunk(data, \"ethaddr:string!\"));\n // Encrypted Seed\n const encseed = looseArrayify(spelunk(data, \"encseed:string!\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n // Decrypt the seed\n const aesCbc = new CBC(key, iv);\n const seed = pkcs7Strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n return { address, privateKey: id(seedHex) };\n}\n//# sourceMappingURL=json-crowdsale.js.map","export function pkcs7Pad(data) {\n const padder = 16 - (data.length % 16);\n const result = new Uint8Array(data.length + padder);\n result.set(data);\n for (let i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n}\nexport function pkcs7Strip(data) {\n if (data.length < 16) {\n throw new TypeError('PKCS#7 invalid length');\n }\n const padder = data[data.length - 1];\n if (padder > 16) {\n throw new TypeError('PKCS#7 padding byte out of range');\n }\n const length = data.length - padder;\n for (let i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new TypeError('PKCS#7 invalid padding byte');\n }\n }\n return new Uint8Array(data.subarray(0, length));\n}\n//# sourceMappingURL=padding.js.map","// Output Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _OFB_iv, _OFB_lastPrecipher, _OFB_lastPrecipherIndex;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class OFB extends ModeOfOperation {\n constructor(key, iv) {\n super(\"OFB\", key, OFB);\n _OFB_iv.set(this, void 0);\n _OFB_lastPrecipher.set(this, void 0);\n _OFB_lastPrecipherIndex.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.iv, \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 16, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _OFB_iv, \"f\")); }\n encrypt(plaintext) {\n var _a, _b;\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i++) {\n if (__classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.aes.encrypt(__classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")), \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 0, \"f\");\n }\n ciphertext[i] ^= __classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")[__classPrivateFieldSet(this, _OFB_lastPrecipherIndex, (_b = __classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n return this.encrypt(ciphertext);\n }\n}\n_OFB_iv = new WeakMap(), _OFB_lastPrecipher = new WeakMap(), _OFB_lastPrecipherIndex = new WeakMap();\n//# sourceMappingURL=mode-ofb.js.map","import { CTR } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256, pbkdf2, randomBytes, scrypt, scryptSync } from \"@ethersproject/crypto\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, spelunk, uuidV4, zpad } from \"./utils.js\";\nimport { version } from \"./_version.js\";\nconst defaultPath = \"m/44'/60'/0'/0/0\";\nexport function isKeystoreJson(json) {\n try {\n const data = JSON.parse(json);\n const version = ((data.version != null) ? parseInt(data.version) : 0);\n if (version === 3) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\nfunction decrypt(data, key, ciphertext) {\n const cipher = spelunk(data, \"crypto.cipher:string\");\n if (cipher === \"aes-128-ctr\") {\n const iv = spelunk(data, \"crypto.cipherparams.iv:data!\");\n const aesCtr = new CTR(key, iv);\n return hexlify(aesCtr.decrypt(ciphertext));\n }\n return logger.throwError(\"unsupported cipher\", \"UNSUPPORTED_OPERATION\", {\n operation: \"decrypt\"\n });\n}\nfunction getAccount(data, _key) {\n const key = logger.getBytes(_key);\n const ciphertext = spelunk(data, \"crypto.ciphertext:data!\");\n const computedMAC = hexlify(keccak256(concat([key.slice(16, 32), ciphertext]))).substring(2);\n if (computedMAC !== spelunk(data, \"crypto.mac:string!\").toLowerCase()) {\n return logger.throwArgumentError(\"incorrect password\", \"password\", \"[ REDACTED ]\");\n }\n const privateKey = decrypt(data, key.slice(0, 16), ciphertext);\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") {\n check = \"0x\" + check;\n }\n if (getAddress(check) !== address) {\n logger.throwArgumentError(\"keystore address/privateKey mismatch\", \"address\", data.address);\n }\n }\n const account = { address, privateKey };\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n const version = spelunk(data, \"x-ethers.version:string\");\n if (version === \"0.1\") {\n const mnemonicKey = key.slice(32, 64);\n const mnemonicCiphertext = spelunk(data, \"x-ethers.mnemonicCiphertext:data!\");\n const mnemonicIv = spelunk(data, \"x-ethers.mnemonicCounter:data!\");\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n account.mnemonic = {\n path: (spelunk(data, \"x-ethers.path:string\") || defaultPath),\n locale: (spelunk(data, \"x-ethers.locale:string\") || \"en\"),\n entropy: hexlify(arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext)))\n };\n }\n return account;\n}\nfunction getKdfParams(data) {\n const kdf = spelunk(data, \"crypto.kdf:string\");\n if (kdf && typeof (kdf) === \"string\") {\n const throwError = function (name, value) {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n };\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const N = spelunk(data, \"crypto.kdfparams.n:int!\");\n const r = spelunk(data, \"crypto.kdfparams.r:int!\");\n const p = spelunk(data, \"crypto.kdfparams.p:int!\");\n // Check for all required parameters\n if (!N || !r || !p) {\n return throwError(\"kdf\", kdf);\n }\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) {\n return throwError(\"N\", N);\n }\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n return throwError(\"dklen\", dkLen);\n }\n return { name: \"scrypt\", salt, N, r, p, dkLen: 64 };\n }\n else if (kdf.toLowerCase() === \"pbkdf2\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const prf = spelunk(data, \"crypto.kdfparams.prf:string!\");\n const algorithm = prf.split(\"-\").pop();\n if (algorithm !== \"sha256\" && algorithm !== \"sha512\") {\n return throwError(\"prf\", prf);\n }\n const count = spelunk(data, \"crypto.kdfparams.c:int!\");\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return { name: \"pbkdf2\", salt, count, dkLen, algorithm };\n }\n }\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\nexport function decryptKeystoreJsonSync(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = scryptSync(password, salt, N, r, p, dkLen);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport async function decryptKeystoreJson(json, _password, progress) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n if (progress) {\n progress(0);\n await stall(0);\n }\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n if (progress) {\n progress(1);\n await stall(0);\n }\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = await scrypt(password, salt, N, r, p, dkLen, progress);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nexport async function encryptKeystoreJson(account, password, options, progressCallback) {\n // Check the address matches the private key\n //if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n // throw new Error(\"address/privateKey mismatch\");\n //}\n // Check the mnemonic (if any) matches the private key\n /*\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n */\n // The options are optional, so adjust the call as needed\n if (typeof (options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n const privateKey = logger.getBytes(account.privateKey, \"privateKey\");\n const passwordBytes = getPassword(password);\n /*\n let mnemonic: null | Mnemonic = null;\n let entropy: Uint8Array = null\n let path: string = null;\n let locale: string = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n mnemonic = Mnemonic.from(\n }\n */\n // Check/generate the salt\n const salt = (options.salt != null) ? logger.getBytes(options.salt, \"options.slat\") : randomBytes(32);\n // Override initialization vector\n const iv = (options.iv != null) ? logger.getBytes(options.iv, \"options.iv\") : randomBytes(16);\n if (iv.length !== 16) {\n logger.throwArgumentError(\"invalid options.iv\", \"options.iv\", options.iv);\n }\n // Override the uuid\n const uuidRandom = (options.uuid != null) ? logger.getBytes(options.uuid, \"options.uuid\") : randomBytes(16);\n if (uuidRandom.length !== 16) {\n logger.throwArgumentError(\"invalid options.uuid\", \"options.uuid\", options.iv);\n }\n if (uuidRandom.length !== 16) {\n throw new Error(\"invalid uuid\");\n }\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) {\n N = options.scrypt.N;\n }\n if (options.scrypt.r) {\n r = options.scrypt.r;\n }\n if (options.scrypt.p) {\n p = options.scrypt.p;\n }\n }\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n const _key = await scrypt(passwordBytes, salt, N, r, p, 64, progressCallback);\n const key = arrayify(_key);\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n // Encrypt the private key\n const aesCtr = new CTR(derivedKey, iv);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]));\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n Crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (account.mnemonic) {\n const client = (options.client != null) ? options.client : `ethers/${version}`;\n const path = account.mnemonic.path || defaultPath;\n const locale = account.mnemonic.locale || \"en\";\n const mnemonicKey = key.slice(32, 64);\n const entropy = logger.getBytes(account.mnemonic.entropy, \"account.mnemonic.entropy\");\n const mnemonicIv = randomBytes(16);\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\");\n const gethFilename = (\"UTC--\" + timestamp + \"--\" + data.address);\n data[\"x-ethers\"] = {\n client, gethFilename, path, locale,\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n version: \"0.1\"\n };\n }\n return JSON.stringify(data);\n}\n//# sourceMappingURL=json-keystore.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Wallet_mnemonic;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { randomBytes } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { BaseWallet } from \"./base-wallet.js\";\nimport { HDNodeWallet } from \"./hdwallet.js\";\nimport { decryptCrowdsaleJson, isCrowdsaleJson } from \"./json-crowdsale.js\";\nimport { decryptKeystoreJson, decryptKeystoreJsonSync, isKeystoreJson } from \"./json-keystore.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nfunction tryWallet(value) {\n try {\n if (!value || !value.signingKey) {\n return null;\n }\n const key = trySigningKey(value.signingKey);\n if (key == null || computeAddress(key.publicKey) !== value.address) {\n return null;\n }\n if (value.mnemonic) {\n const wallet = HDNodeWallet.fromMnemonic(value.mnemonic);\n if (wallet.privateKey !== key.privateKey) {\n return null;\n }\n }\n return value;\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\n// Try using value as mnemonic to derive the defaultPath HDodeWallet\nfunction tryMnemonic(value) {\n try {\n if (value == null || typeof (value.phrase) !== \"string\" ||\n typeof (value.password) !== \"string\" ||\n value.wordlist == null) {\n return null;\n }\n return HDNodeWallet.fromPhrase(value.phrase, value.password, null, value.wordlist);\n }\n catch (error) {\n console.log(error);\n }\n return null;\n}\nfunction trySigningKey(value) {\n try {\n if (!value || !isHexString(value.privateKey, 32)) {\n return null;\n }\n const key = value.privateKey;\n if (SigningKey.computePublicKey(key) !== value.publicKey) {\n return null;\n }\n return new SigningKey(key);\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport class Wallet extends BaseWallet {\n constructor(key, provider) {\n let signingKey = null;\n let mnemonic = null;\n // A normal private key\n if (typeof (key) === \"string\") {\n signingKey = new SigningKey(key);\n }\n // Try Wallet\n if (signingKey == null) {\n const wallet = tryWallet(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // Try Mnemonic, with the defaultPath wallet\n if (signingKey == null) {\n const wallet = tryMnemonic(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // A signing key\n if (signingKey == null) {\n signingKey = trySigningKey(key);\n }\n if (signingKey == null) {\n logger.throwArgumentError(\"invalid key\", \"key\", \"[ REDACTED ]\");\n }\n super(signingKey, provider);\n _Wallet_mnemonic.set(this, void 0);\n __classPrivateFieldSet(this, _Wallet_mnemonic, mnemonic, \"f\");\n }\n // Store this in a getter to reduce visibility in console.log\n get mnemonic() { return __classPrivateFieldGet(this, _Wallet_mnemonic, \"f\"); }\n connect(provider) {\n return new Wallet(this, provider);\n }\n async encrypt(password, options, progressCallback) {\n throw new Error(\"TODO\");\n }\n encryptSync(password, options) {\n throw new Error(\"TODO\");\n }\n static async fromEncryptedJson(json, password, progress) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = await decryptKeystoreJson(json, password, progress);\n }\n else if (isCrowdsaleJson(json)) {\n if (progress) {\n progress(0);\n await stall(0);\n }\n account = decryptCrowdsaleJson(json, password);\n if (progress) {\n progress(1);\n await stall(0);\n }\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static fromEncryptedJsonSync(json, password) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = decryptKeystoreJsonSync(json, password);\n }\n else if (isCrowdsaleJson(json)) {\n account = decryptCrowdsaleJson(json, password);\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static createRandom(provider, password, wordlist) {\n return new Wallet(Mnemonic.fromEntropy(randomBytes(16), password, wordlist), provider);\n }\n static fromMnemonic(mnemonic, provider) {\n return new Wallet(mnemonic, provider);\n }\n static fromPhrase(phrase, provider, password = \"\", wordlist) {\n return new Wallet(Mnemonic.fromPhrase(phrase, password, wordlist), provider);\n }\n}\n_Wallet_mnemonic = new WeakMap();\n//# sourceMappingURL=wallet.js.map","export const version = \"ethers@6.0.0-beta.5\";\n//# sourceMappingURL=_version.js.map"],"names":["async","resolveProperties","value","keys","Object","Promise","all","map","k","resolve","reduce","accum","v","index","checkType","type","types","split","t","trim","i","length","Error","defineProperties","target","values","defaults","key","fallback","undefined","defineProperty","enumerable","writable","_EventPayload_listener","__classPrivateFieldSet","this","receiver","state","kind","f","TypeError","has","call","set","__classPrivateFieldGet","get","EventPayload","constructor","emitter","listener","filter","off","getStore","store","setStore","isFrozen","isError","error","code","isCallException","WeakMap","_Logger_instances","_Logger_getBytes","_Logger_log","LogLevel","LogLevels","debug","default","info","warning","_logLevel","_globalLogger","_normalizeForms","form","normalize","check","String","fromCharCode","push","defineReadOnly","object","name","maxValue","ErrorConstructors","INVALID_ARGUMENT","NUMERIC_FAULT","RangeError","BUFFER_OVERRUN","Logger","version","add","makeError","message","details","JSON","stringify","join","throwError","throwArgumentError","argument","assert","condition","assertArgument","assertIntegerArgument","lower","upper","Number","isInteger","assertSafeUint53","operation","fault","assertNormalize","indexOf","assertPrivate","givenGuard","guard","className","method","assertArgumentCount","count","expectedCount","getBytes","getBytesCopy","getNumber","BigInt","e","getBigInt","args","DEBUG","INFO","warn","WARNING","static","logLevel","level","toLowerCase","globalLogger","WeakSet","copy","Uint8Array","match","result","offset","parseInt","substring","console","log","apply","logger","_TokenString_instances","_TokenString_offset","_TokenString_tokens","_TokenString_subTokenString","_ParamType_instances","_ParamType_walkAsync","FormatType","setify","items","Set","forEach","freeze","_kwVisib","KwVisib","_kwTypes","KwTypes","_kwModifiers","KwModifiers","Keywords","SimpleTokens","regexWhitespace","RegExp","regexNumber","regexIdentifier","regexType","TokenString","tokens","slice","clone","reset","popKeyword","allowed","top","peek","text","pop","popType","popParen","popParams","link","linkNext","peekKeyword","peekType","_a","toString","token","lex","brackets","commas","cur","depth","linkBack","suffix","allowSingle","included","consumeName","keyword","consumeKeywords","keywords","consumeParams","allowIndexed","ParamType","fromTokens","consumeGas","consumeEoi","from","to","assign","regexArrayType","verifyBasicType","size","_guard","internal","Symbol","for","baseType","indexed","components","arrayLength","arrayChildren","format","sighash","json","isTuple","c","parse","isArray","comp","full","isIndexable","walk","process","Array","promises","obj","isParamType","arrayMatch","comps","bracket","FragmentType","setValue","childType","param","then","Fragment","inputs","fromString","fromObject","ConstructorFragment","ErrorFragment","EventFragment","FunctionFragment","StructFragment","NamedFragment","super","joinParams","params","p","input","anonymous","event","payable","gas","stateMutability","outputs","function","constant","o","mutability","modifiers","consumeMutability","struct","BN_0","toBigInt","_value","toNumber","toHex","_width","width","toArray","hex","BN_1","fromTwos","toTwos","mask","_bits","bits","_FixedNumber_instances","_FixedNumber_value","_FixedNumber_checkFormat","_constructorGuard","NegativeOne","throwFault","zeros","getMultiplier","decimals","formatFixed","_decimals","multiplier","multiplierStr","negative","fraction","parseFixed","whole","wei","FixedFormat","constructorGuard","signed","_multiplier","defaultValue","FixedNumber","_isFixedNumber","addUnsafe","other","a","b","fromValue","subUnsafe","mulUnsafe","divUnsafe","floor","hasFraction","isNegative","ONE","toFormat","ceiling","round","factor","bump","BUMP","isZero","toHexString","toUnsafeFloat","parseFloat","fixedFormat","numeric","decimal","fromBytes","Alphabet","Lookup","getAlpha","letter","BN_58","encodeBase58","decodeBase58","names","formatUnits","unit","parseUnits","formatEther","parseEther","ether","isHexString","isBytesLike","BN_8","BN_255","arrayify","data","unshift","_noCopyArrayify","decodeBase64","textData","Buffer","encodeBase64","hexlify","bytes","quantity","concat","datas","d","dataLength","dataSlice","start","end","buffer","stripZerosLeft","zeroPad","left","fill","zeroPadValue","zeroPadBytes","_Result_instances","_Result_indices","_Result_throwError","_Writer_instances","_Writer_data","_Writer_dataLength","_Writer_writeData","_Reader_instances","_Reader_data","_Reader_offset","_Reader_peekBytes","Padding","passProperties","Result","Map","Proxy","prop","item","Reflect","getValue","wrapped","Coder","localName","dynamic","_throwError","Writer","appendWriter","writer","writeBytes","paddingOffset","writeValue","writeUpdatableValue","Reader","allowLoose","consumed","subReader","readBytes","loose","readValue","readIndex","alignedLength","Math","ceil","u32","arr","Uint32Array","byteOffset","byteLength","createView","DataView","rotr","word","shift","padStart","nextTick","nodeRequire","module","require","bind","setImmediate","setTimeout","asyncLoop","iters","tick","cb","ts","Date","now","diff","toBytes","str","TextEncoder","encode","utf8ToBytes","assertNumber","n","isSafeInteger","assertHash","hash","create","outputLen","blockLen","Hash","_cloneInto","checkOpts","def","_opts","prototype","wrapConstructor","hashConstructor","hashC","update","digest","tmp","HMAC","_key","finished","destroyed","iHash","pad","oHash","buf","digestInto","out","destroy","getPrototypeOf","hmac","pbkdf2","password","salt","opts","dkLen","DK","PRF","PRFSalt","_password","_salt","asyncTick","pbkdf2Init","prfW","view","u","ti","pos","Ti","subarray","setInt32","ui","pbkdf2Output","SHA2","padOffset","isLE","len","take","min","dataView","roundClean","setBigUint64","_32n","_u32_max","wh","wl","h","l","setUint32","oview","res","Chi","Maj","SHA256_K","IV","SHA256_W","SHA256","A","B","C","D","E","F","G","H","getUint32","W15","W2","s0","s1","T1","T2","sha256","U32_MASK64","fromBig","le","lst","Ah","Al","shrSH","s","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","SHA512_Kh","SHA512_Kl","u64.split","SHA512_W_H","SHA512_W_L","SHA512","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","u64.rotrSH","u64.shrSH","s0l","u64.rotrSL","u64.shrSL","W2h","W2l","s1h","u64.rotrBH","s1l","u64.rotrBL","SUMl","u64.add4L","SUMh","u64.add4H","sigma1h","sigma1l","CHIh","T1ll","u64.add5L","T1h","u64.add5H","T1l","sigma0h","sigma0l","MAJh","MAJl","u64.add","All","u64.add3L","u64.add3H","SHA512_256","SHA384","sha512","anyGlobal","self","window","global","getGlobal","crypto","msCrypto","createHash","algo","locked","_computeHmac","algorithm","_algo","createHmac","__computeHmac","computeHmac","_data","_","lock","register","func","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","R","x","y","j","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","u64.rotlBH","u64.rotlSH","rotlL","u64.rotlBL","u64.rotlSL","Keccak","enableXOF","rounds","posOut","state32","keccak","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","keccakP","finish","writeInto","xofInto","xof","gen","keccak_256","genShake","hashCons","msg","wrapConstructorWithOpts","_keccak256","__keccak256","keccak256","Rho","Id","Pi","idxL","idxR","shifts","shiftsL","idx","shiftsR","Kl","Kr","rotl","group","z","BUF","RIPEMD160","h0","h1","h2","h3","h4","al","ar","bl","br","cl","cr","dl","dr","el","er","rGroup","hbl","hbr","rl","rr","sl","sr","tl","tr","ripemd160","_ripemd160","noble_ripemd160","__ripemd160","_pbkdf2","iterations","keylen","pbkdf2Sync","__pbkdf2","_randomBytes","getRandomValues","crypto_random","__randomBytes","randomBytes","XorAndSalsa","prev","pi","ii","oi","y00","y01","y02","y03","y04","y05","y06","y07","y08","y09","y10","y11","y12","y13","y14","y15","x00","x01","x02","x03","x04","x05","x06","x07","x08","x09","x10","x11","x12","x13","x14","x15","BlockMix","r","head","tail","scryptInit","maxmem","N","onProgress","blockSize","blockSize32","memUsed","B32","V","blockMixCb","totalBlockMix","callbackPer","max","blockMixCnt","scryptOutput","lockedSync","lockedAsync","_scryptAsync","passwd","_nobleAsync","_scryptSync","_nobleSync","__scryptAsync","__scryptSync","scrypt","_passwd","progress","scryptSync","_sha256","_sha512","__sha256","__sha512","locked256","locked512","BN_36","getChecksumAddress","address","chars","expanded","charCodeAt","hashed","toUpperCase","ibanLookup","ibanChecksum","block","checksum","Base36","getAddress","fromBase36","getIcapAddress","base36","arrayifyInteger","_encode","payload","child","encodeRlp","hexlifyByte","unarrayifyInteger","_decodeChildren","childOffset","decoded","_decode","checkOffset","lengthLength","decodeRlp","getCreateAddress","tx","nonceHex","nonce","getCreate2Address","_from","_initCodeHash","initCodeHash","isAddressable","isAddress","resolveAddress","resolver","resolveName","_Typed_options","_gaurd","Typed","_typedSymbol","gaurd","options","minValue","isBigInt","isData","isString","tupleName","isTyped","AddressCoder","dereference","decode","reader","AnonymousCoder","coder","pack","coders","arrayValues","unique","staticWriter","dynamicWriter","updateFuncs","dynamicOffset","updateFunc","baseOffset","unpack","baseReader","offsetReader","fromItems","ArrayCoder","defaultChild","BooleanCoder","DynamicBytesCoder","BytesCoder","FixedBytesCoder","Empty","NullCoder","BN_MAX_UINT256","NumberCoder","maxUintValue","WordSize","bounds","UnicodeNormalizationForm","Utf8ErrorReason","ignoreFunc","reason","output","badCodepoint","BAD_PREFIX","UNEXPECTED_CONTINUE","OVERRUN","Utf8ErrorFuncs","ignore","replace","OVERLONG","getUtf8CodePoints","_bytes","onError","extraLength","overlongMask","nextChar","MISSING_CONTINUE","OUT_OF_RANGE","UTF16_SURROGATE","toUtf8Bytes","current","c2","pair","escapeChar","_toEscapedUtf8String","codePoint","_toUtf8String","codePoints","toUtf8String","toUtf8CodePoints","formatBytes32String","parseBytes32String","createTable","_func","lo","createRangeTable","hi","matchMap","ranges","range","Table_A_1_ranges","Table_B_1_flags","Table_B_2_ranges","Table_B_2_lut_abs","Table_B_2_lut_rel","Table_B_2_complex","Table_C_ranges","nameprep","codes","codesTableB2","codepoint","_nameprepTableB2","NFKC","StringCoder","TupleCoder","uniqueNames","_AbiCoder_instances","_AbiCoder_getCoder","paramTypeBytes","paramTypeNumber","defaultAbiCoder","getDefaultValue","id","Zeros","Partition","isValidName","namehash","partition","dnsEncode","messagePrefix","hashMessage","regexBytes","regexArray","_pack","solidityPacked","tight","solidityPackedKeccak256","solidityPackedSha256","_TypedDataEncoder_instances","_TypedDataEncoder_types","_TypedDataEncoder_fullTypes","_TypedDataEncoder_encoderCache","_TypedDataEncoder_getEncoder","padding","BN__1","hexTrue","hexFalse","domainFieldTypes","chainId","verifyingContract","domainFieldNames","checkString","domainChecks","getBaseEncoder","boundsUpper","boundsLower","hexPadRight","encodeType","fields","TypedDataEncoder","links","parents","subtypes","field","primaryTypes","primaryType","checkCircular","found","subtype","delete","st","sort","getEncoder","encoder","encodeData","hashStruct","_visit","callback","visit","domain","domainFields","EIP712Domain","hashDomain","ensCache","domainValues","domainTypes","typesWithDomain","subEncoder","encodedType","_Interface_instances","_Interface_errors","_Interface_events","_Interface_functions","_Interface_abiCoder","_Interface_getFunction","_Interface_getEvent","LogDescription","fragment","topic","signature","TransactionDescription","selector","ErrorDescription","Indexed","_isIndexed","PanicReasons","BuiltinErrors","Interface","fragments","abi","getAbiCoder","bucket","deploy","getFunctionName","getFunction","getEventName","getEvent","getError","getSelector","matching","getEventTopic","_decodeParams","_encodeParams","encodeDeploy","decodeErrorResult","encodeErrorResult","decodeFunctionData","encodeFunctionData","decodeFunctionResult","errorArgs","errorName","errorSignature","builtin","transaction","encodeFunctionResult","functionFragment","encodeFilterTopics","eventFragment","topics","encodeTopic","encodeEventLog","dataTypes","dataValues","decodeEventLog","eventTopic","nonIndexed","resultIndexed","resultNonIndexed","nonIndexedIndex","indexedIndex","parseTransaction","parseLog","parseError","hexData","forceUnique","lastValue","valueLength","allowOptions","splice","lastArg","matchStr","m","_FetchResponse_props","_FetchResponse_error","FetchResponse","statusCode","statusMessage","headers","body","request","bodyText","response","bodyJson","iterator","next","done","makeServerError","throwThrottleError","stall","throttle","getHeader","hasBody","ok","assertOk","getUrl","req","timeout","protocol","url","credentials","allowInsecureAuthentication","init","Headers","resp","fetch","arrayBuffer","status","statusText","_FetchRequest_props","FetchRequest","allowInsecure","gzip","bodyType","allowGzip","setHeader","clearHeaders","setCredentials","username","redirect","location","delay","duration","getTime","lockGateways","fetchData","connection","conn","attempts","throttleLimit","slotInterval","throttleSlotInterval","retryFunc","throttleRetry","preflightRequest","processResponse","t0","retryAfter","trunc","random","pow","setGateway","gateway","setIpfsGateway","setArGateway","_EnsResolver_supports2544","_EnsResolver_getResolver","HashZero","parseBytes","parseString","numPad","padded","bytesPad","encodeBytes","byteCount","getIpfsLink","MulticoinProviderPlugin","validate","proivder","supportsCoinType","coinType","matcherIpfs","matchers","EnsResolver","provider","catch","parameters","addrData","enableCcipRead","supportsWildcard","_fetch","getNetwork","formatter","callAddress","coinPlugin","plugin","plugins","encodeAddress","keyBytes","calldata","hexBytes","ipfs","scheme","swarm","_getAvatar","linkage","avatar","getText","owner","addr","tokenId","tokenOwner","balance","metadataUrl","metadata","imageUrl","image","currentName","network","ensPlugin","getPlugin","_Signature_props","BN_2","BN_27","BN_28","BN_35","Zero","Signature","networkV","legacyChainId","getChainId","yParity","yParityAndS","compactSerialized","serialized","toJSON","_type","bv","sig","getNormalizedV","_v","_3n","_8n","POW_2_256","CURVE","P","Gx","Gy","beta","weistrass","x2","mod","x3","USE_ENDOMORPHISM","JacobianPoint","Point","points","toInv","nums","scratch","inverted","invert","acc","num","reduceRight","invertBatch","toAffine","toAffineBatch","fromAffine","equals","X1","Y1","Z1","X2","Y2","Z2","Z1Z1","Z2Z2","U1","U2","S1","S2","negate","double","X3","Y3","Z3","ZERO","HH","HHH","subtract","multiplyUnsafe","scalar","normalizeScalar","P0","k1neg","k1","k2neg","k2","splitScalarEndo","k1p","k2p","precomputeWindow","W","windows","base","wNAF","affinePoint","BASE","_WINDOW_SIZE","precomputes","pointPrecomputes","normalizeZ","windowSize","maxNumber","shiftBy","wbits","pr","cached","abs","multiply","point","fake","f1p","f2p","invZ","iz1","iz2","iz3","ax","ay","_setWindowSize","isShort","bytesToNumber","isValidFieldElement","_6n","_11n","_22n","_23n","_44n","_88n","b2","b3","b6","pow2","b9","b11","b22","b44","b88","b176","b220","b223","t1","t2","sqrtMod","isYOdd","assertValidity","ensureBytes","header","fromCompressedHex","fromUncompressedHex","privateKey","normalizePrivateKey","msgHash","recovery","delta","truncateHash","fromDER","fromCompact","normalizeSignature","prefix","fromHex","numTo32bStr","rinv","u1","u2","Q","multiplyAndAddUnsafe","toRawBytes","isCompressed","hexToBytes","toHexX","toRawX","aP","bQ","sum","sliceDER","parseDERInt","bytesToHex","isUint8a","hexToNumber","sBytes","rBytesLeft","parseDERSignature","isWithinCurveOrder","hasHighS","HALF","normalizeS","toDERRawBytes","toDERHex","sHex","numberToHexUnpadded","rHex","rLen","sLen","toCompactRawBytes","toCompactHex","concatBytes","arrays","every","hexes","uint8a","array","hexByte","byte","isNaN","power","number","modulo","divNearest","POW_2_128","a1","b1","a2","c1","HmacDrbg","counter","utils","hmacSha256","hmacSync","hmacSha256Sync","incr","seed","reseedSync","generateSync","kmdToSig","kBytes","q","isPub","getSharedSecret","privateA","publicB","publicKey","bits2int","bits2octets","z1","z2","int2octets","signSync","privKey","extraEntropy","seedArgs","initSigArgs","drbg","recSig","canonical","der","recovered","finalizeSig","node","web","isValidPrivateKey","hashToPrivateKey","numTo32b","bytesLength","randomPrivateKey","subtle","messages","ckey","importKey","sign","sha256Sync","precompute","_SigningKey_privateKey","secp256k1.utils","SigningKey","computePublicKey","compressedPublicKey","sigDer","recid","secp256k1.signSync","secp256k1.Signature","computeShardSecret","pubKey","secp256k1.getSharedSecret","compressed","fromPrivateKey","secp256k1.getPublicKey","pub","secp256k1.Point","fromSignature","secp256k1.recoverPublicKey","p0","p1","pub0","pub1","accessSetify","storageKeys","storageKey","accessListify","localeCompare","computeAddress","recoverAddress","recoverPublicKey","_Transaction_props","BN_MAX_UINT","handleAddress","handleData","handleAccessList","handleNumber","handleUint","formatNumber","formatAccessList","_serializeLegacy","gasPrice","gasLimit","legacy","getChainIdV","_parseEipSignature","serialize","_serializeEip1559","maxPriorityFeePerGas","maxFeePerGas","accessList","_serializeEip2930","Transaction","typeName","unsignedHash","unsignedSerialized","fromPublicKey","isSigned","inferTypes","hasGasPrice","hasFee","hasAccessList","isLegacy","isBerlin","isLondon","_parseLegacy","_parseEip2930","_parseEip1559","_Block_transactions","_TransactionReceipt_logs","toJson","FeeData","Block","dummyProvider","transactions","timestamp","parentHash","difficulty","gasUsed","miner","extraData","baseFeePerGas","date","getTransaction","isMined","orphanedEvent","orphan","Log","transactionHash","blockHash","blockNumber","removed","transactionIndex","getBlock","getTransactionReceipt","removedEvent","TransactionReceipt","logs","contractAddress","logsBloom","cumulativeGasUsed","effectiveGasPrice","byzantium","root","fee","getBlockNumber","createRemovedTransactionFilter","reorderedEvent","createReorderedTransactionFilter","TransactionResponse","confirms","waitForTransaction","fail","blockTag","position","signedTx","blockHashOrBlockTag","_Formatter_format","_Formatter_baseBlock","Formatter","bigNumber","uint256","arrayOf","fromBlock","allowNull","toBlock","transactionRequest","transactionResponse","blockWithTransactions","boolean","receipt","filterLog","allowFalsish","ifFalse","ifNull","_hexstring","dataOrLength","altNames","srcKey","altKey","nv","storageSlot","NetworkPlugin","GasCostPlugin","effectiveBlock","costs","props","nullish","EnsPlugin","targetNetwork","MaxPriorityFeePlugin","priorityFee","_Network_props","Networks","defaultFormatter","Network","_chainId","attachPlugin","getPlugins","basename","computeIntrinsicGas","txBase","txCreate","txDataZero","txDataNonzero","txAccessListAddress","txAccessListStorageKey","networkFunc","custom","ensAddress","ensNetwork","nameOrChainId","existing","_PollingBlockSubscriber_instances","_PollingBlockSubscriber_provider","_PollingBlockSubscriber_poller","_PollingBlockSubscriber_interval","_PollingBlockSubscriber_blockNumber","_PollingBlockSubscriber_poll","_OnBlockSubscriber_provider","_OnBlockSubscriber_poll","_PollingOrphanSubscriber_filter","_PollingTransactionSubscriber_hash","_PollingEventSubscriber_instances","_PollingEventSubscriber_provider","_PollingEventSubscriber_filter","_PollingEventSubscriber_poller","_PollingEventSubscriber_blockNumber","_PollingEventSubscriber_poll","PollingBlockSubscriber","pollingInterval","_setTimeout","stop","_clearTimeout","pause","dropWhilePaused","resume","emit","OnBlockSubscriber","_poll","on","PollingOrphanSubscriber","PollingTransactionSubscriber","PollingEventSubscriber","getLogs","_AbstractProvider_instances","_AbstractProvider_subs","_AbstractProvider_plugins","_AbstractProvider_pausedState","_AbstractProvider_networkPromise","_AbstractProvider_anyNetwork","_AbstractProvider_performCache","_AbstractProvider_nextTimer","_AbstractProvider_timers","_AbstractProvider_disableCcipRead","_AbstractProvider_perform","_AbstractProvider_call","_AbstractProvider_getBlock","_AbstractProvider_hasSub","_AbstractProvider_getSub","getTag","UnmanagedSubscriber","concisify","getSubscription","_event","tag","addresses","addAddress","AbstractProvider","_network","disableCcipRead","urls","sender","errorMessages","href","errorMessage","_wrapTransaction","_detectNetwork","detectNetwork","networkPromise","expected","actual","priorityFeePlugin","getPriorityFee","_request","_tx","_getTransaction","_getBlockTag","_address","_blockTag","_position","lookup","addBlockTag","_filter","_getFilter","_getProvider","fromName","getResolver","getAvatar","reject","timer","clearTimeout","once","timerId","_b","paused","time","_forEachSubscriber","sub","subscriber","_getSubscriber","_recoverSubscriber","oldSub","newSub","started","listeners","total","removeAllListeners","_parseString","_parseBytes","perform","_perform","attempt","txSender","ccipArgs","urlsOffset","urlsLength","urlsData","parseOffchainLookup","ccipResult","ccipReadFetch","includeTransactions","emitArgs","subscription","addressableMap","nameMap","empty","_AbstractSigner_instances","_AbstractSigner_checkProvider","_AbstractSigner_fromify","_VoidSigner_instances","_VoidSigner_throwUnsupported","_WrappedSigner_signer","AbstractSigner","getBalanceOf","getTransactionCountOf","estimateGas","getTransactionCount","txObj","populateTransaction","broadcastTransaction","signTransaction","actions","VoidSigner","connect","WrappedSigner","signer","sendTransaction","signMessage","signTypedData","shown","showThrottleMessage","service","_FilterIdSubscriber_instances","_FilterIdSubscriber_provider","_FilterIdSubscriber_filterIdPromise","_FilterIdSubscriber_poller","_FilterIdSubscriber_network","_FilterIdSubscriber_poll","_FilterIdSubscriber_teardown","_FilterIdEventSubscriber_event","FilterIdSubscriber","_subscribe","_emitResults","_recover","filterId","send","filterIdPromise","FilterIdEventSubscriber","results","FilterIdPendingSubscriber","_JsonRpcApiProvider_nextId","_JsonRpcApiProvider_options","_JsonRpcProvider_connect","_JsonRpcProvider_pollingInterval","Primitive","deepCopy","getLowerCase","defaultOptions","polling","batchMaxSize","batchStallTime","JsonRpcSigner","getFeeData","_to","hexTx","getRpcTransaction","sendUncheckedTransaction","timeouts","checkTx","_message","populated","resolveNames","getPayload","JsonRpcApiProvider","_getOptions","_setOptions","prepareRequest","jsonrpc","accounts","account","dstKey","getRpcRequest","signedTransaction","getRpcError","spelunkData","_spelunkMessage","spelunkMessage","feeData","JsonRpcProvider","isPollable","StaticJsonRpcProvider","defaultApiKey","AnkrProvider","apiKey","getConnection","getHost","isCommunityResource","AlchemyProvider","CloudflareProvider","EtherscanPluginId","EtherscanPlugin","baseUrl","communityApiKey","EtherscanProvider","getBaseUrl","query","getPostUrl","getPostData","apikey","post","_getTransactionPostData","maxFeePerGs","_checkError","action","txhash","postData","ethusd","defaultProjectId","InfuraProvider","projectId","projectSecret","defaultAppIds","homestead","ropsten","rinkeby","goerli","normalizeApiKey","_appId","applicationSecretKey","loadBalancer","community","applicationId","PocketProvider","_secretKey","_loadBalancer","_FallbackProvider_instances","_FallbackProvider_configs","_FallbackProvider_height","_FallbackProvider_initialSyncPromise","_FallbackProvider_getNextConfig","_FallbackProvider_addRunner","_FallbackProvider_initialSync","_FallbackProvider_checkQuorum","_FallbackProvider_waitForQuorum","defaultConfig","stallTimeout","priority","weight","defaultState","requests","lateResponses","errorResponses","outOfSync","unsupportedEvents","rollingDuration","score","_updateNumber","_totalTime","checkQuorum","quorum","tally","normal","bestResult","bestWeight","getMedian","mid","FallbackProvider","providers","eventQuorum","eventWorkers","providerConfigs","running","runner","configs","allConfigs","shuffle","config","didBump","staller","dt","initialSync","waitForSync","height","mode","getFuzzyMode","interesting","newRunners","race","_WebSocket","WebSocket","_SocketSubscriber_provider","_SocketSubscriber_filter","_SocketSubscriber_filterId","_SocketSubscriber_paused","_SocketSubscriber_emitPromise","_SocketEventSubscriber_logFilter","_SocketEventSubscriber_formatter","_SocketProvider_callbacks","_SocketProvider_ready","_SocketProvider_subs","_SocketProvider_pending","SocketSubscriber","_register","_handleMessage","emitPromise","_emit","SocketBlockSubscriber","SocketPendingSubscriber","SocketEventSubscriber","logFilter","SocketProvider","pending","promise","_write","_WebSocketProvider_websocket","WebSocketProvider","websocket","onopen","_start","onmessage","_processMessage","getDefaultProvider","alchemy","ankr","cloudflare","etherscan","infura","pocket","secretKey","appId","registerEth","injectCommonNetworks","_Network","IpcSocketProvider","_ContractTransactionReceipt_interface","_ContractTransactionResponse_interface","EventLog","iface","interface","eventName","eventSignature","ContractTransactionReceipt","ContractTransactionResponse","wait","ContractEventPayload","contract","_log","_PreparedTopicFilter_filter","canResolve","PreparedTopicFilter","getRunner","resolvedArgs","walkAsync","getTopicFilter","feature","getProvider","copyOverrides","arg","overrides","bigIntKeys","numberKeys","enableCcipReadEnabled","customData","copyRequest","WrappedMethod","Function","_WrappedMethodBase","_contract","thisArg","getFragment","staticCall","_runner","resolveArgs","staticCallResult","WrappedEvent","_WrappedEventBase","internalValues","getInternal","getSubTag","hasSub","subs","getSub","lastEmit","resultPromise","passArgs","BaseContract","_deployTx","addrPromise","deployTx","filters","_prop","getCode","deploymentTransaction","getDeployedCode","checkCode","Contract","_ContractBase","subsChrs","Word","unfold","words","sep","initial","decodeOwl","clumps","leftover","semi","Wordlist","locale","mnemonic","_WordlistOwl_instances","_WordlistOwl_data","_WordlistOwl_checksum","_WordlistOwl_words","_WordlistOwl_loadWords","WordlistOwl","_decodeWords","getWord","getWordIndex","langEn","wordlists","en","_WordlistOwlA_accent","WordlistOwlA","accent","_accent","accents","posOffset","positions","flood","decodeBits","charCode","regex","decodeOwlA","getUpperMask","mnemonicToEntropy","wordlist","entropy","bit","entropyBits","checksumMask","entropyToMnemonic","indices","remainingBits","checksumBits","Mnemonic","phrase","computeSeed","NFKD","_entropy","_BaseWallet_signingKey","BaseWallet","signingKey","btx","_HDNodeWallet_fromSeed","_HDNodeWalletManager_root","defaultPath","MasterSecret","zpad","encodeBase58Check","ser_I","chainCode","I","IL","IR","derivePath","path","component","deriveChild","HDNodeWallet","parentFingerprint","fingerprint","extendedKey","hasPath","neuter","HDNodeVoidWallet","_index","ki","fromPhrase","fromEntropy","_seed","Ki","_addPoints","HDNodeWalletManager","getSigner","getAccountPath","_AES_key","_AES_Kd","_AES_Ke","numberOfRounds","rcon","S","Si","T3","T4","T5","T6","T7","T8","U3","U4","convertToInt32","AES","roundKeyCount","KC","tk","tt","rconpointer","encrypt","plaintext","decrypt","ciphertext","ModeOfOperation","cls","aes","_CBC_iv","_CBC_lastBlock","CBC","iv","_CTR_remaining","_CTR_remainingIndex","_CTR_counter","CTR","initialValue","setCounterValue","setCounterBytes","MAX_SAFE_INTEGER","increment","crypttext","looseArrayify","hexString","getPassword","spelunk","_path","reqd","isCrowdsaleJson","encseed","decryptCrowdsaleJson","encryptedSeed","padder","pkcs7Strip","seedHex","isKeystoreJson","getAccount","mnemonicKey","mnemonicCiphertext","mnemonicIv","mnemonicAesCtr","getKdfParams","kdf","prf","_Wallet_mnemonic","trySigningKey","Wallet","wallet","fromMnemonic","tryWallet","tryMnemonic","progressCallback","encryptSync","decryptKeystoreJson","decryptKeystoreJsonSync"],"mappings":"AA0GOA,eAAeC,EAAkBC,GACpC,MAAMC,EAAOC,OAAOD,KAAKD,GAEzB,aADsBG,QAAQC,IAAIH,EAAKI,KAAKC,GAAMH,QAAQI,QAAQP,EAAMM,QACzDE,QAAO,CAACC,EAAOC,EAAGC,KAC7BF,EAAMR,EAAKU,IAAUD,EACdD,IACR,IAgEP,SAASG,EAAUZ,EAAOa,GACtB,MAAMC,EAAQD,EAAKE,MAAM,KAAKV,KAAIW,GAAKA,EAAEC,SACzC,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAAMK,OAAQD,IAC9B,OAAQL,GACJ,IAAK,MACD,OACJ,IAAK,UACL,IAAK,SACL,IAAK,SACD,UAAY,IAAWA,EACnB,OAIhB,MAAM,IAAIO,MAAM,0BAEb,SAASC,EAAiBC,EAAQC,EAAQT,EAAOU,GACpD,IAAK,IAAIC,KAAOF,EAAQ,CACpB,IAAIvB,EAAQuB,EAAOE,GACnB,MAAMC,EAAYF,EAAWA,EAASC,QAAOE,EAC7C,QAAiBA,IAAbD,EACA1B,EAAQ0B,MAEP,CACD,MAAMb,EAAQC,EAAQA,EAAMW,GAAO,KAC/BZ,GACAD,EAAUZ,EAAOa,GAGzBX,OAAO0B,eAAeN,EAAQG,EAAK,CAAEI,YAAY,EAAM7B,MAAAA,EAAO8B,UAAU,KC7MhF,IAWIC,EAXAC,EAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,EAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAIjF,MAAMU,EACTC,YAAYC,EAASC,EAAUC,GAC3BjB,EAAuBU,IAAIR,UAAM,GACjCD,EAAuBC,KAAMF,EAAwBgB,EAAU,KAC/D1B,EAAiBY,KAAM,CAAEa,QAAAA,EAASE,OAAAA,IAEtClD,uBACqE,MAA7D4C,EAAuBT,KAAMF,EAAwB,YAGnDE,KAAKa,QAAQG,IAAIhB,KAAKe,OAAQN,EAAuBT,KAAMF,EAAwB,OCvB1F,SAASmB,EAASC,EAAO1B,GAC5B,OAAO0B,EAAM1B,GAEV,SAAS2B,EAASD,EAAO1B,EAAKzB,GACjC,GAAIE,OAAOmD,SAASF,GAChB,MAAM,IAAI/B,MAAM,2CAA6CK,GAEjE0B,EAAM1B,GAAOzB,ECIV,SAASsD,EAAQC,EAAOC,GAC3B,OAAQD,GAASA,EAAMC,OAASA,EAE7B,SAASC,EAAgBF,GAC5B,OAAOD,EAAQC,EAAO,kBFW1BxB,EAAyB,IAAI2B,QG1B7B,IAKIC,EAAmBC,EAAkBC,EAE9BC,EAPPpB,EAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,KAKxF,SAAW4B,GACPA,EAAgB,MAAI,QACpBA,EAAe,KAAI,OACnBA,EAAkB,QAAI,UACtBA,EAAgB,MAAI,QACpBA,EAAc,IAAI,MALtB,CAMGA,IAAaA,EAAW,KAE3B,MAAMC,EAAY,CAAEC,MAAO,EAAGC,QAAW,EAAGC,KAAM,EAAGC,QAAS,EAAGZ,MAAO,EAAGN,IAAK,GAChF,IAAImB,EAAYL,EAAmB,QAC/BM,EAAgB,KACpB,MAAMC,EAAkB,CAAC,MAAO,MAAO,OAAQ,QAAQ9D,QAAO,CAACC,EAAO8D,KAClE,IAGI,GAA+B,SAA3B,OAAOC,UAAUD,GACjB,MAAM,IAAInD,MAAM,OAIpB,GAAa,QAATmD,EAAgB,CAChB,MAAME,EAAQC,OAAOC,aAAa,KAAMH,UAAU,OAGlD,GAAIC,IAFaC,OAAOC,aAAa,IAAM,KAGvC,MAAM,IAAIvD,MAAM,UAIxBX,EAAMmE,KAAKL,GAEf,MAAOhB,IACP,OAAO9C,IACR,IACH,SAASoE,EAAeC,EAAQC,EAAM/E,GAClCE,OAAO0B,eAAekD,EAAQC,EAAM,CAChClD,YAAY,EAAMC,UAAU,EAAO9B,MAAAA,IAI3C,MAAMgF,EAAW,iBAEXC,EAAoB,GAC1BA,EAAkBC,iBAAmB5C,UACrC2C,EAAkBE,cAAgBC,WAClCH,EAAkBI,eAAiBD,WAC5B,MAAME,EACTzC,YAAY0C,GACR5B,EAAkB6B,IAAIvD,MACtB4C,EAAe5C,KAAM,UAAWsD,GAAW,KAE/CE,UAAUC,EAASlC,EAAMU,GACrB,CACI,MAAMyB,EAAU,GAChB,GAAIzB,EACA,IAAK,MAAMzC,KAAOyC,EAAM,CACpB,MAAMlE,EAASkE,EAAKzC,GACpB,IACIkE,EAAQf,KAAKnD,EAAM,IAAMmE,KAAKC,UAAU7F,IAE5C,MAAOuD,GACHoC,EAAQf,KAAKnD,EAAM,kCAI/BkE,EAAQf,KAAK,QAAQpB,KACrBmC,EAAQf,KAAK,WAAW3C,KAAKsD,WACzBI,EAAQxE,SACRuE,GAAW,KAAOC,EAAQG,KAAK,MAAQ,KAG/C,MACMvC,EAAS,IADA0B,EAAkBzB,IAASpC,OAChBsE,GAE1B,GADAb,EAAetB,EAAO,OAAQC,GAC1BU,EACA,IAAK,MAAMzC,KAAOyC,EACdW,EAAetB,EAAO9B,EAAMyC,EAAKzC,IAGzC,OAAO8B,EAEXwC,WAAWL,EAASlC,EAAMU,GACtB,MAAMjC,KAAKwD,UAAUC,EAASlC,EAAMU,GAExC8B,mBAAmBN,EAASX,EAAM/E,GAC9B,OAAOiC,KAAK8D,WAAWL,EAAS,mBAAoB,CAChDO,SAAUlB,EACV/E,MAAOA,IAGfkG,OAAOC,EAAWT,EAASlC,EAAMU,GACvBiC,GAGNlE,KAAK8D,WAAWL,EAASlC,GAAQ,gBAAiBU,GAEtDkC,eAAeD,EAAWT,EAASX,EAAM/E,GACrC,OAAOiC,KAAKiE,OAAOC,EAAWT,EAAS,mBAAoB,CACvDO,SAAUlB,EACV/E,MAAAA,IAGRqG,sBAAsBtB,EAAM/E,EAAOsG,EAAOC,GACtC,IAAIb,EAAU,KACS,iBAAX,EACRA,EAAU,oBAEJc,OAAOC,UAAUzG,IAGR,MAATsG,GAAiBtG,EAAQsG,GAAoB,MAATC,GAAiBvG,EAAQuG,KACnEb,EAAU,yBAHVA,EAAU,kBAKVA,GACAzD,KAAK+D,mBAAmBN,EAASX,EAAM/E,GAG/C0G,iBAAiB1G,EAAO0F,GACpBzD,KAAKmE,eAAmC,iBAAnB,EAA8B,iBAAkB,QAASpG,GAC/D,MAAX0F,IACAA,EAAU,kBAEd,MAAMiB,EAAY,oBAClB1E,KAAKiE,OAAQlG,GAAS,GAAKA,EAAQ,iBAAmB0F,EAAS,gBAAiB,CAC5EiB,UAAAA,EAAWC,MAAO,oBAAqB5G,MAAAA,IAE3CiC,KAAKiE,OAAQlG,EAAQ,GAAO,EAAG0F,EAAS,gBAAiB,CACrDiB,UAAAA,EAAWC,MAAO,cAAe5G,MAAAA,IAGzC6G,gBAAgBtC,IAC2B,IAAnCD,EAAgBwC,QAAQvC,IACxBtC,KAAK8D,WAAW,8CAA+C,wBAAyB,CACpFY,UAAW,6BAA8BzC,KAAM,CAAEK,KAAAA,KAI7DwC,cAAcC,EAAYC,EAAOC,EAAY,IACzC,GAAIF,IAAeC,EAAO,CACtB,IAAIE,EAASD,EAAWP,EAAY,MAChCO,IACAC,GAAU,IACVR,GAAa,IAAMO,GAEvBjF,KAAK8D,WAAW,4BAA4BoB,iBAAuB,wBAAyB,CACxFR,UAAAA,KAIZS,oBAAoBC,EAAOC,EAAe5B,EAAU,IAC5CA,IACAA,EAAU,KAAOA,GAErBzD,KAAKiE,OAAQmB,GAASC,EAAgB,mBAAqB5B,EAAS,mBAAoB,CACpF2B,MAAOA,EACPC,cAAeA,IAEnBrF,KAAKiE,OAAQmB,GAASC,EAAgB,qBAAuB5B,EAAS,sBAAuB,CACzF2B,MAAOA,EACPC,cAAeA,IAGvBC,SAASvH,EAAO+E,GACZ,OAAOrC,EAAuBT,KAAM0B,EAAmB,IAAKC,GAAkBpB,KAAKP,KAAMjC,EAAO+E,GAAM,GAE1GyC,aAAaxH,EAAO+E,GAChB,OAAOrC,EAAuBT,KAAM0B,EAAmB,IAAKC,GAAkBpB,KAAKP,KAAMjC,EAAO+E,GAAM,GAE1G0C,UAAUzH,EAAO+E,GACb,cAAgB,GACZ,IAAK,SAID,OAHI/E,GAASgF,GAAYhF,EAAQgF,IAC7B/C,KAAK+D,mBAAmB,WAAYjB,GAAQ,QAAS/E,GAElDwG,OAAOxG,GAClB,IAAK,SAOD,OANKwG,OAAOC,UAAUzG,IAGbA,GAASgF,GAAYhF,EAAQgF,IAClC/C,KAAK+D,mBAAmB,WAAYjB,GAAQ,QAAS/E,GAHrDiC,KAAK+D,mBAAmB,YAAajB,GAAQ,QAAS/E,GAKnDA,EACX,IAAK,SACD,IACI,OAAOiC,KAAKwF,UAAUC,OAAO1H,GAAQ+E,GAEzC,MAAO4C,GACH1F,KAAK+D,mBAAmB,2BAA2B2B,EAAEjC,UAAWX,GAAQ,QAAS/E,IAG7F,OAAOiC,KAAK+D,mBAAmB,wBAAyBjB,GAAQ,QAAS/E,GAE7E4H,UAAU5H,EAAO+E,GACb,cAAgB,GACZ,IAAK,SAAU,OAAO/E,EACtB,IAAK,SAOD,OANKwG,OAAOC,UAAUzG,IAGbA,GAASgF,GAAYhF,EAAQgF,IAClC/C,KAAK+D,mBAAmB,WAAYjB,GAAQ,QAAS/E,GAHrDiC,KAAK+D,mBAAmB,YAAajB,GAAQ,QAAS/E,GAKnD0H,OAAO1H,GAClB,IAAK,SACD,IACI,OAAO0H,OAAO1H,GAElB,MAAO2H,GACH1F,KAAK+D,mBAAmB,gCAAgC2B,EAAEjC,UAAWX,GAAQ,QAAS/E,IAGlG,OAAOiC,KAAK+D,mBAAmB,6BAA8BjB,GAAQ,QAAS/E,GAElFgE,SAAS6D,GACLnF,EAAuBT,KAAM0B,EAAmB,IAAKE,GAAarB,KAAKP,KAAM6B,EAASgE,MAAOD,GAEjG3D,QAAQ2D,GACJnF,EAAuBT,KAAM0B,EAAmB,IAAKE,GAAarB,KAAKP,KAAM6B,EAASiE,KAAMF,GAEhGG,QAAQH,GACJnF,EAAuBT,KAAM0B,EAAmB,IAAKE,GAAarB,KAAKP,KAAM6B,EAASmE,QAASJ,GAEnGK,sBAII,OAHK7D,IACDA,EAAgB,IAAIiB,ECzOT,uCD2ORjB,EAEX6D,mBAAmBC,GACf,MAAMC,EAAQrE,EAAUoE,EAASE,eACpB,MAATD,EAIJhE,EAAYgE,EAHR9C,EAAOgD,eAAeN,KAAK,uBAAyBG,IAMhExE,EAAoB,IAAI4E,QAAW3E,EAAmB,SAA0B5D,EAAO+E,EAAMyD,GACzF,GAAIxI,aAAiByI,WACjB,OAAID,EACO,IAAIC,WAAWzI,GAEnBA,EAEX,GAAuB,iBAAnB,GAA+BA,EAAM0I,MAAM,4BAA6B,CACxE,MAAMC,EAAS,IAAIF,YAAYzI,EAAMmB,OAAS,GAAK,GACnD,IAAIyH,EAAS,EACb,IAAK,IAAI1H,EAAI,EAAGA,EAAIyH,EAAOxH,OAAQD,IAC/ByH,EAAOzH,GAAK2H,SAAS7I,EAAM8I,UAAUF,EAAQA,EAAS,GAAI,IAC1DA,GAAU,EAEd,OAAOD,EAEX,OAAO1G,KAAK+D,mBAAmB,0BAA2BjB,GAAQ,QAAS/E,IAC5E6D,EAAc,SAAqBsE,EAAUN,GAC5C,MAAMO,EAAQD,EAASE,cACC,MAApBtE,EAAUqE,IACVnG,KAAK+D,mBAAmB,yBAA0B,WAAYmC,GAE9D/D,EAAYL,EAAUqE,IAG1BW,QAAQC,IAAIC,MAAMF,QAASlB,IAE/BvC,EAAOvB,UAAYD,EEjRZ,MCEMoF,EAAS,IAAI5D,EDFH,mCEAvB,IAWI6D,EAAwBC,EAAqBC,EAAqBC,EAA6BC,EAAsBC,EAI9GC,EAfPzH,EAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,EAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAmBxF,SAASwH,EAAOC,GACZ,MAAMhB,EAAS,IAAIiB,IAEnB,OADAD,EAAME,SAASvJ,GAAMqI,EAAOnD,IAAIlF,KACzBJ,OAAO4J,OAAOnB,IAfzB,SAAWc,GAEPA,EAAoB,QAAI,UAExBA,EAAoB,QAAI,UAExBA,EAAiB,KAAI,OAErBA,EAAiB,KAAI,OARzB,CASGA,IAAeA,EAAa,KAS/B,MAAMM,EAAW,8DACXC,EAAUN,EAAOK,EAAShJ,MAAM,MAChCkJ,EAAW,0CACXC,EAAUR,EAAOO,EAASlJ,MAAM,MAChCoJ,EAAe,0CACfC,EAAcV,EAAOS,EAAapJ,MAAM,MAIxCsJ,EAAWX,EADC,CAACO,EAAUE,EAFZ,gBAEoCJ,GAAUjE,KAAK,KAClC/E,MAAM,MAElCuJ,EAAe,CACjB,IAAK,aAAc,IAAK,cACxB,IAAK,eAAgB,IAAK,gBAC1B,IAAK,QAAS,IAAK,MAGjBC,EAAkB,IAAIC,OAAO,WAC7BC,EAAc,IAAID,OAAO,aACzBE,EAAkB,IAAIF,OAAO,+BAC7BG,EAAY,IAAIH,OAAO,sDACtB,MAAMI,EACT/H,YAAYgI,GACR1B,EAAuB3D,IAAIvD,MAC3BmH,EAAoB3G,IAAIR,UAAM,GAC9BoH,EAAoB5G,IAAIR,UAAM,GAC9BD,EAAuBC,KAAMmH,EAAqB,EAAG,KACrDpH,EAAuBC,KAAMoH,EAAqBwB,EAAOC,QAAS,KAElElC,aAAW,OAAOlG,EAAuBT,KAAMmH,EAAqB,KACpEjI,aAAW,OAAOuB,EAAuBT,KAAMoH,EAAqB,KAAKlI,OAASuB,EAAuBT,KAAMmH,EAAqB,KACxI2B,QAAU,OAAO,IAAIH,EAAYlI,EAAuBT,KAAMoH,EAAqB,MACnF2B,QAAUhJ,EAAuBC,KAAMmH,EAAqB,EAAG,KAE/D6B,WAAWC,GACP,MAAMC,EAAMlJ,KAAKmJ,OACjB,GAAiB,YAAbD,EAAItK,OAAuBqK,EAAQ3I,IAAI4I,EAAIE,MAC3C,MAAM,IAAIjK,MAAM,oBAAoB+J,EAAIE,QAE5C,OAAOpJ,KAAKqJ,MAAMD,KAGtBE,QAAQ1K,GACJ,GAAIoB,KAAKmJ,OAAOvK,OAASA,EACrB,MAAM,IAAIO,MAAM,YAAYP,UAAa+E,KAAKC,UAAU5D,KAAKmJ,WAEjE,OAAOnJ,KAAKqJ,MAAMD,KAGtBG,WACI,MAAML,EAAMlJ,KAAKmJ,OACjB,GAAiB,eAAbD,EAAItK,KACJ,MAAM,IAAIO,MAAM,aAEpB,MAAMuH,EAASjG,EAAuBT,KAAMkH,EAAwB,IAAKG,GAA6B9G,KAAKP,KAAMS,EAAuBT,KAAMmH,EAAqB,KAAO,EAAG+B,EAAIzC,MAAQ,GAEzL,OADA1G,EAAuBC,KAAMmH,EAAqB+B,EAAIzC,MAAQ,EAAG,KAC1DC,EAGX8C,YACI,MAAMN,EAAMlJ,KAAKmJ,OACjB,GAAiB,eAAbD,EAAItK,KACJ,MAAM,IAAIO,MAAM,aAEpB,MAAMuH,EAAS,GACf,KAAOjG,EAAuBT,KAAMmH,EAAqB,KAAO+B,EAAIzC,MAAQ,GAAG,CAC3E,MAAMgD,EAAOzJ,KAAKmJ,OAAOO,SACzBhD,EAAO/D,KAAKlC,EAAuBT,KAAMkH,EAAwB,IAAKG,GAA6B9G,KAAKP,KAAMS,EAAuBT,KAAMmH,EAAqB,KAAO,EAAGsC,IAC1K1J,EAAuBC,KAAMmH,EAAqBsC,EAAM,KAG5D,OADA1J,EAAuBC,KAAMmH,EAAqB+B,EAAIzC,MAAQ,EAAG,KAC1DC,EAGXyC,OACI,GAAI1I,EAAuBT,KAAMmH,EAAqB,MAAQ1G,EAAuBT,KAAMoH,EAAqB,KAAKlI,OACjH,MAAM,IAAIC,MAAM,iBAEpB,OAAOsB,EAAuBT,KAAMoH,EAAqB,KAAK3G,EAAuBT,KAAMmH,EAAqB,MAGpHwC,YAAYV,GACR,MAAMC,EAAMlJ,KAAK4J,SAAS,WAC1B,OAAe,MAAPV,GAAeD,EAAQ3I,IAAI4I,GAAQA,EAAM,KAGrDU,SAAShL,GACL,GAAoB,IAAhBoB,KAAKd,OACL,OAAO,KAEX,MAAMgK,EAAMlJ,KAAKmJ,OACjB,OAAQD,EAAItK,OAASA,EAAQsK,EAAIE,KAAO,KAG5CC,MACI,IAAIQ,EACJ,MAAMnD,EAAS1G,KAAKmJ,OAEpB,OADApJ,EAAuBC,KAAMmH,GAAsB0C,EAAKpJ,EAAuBT,KAAMmH,EAAqB,OAAM0C,GAAW,KACpHnD,EAEXoD,WACI,MAAMlB,EAAS,GACf,IAAK,IAAI3J,EAAIwB,EAAuBT,KAAMmH,EAAqB,KAAMlI,EAAIwB,EAAuBT,KAAMoH,EAAqB,KAAKlI,OAAQD,IAAK,CACzI,MAAM8K,EAAQtJ,EAAuBT,KAAMoH,EAAqB,KAAKnI,GACrE2J,EAAOjG,KAAK,GAAGoH,EAAMnL,QAAQmL,EAAMX,QAEvC,MAAO,gBAAgBR,EAAO/E,KAAK,SAapC,SAASmG,EAAIZ,GAChB,MAAMR,EAAS,GACT9E,EAAcL,IAChB,MAAMsG,EAASpD,EAASyC,EAAKlK,OAAUyE,KAAKC,UAAUwF,EAAKzC,IAAW,OACtE,MAAM,IAAIxH,MAAM,iBAAiB4K,QAAYpD,MAAWlD,MAE5D,IAAIwG,EAAW,GACXC,EAAS,GACTvD,EAAS,EACb,KAAOA,EAASyC,EAAKlK,QAAQ,CAEzB,IAAIiL,EAAMf,EAAKvC,UAAUF,GACrBF,EAAQ0D,EAAI1D,MAAM6B,GAClB7B,IACAE,GAAUF,EAAM,GAAGvH,OACnBiL,EAAMf,EAAKvC,UAAUF,IAEzB,MAAMoD,EAAQ,CAAEK,MAAOH,EAAS/K,OAAQmL,UAAW,EAAGX,UAAW,EAAGjD,OAAQ,EAAG7H,KAAM,GAAIwK,KAAM,GAAIzC,OAAAA,EAAQ5I,OAAQ,GACnH6K,EAAOjG,KAAKoH,GACZ,IAAInL,EAAQyJ,EAAa8B,EAAI,KAAO,GACpC,GAAIvL,GAIA,GAHAmL,EAAMnL,KAAOA,EACbmL,EAAMX,KAAOe,EAAI,GACjBxD,IACa,eAAT/H,EACAqL,EAAStH,KAAKiG,EAAO1J,OAAS,GAC9BgL,EAAOvH,KAAKiG,EAAO1J,OAAS,QAE3B,GAAY,eAARN,EACmB,IAApBqL,EAAS/K,QACT4E,EAAW,4BAEfiG,EAAMtD,MAAQwD,EAASZ,MACtBT,EAAOmB,EAAMtD,OAAQA,MAAQmC,EAAO1J,OAAS,EAC9C6K,EAAMK,QACNL,EAAMM,SAAWH,EAAOb,MACvBT,EAAOmB,EAAMM,UAAWX,SAAWd,EAAO1J,OAAS,OAEnD,GAAa,UAATN,EACLmL,EAAMM,SAAWH,EAAOb,MACvBT,EAAOmB,EAAMM,UAAWX,SAAWd,EAAO1J,OAAS,EACpDgL,EAAOvH,KAAKiG,EAAO1J,OAAS,QAE3B,GAAa,iBAATN,EACLmL,EAAMnL,KAAO,eAEZ,GAAa,kBAATA,EAA0B,CAE/B,IAAI0L,EAAS1B,EAAOS,MAAMD,KAC1B,GAAIR,EAAO1J,OAAS,GAAwC,WAAnC0J,EAAOA,EAAO1J,OAAS,GAAGN,KAAmB,CAClE,MAAMb,EAAQ6K,EAAOS,MAAMD,KAC3BkB,EAASvM,EAAQuM,EAChB1B,EAAOA,EAAO1J,OAAS,GAAInB,MAAQkJ,EAAOzB,UAAUzH,GAEzD,GAAsB,IAAlB6K,EAAO1J,QAAmD,YAAnC0J,EAAOA,EAAO1J,OAAS,GAAGN,KACjD,MAAM,IAAIO,MAAM,2BAEnByJ,EAAOA,EAAO1J,OAAS,GAAIkK,MAAQkB,QAK5C,GADA7D,EAAQ0D,EAAI1D,MAAMgC,GACdhC,EAAJ,CAGI,GAFAsD,EAAMX,KAAO3C,EAAM,GACnBE,GAAUoD,EAAMX,KAAKlK,OACjBkJ,EAAS9H,IAAIyJ,EAAMX,MAAO,CAC1BW,EAAMnL,KAAO,UACb,SAEJ,GAAImL,EAAMX,KAAK3C,MAAMiC,GAAY,CAC7BqB,EAAMnL,KAAO,OACb,SAEJmL,EAAMnL,KAAO,SAXjB,CAeA,GADA6H,EAAQ0D,EAAI1D,MAAM+B,IACd/B,EAMJ,MAAM,IAAItH,MAAM,oBAAoBwE,KAAKC,UAAUuG,EAAI,mBAAmBxD,KALtEoD,EAAMX,KAAO3C,EAAM,GACnBsD,EAAMnL,KAAO,SACb+H,GAAUoD,EAAMX,KAAKlK,QAK7B,OAAO,IAAIyJ,EAAYC,EAAOxK,KAAKW,GAAMd,OAAO4J,OAAO9I,MAG3D,SAASwL,EAAY/J,EAAKyI,GACtB,IAAIuB,EAAW,GACf,IAAK,MAAMhL,KAAOyJ,EAAQjL,OAClBwC,EAAIF,IAAId,IACRgL,EAAS7H,KAAKnD,GAGtB,GAAIgL,EAAStL,OAAS,EAClB,MAAM,IAAIC,MAAM,sBAAsBqL,EAAS3G,KAAK,SAK5D,SAAS4G,EAAY7L,EAAMgK,GACvB,GAAIA,EAAOe,YAAY1B,GAAU,CAC7B,MAAMyC,EAAU9B,EAAOS,MAAMD,KAC7B,GAAIsB,IAAY9L,EACZ,MAAM,IAAIO,MAAM,YAAYP,UAAa8L,KAGjD,OAAO9B,EAAOU,QAAQ,MAG1B,SAASqB,EAAgB/B,EAAQK,GAC7B,MAAM2B,EAAW,IAAIjD,IACrB,OAAa,CACT,MAAM+C,EAAU9B,EAAOgB,SAAS,WAChC,GAAe,MAAXc,GAAoBzB,IAAYA,EAAQ3I,IAAIoK,GAC5C,MAGJ,GADA9B,EAAOS,MACHuB,EAAStK,IAAIoK,GACb,MAAM,IAAIvL,MAAM,uBAAuBwE,KAAKC,UAAU8G,MAE1DE,EAASrH,IAAImH,GAEjB,OAAOzM,OAAO4J,OAAO+C,GA4BzB,SAASC,EAAcjC,EAAQkC,GAC3B,OAAOlC,EAAOY,YAAYpL,KAAKW,GAAMgM,GAAUC,WAAWjM,EAAG+L,KAGjE,SAASG,EAAWrC,GAChB,GAAIA,EAAOgB,SAAS,MAAO,CAEvB,GADAhB,EAAOS,MACHT,EAAOgB,SAAS,UAChB,OAAO3C,EAAOtB,UAAUiD,EAAOS,MAAMD,MAEzC,MAAM,IAAIjK,MAAM,eAEpB,OAAO,KAEX,SAAS+L,GAAWtC,GAChB,GAAIA,EAAO1J,OACP,MAAM,IAAIC,MAAM,sBAAsByJ,EAAOkB,cAlLrD3C,EAAsB,IAAI1F,QAAW2F,EAAsB,IAAI3F,QAAWyF,EAAyB,IAAIZ,QAAWe,EAA8B,SAAqC8D,EAAO,EAAGC,EAAK,GAChM,OAAO,IAAIzC,EAAYlI,EAAuBT,KAAMoH,EAAqB,KAAKyB,MAAMsC,EAAMC,GAAIhN,KAAKW,GACxFd,OAAO4J,OAAO5J,OAAOoN,OAAO,GAAItM,EAAG,CACtC0H,MAAQ1H,EAAE0H,MAAQ0E,EAClBd,SAAWtL,EAAEsL,SAAWc,EACxBzB,SAAW3K,EAAE2K,SAAWyB,SAgLpC,MAAMG,GAAiB,IAAI/C,OAAO,sBAClC,SAASgD,GAAgB3M,GACrB,MAAM6H,EAAQ7H,EAAK6H,MAAMiC,GACzB,IAAKjC,EACD,OAAOQ,EAAOlD,mBAAmB,eAAgB,OAAQnF,GAE7D,GAAa,SAATA,EACA,MAAO,UAEX,GAAa,QAATA,EACA,MAAO,SAEX,GAAI6H,EAAM,GAAI,CAEV,MAAMvH,EAAS0H,SAASH,EAAM,KACf,IAAXvH,GAAgBA,EAAS,KACzB+H,EAAOlD,mBAAmB,uBAAwB,OAAQnF,QAG7D,GAAI6H,EAAM,GAAI,CAEf,MAAM+E,EAAO5E,SAASH,EAAM,KACf,IAAT+E,GAAcA,EAAO,KAAOA,EAAO,IACnCvE,EAAOlD,mBAAmB,wBAAyB,OAAQnF,GAGnE,OAAOA,EAGX,MAAM6M,GAAS,GACTC,GAAWC,OAAOC,IAAI,oBAErB,MAAMb,GACTnK,YAAYoE,EAAOlC,EAAMlE,EAAMiN,EAAUC,EAASC,EAAYC,EAAaC,GAOvE,GANA3E,EAAqB/D,IAAIvD,MACzBiH,EAAOnC,cAAcE,EAAOyG,GAAQ,aACpCxN,OAAO0B,eAAeK,KAAM0L,GAAU,CAAE3N,MALtB,uBAMdgO,IACAA,EAAa9N,OAAO4J,OAAOkE,EAAWlD,UAEzB,UAAbgD,GACA,GAAmB,MAAfG,GAAwC,MAAjBC,EACvB,MAAM,IAAI9M,MAAM,SAGnB,GAAmB,MAAf6M,GAAwC,MAAjBC,EAC5B,MAAM,IAAI9M,MAAM,IAEpB,GAAiB,UAAb0M,GACA,GAAkB,MAAdE,EACA,MAAM,IAAI5M,MAAM,SAGnB,GAAkB,MAAd4M,EACL,MAAM,IAAI5M,MAAM,IAEpBC,EAAiBY,KAAM,CACnB8C,KAAAA,EAAMlE,KAAAA,EAAMiN,SAAAA,EAAUC,QAAAA,EAASC,WAAAA,EAAYC,YAAAA,EAAaC,cAAAA,IAOhEC,OAAOA,EAAS1E,EAAW2E,SAIvB,GAHK3E,EAAW0E,IACZjF,EAAOlD,mBAAmB,sBAAuB,SAAUmI,GAE3DA,IAAW1E,EAAW4E,KAAM,CAC5B,IAAI1F,EAAS,CACT9H,KAA0B,UAAlBoB,KAAK6L,SAAwB,QAAU7L,KAAKpB,KACpDkE,KAAO9C,KAAK8C,WAAQpD,GAQxB,MAN8B,kBAAlBM,KAAY,UACpB0G,EAAOoF,QAAU9L,KAAK8L,SAEtB9L,KAAKqM,YACL3F,EAAOqF,WAAa/L,KAAK+L,WAAW3N,KAAKkO,GAAM3I,KAAK4I,MAAMD,EAAEJ,OAAOA,OAEhEvI,KAAKC,UAAU8C,GAE1B,IAAIA,EAAS,GAyBb,OAvBI1G,KAAKwM,WACL9F,GAAU1G,KAAKiM,cAAcC,OAAOA,GACpCxF,GAAU,IAAK1G,KAAKgM,YAAc,EAAI,GAAKvJ,OAAOzC,KAAKgM,iBAGnDhM,KAAKqM,WACDH,IAAW1E,EAAW2E,UACtBzF,GAAU1G,KAAKpB,MAEnB8H,GAAU,IAAM1G,KAAK+L,WAAW3N,KAAKqO,GAASA,EAAKP,OAAOA,KAASrI,KAAMqI,IAAW1E,EAAWkF,KAAQ,KAAO,KAAO,KAGrHhG,GAAU1G,KAAKpB,KAGnBsN,IAAW1E,EAAW2E,WACD,IAAjBnM,KAAK8L,UACLpF,GAAU,YAEVwF,IAAW1E,EAAWkF,MAAQ1M,KAAK8C,OACnC4D,GAAU,IAAM1G,KAAK8C,OAGtB4D,EAEXT,eAAelI,GACX,OAAOA,GAA6B,UAAnBA,EAAM8N,SAE3BW,UACI,MAA0B,UAAlBxM,KAAK6L,SAEjBQ,UACI,MAA0B,UAAlBrM,KAAK6L,SAEjBc,cACI,OAAwB,MAAhB3M,KAAK8L,QAEjBc,KAAK7O,EAAO8O,GACR,GAAI7M,KAAKwM,UAAW,CAChB,IAAKM,MAAMN,QAAQzO,GACf,MAAM,IAAIoB,MAAM,uBAEpB,IAA0B,IAAtBa,KAAKgM,aAAsBjO,EAAMmB,SAAWc,KAAKgM,YACjD,MAAM,IAAI7M,MAAM,yBAEpB,OAAOpB,EAAMK,KAAKK,GAAOuB,KAAKiM,cAAcW,KAAKnO,EAAGoO,KAExD,GAAI7M,KAAKqM,UAAW,CAChB,IAAKS,MAAMN,QAAQzO,GACf,MAAM,IAAIoB,MAAM,uBAEpB,GAAIpB,EAAMmB,SAAWc,KAAK+L,WAAW7M,OACjC,MAAM,IAAIC,MAAM,yBAEpB,OAAOpB,EAAMK,KAAI,CAACK,EAAGQ,IAAOe,KAAK+L,WAAW9M,GAAG2N,KAAKnO,EAAGoO,KAE3D,OAAOA,EAAQ7M,KAAKpB,KAAMb,GAE9BF,gBAAgBE,EAAO8O,GACnB,MAAME,EAAW,GACXrG,EAAS,CAAC3I,GAOhB,OANA0C,EAAuBT,KAAMsH,EAAsB,IAAKC,GAAsBhH,KAAKP,KAAM+M,EAAUhP,EAAO8O,GAAU9O,IAChH2I,EAAO,GAAK3I,KAEZgP,EAAS7N,cACHhB,QAAQC,IAAI4O,GAEfrG,EAAO,GAElBT,YAAY+G,EAAKlC,GACb,GAAIC,GAAUkC,YAAYD,GACtB,OAAOA,EAEX,GAAqB,iBAAT,EACR,OAAOjC,GAAUC,WAAWhB,EAAIgD,GAAMlC,GAE1C,GAAIkC,aAAerE,EACf,OAAOoC,GAAUC,WAAWgC,EAAKlC,GAErC,MAAMhI,EAAOkK,EAAIlK,MACbA,GAA2B,iBAAV,GAAuBA,EAAK2D,MAAMgC,IACnDxB,EAAOlD,mBAAmB,eAAgB,WAAYjB,GAE1D,IAAIgJ,EAAUkB,EAAIlB,QACH,MAAXA,IACKhB,GACD7D,EAAOlD,mBAAmB,8BAA+B,cAAeiJ,EAAIlB,SAEhFA,IAAYA,GAEhB,IAAIlN,EAAOoO,EAAIpO,KACXsO,EAAatO,EAAK6H,MAAM6E,IAC5B,GAAI4B,EAAY,CACZ,MAAMlB,EAAckB,EAAW,GACzBjB,EAAgBlB,GAAUI,KAAK,CACjCvM,KAAMsO,EAAW,GACjBnB,WAAYiB,EAAIjB,aAEpB,OAAO,IAAIhB,GAAUU,GAAQ3I,EAAMlE,EAAM,QAASkN,EAAS,KAAME,EAAaC,GAElF,GAA6B,WAAzBrN,EAAKiI,UAAU,EAAG,IAA+B,MAAZjI,EAAK,GAAY,CACtD,MAAMuO,EAA2B,MAAlBH,EAAIjB,WAAsBiB,EAAIjB,WAAW3N,KAAKkO,GAAMvB,GAAUI,KAAKmB,KAAM,KAGxF,OAFc,IAAIvB,GAAUU,GAAQ3I,EAAMlE,EAAM,QAASkN,EAASqB,EAAO,KAAM,MAKnF,OADAvO,EAAO2M,GAAgByB,EAAIpO,MACpB,IAAImM,GAAUU,GAAQ3I,EAAMlE,EAAMA,EAAMkN,EAAS,KAAM,KAAM,MAExE7F,kBAAkB+G,EAAKlC,GACnB,MAAM,IAAI3L,MAAM,SAEpB8G,kBAAkB2C,EAAQkC,GACtB,IAAIlM,EAAO,GAAIiN,EAAW,GACtBsB,EAAQ,KACRxC,EAAgB/B,EAAQnB,EAAO,CAAC,WAAWnH,IAAI,UAAYsI,EAAOgB,SAAS,eAE3EiC,EAAW,QACXsB,EAAQvE,EAAOY,YAAYpL,KAAKW,GAAMgM,GAAUI,KAAKpM,KACrDH,EAAO,SAASuO,EAAM/O,KAAKkO,GAAMA,EAAEJ,WAAUrI,KAAK,UAIlDjF,EAAO2M,GAAgB3C,EAAOU,QAAQ,SACtCuC,EAAWjN,GAGf,IAAIqN,EAAgB,KAChBD,EAAc,KAClB,KAAOpD,EAAO1J,QAAU0J,EAAOgB,SAAS,YAAY,CAChD,MAAMwD,EAAUxE,EAAOS,MACvB4C,EAAgB,IAAIlB,GAAUU,GAAQ,GAAI7M,EAAMiN,EAAU,KAAMsB,EAAOnB,EAAaC,GACpFD,EAAcoB,EAAQrP,MACtBa,GAAQwO,EAAQhE,KAChByC,EAAW,QACXsB,EAAQ,KAEZ,IAAIrB,EAAU,KAEd,GADiBnB,EAAgB/B,EAAQT,GAC5B7H,IAAI,WAAY,CACzB,IAAKwK,EACD,MAAM,IAAI3L,MAAM,IAEpB2M,GAAU,EAEd,MAAMhJ,EAAQ8F,EAAOgB,SAAS,MAAQhB,EAAOS,MAAMD,KAAO,GAC1D,GAAIR,EAAO1J,OACP,MAAM,IAAIC,MAAM,mBAEpB,OAAO,IAAI4L,GAAUU,GAAQ3I,EAAMlE,EAAMiN,EAAUC,EAASqB,EAAOnB,EAAaC,GAEpFhG,mBAAmBlI,GACf,OAAQA,GA5MU,uBA4MDA,EAAM2N,KA8DxB,IAAI2B,GA3DX/F,EAAuB,IAAIhB,QAAWiB,EAAuB,SAASA,EAAqBwF,EAAUhP,EAAO8O,EAASS,GACjH,GAAItN,KAAKwM,UAAW,CAChB,IAAKM,MAAMN,QAAQzO,GACf,MAAM,IAAIoB,MAAM,uBAEpB,IAA0B,IAAtBa,KAAKgM,aAAsBjO,EAAMmB,SAAWc,KAAKgM,YACjD,MAAM,IAAI7M,MAAM,yBAEpB,MAAMoO,EAAYvN,KAAKiM,cACjBvF,EAAS3I,EAAM8K,QAOrB,OANAnC,EAAOkB,SAAQ,CAAC7J,EAAOW,KACnB+B,EAAuB8M,EAAWjG,EAAsB,IAAKC,GAAsBhH,KAAKgN,EAAWR,EAAUhP,EAAO8O,GAAU9O,IAC1H2I,EAAOhI,GAASX,aAGxBuP,EAAS5G,GAGb,GAAI1G,KAAKqM,UAAW,CAChB,MAAMN,EAAa/L,KAAK+L,WAExB,IAAIrF,EACJ,GAAIoG,MAAMN,QAAQzO,GACd2I,EAAS3I,EAAM8K,YAEd,CACD,GAAa,MAAT9K,GAAoC,mBACpC,MAAM,IAAIoB,MAAM,uBAEpBuH,EAASqF,EAAW3N,KAAKoP,IACrB,IAAKA,EAAM1K,KACP,MAAM,IAAI3D,MAAM,mDAEpB,KAAMqO,EAAM1K,QAAQ/E,GAChB,MAAM,IAAIoB,MAAM,+BAA+BqO,EAAM1K,QAEzD,OAAO/E,EAAMyP,EAAM1K,SAG3B,GAAI/E,EAAMmB,SAAWc,KAAK+L,WAAW7M,OACjC,MAAM,IAAIC,MAAM,yBASpB,OAPAuH,EAAOkB,SAAQ,CAAC7J,EAAOW,KACnB,IAAImL,EACJpJ,EAAwBoJ,EAAKkC,EAAWrN,GAAS4I,EAAsB,IAAKC,GAAsBhH,KAAKsJ,EAAIkD,EAAUhP,EAAO8O,GAAU9O,IAClI2I,EAAOhI,GAASX,aAGxBuP,EAAS5G,GAGb,MAAMA,EAASmG,EAAQ7M,KAAKpB,KAAMb,GAC9B2I,EAAO+G,KACPV,EAASpK,KAAK,iBAAqB2K,QAAe5G,GAApC,IAGd4G,EAAS5G,IAIjB,SAAW2G,GACPA,EAA0B,YAAI,cAC9BA,EAAoB,MAAI,QACxBA,EAAoB,MAAI,QACxBA,EAAuB,SAAI,WAC3BA,EAAqB,OAAI,SAL7B,CAMGA,KAAiBA,GAAe,KAE5B,MAAMK,GACT9M,YAAYoE,EAAOpG,EAAM+O,GACrB1G,EAAOnC,cAAcE,EAAOyG,GAAQ,YAEpCrM,EAAiBY,KAAM,CAAEpB,KAAAA,EAAM+O,OAD/BA,EAAS1P,OAAO4J,OAAO8F,EAAO9E,WAGlC5C,YAAY+G,GACR,GAAqB,iBAAT,EACR,OAAOhN,KAAK4N,WAAWZ,GAE3B,GAAIA,aAAerE,EACf,OAAO3I,KAAKgL,WAAWgC,GAE3B,GAAqB,iBAAT,EACR,OAAOhN,KAAK6N,WAAWb,GAE3B,MAAM,IAAI7N,MAAM,qBAAqB6N,KAEzC/G,kBAAkB+G,GACd,OAAQA,EAAIpO,MACR,IAAK,cAAe,OAAOkP,GAAoBD,WAAWb,GAC1D,IAAK,QAAS,OAAOe,GAAcF,WAAWb,GAC9C,IAAK,QAAS,OAAOgB,GAAcH,WAAWb,GAC9C,IAAK,WAAY,OAAOiB,GAAiBJ,WAAWb,GACpD,IAAK,SAAU,OAAOkB,GAAeL,WAAWb,GAEpD,MAAM,IAAI7N,MAAM,uBAEpB8G,kBAAkBmD,GACd,IACIsE,GAASvC,KAAKxH,KAAK4I,MAAMnD,IAE7B,MAAO1D,IACP,OAAOgI,GAAS1C,WAAWhB,EAAIZ,IAEnCnD,kBAAkB2C,GACd,MAAMhK,EAAOgK,EAAOI,WAAWf,GAC/B,OAAQrJ,GACJ,IAAK,cAAe,OAAOkP,GAAoB9C,WAAWpC,GAC1D,IAAK,QAAS,OAAOmF,GAAc/C,WAAWpC,GAC9C,IAAK,QAAS,OAAOoF,GAAchD,WAAWpC,GAC9C,IAAK,WAAY,OAAOqF,GAAiBjD,WAAWpC,GACpD,IAAK,SAAU,OAAOsF,GAAelD,WAAWpC,GAEpD,MAAM,IAAIzJ,MAAM,qBAAqBP,KAoBzCqH,qBAAqBlI,GACjB,OAAQA,GAAwB,gBAAfA,EAAMa,KAE3BqH,eAAelI,GACX,OAAQA,GAAwB,UAAfA,EAAMa,KAE3BqH,eAAelI,GACX,OAAQA,GAAwB,UAAfA,EAAMa,KAE3BqH,kBAAkBlI,GACd,OAAQA,GAAwB,aAAfA,EAAMa,KAE3BqH,gBAAgBlI,GACZ,OAAQA,GAAwB,WAAfA,EAAMa,MAGxB,MAAMuP,WAAsBT,GAC/B9M,YAAYoE,EAAOpG,EAAMkE,EAAM6K,GAC3BS,MAAMpJ,EAAOpG,EAAM+O,GACnBA,EAAS1P,OAAO4J,OAAO8F,EAAO9E,SAC9BzJ,EAAiBY,KAAM,CAAE8C,KAAAA,KAGjC,SAASuL,GAAWnC,EAAQoC,GACxB,MAAO,IAAMA,EAAOlQ,KAAKmQ,GAAMA,EAAErC,OAAOA,KAASrI,KAAMqI,IAAW1E,EAAWkF,KAAQ,KAAO,KAAO,IAEhG,MAAMqB,WAAsBI,GAC/BvN,YAAYoE,EAAOlC,EAAM6K,GACrBS,MAAMpJ,EAAOqI,GAAa/L,MAAOwB,EAAM6K,GAE3CzB,OAAOA,EAAS1E,EAAW2E,SAIvB,GAHK3E,EAAW0E,IACZjF,EAAOlD,mBAAmB,sBAAuB,SAAUmI,GAE3DA,IAAW1E,EAAW4E,KACtB,OAAOzI,KAAKC,UAAU,CAClBhF,KAAM,QACNkE,KAAM9C,KAAK8C,KACX6K,OAAQ3N,KAAK2N,OAAOvP,KAAKoQ,GAAU7K,KAAK4I,MAAMiC,EAAMtC,OAAOA,QAGnE,MAAMxF,EAAS,GAKf,OAJIwF,IAAW1E,EAAW2E,SACtBzF,EAAO/D,KAAK,SAEhB+D,EAAO/D,KAAK3C,KAAK8C,KAAOuL,GAAWnC,EAAQlM,KAAK2N,SACzCjH,EAAO7C,KAAK,KAEvBoC,kBAAkBmD,GACd,OAAO2E,GAAc/C,WAAWhB,EAAIZ,IAExCnD,kBAAkB2C,GACd,MAAM9F,EAAO2H,EAAY,QAAS7B,GAC5B+E,EAAS9C,EAAcjC,GAE7B,OADAsC,GAAWtC,GACJ,IAAImF,GAActC,GAAQ3I,EAAM6K,IAGxC,MAAMK,WAAsBG,GAC/BvN,YAAYoE,EAAOlC,EAAM6K,EAAQc,GAC7BL,MAAMpJ,EAAOqI,GAAaqB,MAAO5L,EAAM6K,GACvCvO,EAAiBY,KAAM,CAAEyO,UAAAA,IAE7BvC,OAAOA,EAAS1E,EAAW2E,SAIvB,GAHK3E,EAAW0E,IACZjF,EAAOlD,mBAAmB,sBAAuB,SAAUmI,GAE3DA,IAAW1E,EAAW4E,KACtB,OAAOzI,KAAKC,UAAU,CAClBhF,KAAM,QACN6P,UAAWzO,KAAKyO,UAChB3L,KAAM9C,KAAK8C,KACX6K,OAAQ3N,KAAK2N,OAAOvP,KAAKa,GAAM0E,KAAK4I,MAAMtN,EAAEiN,OAAOA,QAG3D,MAAMxF,EAAS,GAQf,OAPIwF,IAAW1E,EAAW2E,SACtBzF,EAAO/D,KAAK,SAEhB+D,EAAO/D,KAAK3C,KAAK8C,KAAOuL,GAAWnC,EAAQlM,KAAK2N,SAC5CzB,IAAW1E,EAAW2E,SAAWnM,KAAKyO,WACtC/H,EAAO/D,KAAK,aAET+D,EAAO7C,KAAK,KAEvBoC,kBAAkBmD,GACd,OAAO4E,GAAchD,WAAWhB,EAAIZ,IAExCnD,kBAAkB2C,GACd,MAAM9F,EAAO2H,EAAY,QAAS7B,GAC5B+E,EAAS9C,EAAcjC,GAAQ,GAC/B6F,IAAc9D,EAAgB/B,EAAQnB,EAAO,CAAC,eAAenH,IAAI,aAEvE,OADA4K,GAAWtC,GACJ,IAAIoF,GAAcvC,GAAQ3I,EAAM6K,EAAQc,IAGhD,MAAMX,WAA4BJ,GACrC9M,YAAYoE,EAAOpG,EAAM+O,EAAQgB,EAASC,GACtCR,MAAMpJ,EAAOpG,EAAM+O,GACnBvO,EAAiBY,KAAM,CAAE2O,QAAAA,EAASC,IAAAA,IAEtC1C,OAAOA,EAAS1E,EAAW2E,SASvB,GARK3E,EAAW0E,IACZjF,EAAOlD,mBAAmB,sBAAuB,SAAUmI,GAE3DA,IAAW1E,EAAW2E,SACtBlF,EAAOnD,WAAW,0CAA2C,wBAAyB,CAClFY,UAAW,oBAGfwH,IAAW1E,EAAW4E,KACtB,OAAOzI,KAAKC,UAAU,CAClBhF,KAAM,cACNiQ,gBAAkB7O,KAAK2O,QAAU,UAAY,YAC7CA,QAAS3O,KAAK2O,QACdC,IAAmB,MAAZ5O,KAAK4O,IAAe5O,KAAK4O,SAAMlP,EACtCiO,OAAQ3N,KAAK2N,OAAOvP,KAAKa,GAAM0E,KAAK4I,MAAMtN,EAAEiN,OAAOA,QAG3D,MAAMxF,EAAS,CAAC,cAAc2H,GAAWnC,EAAQlM,KAAK2N,WAKtD,OAJAjH,EAAO/D,KAAM3C,KAAY,QAAI,UAAY,cACzB,MAAZA,KAAK4O,KACLlI,EAAO/D,KAAK,IAAI3C,KAAK4O,IAAI9E,cAEtBpD,EAAO7C,KAAK,KAEvBoC,kBAAkBmD,GACd,OAAO0E,GAAoB9C,WAAWhB,EAAIZ,IAE9CnD,kBAAkB+G,GACd,MAAM,IAAI7N,MAAM,QAEpB8G,kBAAkB2C,GACd+B,EAAgB/B,EAAQnB,EAAO,CAAC,iBAChC,MAAMkG,EAAS9C,EAAcjC,GACvB+F,IAAYhE,EAAgB/B,EAAQnB,EAAO,CAAC,aAAanH,IAAI,WAC7DsO,EAAM3D,EAAWrC,GAEvB,OADAsC,GAAWtC,GACJ,IAAIkF,GAAoBrC,GAAQ4B,GAAazM,YAAa+M,EAAQgB,EAASC,IAGnF,MAAMX,WAAyBE,GAClCvN,YAAYoE,EAAOlC,EAAM+L,EAAiBlB,EAAQmB,EAASF,GACvDR,MAAMpJ,EAAOqI,GAAa0B,SAAUjM,EAAM6K,GAI1CvO,EAAiBY,KAAM,CAAEgP,SAFa,SAApBH,GAAkD,SAApBA,EAEbD,IAAAA,EAAKE,QAHxCA,EAAU7Q,OAAO4J,OAAOiH,EAAQjG,SAGiB8F,QADZ,YAApBE,EACyCA,gBAAAA,IAE9D3C,OAAOA,EAAS1E,EAAW2E,SAIvB,GAHK3E,EAAW0E,IACZjF,EAAOlD,mBAAmB,sBAAuB,SAAUmI,GAE3DA,IAAW1E,EAAW4E,KACtB,OAAOzI,KAAKC,UAAU,CAClBhF,KAAM,WACNkE,KAAM9C,KAAK8C,KACXkM,SAAUhP,KAAKgP,SACfH,gBAA4C,eAAzB7O,KAAK6O,gBAAoC7O,KAAK6O,qBAAkBnP,EACnFiP,QAAS3O,KAAK2O,QACdC,IAAmB,MAAZ5O,KAAK4O,IAAe5O,KAAK4O,SAAMlP,EACtCiO,OAAQ3N,KAAK2N,OAAOvP,KAAKa,GAAM0E,KAAK4I,MAAMtN,EAAEiN,OAAOA,MACnD4C,QAAS9O,KAAK8O,QAAQ1Q,KAAK6Q,GAAMtL,KAAK4I,MAAM0C,EAAE/C,OAAOA,QAG7D,MAAMxF,EAAS,GAiBf,OAhBIwF,IAAW1E,EAAW2E,SACtBzF,EAAO/D,KAAK,YAEhB+D,EAAO/D,KAAK3C,KAAK8C,KAAOuL,GAAWnC,EAAQlM,KAAK2N,SAC5CzB,IAAW1E,EAAW2E,UACO,eAAzBnM,KAAK6O,iBACLnI,EAAO/D,KAAK3C,KAAK6O,iBAEjB7O,KAAK8O,SAAW9O,KAAK8O,QAAQ5P,SAC7BwH,EAAO/D,KAAK,WACZ+D,EAAO/D,KAAK0L,GAAWnC,EAAQlM,KAAK8O,WAExB,MAAZ9O,KAAK4O,KACLlI,EAAO/D,KAAK,IAAI3C,KAAK4O,IAAI9E,eAG1BpD,EAAO7C,KAAK,KAEvBoC,kBAAkBmD,GACd,OAAO6E,GAAiBjD,WAAWhB,EAAIZ,IAE3CnD,kBAAkB2C,GACd,MAAM9F,EAAO2H,EAAY,WAAY7B,GAC/B+E,EAAS9C,EAAcjC,GACvBsG,EA5lBd,SAA2BtG,GACvB,IAAIuG,EAAYxE,EAAgB/B,EAAQb,GAKxC,OAHAwC,EAAY4E,EAAW1H,EAAO,8BAA8B3I,MAAM,OAClEyL,EAAY4E,EAAW1H,EAAO,+BAA+B3I,MAAM,OAE/DqQ,EAAU7O,IAAI,QACP,OAEP6O,EAAU7O,IAAI,QACP,OAEP6O,EAAU7O,IAAI,WACP,UAEP6O,EAAU7O,IAAI,cACP,aAGP6O,EAAU7O,IAAI,YACP,OAEJ,aAskBgB8O,CAAkBxG,GACrC,IAAIkG,EAAU,GACVnE,EAAgB/B,EAAQnB,EAAO,CAAC,aAAanH,IAAI,aACjDwO,EAAUjE,EAAcjC,IAE5B,MAAMgG,EAAM3D,EAAWrC,GAEvB,OADAsC,GAAWtC,GACJ,IAAIqF,GAAiBxC,GAAQ3I,EAAMoM,EAAYvB,EAAQmB,EAASF,IAGxE,MAAMV,WAAuBC,GAChCjC,SACI,MAAM,IAAI/M,MAAM,SAEpB8G,kBAAkBmD,GACd,OAAO8E,GAAelD,WAAWhB,EAAIZ,IAEzCnD,kBAAkB2C,GACd,MAAM9F,EAAO2H,EAAY,SAAU7B,GAC7B+E,EAAS9C,EAAcjC,GAE7B,OADAsC,GAAWtC,GACJ,IAAIsF,GAAezC,GAAQ4B,GAAagC,OAAQvM,EAAM6K,ICz4B9D,MCEM1G,GAAS,IAAI5D,EDFH,oCEIjBiM,GAAO7J,OAAO,GAEb,SAAS8J,GAASC,GACrB,GAAIA,aAAkBhJ,WAAY,CAC9B,IAAIE,EAAS,MACb,IAAK,MAAMjI,KAAK+Q,EACZ9I,GAPI,mBAOcjI,GAAK,GACvBiI,GARI,mBAQkB,GAAJjI,GAEtB,OAAOgH,OAAOiB,GAElB,OAAOO,GAAOtB,UAAU6J,EAAQ,SAE7B,SAASC,GAASD,GACrB,MAAMzR,EAAQwR,GAASC,GAIvB,OAHIzR,GAjBS,kBAiBYA,EAjBZ,mBAkBTkJ,GAAOlD,mBAAmB,WAAY,QAASyL,GAE5CjL,OAAOxG,GAGX,SAAS2R,GAAMF,EAAQG,GAC1B,MAAM5R,EAAQkJ,GAAOtB,UAAU6J,EAAQ,SACvC,GAAIzR,EAAQ,EACR,MAAM,IAAIoB,MAAM,wCAEpB,IAAIuH,EAAS3I,EAAM+L,SAAS,IAC5B,GAAc,MAAV6F,EAEIjJ,EAAOxH,OAAS,IAChBwH,EAAS,IAAMA,OAGlB,CACD,MAAMkJ,EAAQ3I,GAAOzB,UAAUmK,EAAQ,SACvC,GAAY,EAARC,EAAYlJ,EAAOxH,OACnB,MAAM,IAAIC,MAAM,SAASpB,mBAAuB6R,KAGpD,KAAOlJ,EAAOxH,OAAkB,EAAR0Q,GACpBlJ,EAAS,IAAMA,EAGvB,MAAO,KAAOA,EAEX,SAASmJ,GAAQL,GACpB,MAAMzR,EAAQkJ,GAAOtB,UAAU6J,EAAQ,SACvC,GAAIzR,EAAQ,EACR,MAAM,IAAIoB,MAAM,wCAEpB,GAAIpB,IAAUuR,GACV,OAAO,IAAI9I,WAAW,IAE1B,IAAIsJ,EAAM/R,EAAM+L,SAAS,IACrBgG,EAAI5Q,OAAS,IACb4Q,EAAM,IAAMA,GAEhB,MAAMpJ,EAAS,IAAIF,WAAWsJ,EAAI5Q,OAAS,GAC3C,IAAK,IAAID,EAAI,EAAGA,EAAIyH,EAAOxH,OAAQD,IAAK,CACpC,MAAM0H,EAAa,EAAJ1H,EACfyH,EAAOzH,GAAK2H,SAASkJ,EAAIjJ,UAAUF,EAAQA,EAAS,GAAI,IAE5D,OAAOD,ECjEX,MAAM4I,GAAO7J,OAAO,GACdsK,GAAOtK,OAAO,GAEb,SAASuK,GAASR,EAAQG,GAC7B,MAAM5R,EAAQkJ,GAAOtB,UAAU6J,EAAQ,SACjCI,EAAQnK,OAAOwB,GAAOzB,UAAUmK,EAAQ,UAE9C,GAAI5R,GAAU6R,EAAQG,GAAO,CAEzB,UAAYhS,GADEgS,IAAQH,GAASG,IACFA,IAEjC,OAAOhS,EAGJ,SAASkS,GAAOT,EAAQG,GAC3B,MAAM5R,EAAQkJ,GAAOtB,UAAU6J,EAAQ,SACjCI,EAAQnK,OAAOwB,GAAOzB,UAAUmK,EAAQ,UAC9C,GAAI5R,EAAQuR,GAAM,CAEd,SAAYvR,GADEgS,IAAQH,GAASG,IACDA,GAElC,OAAOhS,EAEJ,SAASmS,GAAKV,EAAQW,GACzB,MAAMpS,EAAQkJ,GAAOtB,UAAU6J,EAAQ,SACjCY,EAAOnJ,GAAOtB,UAAUwK,EAAO,QACrC,OAAOpS,GAAUgS,IAAQK,GAAQL,GC3BrC,IAWIM,GAAwBC,GAAoBC,GAX5CxQ,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAMxF,MAAMuQ,GAAoB,GAEpBC,GAAchL,QAAQ,GAC5B,SAASiL,GAAWjN,EAASkB,EAAOD,EAAW3G,GAC3C,MAAMuQ,EAAS,CAAE3J,MAAOA,EAAOD,UAAWA,GAI1C,YAHchF,IAAV3B,IACAuQ,EAAOvQ,MAAQA,GAEZkJ,GAAOnD,WAAWL,EAAS,gBAAiB6K,GAGvD,IAAIqC,GAAQ,IACZ,KAAOA,GAAMzR,OAAS,KAClByR,IAASA,GAGb,SAASC,GAAcC,GAInB,OAH0B,iBAAd,GAA0BA,EAAW,GAAKA,EAAW,KAAOA,EAAW,IAC/E5J,GAAOlD,mBAAmB,yBAA0B,WAAY8M,GAE7DpL,OAAO,IAAMkL,GAAM9J,UAAU,EAAGgK,IAEpC,SAASC,GAAYtB,EAAQuB,GACf,MAAbA,IACAA,EAAY,IAEhB,IAAIhT,EAAQkJ,GAAOtB,UAAU6J,EAAQ,SACrC,MACMwB,EAAaJ,GADF3J,GAAOzB,UAAUuL,EAAW,aAEvCE,EAAgBxO,OAAOuO,GACvBE,EAAYnT,EAAQ,EACtBmT,IACAnT,GAAS0S,IAEb,IAAIU,EAAW1O,OAAO1E,EAAQiT,GAE9B,KAAOG,EAASjS,OAAS+R,EAAc/R,OAAS,GAC5CiS,EAAW,IAAMA,EAGrB,KAAOA,EAASjS,OAAS,GAAiD,MAA5CiS,EAAStK,UAAUsK,EAASjS,OAAS,IAC/DiS,EAAWA,EAAStK,UAAU,EAAGsK,EAASjS,OAAS,GAEvD,IAAIwH,EAASjE,OAAO1E,EAAQiT,GAO5B,OAN6B,IAAzBC,EAAc/R,SACdwH,GAAU,IAAMyK,GAEhBD,IACAxK,EAAS,IAAMA,GAEZA,EAEJ,SAAS0K,GAAWrT,EAAOgT,GACb,MAAbA,IACAA,EAAY,IAEhB,MACMC,EAAaJ,GADF3J,GAAOzB,UAAUuL,EAAW,aAEtB,iBAAnB,GAAgChT,EAAM0I,MAAM,gBAC5CQ,GAAOlD,mBAAmB,wBAAyB,QAAShG,GAGhE,MAAMmT,EAAsC,MAA1BnT,EAAM8I,UAAU,EAAG,GACjCqK,IACAnT,EAAQA,EAAM8I,UAAU,IAEd,MAAV9I,GACAkJ,GAAOlD,mBAAmB,gBAAiB,QAAShG,GAGxD,MAAMoP,EAAQpP,EAAMe,MAAM,KACtBqO,EAAMjO,OAAS,GACf+H,GAAOlD,mBAAmB,0BAA2B,QAAShG,GAElE,IAAIsT,EAASlE,EAAM,IAAM,IAAMgE,EAAYhE,EAAM,IAAM,IAEvD,KAAyC,MAAlCgE,EAASA,EAASjS,OAAS,IAC9BiS,EAAWA,EAAStK,UAAU,EAAGsK,EAASjS,OAAS,GAWvD,IARIiS,EAASjS,OAASuD,OAAOuO,GAAY9R,OAAS,GAC9CwR,GAAW,wCAAyC,YAAa,cAGpD,KAAbS,IACAA,EAAW,KAGRA,EAASjS,OAASuD,OAAOuO,GAAY9R,OAAS,GACjDiS,GAAY,IAIhB,IAAIG,EAFe7L,OAAO4L,GAEFL,EADFvL,OAAO0L,GAK7B,OAHID,IACAI,GAAOb,IAEJa,EAEJ,MAAMC,GACT3Q,YAAY4Q,EAAkBC,EAAQ7B,EAAOiB,GACrCW,IAAqBhB,IACrBvJ,GAAOnD,WAAW,2DAA4D,wBAAyB,CACnGY,UAAW,oBAGnB1E,KAAKyR,OAASA,EACdzR,KAAK4P,MAAQA,EACb5P,KAAK6Q,SAAWA,EAChB7Q,KAAK8C,MAAQ2O,EAAS,GAAK,KAAO,QAAUhP,OAAOmN,GAAS,IAAMnN,OAAOoO,GACzE7Q,KAAK0R,YAAcd,GAAcC,GACjC5S,OAAO4J,OAAO7H,MAElBiG,YAAYlI,GACR,GAAIA,aAAiBwT,GACjB,OAAOxT,EAEY,iBAAX,IACRA,EAAQ,YAAYA,KAExB,IAAI0T,GAAS,EACT7B,EAAQ,IACRiB,EAAW,GACf,GAAuB,iBAAX,EACR,GAAc,UAAV9S,QAGC,GAAc,WAAVA,EACL0T,GAAS,MAER,CACD,MAAMhL,EAAQ1I,EAAM0I,MAAM,gCAC1B,IAAKA,EACD,OAAOQ,GAAOlD,mBAAmB,uBAAwB,SAAUhG,GAEvE0T,EAAuB,MAAbhL,EAAM,GAChBmJ,EAAQhJ,SAASH,EAAM,IACvBoK,EAAWjK,SAASH,EAAM,SAG7B,GAAI1I,EAAO,CACZ,MAAMyE,EAAQ,CAAChD,EAAKZ,EAAM+S,IACJ,MAAd5T,EAAMyB,GACCmS,UAEC5T,EAAMyB,KAAUZ,GACxBqI,GAAOlD,mBAAmB,yBAA2BvE,EAAM,QAAUZ,EAAO,IAAK,UAAYY,EAAKzB,EAAMyB,IAErGzB,EAAMyB,IAEjBiS,EAASjP,EAAM,SAAU,UAAWiP,GACpC7B,EAAQpN,EAAM,QAAS,SAAUoN,GACjCiB,EAAWrO,EAAM,WAAY,SAAUqO,GAQ3C,OANIjB,EAAQ,GACR3I,GAAOlD,mBAAmB,gDAAiD,eAAgB6L,GAE3FiB,EAAW,IACX5J,GAAOlD,mBAAmB,4CAA6C,kBAAmB8M,GAEvF,IAAIU,GAAYf,GAAmBiB,EAAQ7B,EAAOiB,IAG1D,MAAMe,GACThR,YAAY4Q,EAAkB1B,EAAK/R,EAAOmO,GACtCmE,GAAuB9M,IAAIvD,MAE3BsQ,GAAmB9P,IAAIR,UAAM,GACzBwR,IAAqBhB,IACrBvJ,GAAOnD,WAAW,2DAA4D,wBAAyB,CACnGY,UAAW,oBAGnB1E,KAAKkM,OAASqF,GAAYpG,KAAKe,GAE/BnM,GAAuBC,KAAMsQ,GAAoBvS,EAAO,KACxDiC,KAAK6R,gBAAiB,EACtB5T,OAAO4J,OAAO7H,MAElB8R,UAAUC,GACNtR,GAAuBT,KAAMqQ,GAAwB,IAAKE,IAA0BhQ,KAAKP,KAAM+R,GAC/F,MAAMC,EAAIZ,GAAW3Q,GAAuBT,KAAMsQ,GAAoB,KAAMtQ,KAAKkM,OAAO2E,UAClFoB,EAAIb,GAAW3Q,GAAuBsR,EAAOzB,GAAoB,KAAMyB,EAAM7F,OAAO2E,UAC1F,OAAOe,GAAYM,UAAUF,EAAIC,EAAGjS,KAAKkM,OAAO2E,SAAU7Q,KAAKkM,QAEnEiG,UAAUJ,GACNtR,GAAuBT,KAAMqQ,GAAwB,IAAKE,IAA0BhQ,KAAKP,KAAM+R,GAC/F,MAAMC,EAAIZ,GAAW3Q,GAAuBT,KAAMsQ,GAAoB,KAAMtQ,KAAKkM,OAAO2E,UAClFoB,EAAIb,GAAW3Q,GAAuBsR,EAAOzB,GAAoB,KAAMyB,EAAM7F,OAAO2E,UAC1F,OAAOe,GAAYM,UAAUF,EAAIC,EAAGjS,KAAKkM,OAAO2E,SAAU7Q,KAAKkM,QAEnEkG,UAAUL,GACNtR,GAAuBT,KAAMqQ,GAAwB,IAAKE,IAA0BhQ,KAAKP,KAAM+R,GAC/F,MAAMC,EAAIZ,GAAW3Q,GAAuBT,KAAMsQ,GAAoB,KAAMtQ,KAAKkM,OAAO2E,UAClFoB,EAAIb,GAAW3Q,GAAuBsR,EAAOzB,GAAoB,KAAMyB,EAAM7F,OAAO2E,UAC1F,OAAOe,GAAYM,UAAWF,EAAIC,EAAKjS,KAAKkM,OAAOwF,YAAa1R,KAAKkM,OAAO2E,SAAU7Q,KAAKkM,QAE/FmG,UAAUN,GACNtR,GAAuBT,KAAMqQ,GAAwB,IAAKE,IAA0BhQ,KAAKP,KAAM+R,GAC/F,MAAMC,EAAIZ,GAAW3Q,GAAuBT,KAAMsQ,GAAoB,KAAMtQ,KAAKkM,OAAO2E,UAClFoB,EAAIb,GAAW3Q,GAAuBsR,EAAOzB,GAAoB,KAAMyB,EAAM7F,OAAO2E,UAC1F,OAAOe,GAAYM,UAAWF,EAAIhS,KAAKkM,OAAOwF,YAAeO,EAAGjS,KAAKkM,OAAO2E,SAAU7Q,KAAKkM,QAE/FoG,QACI,MAAMnF,EAAQnN,KAAK8J,WAAWhL,MAAM,KACf,IAAjBqO,EAAMjO,QACNiO,EAAMxK,KAAK,KAEf,IAAI+D,EAASkL,GAAYzG,KAAKgC,EAAM,GAAInN,KAAKkM,QAC7C,MAAMqG,GAAepF,EAAM,GAAG1G,MAAM,UAIpC,OAHIzG,KAAKwS,cAAgBD,IACrB7L,EAASA,EAAOyL,UAAUM,GAAIC,SAAShM,EAAOwF,UAE3CxF,EAEXiM,UACI,MAAMxF,EAAQnN,KAAK8J,WAAWhL,MAAM,KACf,IAAjBqO,EAAMjO,QACNiO,EAAMxK,KAAK,KAEf,IAAI+D,EAASkL,GAAYzG,KAAKgC,EAAM,GAAInN,KAAKkM,QAC7C,MAAMqG,GAAepF,EAAM,GAAG1G,MAAM,UAIpC,OAHKzG,KAAKwS,cAAgBD,IACtB7L,EAASA,EAAOoL,UAAUW,GAAIC,SAAShM,EAAOwF,UAE3CxF,EAGXkM,MAAM/B,GACc,MAAZA,IACAA,EAAW,GAGf,MAAM1D,EAAQnN,KAAK8J,WAAWhL,MAAM,KAOpC,GANqB,IAAjBqO,EAAMjO,QACNiO,EAAMxK,KAAK,MAEXkO,EAAW,GAAKA,EAAW,IAAOA,EAAW,IAC7C5J,GAAOlD,mBAAmB,wBAAyB,WAAY8M,GAE/D1D,EAAM,GAAGjO,QAAU2R,EACnB,OAAO7Q,KAEX,MAAM6S,EAASjB,GAAYzG,KAAK,IAAMwF,GAAM9J,UAAU,EAAGgK,GAAW7Q,KAAKkM,QACnE4G,EAAOC,GAAKL,SAAS1S,KAAKkM,QAChC,OAAOlM,KAAKoS,UAAUS,GAAQf,UAAUgB,GAAMR,QAAQD,UAAUQ,GAEpEG,SACI,MAAkE,QAA1DvS,GAAuBT,KAAMsQ,GAAoB,MAA4E,MAA1D7P,GAAuBT,KAAMsQ,GAAoB,KAEhIkC,aACI,MAAqE,MAA7D/R,GAAuBT,KAAMsQ,GAAoB,KAAK,GAElExG,WAAa,OAAOrJ,GAAuBT,KAAMsQ,GAAoB,KACrE2C,YAAYtD,GACR,MAAM,IAAIxQ,MAAM,QAYpB+T,gBAAkB,OAAOC,WAAWnT,KAAK8J,YACzC4I,SAASxG,GACL,OAAO0F,GAAYhE,WAAWnN,GAAuBT,KAAMsQ,GAAoB,KAAMpE,GAEzFjG,iBAAiBlI,EAAO8S,EAAW,EAAG3E,EAAS,SAC3C,OAAO0F,GAAYhE,WAAWkD,GAAY/S,EAAO8S,GAAWU,GAAYpG,KAAKe,IAEjFjG,kBAAkBlI,EAAOmO,EAAS,SAC9B,MAAMkH,EAAc7B,GAAYpG,KAAKe,GAC/BmH,EAAUjC,GAAWrT,EAAOqV,EAAYvC,WACzCuC,EAAY3B,QAAU4B,EAAU,GACjC3C,GAAW,oCAAqC,WAAY,QAAS3S,GAEzE,MAAM+R,EACEsD,EAAY3B,OACL/B,GAAMO,GAAOoD,EAASD,EAAYxD,QAEtCF,GAAM2D,EAASD,EAAYxD,MAAQ,GAExC0D,EAAUxC,GAAYuC,EAASD,EAAYvC,UACjD,OAAO,IAAIe,GAAYpB,GAAmBV,EAAKwD,EAASF,GAE5DnN,iBAAiBuJ,EAAQtD,EAAS,SAC9B,MAAMnO,EAAQkJ,GAAO3B,SAASkK,EAAQ,SAChC4D,EAAc7B,GAAYpG,KAAKe,GACrC,GAAInO,EAAMmB,OAASkU,EAAYxD,MAAQ,EACnC,MAAM,IAAIzQ,MAAM,YAEpB,IAAIkU,EAAU9D,GAASxR,GACnBqV,EAAY3B,SACZ4B,EAAUrD,GAASqD,EAASD,EAAYxD,QAE5C,MAAME,EAAMJ,GAAMO,GAAOoD,GAAUD,EAAY3B,OAAS,EAAI,GAAK2B,EAAYxD,QACvE0D,EAAUxC,GAAYuC,EAASD,EAAYvC,UACjD,OAAO,IAAIe,GAAYpB,GAAmBV,EAAKwD,EAASF,GAE5DnN,YAAYlI,EAAOmO,GACf,GAAuB,iBAAX,EACR,OAAO0F,GAAYhE,WAAW7P,EAAOmO,GAEzC,GAAInO,aAAiByI,WACjB,OAAOoL,GAAY2B,UAAUxV,EAAOmO,GAExC,IACI,OAAO0F,GAAYM,UAAUnU,EAAO,EAAGmO,GAE3C,MAAO5K,GAEH,GAAmB,qBAAfA,EAAMC,KACN,MAAMD,EAGd,OAAO2F,GAAOlD,mBAAmB,4BAA6B,QAAShG,GAE3EkI,qBAAqBlI,GACjB,SAAUA,IAASA,EAAM8T,iBAGjCvB,GAAqB,IAAI7O,QAAW4O,GAAyB,IAAI/J,QAAWiK,GAA2B,SAAkCwB,GACjI/R,KAAKkM,OAAOpJ,OAASiP,EAAM7F,OAAOpJ,MAClCmE,GAAOlD,mBAAmB,gDAAiD,QAASgO,IAG5F,MAAMU,GAAMb,GAAYzG,KAAK,GACvB4H,GAAOnB,GAAYzG,KAAK,OCxVxBqI,GAAW,6DACjB,IAAIC,GAAS,KACb,SAASC,GAASC,GACd,GAAc,MAAVF,GAAgB,CAChBA,GAAS,GACT,IAAK,IAAIxU,EAAI,EAAGA,EAAIuU,GAAStU,OAAQD,IACjCwU,GAAOD,GAASvU,IAAMwG,OAAOxG,GAGrC,MAAMyH,EAAS+M,GAAOE,GAItB,OAHc,MAAVjN,GACAO,GAAOlD,mBAAmB,uBAAwB,SAAU4P,GAEzDjN,EAEX,MAAM4I,GAAO7J,OAAO,GACdmO,GAAQnO,OAAO,IACd,SAASoO,GAAarE,GACzB,IAAIzR,EAAQwR,GAAStI,GAAO3B,SAASkK,IACjC9I,EAAS,GACb,KAAO3I,GACH2I,EAAS8M,GAASjP,OAAOxG,EAAQ6V,KAAUlN,EAC3C3I,GAAS6V,GAEb,OAAOlN,EAEJ,SAASoN,GAAa/V,GACzB,IAAI2I,EAAS4I,GACb,IAAK,IAAIrQ,EAAI,EAAGA,EAAIlB,EAAMmB,OAAQD,IAC9ByH,GAAUkN,GACVlN,GAAUgN,GAAS3V,EAAMkB,IAE7B,OAAOyQ,GAAMhJ,GChCjB,MAAMqN,GAAQ,CACV,MACA,OACA,OACA,OACA,QACA,SACA,SAEG,SAASC,GAAYjW,EAAOkW,GAC/B,GAAsB,iBAAV,EAAoB,CAC5B,MAAMvV,EAAQqV,GAAMlP,QAAQoP,IACb,IAAXvV,GACAuI,GAAOlD,mBAAmB,eAAgB,OAAQkQ,GAEtDA,EAAO,EAAIvV,EAEf,OAAOoS,GAAY/S,EAAgB,MAARkW,EAAgBA,EAAO,IAE/C,SAASC,GAAWnW,EAAOkW,GAI9B,GAHuB,iBAAX,GACRhN,GAAOlD,mBAAmB,yBAA0B,QAAShG,GAE3C,iBAAV,EAAoB,CAC5B,MAAMW,EAAQqV,GAAMlP,QAAQoP,IACb,IAAXvV,GACAuI,GAAOlD,mBAAmB,eAAgB,OAAQkQ,GAEtDA,EAAO,EAAIvV,EAEf,OAAO0S,GAAWrT,EAAgB,MAARkW,EAAgBA,EAAO,IAE9C,SAASE,GAAY7C,GACxB,OAAO0C,GAAY1C,EAAK,IAErB,SAAS8C,GAAWC,GACvB,OAAOH,GAAWG,EAAO,ICtCtB,SAASC,GAAYvW,EAAOmB,GAC/B,QAAuB,iBAAnB,IAAgCnB,EAAM0I,MAAM,wBAGxB,iBAAZ,GAAwB1I,EAAMmB,SAAW,EAAI,EAAIA,MAG9C,IAAXA,GAAoBnB,EAAMmB,OAAS,GAAO,IAK3C,SAASqV,GAAYxW,GACxB,OAAQuW,GAAYvW,GAAO,IAAUA,aAAiByI,WCbnD,MCEMS,GAAS,IAAI5D,EDFH,qCEEvB,IAAImR,GAAO,KACPC,GAAS,KACb,IACID,GAAO/O,OAAO,KACdgP,GAAShP,OAAO,OAEpB,MAAOnE,GACHwF,QAAQC,IAAI,qBAAsBzF,GAK/B,SAASoT,GAASC,GAIrB,GAHY,MAARA,GACA1N,GAAOlD,mBAAmB,0BAA2B,OAAQ4Q,GAE3C,iBAAV,EAAoB,CAC5B,IAAIlW,EAAIwI,GAAOzB,UAAUmP,EAAM,QAC/B,MAAMjO,EAAS,GACf,KAAOjI,GACHiI,EAAOkO,QAAY,IAAJnW,GACfA,EAAImI,SAASnE,OAAOhE,EAAI,MAK5B,OAHsB,IAAlBiI,EAAOxH,QACPwH,EAAO/D,KAAK,GAET,IAAI6D,WAAWE,GAE1B,GAAI8N,IAA0B,iBAAlB,EAA4B,CACpC,MAAM9N,EAAS,GACf,KAAOiO,GACHjO,EAAOkO,QAAQrQ,OAAOoQ,EAAOF,KAC7BE,IAASH,GAKb,OAHsB,IAAlB9N,EAAOxH,QACPwH,EAAO/D,KAAK,GAET,IAAI6D,WAAWE,GAE1B,IA9Be3I,EA8BD4W,IA7BkC,mBAAvB5W,EAAiB,YA8BtC,OAAO2W,GAASC,EAAK1B,eA/B7B,IAAmBlV,EAiCf,GAAsB,iBAAV,EAAoB,CAC5B,IAAI+R,EAAM6E,EAIV,IAAK7E,EAAIrJ,MAAM,kBACX,MAAM,IAAItD,WAAW,4BAA4BQ,KAAKC,UAAU+Q,OAEpE,MAAMjO,EAAS,GACf,IAAK,IAAIzH,EAAI,EAAGA,EAAI6Q,EAAI5Q,OAAQD,GAAK,EACjCyH,EAAO/D,KAAKiE,SAASkJ,EAAIjJ,UAAU5H,EAAGA,EAAI,GAAI,KAElD,OAAO,IAAIuH,WAAWE,GAE1B,GAAIiO,aAAgBnO,WAChB,OAAO,IAAIA,WAAWmO,GAE1B,MAAM,IAAItU,UAAU,mBAAmBsD,KAAKC,UAAU+Q,MAEnD,SAASE,GAAgBF,GAI5B,OAHKJ,GAAYI,IACb1N,GAAOlD,mBAAmB,0BAA2B,OAAQ4Q,GAE7DA,aAAgBnO,WACTmO,EAEJD,GAASC,GCrEb,SAASG,GAAaC,GACzB,OAAO,IAAIvO,WAAWwO,OAAO7J,KAAK4J,EAAU,WAGzC,SAASE,GAAaN,GACzB,OAAOK,OAAO7J,KAAKlE,GAAO3B,SAASqP,EAAM,SAAS7K,SAAS,UCJxD,SAASoL,GAAQP,GACpB,MAAMQ,EAAQN,GAAgBF,GAC9B,IAAIjO,EAAS,KACb,IAAK,IAAIzH,EAAI,EAAGA,EAAIkW,EAAMjW,OAAQD,IAAK,CACnC,MAAMR,EAAI0W,EAAMlW,GAChByH,GANc,oBAMe,IAAJjI,IAAa,GANxB,mBAM+C,GAAJA,GAE7D,OAAOiI,EAEJ,SAAS0O,GAASrX,GACrB,IAAI2I,EAASwO,GAAQR,GAAS3W,IAAQ8I,UAAU,GAChD,KAAkC,MAA3BH,EAAOG,UAAU,EAAG,IACvBH,EAASA,EAAOG,UAAU,GAK9B,MAHe,KAAXH,IACAA,EAAS,KAEN,KAAOA,ECfX,SAAS2O,GAAOC,GACnB,MAAO,KAAOA,EAAMlX,KAAKmX,GAAML,GAAQK,GAAG1O,UAAU,KAAIhD,KAAK,IAE1D,SAAS2R,GAAWb,GACvB,OAAIL,GAAYK,GAAM,IACVA,EAAKzV,OAAS,GAAK,EAExB2V,GAAgBF,GAAMzV,OAE1B,SAASuW,GAAUd,EAAMe,EAAOC,GACnC,MAAMR,EAAQN,GAAgBF,GAM9B,OALW,MAAPgB,GAAeA,EAAMR,EAAMjW,QAC3B+H,GAAOnD,WAAW,kCAAmC,iBAAkB,CACnE8R,OAAQT,EAAOjW,OAAQiW,EAAMjW,OAAQyH,OAAQgP,IAG9CT,GAAQC,EAAMtM,MAAgB,MAAT6M,EAAiB,EAAIA,EAAe,MAAPC,EAAeR,EAAMjW,OAASyW,IAEpF,SAASE,GAAelB,GAC3B,IAAIQ,EAAQD,GAAQP,GAAM9N,UAAU,GACpC,KAAgC,MAAzBsO,EAAMtO,UAAU,EAAG,IACtBsO,EAAQA,EAAMtO,UAAU,GAE5B,MAAO,KAAOsO,ECxBlB,SAASW,GAAQnB,EAAMzV,EAAQ6W,GAC3B,MAAMZ,EAAQN,GAAgBF,GAC1BzV,EAASiW,EAAMjW,QACf+H,GAAOnD,WAAW,8BAA+B,iBAAkB,CAC/D8R,OAAQ,IAAIpP,WAAW2O,GACvBjW,OAAQA,EACRyH,OAAQzH,EAAS,IAGzB,MAAMwH,EAAS,IAAIF,WAAWtH,GAQ9B,OAPAwH,EAAOsP,KAAK,GACRD,EACArP,EAAOlG,IAAI2U,EAAOjW,EAASiW,EAAMjW,QAGjCwH,EAAOlG,IAAI2U,EAAO,GAEfD,GAAQxO,GAEZ,SAASuP,GAAatB,EAAMzV,GAC/B,OAAO4W,GAAQnB,EAAMzV,GAAQ,GAE1B,SAASgX,GAAavB,EAAMzV,GAC/B,OAAO4W,GAAQnB,EAAMzV,GAAQ,GC1BjC,IAWIiX,GAAmBC,GAAiBC,GAAoBC,GAAmBC,GAAcC,GAAoBC,GAAmBC,GAAmBC,GAAcC,GAAgBC,GAXjL9W,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAOjF,MACD6W,GAAU,IAAItQ,WADI,IAIlBuQ,GAAiB,CAAC,QAClBtL,GAAS,GACR,MAAMuL,WAAelK,MACxBlM,YAAYoE,EAAO0C,EAAO1J,GAqBtB,OApBAiJ,EAAOnC,cAAcE,EAAOyG,GAAQ,UACpC2C,SAAS1G,GACTyO,GAAkB5S,IAAIvD,MACtBoW,GAAgB5V,IAAIR,UAAM,GAE1BD,GAAuBC,KAAMoW,GAAiB,IAAIa,IAAO,KACrDjZ,GACAA,EAAK4J,SAAQ,CAACpI,EAAKd,KACJ,MAAPc,IAGAiB,GAAuBT,KAAMoW,GAAiB,KAAK9V,IAAId,GACtDiB,GAAuBT,KAAMoW,GAAiB,KAAK1V,IAAIlB,GAAMmD,KAAKjE,GAGnE+B,GAAuBT,KAAMoW,GAAiB,KAAK5V,IAAIhB,EAAK,CAACd,QAIzET,OAAO4J,OAAO7H,MACP,IAAIkX,MAAMlX,KAAM,CACnBU,IAAK,CAACrB,EAAQ8X,EAAMlX,KAChB,GAAsB,iBAAV,EAAoB,CAC5B,GAAIkX,EAAK1Q,MAAM,YAAa,CACxB,MAAM/H,EAAQuI,EAAOzB,UAAU2R,EAAM,UACrC,GAAIzY,EAAQ,GAAKA,GAASsB,KAAKd,OAC3B,MAAM,IAAIiE,WAAW,uBAEzB,MAAMiU,EAAO/X,EAAOX,GAIpB,OAHI0Y,aAAgBjY,OAChBsB,GAAuBT,KAAMmW,GAAmB,IAAKE,IAAoB9V,KAAKP,KAAM,SAAStB,IAAS0Y,GAEnGA,EAGX,GAAID,KAAQ9X,GAAU0X,GAAelS,QAAQsS,IAAS,EAClD,OAAOE,QAAQ3W,IAAIrB,EAAQ8X,EAAMlX,GAGrC,KAAMkX,KAAQ9X,GACV,OAAOA,EAAOiY,SAASH,GAG/B,OAAOE,QAAQ3W,IAAIrB,EAAQ8X,EAAMlX,MAI7C4I,MAAM6M,EAAOC,GACI,MAATD,IACAA,EAAQ,GAED,MAAPC,IACAA,EAAM3V,KAAKd,QAEf,MAAMwH,EAAS,GACf,IAAK,IAAIzH,EAAIyW,EAAOzW,EAAI0W,EAAK1W,IAAK,CAC9B,IAAIlB,EACJ,IACIA,EAAQiC,KAAKf,GAEjB,MAAOqC,GACHvD,EAAQuD,EAAMA,MAElBoF,EAAO/D,KAAK5E,GAEhB,OAAO2I,EAEX4Q,SAASxU,GACL,MAAMpE,EAAQ+B,GAAuBT,KAAMoW,GAAiB,KAAK1V,IAAIoC,GACrE,GAAa,MAATpE,GAAkC,IAAjBA,EAAMQ,OAAc,CACrC,MAAMkY,EAAOpX,KAAKtB,EAAM,IAIxB,OAHI0Y,aAAgBjY,OAChBsB,GAAuBT,KAAMmW,GAAmB,IAAKE,IAAoB9V,KAAKP,KAAM,YAAY2D,KAAKC,UAAUd,KAASsU,GAErHA,EAEX,MAAM,IAAIjY,MAAM,uBAAuBwE,KAAKC,UAAUd,MAE1DmD,iBAAiByB,EAAO1J,GACpB,OAAO,IAAIgZ,GAAOvL,GAAQ/D,EAAO1J,IA6BzC,SAASsZ,GAASvZ,GACd,IAAIoX,EAAQtF,GAAQ9R,GAWpB,OAVIoX,EAAMjW,OAtHU,IAuHhB+H,EAAOnD,WAAW,sBAAuB,iBAAkB,CACvD8R,OAAQT,EACRjW,OAzHY,GA0HZyH,OAAQwO,EAAMjW,SA1HF,KA6HhBiW,EAAMjW,SACNiW,EAAQT,GAASW,GAAO,CAACyB,GAAQjO,MAAMsM,EAAMjW,OA9H7B,IA8HiDiW,MAE9DA,EAtCXiB,GAAkB,IAAI3U,QAAW0U,GAAoB,IAAI7P,QAAW+P,GAAqB,SAA4BvT,EAAMxB,GACvH,MAAMiW,EAAU,IAAIpY,MAAM,0DAA0D2D,KAEpF,MADAyU,EAAQjW,MAAQA,EACViW,GAqCH,MAAMC,GACT5W,YAAYkC,EAAMlE,EAAM6Y,EAAWC,GAC/BtY,EAAiBY,KAAM,CAAE8C,KAAAA,EAAMlE,KAAAA,EAAM6Y,UAAAA,EAAWC,QAAAA,GAAW,CACvD5U,KAAM,SAAUlE,KAAM,SAAU6Y,UAAW,SAAUC,QAAS,YAGtEC,YAAYlU,EAAS1F,GACjB,OAAOkJ,EAAOlD,mBAAmBN,EAASzD,KAAKyX,UAAW1Z,IAG3D,MAAM6Z,GACThX,cACI0V,GAAkB/S,IAAIvD,MAEtBuW,GAAa/V,IAAIR,UAAM,GACvBwW,GAAmBhW,IAAIR,UAAM,GAC7BD,GAAuBC,KAAMuW,GAAc,GAAI,KAC/CxW,GAAuBC,KAAMwW,GAAoB,EAAG,KAEpD7B,WACA,OAAOU,GAAO5U,GAAuBT,KAAMuW,GAAc,MAEzDrX,aAAW,OAAOuB,GAAuBT,KAAMwW,GAAoB,KACvEqB,aAAaC,GACT,OAAOrX,GAAuBT,KAAMsW,GAAmB,IAAKG,IAAmBlW,KAAKP,KAAM0U,GAASoD,EAAOnD,OAG9GoD,WAAWha,GACP,IAAIoX,EAAQT,GAAS3W,GACrB,MAAMia,EAAgB7C,EAAMjW,OA/JZ,GAmKhB,OAHI8Y,IACA7C,EAAQT,GAASW,GAAO,CAACF,EAAO2B,GAAQjO,MAAMmP,OAE3CvX,GAAuBT,KAAMsW,GAAmB,IAAKG,IAAmBlW,KAAKP,KAAMmV,GAG9F8C,WAAWla,GACP,OAAO0C,GAAuBT,KAAMsW,GAAmB,IAAKG,IAAmBlW,KAAKP,KAAMsX,GAASvZ,IAIvGma,sBACI,MAAMvR,EAASlG,GAAuBT,KAAMuW,GAAc,KAAKrX,OAG/D,OAFAuB,GAAuBT,KAAMuW,GAAc,KAAK5T,KAAKmU,IACrD/W,GAAuBC,KAAMwW,GAAoB/V,GAAuBT,KAAMwW,GAAoB,KA9KlF,GA8KmG,KAC3GzY,IACJ0C,GAAuBT,KAAMuW,GAAc,KAAK5P,GAAU2Q,GAASvZ,KAI/EwY,GAAe,IAAI9U,QAAW+U,GAAqB,IAAI/U,QAAW6U,GAAoB,IAAIhQ,QAAWmQ,GAAoB,SAA2B9B,GAGhJ,OAFAlU,GAAuBT,KAAMuW,GAAc,KAAK5T,KAAKgS,GACrD5U,GAAuBC,KAAMwW,GAAoB/V,GAAuBT,KAAMwW,GAAoB,KAAO7B,EAAKzV,OAAQ,KAC/GyV,EAAKzV,QAET,MAAMiZ,GACTvX,YAAY+T,EAAMyD,GACd1B,GAAkBnT,IAAIvD,MACtB2W,GAAanW,IAAIR,UAAM,GACvB4W,GAAepW,IAAIR,UAAM,GACzBZ,EAAiBY,KAAM,CAAEoY,aAAcA,IACvCrY,GAAuBC,KAAM2W,GAAcjC,GAASC,GAAO,KAC3D5U,GAAuBC,KAAM4W,GAAgB,EAAG,KAEhDjC,WAAS,OAAOO,GAAQzU,GAAuBT,KAAM2W,GAAc,MACnEnB,iBAAe,OAAO/U,GAAuBT,KAAM2W,GAAc,KAAKzX,OACtEmZ,eAAa,OAAO5X,GAAuBT,KAAM4W,GAAgB,KACjEzB,YAAU,OAAO,IAAI3O,WAAW/F,GAAuBT,KAAM2W,GAAc,MAE/E2B,UAAU3R,GACN,OAAO,IAAIwR,GAAO1X,GAAuBT,KAAM2W,GAAc,KAAK9N,MAAMpI,GAAuBT,KAAM4W,GAAgB,KAAOjQ,GAAS3G,KAAKoY,YAG9IG,UAAUrZ,EAAQsZ,GACd,IAAIrD,EAAQ1U,GAAuBT,KAAM0W,GAAmB,IAAKG,IAAmBtW,KAAKP,KAAM,EAAGd,IAAUsZ,GAG5G,OAFAzY,GAAuBC,KAAM4W,GAAgBnW,GAAuBT,KAAM4W,GAAgB,KAAOzB,EAAMjW,OAAQ,KAExGiW,EAAMtM,MAAM,EAAG3J,GAG1BuZ,YACI,OAAOlJ,GAASvP,KAAKuY,UAnNL,KAqNpBG,YACI,OAAOjJ,GAASzP,KAAKuY,UAtNL,MAyNxB5B,GAAe,IAAIlV,QAAWmV,GAAiB,IAAInV,QAAWiV,GAAoB,IAAIpQ,QAAWuQ,GAAoB,SAA2BlQ,EAAQzH,EAAQsZ,GAC5J,IAAIG,EA1NgB,GA0NAC,KAAKC,KAAK3Z,EA1NV,IAuOpB,OAZIuB,GAAuBT,KAAM4W,GAAgB,KAAO+B,EAAgBlY,GAAuBT,KAAM2W,GAAc,KAAKzX,SAChHc,KAAKoY,YAAcI,GAAS/X,GAAuBT,KAAM4W,GAAgB,KAAO1X,GAAUuB,GAAuBT,KAAM2W,GAAc,KAAKzX,OAC1IyZ,EAAgBzZ,EAGhB+H,EAAOnD,WAAW,qBAAsB,iBAAkB,CACtD8R,OAAQlB,GAASjU,GAAuBT,KAAM2W,GAAc,MAC5DzX,OAAQuB,GAAuBT,KAAM2W,GAAc,KAAKzX,OACxDyH,OAAQlG,GAAuBT,KAAM4W,GAAgB,KAAO+B,KAIjElY,GAAuBT,KAAM2W,GAAc,KAAK9N,MAAMpI,GAAuBT,KAAM4W,GAAgB,KAAMnW,GAAuBT,KAAM4W,GAAgB,KAAO+B;;ACjPjK,MAAMG,GAAOC,GAAQ,IAAIC,YAAYD,EAAInD,OAAQmD,EAAIE,WAAYL,KAAKtG,MAAMyG,EAAIG,WAAa,IAEvFC,GAAcJ,GAAQ,IAAIK,SAASL,EAAInD,OAAQmD,EAAIE,WAAYF,EAAIG,YAEnEG,GAAO,CAACC,EAAMC,IAAWD,GAAS,GAAKC,EAAWD,IAASC,EAIxE,KAHgF,KAA5D,IAAI/S,WAAW,IAAIwS,YAAY,CAAC,YAAapD,QAAQ,IAIrE,MAAM,IAAIzW,MAAM,+CACN2N,MAAM3B,KAAK,CAAEjM,OAAQ,MAAO,CAACT,EAAGQ,IAAMA,EAAE6K,SAAS,IAAI0P,SAAS,EAAG,OAkCxE,MAAMC,GAAW,MACpB,MAAMC,EAAgC,oBAAXC,QACG,mBAAnBA,OAAOC,SACdD,OAAOC,QAAQC,KAAKF,QACxB,IACI,GAAID,EAAa,CACb,MAAMI,aAAEA,GAAiBJ,EAAY,UACrC,MAAO,IAAM,IAAIxb,SAASI,GAAYwb,EAAaxb,MAG3D,MAAOoH,IACP,MAAO,IAAM,IAAIxH,SAASI,GAAYyb,WAAWzb,EAAS,MAXtC,GAcjBT,eAAemc,GAAUC,EAAOC,EAAMC,GACzC,IAAIC,EAAKC,KAAKC,MACd,IAAK,IAAIrb,EAAI,EAAGA,EAAIgb,EAAOhb,IAAK,CAC5Bkb,EAAGlb,GAEH,MAAMsb,EAAOF,KAAKC,MAAQF,EACtBG,GAAQ,GAAKA,EAAOL,UAElBT,KACNW,GAAMG,IASP,SAASC,GAAQ7F,GAGpB,GAFoB,iBAATA,IACPA,EARD,SAAqB8F,GACxB,GAAmB,iBAARA,EACP,MAAM,IAAIpa,UAAU,2CAA2Coa,GAEnE,OAAO,IAAIC,aAAcC,OAAOF,GAIrBG,CAAYjG,MACjBA,aAAgBnO,YAClB,MAAM,IAAInG,UAAU,iDAAiDsU,MACzE,OAAOA,EAoBJ,SAASkG,GAAaC,GACzB,IAAKvW,OAAOwW,cAAcD,IAAMA,EAAI,EAChC,MAAM,IAAI3b,MAAM,2BAA2B2b,KAa5C,SAASE,GAAWC,GACvB,GAAoB,mBAATA,GAA8C,mBAAhBA,EAAKC,OAC1C,MAAM,IAAI/b,MAAM,mDACpB0b,GAAaI,EAAKE,WAClBN,GAAaI,EAAKG,UAGf,MAAMC,GAETvS,QACI,OAAO9I,KAAKsb,cAKb,SAASC,GAAUC,EAAKC,GAC3B,QAAc/b,IAAV+b,IAAyC,iBAAVA,IAFhBzO,EAEqDyO,EAFL,oBAAxCxd,OAAOyd,UAAU5R,SAASvJ,KAAKyM,IAA8BA,EAAIpM,cAAgB3C,SAGxG,MAAM,IAAIoC,UAAU,yCAHN,IAAC2M,EAKnB,OADa/O,OAAOoN,OAAOmQ,EAAKC,GAG7B,SAASE,GAAgBC,GAC5B,MAAMC,EAASpY,GAAYmY,IAAkBE,OAAOtB,GAAQ/W,IAAUsY,SAChEC,EAAMJ,IAIZ,OAHAC,EAAMV,UAAYa,EAAIb,UACtBU,EAAMT,SAAWY,EAAIZ,SACrBS,EAAMX,OAAS,IAAMU,IACdC,ECnJX,MAAMI,WAAaZ,GACfza,YAAYqa,EAAMiB,GACd9N,QACApO,KAAKmc,UAAW,EAChBnc,KAAKoc,WAAY,EACjBpB,GAAWC,GACX,MAAMzb,EAAMgb,GAAQ0B,GAEpB,GADAlc,KAAKqc,MAAQpB,EAAKC,WACZlb,KAAKqc,iBAAiBhB,IACxB,MAAM,IAAIhb,UAAU,uDACxB,MAAM+a,EAAYpb,KAAKob,SAAWpb,KAAKqc,MAAMjB,SAC7Cpb,KAAKmb,UAAYnb,KAAKqc,MAAMlB,UAC5B,MAAMmB,EAAM,IAAI9V,WAAW4U,GAE3BkB,EAAI9b,IAAIhB,EAAIN,OAASc,KAAKqc,MAAMjB,SAAWH,EAAKC,SAASY,OAAOtc,GAAKuc,SAAWvc,GAChF,IAAK,IAAIP,EAAI,EAAGA,EAAIqd,EAAIpd,OAAQD,IAC5Bqd,EAAIrd,IAAM,GACde,KAAKqc,MAAMP,OAAOQ,GAElBtc,KAAKuc,MAAQtB,EAAKC,SAElB,IAAK,IAAIjc,EAAI,EAAGA,EAAIqd,EAAIpd,OAAQD,IAC5Bqd,EAAIrd,IAAM,IACde,KAAKuc,MAAMT,OAAOQ,GAClBA,EAAItG,KAAK,GAEb8F,OAAOU,GACH,GAAIxc,KAAKoc,UACL,MAAM,IAAIjd,MAAM,yBAEpB,OADAa,KAAKqc,MAAMP,OAAOU,GACXxc,KAEXyc,WAAWC,GACP,GAAI1c,KAAKoc,UACL,MAAM,IAAIjd,MAAM,yBACpB,KAAMud,aAAelW,aAAekW,EAAIxd,SAAWc,KAAKmb,UACpD,MAAM,IAAIhc,MAAM,+BACpB,GAAIa,KAAKmc,SACL,MAAM,IAAIhd,MAAM,+BACpBa,KAAKmc,UAAW,EAChBnc,KAAKqc,MAAMI,WAAWC,GACtB1c,KAAKuc,MAAMT,OAAOY,GAClB1c,KAAKuc,MAAME,WAAWC,GACtB1c,KAAK2c,UAETZ,SACI,MAAMW,EAAM,IAAIlW,WAAWxG,KAAKuc,MAAMpB,WAEtC,OADAnb,KAAKyc,WAAWC,GACTA,EAEXpB,WAAWlQ,GAEPA,IAAOA,EAAKnN,OAAOid,OAAOjd,OAAO2e,eAAe5c,MAAO,KACvD,MAAMuc,MAAEA,EAAKF,MAAEA,EAAKF,SAAEA,EAAQC,UAAEA,EAAShB,SAAEA,EAAQD,UAAEA,GAAcnb,KAQnE,OAPAoL,EAAKA,GACF+Q,SAAWA,EACd/Q,EAAGgR,UAAYA,EACfhR,EAAGgQ,SAAWA,EACdhQ,EAAG+P,UAAYA,EACf/P,EAAGmR,MAAQA,EAAMjB,WAAWlQ,EAAGmR,OAC/BnR,EAAGiR,MAAQA,EAAMf,WAAWlQ,EAAGiR,OACxBjR,EAEXuR,UACI3c,KAAKoc,WAAY,EACjBpc,KAAKuc,MAAMI,UACX3c,KAAKqc,MAAMM,WASZ,MAAME,GAAO,CAAC5B,EAAMzb,EAAKiE,IAAY,IAAIwY,GAAKhB,EAAMzb,GAAKsc,OAAOrY,GAASsY,SCxCzE,SAASe,GAAO7B,EAAM8B,EAAUC,EAAMC,GACzC,MAAM3Q,EAAEA,EAAC4Q,MAAEA,EAAKC,GAAEA,EAAEC,IAAEA,EAAGC,QAAEA,GAlC/B,SAAoBpC,EAAMqC,EAAWC,EAAO9B,GACxCT,GAAWC,GACX,MAAMgC,EAAO1B,GAAU,CAAE2B,MAAO,GAAIM,UAAW,IAAM/B,IAC/CnP,EAAEA,EAAC4Q,MAAEA,EAAKM,UAAEA,GAAcP,EAIhC,GAHApC,GAAavO,GACbuO,GAAaqC,GACbrC,GAAa2C,GACTlR,EAAI,EACJ,MAAM,IAAInN,MAAM,yCACpB,MAAM4d,EAAWvC,GAAQ8C,GACnBN,EAAOxC,GAAQ+C,GAEfJ,EAAK,IAAI3W,WAAW0W,GAEpBE,EAAMP,GAAK3B,OAAOD,EAAM8B,GACxBM,EAAUD,EAAI9B,aAAaQ,OAAOkB,GACxC,MAAO,CAAE1Q,EAAAA,EAAG4Q,MAAAA,EAAOM,UAAAA,EAAWL,GAAAA,EAAIC,IAAAA,EAAKC,QAAAA,GAkBAI,CAAWxC,EAAM8B,EAAUC,EAAMC,GACxE,IAAIS,EACJ,MAAM3E,EAAM,IAAIvS,WAAW,GACrBmX,EAAOxE,GAAWJ,GAClB6E,EAAI,IAAIpX,WAAW4W,EAAIjC,WAE7B,IAAK,IAAI0C,EAAK,EAAGC,EAAM,EAAGA,EAAMZ,EAAOW,IAAMC,GAAOV,EAAIjC,UAAW,CAE/D,MAAM4C,EAAKZ,EAAGa,SAASF,EAAKA,EAAMV,EAAIjC,WACtCwC,EAAKM,SAAS,EAAGJ,GAAI,IAGpBH,EAAOL,EAAQ/B,WAAWoC,IAAO5B,OAAO/C,GAAK0D,WAAWmB,GACzDG,EAAGvd,IAAIod,EAAEI,SAAS,EAAGD,EAAG7e,SACxB,IAAK,IAAIgf,EAAK,EAAGA,EAAK5R,EAAG4R,IAAM,CAE3Bd,EAAI9B,WAAWoC,GAAM5B,OAAO8B,GAAGnB,WAAWmB,GAC1C,IAAK,IAAI3e,EAAI,EAAGA,EAAI8e,EAAG7e,OAAQD,IAC3B8e,EAAG9e,IAAM2e,EAAE3e,IAGvB,OArCJ,SAAsBme,EAAKC,EAASF,EAAIO,EAAME,GAM1C,OALAR,EAAIT,UACJU,EAAQV,UACJe,GACAA,EAAKf,UACTiB,EAAE5H,KAAK,GACAmH,EA+BAgB,CAAaf,EAAKC,EAASF,EAAIO,EAAME,GDmBhDf,GAAK3B,OAAS,CAACD,EAAMzb,IAAQ,IAAIyc,GAAKhB,EAAMzb,GE/DrC,MAAM4e,WAAa/C,GACtBza,YAAYwa,EAAUD,EAAWkD,EAAWC,GACxClQ,QACApO,KAAKob,SAAWA,EAChBpb,KAAKmb,UAAYA,EACjBnb,KAAKqe,UAAYA,EACjBre,KAAKse,KAAOA,EACZte,KAAKmc,UAAW,EAChBnc,KAAKd,OAAS,EACdc,KAAK8d,IAAM,EACX9d,KAAKoc,WAAY,EACjBpc,KAAK4V,OAAS,IAAIpP,WAAW4U,GAC7Bpb,KAAK2d,KAAOxE,GAAWnZ,KAAK4V,QAEhCkG,OAAOnH,GACH,GAAI3U,KAAKoc,UACL,MAAM,IAAIjd,MAAM,yBACpB,MAAMwe,KAAEA,EAAI/H,OAAEA,EAAMwF,SAAEA,EAAQe,SAAEA,GAAanc,KAC7C,GAAImc,EACA,MAAM,IAAIhd,MAAM,+BAEpB,MAAMof,GADN5J,EAAO6F,GAAQ7F,IACEzV,OACjB,IAAK,IAAI4e,EAAM,EAAGA,EAAMS,GAAM,CAC1B,MAAMC,EAAO5F,KAAK6F,IAAIrD,EAAWpb,KAAK8d,IAAKS,EAAMT,GAEjD,GAAIU,IAASpD,EAMbxF,EAAOpV,IAAImU,EAAKqJ,SAASF,EAAKA,EAAMU,GAAOxe,KAAK8d,KAChD9d,KAAK8d,KAAOU,EACZV,GAAOU,EACHxe,KAAK8d,MAAQ1C,IACbpb,KAAK6M,QAAQ8Q,EAAM,GACnB3d,KAAK8d,IAAM,OAXf,CACI,MAAMY,EAAWvF,GAAWxE,GAC5B,KAAOyG,GAAYmD,EAAMT,EAAKA,GAAO1C,EACjCpb,KAAK6M,QAAQ6R,EAAUZ,IAanC,OAFA9d,KAAKd,QAAUyV,EAAKzV,OACpBc,KAAK2e,aACE3e,KAEXyc,WAAWC,GACP,GAAI1c,KAAKoc,UACL,MAAM,IAAIjd,MAAM,yBACpB,KAAMud,aAAelW,aAAekW,EAAIxd,OAASc,KAAKmb,UAClD,MAAM,IAAIhc,MAAM,gCACpB,GAAIa,KAAKmc,SACL,MAAM,IAAIhd,MAAM,+BACpBa,KAAKmc,UAAW,EAIhB,MAAMvG,OAAEA,EAAM+H,KAAEA,EAAIvC,SAAEA,EAAQkD,KAAEA,GAASte,KACzC,IAAI8d,IAAEA,GAAQ9d,KAEd4V,EAAOkI,KAAS,IAChB9d,KAAK4V,OAAOoI,SAASF,GAAK9H,KAAK,GAE3BhW,KAAKqe,UAAYjD,EAAW0C,IAC5B9d,KAAK6M,QAAQ8Q,EAAM,GACnBG,EAAM,GAGV,IAAK,IAAI7e,EAAI6e,EAAK7e,EAAImc,EAAUnc,IAC5B2W,EAAO3W,GAAK,GA/ExB,SAAsB0e,EAAM1E,EAAYlb,EAAOugB,GAC3C,GAAiC,mBAAtBX,EAAKiB,aACZ,OAAOjB,EAAKiB,aAAa3F,EAAYlb,EAAOugB,GAChD,MAAMO,EAAOpZ,OAAO,IACdqZ,EAAWrZ,OAAO,YAClBsZ,EAAKxa,OAAQxG,GAAS8gB,EAAQC,GAC9BE,EAAKza,OAAOxG,EAAQ+gB,GACpBG,EAAIX,EAAO,EAAI,EACfY,EAAIZ,EAAO,EAAI,EACrBX,EAAKwB,UAAUlG,EAAagG,EAAGF,EAAIT,GACnCX,EAAKwB,UAAUlG,EAAaiG,EAAGF,EAAIV,GAyE/BM,CAAajB,EAAMvC,EAAW,EAAG3V,OAAqB,EAAdzF,KAAKd,QAAaof,GAC1Dte,KAAK6M,QAAQ8Q,EAAM,GACnB,MAAMyB,EAAQjG,GAAWuD,GACzB1c,KAAKU,MAAMkH,SAAQ,CAACnJ,EAAGQ,IAAMmgB,EAAMD,UAAU,EAAIlgB,EAAGR,EAAG6f,KAE3DvC,SACI,MAAMnG,OAAEA,EAAMuF,UAAEA,GAAcnb,KAC9BA,KAAKyc,WAAW7G,GAChB,MAAMyJ,EAAMzJ,EAAO/M,MAAM,EAAGsS,GAE5B,OADAnb,KAAK2c,UACE0C,EAEX/D,WAAWlQ,GACPA,IAAOA,EAAK,IAAIpL,KAAKY,aACrBwK,EAAG5K,OAAOR,KAAKU,OACf,MAAM0a,SAAEA,EAAQxF,OAAEA,EAAM1W,OAAEA,EAAMid,SAAEA,EAAQC,UAAEA,EAAS0B,IAAEA,GAAQ9d,KAO/D,OANAoL,EAAGlM,OAASA,EACZkM,EAAG0S,IAAMA,EACT1S,EAAG+Q,SAAWA,EACd/Q,EAAGgR,UAAYA,EACXld,EAASkc,GACThQ,EAAGwK,OAAOpV,IAAIoV,GACXxK,GCxGf,MAAMkU,GAAM,CAACtN,EAAGC,EAAG3F,IAAO0F,EAAIC,GAAOD,EAAI1F,EAEnCiT,GAAM,CAACvN,EAAGC,EAAG3F,IAAO0F,EAAIC,EAAMD,EAAI1F,EAAM2F,EAAI3F,EAI5CkT,GAAW,IAAIxG,YAAY,CAC7B,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UACpF,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UACpF,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,aAIlFyG,GAAK,IAAIzG,YAAY,CACvB,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,aAIlF0G,GAAW,IAAI1G,YAAY,IACjC,MAAM2G,WAAevB,GACjBxd,cACIwN,MAAM,GAAI,GAAI,GAAG,GAGjBpO,KAAK4f,EAAY,EAARH,GAAG,GACZzf,KAAK6f,EAAY,EAARJ,GAAG,GACZzf,KAAK8f,EAAY,EAARL,GAAG,GACZzf,KAAK+f,EAAY,EAARN,GAAG,GACZzf,KAAKggB,EAAY,EAARP,GAAG,GACZzf,KAAKigB,EAAY,EAARR,GAAG,GACZzf,KAAKkgB,EAAY,EAART,GAAG,GACZzf,KAAKmgB,EAAY,EAARV,GAAG,GAEhB/e,MACI,MAAMkf,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,GAAMngB,KACnC,MAAO,CAAC4f,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAGjC3f,IAAIof,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GACrBngB,KAAK4f,EAAQ,EAAJA,EACT5f,KAAK6f,EAAQ,EAAJA,EACT7f,KAAK8f,EAAQ,EAAJA,EACT9f,KAAK+f,EAAQ,EAAJA,EACT/f,KAAKggB,EAAQ,EAAJA,EACThgB,KAAKigB,EAAQ,EAAJA,EACTjgB,KAAKkgB,EAAQ,EAAJA,EACTlgB,KAAKmgB,EAAQ,EAAJA,EAEbtT,QAAQ8Q,EAAMhX,GAEV,IAAK,IAAI1H,EAAI,EAAGA,EAAI,GAAIA,IAAK0H,GAAU,EACnC+Y,GAASzgB,GAAK0e,EAAKyC,UAAUzZ,GAAQ,GACzC,IAAK,IAAI1H,EAAI,GAAIA,EAAI,GAAIA,IAAK,CAC1B,MAAMohB,EAAMX,GAASzgB,EAAI,IACnBqhB,EAAKZ,GAASzgB,EAAI,GAClBshB,EAAKlH,GAAKgH,EAAK,GAAKhH,GAAKgH,EAAK,IAAOA,IAAQ,EAC7CG,EAAKnH,GAAKiH,EAAI,IAAMjH,GAAKiH,EAAI,IAAOA,IAAO,GACjDZ,GAASzgB,GAAMuhB,EAAKd,GAASzgB,EAAI,GAAKshB,EAAKb,GAASzgB,EAAI,IAAO,EAGnE,IAAI2gB,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,GAAMngB,KACjC,IAAK,IAAIf,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,MACMwhB,EAAMN,GADG9G,GAAK2G,EAAG,GAAK3G,GAAK2G,EAAG,IAAM3G,GAAK2G,EAAG,KACzBV,GAAIU,EAAGC,EAAGC,GAAKV,GAASvgB,GAAKygB,GAASzgB,GAAM,EAE/DyhB,GADSrH,GAAKuG,EAAG,GAAKvG,GAAKuG,EAAG,IAAMvG,GAAKuG,EAAG,KAC7BL,GAAIK,EAAGC,EAAGC,GAAM,EACrCK,EAAID,EACJA,EAAID,EACJA,EAAID,EACJA,EAAKD,EAAIU,EAAM,EACfV,EAAID,EACJA,EAAID,EACJA,EAAID,EACJA,EAAKa,EAAKC,EAAM,EAGpBd,EAAKA,EAAI5f,KAAK4f,EAAK,EACnBC,EAAKA,EAAI7f,KAAK6f,EAAK,EACnBC,EAAKA,EAAI9f,KAAK8f,EAAK,EACnBC,EAAKA,EAAI/f,KAAK+f,EAAK,EACnBC,EAAKA,EAAIhgB,KAAKggB,EAAK,EACnBC,EAAKA,EAAIjgB,KAAKigB,EAAK,EACnBC,EAAKA,EAAIlgB,KAAKkgB,EAAK,EACnBC,EAAKA,EAAIngB,KAAKmgB,EAAK,EACnBngB,KAAKQ,IAAIof,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAElCxB,aACIe,GAAS1J,KAAK,GAElB2G,UACI3c,KAAKQ,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9BR,KAAK4V,OAAOI,KAAK,IAOlB,MAAM2K,GAAShF,IAAgB,IAAM,IAAIgE,KC1G1CiB,GAAanb,OAAO,GAAK,GAAK,GAC9BoZ,GAAOpZ,OAAO,IACb,SAASob,GAAQ/F,EAAGgG,GAAK,GAC5B,OAAIA,EACO,CAAE7B,EAAG1a,OAAOuW,EAAI8F,IAAa1B,EAAG3a,OAAQuW,GAAK+D,GAAQ+B,KACzD,CAAE3B,EAAsC,EAAnC1a,OAAQuW,GAAK+D,GAAQ+B,IAAiB1B,EAA4B,EAAzB3a,OAAOuW,EAAI8F,KAE7D,SAAS9hB,GAAMiiB,EAAKD,GAAK,GAC5B,IAAIE,EAAK,IAAIhI,YAAY+H,EAAI7hB,QACzB+hB,EAAK,IAAIjI,YAAY+H,EAAI7hB,QAC7B,IAAK,IAAID,EAAI,EAAGA,EAAI8hB,EAAI7hB,OAAQD,IAAK,CACjC,MAAMggB,EAAEA,EAACC,EAAEA,GAAM2B,GAAQE,EAAI9hB,GAAI6hB,IAChCE,EAAG/hB,GAAIgiB,EAAGhiB,IAAM,CAACggB,EAAGC,GAEzB,MAAO,CAAC8B,EAAIC,GAIT,MAAMC,GAAQ,CAACjC,EAAGC,EAAGiC,IAAMlC,IAAMkC,EAC3BC,GAAQ,CAACnC,EAAGC,EAAGiC,IAAOlC,GAAM,GAAKkC,EAAOjC,IAAMiC,EAE9CE,GAAS,CAACpC,EAAGC,EAAGiC,IAAOlC,IAAMkC,EAAMjC,GAAM,GAAKiC,EAC9CG,GAAS,CAACrC,EAAGC,EAAGiC,IAAOlC,GAAM,GAAKkC,EAAOjC,IAAMiC,EAE/CI,GAAS,CAACtC,EAAGC,EAAGiC,IAAOlC,GAAM,GAAKkC,EAAOjC,IAAOiC,EAAI,GACpDK,GAAS,CAACvC,EAAGC,EAAGiC,IAAOlC,IAAOkC,EAAI,GAAQjC,GAAM,GAAKiC,EAY3D,SAAS5d,GAAIyd,EAAIC,EAAIQ,EAAIC,GAC5B,MAAMxC,GAAK+B,IAAO,IAAMS,IAAO,GAC/B,MAAO,CAAEzC,EAAI+B,EAAKS,GAAOvC,EAAI,GAAK,GAAM,GAAM,EAAGA,EAAO,EAAJA,GAGjD,MAAMyC,GAAQ,CAACV,EAAIS,EAAIE,KAAQX,IAAO,IAAMS,IAAO,IAAME,IAAO,GAC1DC,GAAQ,CAACC,EAAKd,EAAIS,EAAIM,IAAQf,EAAKS,EAAKM,GAAOD,EAAM,GAAK,GAAM,GAAM,EACtEE,GAAQ,CAACf,EAAIS,EAAIE,EAAIK,KAAQhB,IAAO,IAAMS,IAAO,IAAME,IAAO,IAAMK,IAAO,GAC3EC,GAAQ,CAACJ,EAAKd,EAAIS,EAAIM,EAAII,IAAQnB,EAAKS,EAAKM,EAAKI,GAAOL,EAAM,GAAK,GAAM,GAAM,EAC/EM,GAAQ,CAACnB,EAAIS,EAAIE,EAAIK,EAAII,KAAQpB,IAAO,IAAMS,IAAO,IAAME,IAAO,IAAMK,IAAO,IAAMI,IAAO,GAC5FC,GAAQ,CAACR,EAAKd,EAAIS,EAAIM,EAAII,EAAII,IAAQvB,EAAKS,EAAKM,EAAKI,EAAKI,GAAOT,EAAM,GAAK,GAAM,GAAM,GC1C9FU,GAAWC,IAAaC,GAAU,CACrC,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,qBAClE,qBAAsB,qBAAsB,qBAAsB,sBACpEtkB,KAAI0c,GAAKrV,OAAOqV,MAEZ6H,GAAa,IAAI3J,YAAY,IAC7B4J,GAAa,IAAI5J,YAAY,IAC5B,MAAM6J,WAAezE,GACxBxd,cACIwN,MAAM,IAAK,GAAI,IAAI,GAKnBpO,KAAKghB,GAAK,WACVhhB,KAAKihB,IAAK,UACVjhB,KAAKyhB,IAAK,WACVzhB,KAAK0hB,IAAK,WACV1hB,KAAK+hB,GAAK,WACV/hB,KAAK4hB,IAAK,SACV5hB,KAAKmiB,IAAK,WACVniB,KAAKiiB,GAAK,WACVjiB,KAAKuiB,GAAK,WACVviB,KAAKqiB,IAAK,WACVriB,KAAK8iB,IAAK,WACV9iB,KAAK+iB,GAAK,UACV/iB,KAAKgjB,GAAK,UACVhjB,KAAKijB,IAAK,SACVjjB,KAAKkjB,GAAK,WACVljB,KAAKmjB,GAAK,UAGdziB,MACI,MAAMsgB,GAAEA,EAAEC,GAAEA,EAAEQ,GAAEA,EAAEC,GAAEA,EAAEK,GAAEA,EAAEH,GAAEA,EAAEO,GAAEA,EAAEF,GAAEA,EAAEM,GAAEA,EAAEF,GAAEA,EAAES,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,GAAOnjB,KAC3E,MAAO,CAACghB,EAAIC,EAAIQ,EAAIC,EAAIK,EAAIH,EAAIO,EAAIF,EAAIM,EAAIF,EAAIS,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAGxE3iB,IAAIwgB,EAAIC,EAAIQ,EAAIC,EAAIK,EAAIH,EAAIO,EAAIF,EAAIM,EAAIF,EAAIS,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC5DnjB,KAAKghB,GAAU,EAALA,EACVhhB,KAAKihB,GAAU,EAALA,EACVjhB,KAAKyhB,GAAU,EAALA,EACVzhB,KAAK0hB,GAAU,EAALA,EACV1hB,KAAK+hB,GAAU,EAALA,EACV/hB,KAAK4hB,GAAU,EAALA,EACV5hB,KAAKmiB,GAAU,EAALA,EACVniB,KAAKiiB,GAAU,EAALA,EACVjiB,KAAKuiB,GAAU,EAALA,EACVviB,KAAKqiB,GAAU,EAALA,EACVriB,KAAK8iB,GAAU,EAALA,EACV9iB,KAAK+iB,GAAU,EAALA,EACV/iB,KAAKgjB,GAAU,EAALA,EACVhjB,KAAKijB,GAAU,EAALA,EACVjjB,KAAKkjB,GAAU,EAALA,EACVljB,KAAKmjB,GAAU,EAALA,EAEdtW,QAAQ8Q,EAAMhX,GAEV,IAAK,IAAI1H,EAAI,EAAGA,EAAI,GAAIA,IAAK0H,GAAU,EACnCgc,GAAW1jB,GAAK0e,EAAKyC,UAAUzZ,GAC/Bic,GAAW3jB,GAAK0e,EAAKyC,UAAWzZ,GAAU,GAE9C,IAAK,IAAI1H,EAAI,GAAIA,EAAI,GAAIA,IAAK,CAE1B,MAAMmkB,EAA4B,EAArBT,GAAW1jB,EAAI,IACtBokB,EAA4B,EAArBT,GAAW3jB,EAAI,IACtBqkB,EAAMC,GAAWH,EAAMC,EAAM,GAAKE,GAAWH,EAAMC,EAAM,GAAKG,GAAUJ,EAAMC,EAAM,GACpFI,EAAMC,GAAWN,EAAMC,EAAM,GAAKK,GAAWN,EAAMC,EAAM,GAAKM,GAAUP,EAAMC,EAAM,GAEpFO,EAA0B,EAApBjB,GAAW1jB,EAAI,GACrB4kB,EAA0B,EAApBjB,GAAW3jB,EAAI,GACrB6kB,EAAMP,GAAWK,EAAKC,EAAK,IAAME,GAAWH,EAAKC,EAAK,IAAML,GAAUI,EAAKC,EAAK,GAChFG,EAAMN,GAAWE,EAAKC,EAAK,IAAMI,GAAWL,EAAKC,EAAK,IAAMF,GAAUC,EAAKC,EAAK,GAEhFK,EAAOC,GAAUV,EAAKO,EAAKpB,GAAW3jB,EAAI,GAAI2jB,GAAW3jB,EAAI,KAC7DmlB,EAAOC,GAAUH,EAAMZ,EAAKQ,EAAKnB,GAAW1jB,EAAI,GAAI0jB,GAAW1jB,EAAI,KACzE0jB,GAAW1jB,GAAY,EAAPmlB,EAChBxB,GAAW3jB,GAAY,EAAPilB,EAEpB,IAAIlD,GAAEA,EAAEC,GAAEA,EAAEQ,GAAEA,EAAEC,GAAEA,EAAEK,GAAEA,EAAEH,GAAEA,EAAEO,GAAEA,EAAEF,GAAEA,EAAEM,GAAEA,EAAEF,GAAEA,EAAES,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,GAAOnjB,KAEzE,IAAK,IAAIf,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAEzB,MAAMqlB,EAAUf,GAAWhB,EAAIF,EAAI,IAAMkB,GAAWhB,EAAIF,EAAI,IAAM0B,GAAWxB,EAAIF,EAAI,IAC/EkC,EAAUb,GAAWnB,EAAIF,EAAI,IAAMqB,GAAWnB,EAAIF,EAAI,IAAM4B,GAAW1B,EAAIF,EAAI,IAE/EmC,EAAQjC,EAAKO,GAAQP,EAAKS,EAI1ByB,EAAOC,GAAUvB,EAAIoB,EAHblC,EAAKU,GAAQV,EAAKY,EAGUR,GAAUxjB,GAAI2jB,GAAW3jB,IAC7D0lB,EAAMC,GAAUH,EAAMvB,EAAIoB,EAASE,EAAMhC,GAAUvjB,GAAI0jB,GAAW1jB,IAClE4lB,EAAa,EAAPJ,EAENK,EAAUvB,GAAWvC,EAAIC,EAAI,IAAM8C,GAAW/C,EAAIC,EAAI,IAAM8C,GAAW/C,EAAIC,EAAI,IAC/E8D,EAAUrB,GAAW1C,EAAIC,EAAI,IAAMgD,GAAWjD,EAAIC,EAAI,IAAMgD,GAAWjD,EAAIC,EAAI,IAC/E+D,EAAQhE,EAAKS,EAAOT,EAAKe,EAAON,EAAKM,EACrCkD,EAAQhE,EAAKS,EAAOT,EAAKW,EAAOF,EAAKE,EAC3CsB,EAAU,EAALF,EACLG,EAAU,EAALF,EACLD,EAAU,EAALF,EACLG,EAAU,EAALF,EACLD,EAAU,EAALP,EACLQ,EAAU,EAALV,IACFpD,EAAGsD,EAAIrD,EAAGmD,GAAO6C,GAAa,EAAL/C,EAAa,EAALF,EAAc,EAAN0C,EAAe,EAANE,IACrD1C,EAAU,EAALJ,EACLE,EAAU,EAALL,EACLG,EAAU,EAALN,EACLG,EAAU,EAALF,EACLD,EAAU,EAALT,EACLU,EAAU,EAALT,EACL,MAAMkE,EAAMC,GAAUP,EAAKE,EAASE,GACpCjE,EAAKqE,GAAUF,EAAKR,EAAKG,EAASE,GAClC/D,EAAW,EAANkE,IAGNlG,EAAG+B,EAAI9B,EAAG+B,GAAOiE,GAAkB,EAAVllB,KAAKghB,GAAkB,EAAVhhB,KAAKihB,GAAa,EAALD,EAAa,EAALC,MAC3DhC,EAAGwC,EAAIvC,EAAGwC,GAAOwD,GAAkB,EAAVllB,KAAKyhB,GAAkB,EAAVzhB,KAAK0hB,GAAa,EAALD,EAAa,EAALC,MAC3DzC,EAAG8C,EAAI7C,EAAG0C,GAAOsD,GAAkB,EAAVllB,KAAK+hB,GAAkB,EAAV/hB,KAAK4hB,GAAa,EAALG,EAAa,EAALH,MAC3D3C,EAAGkD,EAAIjD,EAAG+C,GAAOiD,GAAkB,EAAVllB,KAAKmiB,GAAkB,EAAVniB,KAAKiiB,GAAa,EAALE,EAAa,EAALF,MAC3DhD,EAAGsD,EAAIrD,EAAGmD,GAAO6C,GAAkB,EAAVllB,KAAKuiB,GAAkB,EAAVviB,KAAKqiB,GAAa,EAALE,EAAa,EAALF,MAC3DpD,EAAG6D,EAAI5D,EAAG6D,GAAOmC,GAAkB,EAAVllB,KAAK8iB,GAAkB,EAAV9iB,KAAK+iB,GAAa,EAALD,EAAa,EAALC,MAC3D9D,EAAG+D,EAAI9D,EAAG+D,GAAOiC,GAAkB,EAAVllB,KAAKgjB,GAAkB,EAAVhjB,KAAKijB,GAAa,EAALD,EAAa,EAALC,MAC3DhE,EAAGiE,EAAIhE,EAAGiE,GAAO+B,GAAkB,EAAVllB,KAAKkjB,GAAkB,EAAVljB,KAAKmjB,GAAa,EAALD,EAAa,EAALC,IAC9DnjB,KAAKQ,IAAIwgB,EAAIC,EAAIQ,EAAIC,EAAIK,EAAIH,EAAIO,EAAIF,EAAIM,EAAIF,EAAIS,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAEzExE,aACIgE,GAAW3M,KAAK,GAChB4M,GAAW5M,KAAK,GAEpB2G,UACI3c,KAAK4V,OAAOI,KAAK,GACjBhW,KAAKQ,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAG9D,MAAM8kB,WAAmBzC,GACrBjiB,cACIwN,QAEApO,KAAKghB,GAAK,UACVhhB,KAAKihB,IAAK,SACVjhB,KAAKyhB,IAAK,WACVzhB,KAAK0hB,IAAK,UACV1hB,KAAK+hB,GAAK,UACV/hB,KAAK4hB,GAAK,WACV5hB,KAAKmiB,IAAK,WACVniB,KAAKiiB,GAAK,WACVjiB,KAAKuiB,IAAK,WACVviB,KAAKqiB,IAAK,WACVriB,KAAK8iB,IAAK,WACV9iB,KAAK+iB,GAAK,WACV/iB,KAAKgjB,GAAK,UACVhjB,KAAKijB,GAAK,UACVjjB,KAAKkjB,GAAK,UACVljB,KAAKmjB,IAAK,WACVnjB,KAAKmb,UAAY,IAGzB,MAAMoK,WAAe1C,GACjBjiB,cACIwN,QAEApO,KAAKghB,IAAK,UACVhhB,KAAKihB,IAAK,WACVjhB,KAAKyhB,GAAK,WACVzhB,KAAK0hB,GAAK,UACV1hB,KAAK+hB,IAAK,WACV/hB,KAAK4hB,GAAK,UACV5hB,KAAKmiB,GAAK,UACVniB,KAAKiiB,IAAK,UACVjiB,KAAKuiB,GAAK,WACVviB,KAAKqiB,IAAK,QACVriB,KAAK8iB,IAAK,WACV9iB,KAAK+iB,GAAK,WACV/iB,KAAKgjB,IAAK,UACVhjB,KAAKijB,GAAK,WACVjjB,KAAKkjB,GAAK,WACVljB,KAAKmjB,IAAK,WACVnjB,KAAKmb,UAAY,IAGlB,MAAMqK,GAAS7J,IAAgB,IAAM,IAAIkH,KACtBlH,IAAgB,IAAM,IAAI2J,KAC9B3J,IAAgB,IAAM,IAAI4J,KC7MzC,MCEMte,GAAS,IAAI5D,EDFH,sCEmBvB,MAAMoiB,GAbN,WACI,GAAoB,oBAATC,KACP,OAAOA,KAEX,GAAsB,oBAAXC,OACP,OAAOA,OAEX,GAAsB,oBAAXC,OACP,OAAOA,OAEX,MAAM,IAAIzmB,MAAM,kCAGF0mB,GAClB,IAAIC,GAASL,GAAUK,QAAUL,GAAUM,SACpC,SAASC,GAAWC,GACvB,OAAQA,GACJ,IAAK,SAAU,OAAOtF,GAAOzF,SAC7B,IAAK,SAAU,OAAOsK,GAAOtK,SAEjC,OAAOjU,GAAOlD,mBAAmB,iCAAkC,YAAakiB,GCvBpF,IAAIC,IAAS,EACb,MAAMC,GAAe,SAAUC,EAAW5mB,EAAKmV,GAC3C,MAAO,KDuBJ,SAAoB0R,EAAO7mB,GAC9B,MAAMymB,EAAQ,CAAAtF,OAAEA,GAAM6E,OAAEA,IAASa,GACjC,OAAY,MAARJ,EACOhf,GAAOlD,mBAAmB,yBAA0B,YAAasiB,GAErExJ,GAAK3B,OAAO+K,EAAMzmB,GC5BX8mB,CAAWF,EAAW5mB,GAAKsc,OAAOnH,GAAMoH,OAAO,QAEjE,IAAIwK,GAAgBJ,GACb,SAASK,GAAYJ,EAAWlK,EAAMuK,GACzC,MAAMjnB,EAAMyH,GAAO3B,SAAS4W,EAAM,OAC5BvH,EAAO1N,GAAO3B,SAASmhB,EAAO,QACpC,OAAOvR,GAAQqR,GAAcH,EAAW5mB,EAAKmV,IAEjD6R,GAAYE,EAAIP,GAChBK,GAAYG,KAAO,WAAcT,IAAS,GAC1CM,GAAYI,SAAW,SAAUC,GAC7B,GAAIX,GACA,MAAM,IAAI/mB,MAAM,yBAEpBonB,GAAgBM,GAEpB5oB,OAAO4J,OAAO2e,IClBd,MAAOM,GAASC,GAAWC,IAAc,CAAC,GAAI,GAAI,IAC5CC,GAAMxhB,OAAO,GACbyhB,GAAMzhB,OAAO,GACb0hB,GAAM1hB,OAAO,GACb2hB,GAAM3hB,OAAO,GACb4hB,GAAQ5hB,OAAO,KACf6hB,GAAS7hB,OAAO,KACtB,IAAK,IAAImN,EAAQ,EAAG2U,EAAIL,GAAKM,EAAI,EAAGC,EAAI,EAAG7U,EAAQ,GAAIA,IAAS,EAE3D4U,EAAGC,GAAK,CAACA,GAAI,EAAID,EAAI,EAAIC,GAAK,GAC/BX,GAAQnkB,KAAK,GAAK,EAAI8kB,EAAID,IAE1BT,GAAUpkB,MAAQiQ,EAAQ,IAAMA,EAAQ,GAAM,EAAK,IAEnD,IAAI7T,EAAIkoB,GACR,IAAK,IAAIS,EAAI,EAAGA,EAAI,EAAGA,IACnBH,GAAMA,GAAKL,IAASK,GAAKH,IAAOE,IAAWD,GACvCE,EAAIJ,KACJpoB,GAAKmoB,KAASA,IAAOzhB,OAAOiiB,IAAMR,IAE1CF,GAAWrkB,KAAK5D,GAEpB,MAAO4oB,GAAaC,IAAelF,GAAUsE,IAAY,GAEnDa,GAAQ,CAAC5I,EAAGC,EAAGiC,IAAMA,EAAI,GNMT,EAAClC,EAAGC,EAAGiC,IAAOjC,GAAMiC,EAAI,GAAQlC,IAAO,GAAKkC,EMN9B2G,CAAW7I,EAAGC,EAAGiC,GNG/B,EAAClC,EAAGC,EAAGiC,IAAOlC,GAAKkC,EAAMjC,IAAO,GAAKiC,EMHD4G,CAAW9I,EAAGC,EAAGiC,GACrE6G,GAAQ,CAAC/I,EAAGC,EAAGiC,IAAMA,EAAI,GNMT,EAAClC,EAAGC,EAAGiC,IAAOlC,GAAMkC,EAAI,GAAQjC,IAAO,GAAKiC,EMN9B8G,CAAWhJ,EAAGC,EAAGiC,GNG/B,EAAClC,EAAGC,EAAGiC,IAAOjC,GAAKiC,EAAMlC,IAAO,GAAKkC,EMHD+G,CAAWjJ,EAAGC,EAAGiC,GA+CpE,MAAMgH,WAAe9M,GAExBza,YAAYwa,EAAU9Q,EAAQ6Q,EAAWiN,GAAY,EAAOC,EAAS,IAcjE,GAbAja,QACApO,KAAKob,SAAWA,EAChBpb,KAAKsK,OAASA,EACdtK,KAAKmb,UAAYA,EACjBnb,KAAKooB,UAAYA,EACjBpoB,KAAKqoB,OAASA,EACdroB,KAAK8d,IAAM,EACX9d,KAAKsoB,OAAS,EACdtoB,KAAKmc,UAAW,EAChBnc,KAAKoc,WAAY,EAEjBvB,GAAaM,GAET,GAAKnb,KAAKob,UAAYpb,KAAKob,UAAY,IACvC,MAAM,IAAIjc,MAAM,4CACpBa,KAAKE,MAAQ,IAAIsG,WAAW,KAC5BxG,KAAKuoB,QAAUzP,GAAI9Y,KAAKE,OAE5BsoB,UAlEG,SAAiBrH,EAAGkH,EAAS,IAChC,MAAMxI,EAAI,IAAI7G,YAAY,IAE1B,IAAK,IAAIpG,EAAQ,GAAKyV,EAAQzV,EAAQ,GAAIA,IAAS,CAE/C,IAAK,IAAI4U,EAAI,EAAGA,EAAI,GAAIA,IACpB3H,EAAE2H,GAAKrG,EAAEqG,GAAKrG,EAAEqG,EAAI,IAAMrG,EAAEqG,EAAI,IAAMrG,EAAEqG,EAAI,IAAMrG,EAAEqG,EAAI,IAC5D,IAAK,IAAIA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC5B,MAAMiB,GAAQjB,EAAI,GAAK,GACjBkB,GAAQlB,EAAI,GAAK,GACjBmB,EAAK9I,EAAE6I,GACPE,EAAK/I,EAAE6I,EAAO,GACdG,EAAKhB,GAAMc,EAAIC,EAAI,GAAK/I,EAAE4I,GAC1BK,EAAKd,GAAMW,EAAIC,EAAI,GAAK/I,EAAE4I,EAAO,GACvC,IAAK,IAAIhB,EAAI,EAAGA,EAAI,GAAIA,GAAK,GACzBtG,EAAEqG,EAAIC,IAAMoB,EACZ1H,EAAEqG,EAAIC,EAAI,IAAMqB,EAIxB,IAAIC,EAAO5H,EAAE,GACT6H,EAAO7H,EAAE,GACb,IAAK,IAAIpiB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,MAAMwa,EAAQwN,GAAUhoB,GAClB8pB,EAAKhB,GAAMkB,EAAMC,EAAMzP,GACvBuP,EAAKd,GAAMe,EAAMC,EAAMzP,GACvB0P,EAAKnC,GAAQ/nB,GACnBgqB,EAAO5H,EAAE8H,GACTD,EAAO7H,EAAE8H,EAAK,GACd9H,EAAE8H,GAAMJ,EACR1H,EAAE8H,EAAK,GAAKH,EAGhB,IAAK,IAAIrB,EAAI,EAAGA,EAAI,GAAIA,GAAK,GAAI,CAC7B,IAAK,IAAID,EAAI,EAAGA,EAAI,GAAIA,IACpB3H,EAAE2H,GAAKrG,EAAEsG,EAAID,GACjB,IAAK,IAAIA,EAAI,EAAGA,EAAI,GAAIA,IACpBrG,EAAEsG,EAAID,KAAO3H,GAAG2H,EAAI,GAAK,IAAM3H,GAAG2H,EAAI,GAAK,IAGnDrG,EAAE,IAAMwG,GAAY/U,GACpBuO,EAAE,IAAMyG,GAAYhV,GAExBiN,EAAE7J,KAAK,GAwBHkT,CAAQlpB,KAAKuoB,QAASvoB,KAAKqoB,QAC3BroB,KAAKsoB,OAAS,EACdtoB,KAAK8d,IAAM,EAEfhC,OAAOnH,GACH,GAAI3U,KAAKoc,UACL,MAAM,IAAIjd,MAAM,yBACpB,GAAIa,KAAKmc,SACL,MAAM,IAAIhd,MAAM,+BACpB,MAAMic,SAAEA,EAAQlb,MAAEA,GAAUF,KAEtBue,GADN5J,EAAO6F,GAAQ7F,IACEzV,OACjB,IAAK,IAAI4e,EAAM,EAAGA,EAAMS,GAAM,CAC1B,MAAMC,EAAO5F,KAAK6F,IAAIrD,EAAWpb,KAAK8d,IAAKS,EAAMT,GACjD,IAAK,IAAI7e,EAAI,EAAGA,EAAIuf,EAAMvf,IACtBiB,EAAMF,KAAK8d,QAAUnJ,EAAKmJ,KAC1B9d,KAAK8d,MAAQ1C,GACbpb,KAAKwoB,SAEb,OAAOxoB,KAEXmpB,SACI,GAAInpB,KAAKmc,SACL,OACJnc,KAAKmc,UAAW,EAChB,MAAMjc,MAAEA,EAAKoK,OAAEA,EAAMwT,IAAEA,EAAG1C,SAAEA,GAAapb,KAEzCE,EAAM4d,IAAQxT,EACU,IAAV,IAATA,IAAwBwT,IAAQ1C,EAAW,GAC5Cpb,KAAKwoB,SACTtoB,EAAMkb,EAAW,IAAM,IACvBpb,KAAKwoB,SAETY,UAAU1M,GACN,GAAI1c,KAAKoc,UACL,MAAM,IAAIjd,MAAM,yBACpB,KAAMud,aAAelW,YACjB,MAAM,IAAIrH,MAAM,iCACpBa,KAAKmpB,SACL,IAAK,IAAIrL,EAAM,EAAGS,EAAM7B,EAAIxd,OAAQ4e,EAAMS,GAAM,CACxCve,KAAKsoB,QAAUtoB,KAAKob,UACpBpb,KAAKwoB,SACT,MAAMhK,EAAO5F,KAAK6F,IAAIze,KAAKob,SAAWpb,KAAKsoB,OAAQ/J,EAAMT,GACzDpB,EAAIlc,IAAIR,KAAKE,MAAM8d,SAAShe,KAAKsoB,OAAQtoB,KAAKsoB,OAAS9J,GAAOV,GAC9D9d,KAAKsoB,QAAU9J,EACfV,GAAOU,EAEX,OAAO9B,EAEX2M,QAAQ3M,GAEJ,IAAK1c,KAAKooB,UACN,MAAM,IAAIjpB,MAAM,yCACpB,OAAOa,KAAKopB,UAAU1M,GAE1B4M,IAAInU,GAEA,OADA0F,GAAa1F,GACNnV,KAAKqpB,QAAQ,IAAI7iB,WAAW2O,IAEvCsH,WAAWC,GACP,GAAIA,EAAIxd,OAASc,KAAKmb,UAClB,MAAM,IAAIhc,MAAM,iCACpB,GAAIa,KAAKmc,SACL,MAAM,IAAIhd,MAAM,+BAIpB,OAHAa,KAAKmpB,SACLnpB,KAAKopB,UAAU1M,GACf1c,KAAK2c,UACED,EAEXX,SACI,OAAO/b,KAAKyc,WAAW,IAAIjW,WAAWxG,KAAKmb,YAE/CwB,UACI3c,KAAKoc,WAAY,EACjBpc,KAAKE,MAAM8V,KAAK,GAEpBsF,WAAWlQ,GACP,MAAMgQ,SAAEA,EAAQ9Q,OAAEA,EAAM6Q,UAAEA,EAASkN,OAAEA,EAAMD,UAAEA,GAAcpoB,KAY3D,OAXAoL,IAAOA,EAAK,IAAI+c,GAAO/M,EAAU9Q,EAAQ6Q,EAAWiN,EAAWC,IAC/Djd,EAAGmd,QAAQ/nB,IAAIR,KAAKuoB,SACpBnd,EAAG0S,IAAM9d,KAAK8d,IACd1S,EAAGkd,OAAStoB,KAAKsoB,OACjBld,EAAG+Q,SAAWnc,KAAKmc,SACnB/Q,EAAGid,OAASA,EAEZjd,EAAGd,OAASA,EACZc,EAAG+P,UAAYA,EACf/P,EAAGgd,UAAYA,EACfhd,EAAGgR,UAAYpc,KAAKoc,UACbhR,GAGf,MAAMme,GAAM,CAACjf,EAAQ8Q,EAAUD,IAAcQ,IAAgB,IAAM,IAAIwM,GAAO/M,EAAU9Q,EAAQ6Q,KACxEoO,GAAI,EAAM,IAAK,IAKfA,GAAI,EAAM,IAAK,IACfA,GAAI,EAAM,IAAK,IACfA,GAAI,EAAM,GAAI,IACZA,GAAI,EAAM,IAAK,IAKlC,MAAMC,GAAaD,GAAI,EAAM,IAAK,IACfA,GAAI,EAAM,IAAK,IACfA,GAAI,EAAM,GAAI,IACxC,MAAME,GAAW,CAACnf,EAAQ8Q,EAAUD,IXvD7B,SAAiCuO,GACpC,MAAM7N,EAAQ,CAAC8N,EAAK1M,IAASyM,EAASzM,GAAMnB,OAAOtB,GAAQmP,IAAM5N,SAC3DC,EAAM0N,EAAS,IAIrB,OAHA7N,EAAMV,UAAYa,EAAIb,UACtBU,EAAMT,SAAWY,EAAIZ,SACrBS,EAAMX,OAAU+B,GAASyM,EAASzM,GAC3BpB,EWiDuC+N,EAAwB,CAAC3M,EAAO,KAAO,IAAIkL,GAAO/M,EAAU9Q,OAAuB5K,IAAfud,EAAKC,MAAsBD,EAAKC,MAAQ/B,GAAW,KACjJsO,GAAS,GAAM,IAAK,IACpBA,GAAS,GAAM,IAAK,IC7M5C,IAAIvD,IAAS,EACb,MAAM2D,GAAa,SAAUlV,GACzB,OAAO6U,GAAW7U,IAEtB,IAAImV,GAAcD,GACX,SAASE,GAAUtD,GACtB,MAAM9R,EAAO1N,GAAO3B,SAASmhB,EAAO,QACpC,OAAOvR,GAAQ4U,GAAYnV,IAE/BoV,GAAUrD,EAAImD,GACdE,GAAUpD,KAAO,WAAcT,IAAS,GACxC6D,GAAUnD,SAAW,SAAUC,GAC3B,GAAIX,GACA,MAAM,IAAI7lB,UAAU,uBAExBypB,GAAcjD,GAElB5oB,OAAO4J,OAAOkiB,IChBd,MAAMC,GAAM,IAAIxjB,WAAW,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IACzEyjB,GAAKzjB,WAAW2E,KAAK,CAAEjM,OAAQ,KAAM,CAACwnB,EAAGznB,IAAMA,IAC/CirB,GAAKD,GAAG7rB,KAAKa,IAAO,EAAIA,EAAI,GAAK,KACvC,IAAIkrB,GAAO,CAACF,IACRG,GAAO,CAACF,IACZ,IAAK,IAAIjrB,EAAI,EAAGA,EAAI,EAAGA,IACnB,IAAK,IAAIyoB,IAAK,CAACyC,GAAMC,IACjB1C,EAAE/kB,KAAK+kB,EAAEzoB,GAAGb,KAAKC,GAAM2rB,GAAI3rB,MACnC,MAAMgsB,GAAS,CACX,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GACtD,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GACtD,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GACtD,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GACtD,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IACxDjsB,KAAKa,GAAM,IAAIuH,WAAWvH,KACtBqrB,GAAUH,GAAK/rB,KAAI,CAACmsB,EAAKtrB,IAAMsrB,EAAInsB,KAAKspB,GAAM2C,GAAOprB,GAAGyoB,OACxD8C,GAAUJ,GAAKhsB,KAAI,CAACmsB,EAAKtrB,IAAMsrB,EAAInsB,KAAKspB,GAAM2C,GAAOprB,GAAGyoB,OACxD+C,GAAK,IAAIzR,YAAY,CAAC,EAAY,WAAY,WAAY,WAAY,aACtE0R,GAAK,IAAI1R,YAAY,CAAC,WAAY,WAAY,WAAY,WAAY,IAEtE2R,GAAO,CAACrR,EAAMC,IAAWD,GAAQC,EAAUD,IAAU,GAAKC,EAEhE,SAASnZ,GAAEwqB,EAAOpD,EAAGC,EAAGoD,GACpB,OAAc,IAAVD,EACOpD,EAAIC,EAAIoD,EACA,IAAVD,EACGpD,EAAIC,GAAOD,EAAIqD,EACR,IAAVD,GACGpD,GAAKC,GAAKoD,EACH,IAAVD,EACGpD,EAAIqD,EAAMpD,GAAKoD,EAEhBrD,GAAKC,GAAKoD,GAGzB,MAAMC,GAAM,IAAI9R,YAAY,IACrB,MAAM+R,WAAkB3M,GAC3Bxd,cACIwN,MAAM,GAAI,GAAI,GAAG,GACjBpO,KAAKgrB,GAAK,WACVhrB,KAAKirB,IAAK,UACVjrB,KAAKkrB,IAAK,WACVlrB,KAAKmrB,GAAK,UACVnrB,KAAKorB,IAAK,WAEd1qB,MACI,MAAMsqB,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,GAAOprB,KAC/B,MAAO,CAACgrB,EAAIC,EAAIC,EAAIC,EAAIC,GAE5B5qB,IAAIwqB,EAAIC,EAAIC,EAAIC,EAAIC,GAChBprB,KAAKgrB,GAAU,EAALA,EACVhrB,KAAKirB,GAAU,EAALA,EACVjrB,KAAKkrB,GAAU,EAALA,EACVlrB,KAAKmrB,GAAU,EAALA,EACVnrB,KAAKorB,GAAU,EAALA,EAEdve,QAAQ8Q,EAAMhX,GACV,IAAK,IAAI1H,EAAI,EAAGA,EAAI,GAAIA,IAAK0H,GAAU,EACnCmkB,GAAI7rB,GAAK0e,EAAKyC,UAAUzZ,GAAQ,GAEpC,IAAI0kB,EAAe,EAAVrrB,KAAKgrB,GAAQM,EAAKD,EAAIE,EAAe,EAAVvrB,KAAKirB,GAAQO,EAAKD,EAAIE,EAAe,EAAVzrB,KAAKkrB,GAAQQ,EAAKD,EAAIE,EAAe,EAAV3rB,KAAKmrB,GAAQS,EAAKD,EAAIE,EAAe,EAAV7rB,KAAKorB,GAAQU,EAAKD,EAGvI,IAAK,IAAIjB,EAAQ,EAAGA,EAAQ,EAAGA,IAAS,CACpC,MAAMmB,EAAS,EAAInB,EACboB,EAAMvB,GAAGG,GAAQqB,EAAMvB,GAAGE,GAC1BsB,EAAK/B,GAAKS,GAAQuB,EAAK/B,GAAKQ,GAC5BwB,EAAK9B,GAAQM,GAAQyB,EAAK7B,GAAQI,GACxC,IAAK,IAAI3rB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,MAAMqtB,EAAM3B,GAAKU,EAAKjrB,GAAEwqB,EAAOW,EAAIE,EAAIE,GAAMb,GAAIoB,EAAGjtB,IAAM+sB,EAAKI,EAAGntB,IAAM4sB,EAAM,EAC9ER,EAAKQ,EAAIA,EAAKF,EAAIA,EAAoB,EAAfhB,GAAKc,EAAI,IAASA,EAAKF,EAAIA,EAAKe,EAG3D,IAAK,IAAIrtB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,MAAMstB,EAAM5B,GAAKW,EAAKlrB,GAAE2rB,EAAQP,EAAIE,EAAIE,GAAMd,GAAIqB,EAAGltB,IAAMgtB,EAAKI,EAAGptB,IAAM6sB,EAAM,EAC/ER,EAAKQ,EAAIA,EAAKF,EAAIA,EAAoB,EAAfjB,GAAKe,EAAI,IAASA,EAAKF,EAAIA,EAAKe,GAI/DvsB,KAAKQ,IAAKR,KAAKirB,GAAKQ,EAAKG,EAAM,EAAI5rB,KAAKkrB,GAAKS,EAAKG,EAAM,EAAI9rB,KAAKmrB,GAAKU,EAAKP,EAAM,EAAItrB,KAAKorB,GAAKC,EAAKG,EAAM,EAAIxrB,KAAKgrB,GAAKO,EAAKG,EAAM,GAEvI/M,aACImM,GAAI9U,KAAK,GAEb2G,UACI3c,KAAKoc,WAAY,EACjBpc,KAAK4V,OAAOI,KAAK,GACjBhW,KAAKQ,IAAI,EAAG,EAAG,EAAG,EAAG,IAOtB,MAAMgsB,GAAY7Q,IAAgB,IAAM,IAAIoP,KC/FnD,IAAI7E,IAAS,EACb,MAAMuG,GAAa,SAAU9X,GACzB,OAAO+X,GAAgB/X,IAE3B,IAAIgY,GAAcF,GACX,SAASD,GAAU/F,GACtB,MAAM9R,EAAO1N,GAAO3B,SAASmhB,EAAO,QACpC,OAAOvR,GAAQyX,GAAYhY,IAE/B6X,GAAU9F,EAAI+F,GACdD,GAAU7F,KAAO,WAAcT,IAAS,GACxCsG,GAAU5F,SAAW,SAAUC,GAC3B,GAAIX,GACA,MAAM,IAAI7lB,UAAU,uBAExBssB,GAAc9F,GAElB5oB,OAAO4J,OAAO2kB,ICjBd,IAAItG,IAAS,EACb,MAAM0G,GAAU,SAAU7P,EAAUC,EAAM6P,EAAYC,EAAQ7G,GAC1D,ON8BG,SAAoBlJ,EAAUC,EAAM6P,EAAYC,EAAQzG,GAC3D,MAAMJ,EAAQ,CAAAtF,OAAEA,GAAM6E,OAAEA,IAASa,GACjC,OAAY,MAARJ,EACOhf,GAAOlD,mBAAmB,2BAA4B,YAAasiB,GAEvEvJ,GAAOmJ,EAAMlJ,EAAUC,EAAM,CAAE1Q,EAAGugB,EAAY3P,MAAO4P,IMnCrDC,CAAWhQ,EAAUC,EAAM6P,EAAYC,EAAQ7G,IAE1D,IAAI+G,GAAWJ,GACR,SAAS9P,GAAOQ,EAAWC,EAAOsP,EAAYC,EAAQ7G,GACzD,MAAMlJ,EAAW9V,GAAO3B,SAASgY,EAAW,YACtCN,EAAO/V,GAAO3B,SAASiY,EAAO,QACpC,OAAOrI,GAAQ8X,GAASjQ,EAAUC,EAAM6P,EAAYC,EAAQ7G,IAEhEnJ,GAAO4J,EAAIkG,GACX9P,GAAO6J,KAAO,WAAcT,IAAS,GACrCpJ,GAAO8J,SAAW,SAAUC,GACxB,GAAIX,GACA,MAAM,IAAI/mB,MAAM,oBAEpB6tB,GAAWnG,GAEf5oB,OAAO4J,OAAOiV,ICpBd,IAAIoJ,IAAS,EACb,MAAM+G,GAAe,SAAU/tB,GAC3B,OAAO,IAAIsH,WPuCR,SAAqBtH,GACxB,GAAc,MAAV4mB,GACA,OAAO7e,GAAOnD,WAAW,kDAAmD,wBAAyB,CACjGY,UAAW,iBAGfxF,GAAU,GAAKA,EAAS,MAASA,EAAS,GAAMA,GAAUA,IAC1D+H,GAAOlD,mBAAmB,iBAAkB,SAAU7E,GAE1D,MAAMwH,EAAS,IAAIF,WAAWtH,GAE9B,OADA4mB,GAAOoH,gBAAgBxmB,GAChBA,EOlDeymB,CAAcjuB,KAExC,IAAIkuB,GAAgBH,GACb,SAASI,GAAYnuB,GACxB,OAAOkuB,GAAcluB,GAEzBmuB,GAAY3G,EAAIuG,GAChBI,GAAY1G,KAAO,WAAcT,IAAS,GAC1CmH,GAAYzG,SAAW,SAAUC,GAC7B,GAAIX,GACA,MAAM,IAAI/mB,MAAM,oBAEpBiuB,GAAgBvG,GAEpB5oB,OAAO4J,OAAOwlB,ICZd,MAAM1C,GAAO,CAAC3Y,EAAGC,IAAOD,GAAKC,EAAMD,IAAO,GAAKC,EAI/C,SAASqb,GAAYC,EAAMC,EAAIhf,EAAOif,EAAI/Q,EAAKgR,GAG3C,IAAIC,EAAMJ,EAAKC,KAAQhf,EAAMif,KAAOG,EAAML,EAAKC,KAAQhf,EAAMif,KACzDI,EAAMN,EAAKC,KAAQhf,EAAMif,KAAOK,EAAMP,EAAKC,KAAQhf,EAAMif,KACzDM,EAAMR,EAAKC,KAAQhf,EAAMif,KAAOO,EAAMT,EAAKC,KAAQhf,EAAMif,KACzDQ,EAAMV,EAAKC,KAAQhf,EAAMif,KAAOS,EAAMX,EAAKC,KAAQhf,EAAMif,KACzDU,EAAMZ,EAAKC,KAAQhf,EAAMif,KAAOW,EAAMb,EAAKC,KAAQhf,EAAMif,KACzDY,EAAMd,EAAKC,KAAQhf,EAAMif,KAAOa,EAAMf,EAAKC,KAAQhf,EAAMif,KACzDc,EAAMhB,EAAKC,KAAQhf,EAAMif,KAAOe,EAAMjB,EAAKC,KAAQhf,EAAMif,KACzDgB,EAAMlB,EAAKC,KAAQhf,EAAMif,KAAOiB,EAAMnB,EAAKC,KAAQhf,EAAMif,KAEzDkB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAE/K,IAAK,IAAIzvB,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACxB8vB,GAAOpE,GAAKgE,EAAMY,EAAM,EAAG,GAC3BJ,GAAOxE,GAAKoE,EAAMJ,EAAM,EAAG,GAC3BY,GAAO5E,GAAKwE,EAAMJ,EAAM,EAAG,IAC3BJ,GAAOhE,GAAK4E,EAAMJ,EAAM,EAAG,IAC3BC,GAAOzE,GAAKqE,EAAMJ,EAAM,EAAG,GAC3BY,GAAO7E,GAAKyE,EAAMJ,EAAM,EAAG,GAC3BJ,GAAOjE,GAAK6E,EAAMJ,EAAM,EAAG,IAC3BJ,GAAOrE,GAAKiE,EAAMY,EAAM,EAAG,IAC3BC,GAAO9E,GAAK0E,EAAMJ,EAAM,EAAG,GAC3BJ,GAAOlE,GAAK8E,EAAMJ,EAAM,EAAG,GAC3BJ,GAAOtE,GAAKkE,EAAMY,EAAM,EAAG,IAC3BJ,GAAO1E,GAAKsE,EAAMJ,EAAM,EAAG,IAC3BC,GAAOnE,GAAK+E,EAAMJ,EAAM,EAAG,GAC3BJ,GAAOvE,GAAKmE,EAAMY,EAAM,EAAG,GAC3BJ,GAAO3E,GAAKuE,EAAMJ,EAAM,EAAG,IAC3BY,GAAO/E,GAAK2E,EAAMJ,EAAM,EAAG,IAC3BN,GAAOjE,GAAKgE,EAAMG,EAAM,EAAG,GAC3BD,GAAOlE,GAAKiE,EAAMD,EAAM,EAAG,GAC3BG,GAAOnE,GAAKkE,EAAMD,EAAM,EAAG,IAC3BD,GAAOhE,GAAKmE,EAAMD,EAAM,EAAG,IAC3BI,GAAOtE,GAAKqE,EAAMD,EAAM,EAAG,GAC3BG,GAAOvE,GAAKsE,EAAMD,EAAM,EAAG,GAC3BD,GAAOpE,GAAKuE,EAAMD,EAAM,EAAG,IAC3BD,GAAOrE,GAAKoE,EAAMG,EAAM,EAAG,IAC3BI,GAAO3E,GAAK0E,EAAMD,EAAM,EAAG,GAC3BD,GAAOxE,GAAK2E,EAAMD,EAAM,EAAG,GAC3BD,GAAOzE,GAAKwE,EAAMG,EAAM,EAAG,IAC3BD,GAAO1E,GAAKyE,EAAMD,EAAM,EAAG,IAC3BI,GAAO5E,GAAK+E,EAAMD,EAAM,EAAG,GAC3BD,GAAO7E,GAAK4E,EAAMG,EAAM,EAAG,GAC3BD,GAAO9E,GAAK6E,EAAMD,EAAM,EAAG,IAC3BG,GAAO/E,GAAK8E,EAAMD,EAAM,EAAG,IAG/B9S,EAAIgR,KAASC,EAAMgB,EAAO,EAC1BjS,EAAIgR,KAASE,EAAMgB,EAAO,EAC1BlS,EAAIgR,KAASG,EAAMgB,EAAO,EAC1BnS,EAAIgR,KAASI,EAAMgB,EAAO,EAC1BpS,EAAIgR,KAASK,EAAMgB,EAAO,EAC1BrS,EAAIgR,KAASM,EAAMgB,EAAO,EAC1BtS,EAAIgR,KAASO,EAAMgB,EAAO,EAC1BvS,EAAIgR,KAASQ,EAAMgB,EAAO,EAC1BxS,EAAIgR,KAASS,EAAMgB,EAAO,EAC1BzS,EAAIgR,KAASU,EAAMgB,EAAO,EAC1B1S,EAAIgR,KAASW,EAAMgB,EAAO,EAC1B3S,EAAIgR,KAASY,EAAMgB,EAAO,EAC1B5S,EAAIgR,KAASa,EAAMgB,EAAO,EAC1B7S,EAAIgR,KAASc,EAAMgB,EAAO,EAC1B9S,EAAIgR,KAASe,EAAMgB,EAAO,EAC1B/S,EAAIgR,KAASgB,EAAMgB,EAAO,EAE9B,SAASC,GAASnhB,EAAOif,EAAI/Q,EAAKgR,EAAIkC,GAElC,IAAIC,EAAOnC,EAAK,EACZoC,EAAOpC,EAAK,GAAKkC,EACrB,IAAK,IAAI3wB,EAAI,EAAGA,EAAI,GAAIA,IACpByd,EAAIoT,EAAO7wB,GAAKuP,EAAMif,EAAmB,IAAb,EAAImC,EAAI,GAAU3wB,GAClD,IAAK,IAAIA,EAAI,EAAGA,EAAI2wB,EAAG3wB,IAAK4wB,GAAQ,GAAIpC,GAAM,GAE1CH,GAAY5Q,EAAKoT,EAAMthB,EAAOif,EAAI/Q,EAAKmT,GACnC5wB,EAAI,IACJ6wB,GAAQ,IACZxC,GAAY5Q,EAAKmT,EAAMrhB,EAAQif,GAAM,GAAK/Q,EAAKoT,GAIvD,SAASC,GAAWhT,EAAUC,EAAMvB,GAEhC,MAAMwB,EAAO1B,GAAU,CACnB2B,MAAO,GACPM,UAAW,GACXwS,OAAQ,YACTvU,IACGwU,EAAEA,EAACL,EAAEA,EAACrhB,EAAEA,EAAC2O,MAAEA,EAAKM,UAAEA,EAASwS,OAAEA,EAAME,WAAEA,GAAejT,EAO1D,GANApC,GAAaoV,GACbpV,GAAa+U,GACb/U,GAAatM,GACbsM,GAAaqC,GACbrC,GAAa2C,GACb3C,GAAamV,QACMtwB,IAAfwwB,GAAkD,mBAAfA,EACnC,MAAM,IAAI/wB,MAAM,iCACpB,MAAMgxB,EAAY,IAAMP,EAClBQ,EAAcD,EAAY,EAChC,GAAIF,GAAK,GAAuB,IAAjBA,EAAKA,EAAI,IAAaA,GAAK,IAAME,EAAY,IAAMF,EAAI,GAAK,GAGvE,MAAM,IAAI9wB,MAAM,+FAEpB,GAAIoP,EAAI,GAAKA,EAAI,aAAuB4hB,EACpC,MAAM,IAAIhxB,MAAM,4FAEpB,GAAI+d,EAAQ,GAAKA,EAAQ,aACrB,MAAM,IAAI/d,MAAM,kFAEpB,MAAMkxB,EAAUF,GAAaF,EAAI1hB,GACjC,GAAI8hB,EAAUL,EACV,MAAM,IAAI7wB,MAAM,iCAAiCkxB,2BAAiCL,cAItF,MAAMnQ,EAAI/C,GAAO6D,GAAQ5D,EAAUC,EAAM,CAAE1Q,EAAG,EAAG4Q,MAAOiT,EAAY5hB,IAC9D+hB,EAAMxX,GAAI+G,GAEV0Q,EAAIzX,GAAI,IAAItS,WAAW2pB,EAAYF,IACnCjU,EAAMlD,GAAI,IAAItS,WAAW2pB,IAC/B,IAAIK,EAAa,OACjB,GAAIN,EAAY,CACZ,MAAMO,EAAgB,EAAIR,EAAI1hB,EAGxBmiB,EAAc9X,KAAK+X,IAAI/X,KAAKtG,MAAMme,EAAgB,KAAQ,GAChE,IAAIG,EAAc,EAClBJ,EAAa,KACTI,KACIV,GAAiBU,EAAcF,GAAgBE,IAAgBH,GAC/DP,EAAWU,EAAcH,IAGrC,MAAO,CAAER,EAAAA,EAAGL,EAAAA,EAAGrhB,EAAAA,EAAG2O,MAAAA,EAAOkT,YAAAA,EAAaG,EAAAA,EAAGD,IAAAA,EAAKzQ,EAAAA,EAAG7D,IAAAA,EAAKwU,WAAAA,EAAYhT,UAAAA,GAEtE,SAASqT,GAAa9T,EAAUG,EAAO2C,EAAG0Q,EAAGvU,GACzC,MAAMqD,EAAMvC,GAAO6D,GAAQ5D,EAAU8C,EAAG,CAAEvT,EAAG,EAAG4Q,MAAAA,IAIhD,OAHA2C,EAAE7J,KAAK,GACPua,EAAEva,KAAK,GACPgG,EAAIhG,KAAK,GACFqJ,ECnJX,IAAIyR,IAAa,EAAOC,IAAc,EACtC,MAAMC,GAAenzB,eAAgBozB,EAAQjU,EAAMiT,EAAGL,EAAGrhB,EAAG2O,EAAOgT,GAC/D,aD2LGryB,eAA2Bkf,EAAUC,EAAMC,GAC9C,MAAMgT,EAAEA,EAACL,EAAEA,EAACrhB,EAAEA,EAAC2O,MAAEA,EAAKkT,YAAEA,EAAWG,EAAEA,EAACD,IAAEA,EAAGzQ,EAAEA,EAAC7D,IAAEA,EAAGwU,WAAEA,EAAUhT,UAAEA,GAAcuS,GAAWhT,EAAUC,EAAMC,GAC1G,IAAK,IAAIuQ,EAAK,EAAGA,EAAKjf,EAAGif,IAAM,CAC3B,MAAMtD,EAAKkG,EAAc5C,EACzB,IAAK,IAAIvuB,EAAI,EAAGA,EAAImxB,EAAanxB,IAC7BsxB,EAAEtxB,GAAKqxB,EAAIpG,EAAKjrB,GACpB,IAAI6e,EAAM,QACJ9D,GAAUiW,EAAI,EAAGzS,GAAYve,IAC/B0wB,GAASY,EAAGzS,EAAKyS,EAAIzS,GAAOsS,EAAcR,GAC1CY,OAEJb,GAASY,GAAIN,EAAI,GAAKG,EAAaE,EAAKpG,EAAI0F,GAC5CY,UACMxW,GAAUiW,EAAGzS,GAAYve,IAE3B,MAAMyoB,EAAI4I,EAAIpG,EAAKkG,EAAc,IAAMH,EACvC,IAAK,IAAI5xB,EAAI,EAAGA,EAAI+xB,EAAa/xB,IAC7B2d,EAAI3d,GAAKiyB,EAAIpG,EAAK7rB,GAAKkyB,EAAE7I,EAAI0I,EAAc/xB,GAC/CsxB,GAAS3T,EAAK,EAAGsU,EAAKpG,EAAI0F,GAC1BY,OAGR,OAAOK,GAAa9T,EAAUG,EAAO2C,EAAG0Q,EAAGvU,GCjN9BkV,CAAYD,EAAQjU,EAAM,CAAEiT,EAAAA,EAAGL,EAAAA,EAAGrhB,EAAAA,EAAG2O,MAAAA,EAAOgT,WAAAA,KAEvDiB,GAAc,SAAUF,EAAQjU,EAAMiT,EAAGL,EAAGrhB,EAAG2O,GACjD,OD8JG,SAAgBH,EAAUC,EAAMC,GACnC,MAAMgT,EAAEA,EAACL,EAAEA,EAACrhB,EAAEA,EAAC2O,MAAEA,EAAKkT,YAAEA,EAAWG,EAAEA,EAACD,IAAEA,EAAGzQ,EAAEA,EAAC7D,IAAEA,EAAGwU,WAAEA,GAAeT,GAAWhT,EAAUC,EAAMC,GAC/F,IAAK,IAAIuQ,EAAK,EAAGA,EAAKjf,EAAGif,IAAM,CAC3B,MAAMtD,EAAKkG,EAAc5C,EACzB,IAAK,IAAIvuB,EAAI,EAAGA,EAAImxB,EAAanxB,IAC7BsxB,EAAEtxB,GAAKqxB,EAAIpG,EAAKjrB,GACpB,IAAK,IAAIA,EAAI,EAAG6e,EAAM,EAAG7e,EAAIgxB,EAAI,EAAGhxB,IAChC0wB,GAASY,EAAGzS,EAAKyS,EAAIzS,GAAOsS,EAAcR,GAC1CY,IAEJb,GAASY,GAAIN,EAAI,GAAKG,EAAaE,EAAKpG,EAAI0F,GAC5CY,IACA,IAAK,IAAIvxB,EAAI,EAAGA,EAAIgxB,EAAGhxB,IAAK,CAExB,MAAMyoB,EAAI4I,EAAIpG,EAAKkG,EAAc,IAAMH,EACvC,IAAK,IAAI5xB,EAAI,EAAGA,EAAI+xB,EAAa/xB,IAC7B2d,EAAI3d,GAAKiyB,EAAIpG,EAAK7rB,GAAKkyB,EAAE7I,EAAI0I,EAAc/xB,GAC/CsxB,GAAS3T,EAAK,EAAGsU,EAAKpG,EAAI0F,GAC1BY,KAGR,OAAOK,GAAa9T,EAAUG,EAAO2C,EAAG0Q,EAAGvU,GCnLpCoV,CAAWH,EAAQjU,EAAM,CAAEiT,EAAAA,EAAGL,EAAAA,EAAGrhB,EAAAA,EAAG2O,MAAAA,KAE/C,IAAImU,GAAgBL,GAChBM,GAAeH,GACZtzB,eAAe0zB,GAAOC,EAASjU,EAAO0S,EAAGL,EAAGrhB,EAAG2O,EAAOuU,GACzD,MAAMR,EAAShqB,GAAO3B,SAASksB,EAAS,UAClCxU,EAAO/V,GAAO3B,SAASiY,EAAO,QACpC,OAAO4C,SAAQkR,GAAcJ,EAAQjU,EAAMiT,EAAGL,EAAGrhB,EAAG2O,EAAOuU,IAWxD,SAASC,GAAWF,EAASjU,EAAO0S,EAAGL,EAAGrhB,EAAG2O,GAChD,MAAM+T,EAAShqB,GAAO3B,SAASksB,EAAS,UAClCxU,EAAO/V,GAAO3B,SAASiY,EAAO,QACpC,OAAO4C,GAAEmR,GAAaL,EAAQjU,EAAMiT,EAAGL,EAAGrhB,EAAG2O,IAZjDqU,GAAO7K,EAAIsK,GACXO,GAAO5K,KAAO,WAAcoK,IAAc,GAC1CQ,GAAO3K,SAAW,SAAUC,GACxB,GAAIkK,GACA,MAAM,IAAI5xB,MAAM,oBAEpBkyB,GAAgBxK,GAEpB5oB,OAAO4J,OAAO0pB,IAMdG,GAAWhL,EAAIyK,GACfO,GAAW/K,KAAO,WAAcmK,IAAa,GAC7CY,GAAW9K,SAAW,SAAUC,GAC5B,GAAIiK,GACA,MAAM,IAAI3xB,MAAM,wBAEpBmyB,GAAezK,GAEnB5oB,OAAO4J,OAAO6pB,ICpCd,MAAMC,GAAU,SAAUhd,GACtB,OAAOqR,GAAW,UAAUlK,OAAOnH,GAAMoH,UAEvC6V,GAAU,SAAUjd,GACtB,OAAOqR,GAAW,UAAUlK,OAAOnH,GAAMoH,UAE7C,IAAI8V,GAAWF,GACXG,GAAWF,GACXG,IAAY,EAAOC,IAAY,EAC5B,SAASrR,GAAO8F,GACnB,MAAM9R,EAAO1N,GAAO3B,SAASmhB,EAAO,QACpC,OAAOvR,GAAQ2c,GAASld,IAWrB,SAAS6Q,GAAOiB,GACnB,MAAM9R,EAAO1N,GAAO3B,SAASmhB,EAAO,QACpC,OAAOvR,GAAQ4c,GAASnd,IClBrB,SAASgS,KACZH,GAAYG,OACZoD,GAAUpD,OACV7J,GAAO6J,OACP0G,GAAY1G,OACZ6F,GAAU7F,OACV4K,GAAO5K,OACP+K,GAAW/K,OACXhG,GAAOgG,OACPnB,GAAOmB,ODFXhG,GAAO+F,EAAIiL,GACXhR,GAAOgG,KAAO,WAAcoL,IAAY,GACxCpR,GAAOiG,SAAW,SAAUC,GACxB,GAAIkL,GACA,MAAM,IAAI5yB,MAAM,oBAEpB0yB,GAAWhL,GAEf5oB,OAAO4J,OAAO8Y,IAKd6E,GAAOkB,EAAIkL,GACXpM,GAAOmB,KAAO,WAAcqL,IAAY,GACxCxM,GAAOoB,SAAW,SAAUC,GACxB,GAAImL,GACA,MAAM,IAAI7yB,MAAM,oBAEpB2yB,GAAWjL,GAEf5oB,OAAO4J,OAAO8Y,IErCP,MCEM1Z,GAAS,IAAI5D,EDFH,uCEGjBiM,GAAO7J,OAAO,GACdwsB,GAAQxsB,OAAO,IACrB,SAASysB,GAAmBC,GAKxB,MAAMC,GADND,EAAUA,EAAQ/rB,eACIS,UAAU,GAAG/H,MAAM,IACnCuzB,EAAW,IAAI7rB,WAAW,IAChC,IAAK,IAAIvH,EAAI,EAAGA,EAAI,GAAIA,IACpBozB,EAASpzB,GAAKmzB,EAAMnzB,GAAGqzB,WAAW,GAEtC,MAAMC,EAAS7d,GAASqV,GAAUsI,IAClC,IAAK,IAAIpzB,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACpBszB,EAAOtzB,GAAK,IAAM,GAAM,IACzBmzB,EAAMnzB,GAAKmzB,EAAMnzB,GAAGuzB,gBAEF,GAAjBD,EAAOtzB,GAAK,KAAc,IAC3BmzB,EAAMnzB,EAAI,GAAKmzB,EAAMnzB,EAAI,GAAGuzB,eAGpC,MAAO,KAAOJ,EAAMvuB,KAAK,IAI7B,MAAM4uB,GAAa,GACnB,IAAK,IAAIxzB,EAAI,EAAGA,EAAI,GAAIA,IACpBwzB,GAAWhwB,OAAOxD,IAAMwD,OAAOxD,GAEnC,IAAK,IAAIA,EAAI,EAAGA,EAAI,GAAIA,IACpBwzB,GAAWhwB,OAAOC,aAAa,GAAKzD,IAAMwD,OAAO,GAAKxD,GAK1D,SAASyzB,GAAaP,GAGlB,IAAIE,GADJF,GADAA,EAAUA,EAAQK,eACA3rB,UAAU,GAAKsrB,EAAQtrB,UAAU,EAAG,GAAK,MACpC/H,MAAM,IAAIV,KAAKkO,GAAemmB,GAAWnmB,KAAOzI,KAAK,IAE5E,KAAOwuB,EAASnzB,QAND,IAMuB,CAClC,IAAIyzB,EAAQN,EAASxrB,UAAU,EAPpB,IAQXwrB,EAAWzrB,SAAS+rB,EAAO,IAAM,GAAKN,EAASxrB,UAAU8rB,EAAMzzB,QAEnE,IAAI0zB,EAAWnwB,OAAO,GAAMmE,SAASyrB,EAAU,IAAM,IACrD,KAAOO,EAAS1zB,OAAS,GACrB0zB,EAAW,IAAMA,EAErB,OAAOA,EAGX,MAAMC,GAAS,WAEX,MAAMnsB,EAAS,GACf,IAAK,IAAIzH,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAEzByH,EADY,uCAAuCzH,IACrCwG,OAAOxG,GAEzB,OAAOyH,EAPI,GAiBR,SAASosB,GAAWX,GAIvB,GAHyB,iBAAb,GACRlrB,GAAOlD,mBAAmB,kBAAmB,UAAWouB,GAExDA,EAAQ1rB,MAAM,0BAA2B,CAET,OAA5B0rB,EAAQtrB,UAAU,EAAG,KACrBsrB,EAAU,KAAOA,GAErB,MAAMzrB,EAASwrB,GAAmBC,GAKlC,OAHIA,EAAQ1rB,MAAM,kCAAoCC,IAAWyrB,GAC7DlrB,GAAOlD,mBAAmB,uBAAwB,UAAWouB,GAE1DzrB,EAGX,GAAIyrB,EAAQ1rB,MAAM,kCAAmC,CAE7C0rB,EAAQtrB,UAAU,EAAG,KAAO6rB,GAAaP,IACzClrB,GAAOlD,mBAAmB,oBAAqB,UAAWouB,GAE9D,IAAIzrB,EA9BZ,SAAoB3I,GAChBA,EAAQA,EAAMqI,cACd,IAAIM,EAAS4I,GACb,IAAK,IAAIrQ,EAAI,EAAGA,EAAIlB,EAAMmB,OAAQD,IAC9ByH,EAASA,EAASurB,GAAQY,GAAO90B,EAAMkB,IAE3C,OAAOyH,EAwBUqsB,CAAWZ,EAAQtrB,UAAU,IAAIiD,SAAS,IACvD,KAAOpD,EAAOxH,OAAS,IACnBwH,EAAS,IAAMA,EAEnB,OAAOwrB,GAAmB,KAAOxrB,GAErC,OAAOO,GAAOlD,mBAAmB,kBAAmB,UAAWouB,GAE5D,SAASa,GAAeb,GAE3B,IAAIc,EAASxtB,OAAOqtB,GAAWX,IAAUroB,SAAS,IAAI0oB,cACtD,KAAOS,EAAO/zB,OAAS,IACnB+zB,EAAS,IAAMA,EAEnB,MAAO,KAAOP,GAAa,OAASO,GAAUA,EC3G3C,MCEMhsB,GAAS,IAAI5D,EDFH,mCEEvB,SAAS6vB,GAAgBn1B,GACrB,MAAM2I,EAAS,GACf,KAAO3I,GACH2I,EAAOkO,QAAgB,IAAR7W,GACfA,IAAU,EAEd,OAAO2I,EAEX,SAASysB,GAAQtwB,GACb,GAAIiK,MAAMN,QAAQ3J,GAAS,CACvB,IAAIuwB,EAAU,GAId,GAHAvwB,EAAO+E,SAAQ,SAAUyrB,GACrBD,EAAUA,EAAQ/d,OAAO8d,GAAQE,OAEjCD,EAAQl0B,QAAU,GAElB,OADAk0B,EAAQxe,QAAQ,IAAOwe,EAAQl0B,QACxBk0B,EAEX,MAAMl0B,EAASg0B,GAAgBE,EAAQl0B,QAEvC,OADAA,EAAO0V,QAAQ,IAAO1V,EAAOA,QACtBA,EAAOmW,OAAO+d,GAEzB,MAAMze,EAAO7H,MAAM4O,UAAU7S,MAAMtI,KAAK0G,GAAO3B,SAASzC,EAAQ,WAChE,GAAoB,IAAhB8R,EAAKzV,QAAgByV,EAAK,IAAM,IAChC,OAAOA,EAEN,GAAIA,EAAKzV,QAAU,GAEpB,OADAyV,EAAKC,QAAQ,IAAOD,EAAKzV,QAClByV,EAEX,MAAMzV,EAASg0B,GAAgBve,EAAKzV,QAEpC,OADAA,EAAO0V,QAAQ,IAAO1V,EAAOA,QACtBA,EAAOmW,OAAOV,GAGlB,SAAS2e,GAAUzwB,GACtB,IAAI6D,EAAS,KACb,IAAK,MAAMjI,KAAK00B,GAAQtwB,GACpB6D,GAJQ,mBAIUjI,GAAK,GACvBiI,GALQ,mBAKc,GAAJjI,GAEtB,OAAOiI,ECxCX,SAAS6sB,GAAYx1B,GACjB,IAAI2I,EAAS3I,EAAM+L,SAAS,IAC5B,KAAOpD,EAAOxH,OAAS,GACnBwH,EAAS,IAAMA,EAEnB,MAAO,KAAOA,EAElB,SAAS8sB,GAAkB7e,EAAMhO,EAAQzH,GACrC,IAAIwH,EAAS,EACb,IAAK,IAAIzH,EAAI,EAAGA,EAAIC,EAAQD,IACxByH,EAAmB,IAATA,EAAgBiO,EAAKhO,EAAS1H,GAE5C,OAAOyH,EAEX,SAAS+sB,GAAgB9e,EAAMhO,EAAQ+sB,EAAax0B,GAChD,MAAMwH,EAAS,GACf,KAAOgtB,EAAc/sB,EAAS,EAAIzH,GAAQ,CACtC,MAAMy0B,EAAUC,GAAQjf,EAAM+e,GAC9BhtB,EAAO/D,KAAKgxB,EAAQjtB,SACpBgtB,GAAeC,EAAQtb,UACL1R,EAAS,EAAIzH,GAC3B+H,GAAOnD,WAAW,uBAAwB,iBAAkB,CACxD8R,OAAQjB,EAAMzV,OAAAA,EAAQyH,OAAAA,IAIlC,MAAO,CAAE0R,SAAW,EAAInZ,EAASwH,OAAQA,GAG7C,SAASktB,GAAQjf,EAAMhO,GACC,IAAhBgO,EAAKzV,QACL+H,GAAOnD,WAAW,iBAAkB,iBAAkB,CAClD8R,OAAQjB,EAAMzV,OAAQ,EAAGyH,OAAQ,IAGzC,MAAMktB,EAAeltB,IACbA,EAASgO,EAAKzV,QACd+H,GAAOnD,WAAW,+BAAgC,iBAAkB,CAChE8R,OAAQjB,EAAMzV,OAAQyV,EAAKzV,OAAQyH,OAAAA,KAK/C,GAAIgO,EAAKhO,IAAW,IAAM,CACtB,MAAMmtB,EAAenf,EAAKhO,GAAU,IACpCktB,EAAYltB,EAAS,EAAImtB,GACzB,MAAM50B,EAASs0B,GAAkB7e,EAAMhO,EAAS,EAAGmtB,GAEnD,OADAD,EAAYltB,EAAS,EAAImtB,EAAe50B,GACjCu0B,GAAgB9e,EAAMhO,EAAQA,EAAS,EAAImtB,EAAcA,EAAe50B,GAE9E,GAAIyV,EAAKhO,IAAW,IAAM,CAC3B,MAAMzH,EAASyV,EAAKhO,GAAU,IAE9B,OADAktB,EAAYltB,EAAS,EAAIzH,GAClBu0B,GAAgB9e,EAAMhO,EAAQA,EAAS,EAAGzH,GAEhD,GAAIyV,EAAKhO,IAAW,IAAM,CAC3B,MAAMmtB,EAAenf,EAAKhO,GAAU,IACpCktB,EAAYltB,EAAS,EAAImtB,GACzB,MAAM50B,EAASs0B,GAAkB7e,EAAMhO,EAAS,EAAGmtB,GACnDD,EAAYltB,EAAS,EAAImtB,EAAe50B,GAExC,MAAO,CAAEmZ,SAAW,EAAIyb,EAAe50B,EAASwH,OADjCwO,GAAQP,EAAK9L,MAAMlC,EAAS,EAAImtB,EAAcntB,EAAS,EAAImtB,EAAe50B,KAGxF,GAAIyV,EAAKhO,IAAW,IAAM,CAC3B,MAAMzH,EAASyV,EAAKhO,GAAU,IAC9BktB,EAAYltB,EAAS,EAAIzH,GAEzB,MAAO,CAAEmZ,SAAW,EAAInZ,EAASwH,OADlBwO,GAAQP,EAAK9L,MAAMlC,EAAS,EAAGA,EAAS,EAAIzH,KAG/D,MAAO,CAAEmZ,SAAU,EAAG3R,OAAQ6sB,GAAY5e,EAAKhO,KAE5C,SAASotB,GAAUtN,GACtB,MAAM9R,EAAO1N,GAAO3B,SAASmhB,EAAO,QAC9BkN,EAAUC,GAAQjf,EAAM,GAI9B,OAHIgf,EAAQtb,WAAa1D,EAAKzV,QAC1B+H,GAAOlD,mBAAmB,oCAAqC,OAAQ0iB,GAEpEkN,EAAQjtB,OC1EZ,SAASstB,GAAiBC,GAC7B,MAAM9oB,EAAO2nB,GAAWmB,EAAG9oB,MAE3B,IAAI+oB,EADUjtB,GAAOtB,UAAUsuB,EAAGE,MAAO,YACpBrqB,SAAS,IAU9B,OARIoqB,EADa,MAAbA,EACW,KAENA,EAASh1B,OAAS,EACZ,MAAQg1B,EAGR,KAAOA,EAEfpB,GAAWrd,GAAUsU,GAAUuJ,GAAU,CAACnoB,EAAM+oB,KAAa,KAEjE,SAASE,GAAkBC,EAAO9W,EAAO+W,GAC5C,MAAMnpB,EAAO2nB,GAAWuB,GAClBrX,EAAO/V,GAAO3B,SAASiY,EAAO,QAC9BgX,EAAettB,GAAO3B,SAASgvB,EAAe,gBAOpD,OANoB,KAAhBtX,EAAK9d,QACL+H,GAAOlD,mBAAmB,wBAAyB,OAAQwZ,GAEnC,KAAxBgX,EAAar1B,QACb+H,GAAOlD,mBAAmB,gCAAiC,eAAgBuwB,GAExExB,GAAWrd,GAAUsU,GAAU1U,GAAO,CAAC,OAAQlK,EAAM6R,EAAMuX,KAAiB,KC7BhF,SAASC,GAAcz2B,GAC1B,OAAQA,GAAuC,mBAAtBA,EAAgB,WAEtC,SAAS02B,GAAU12B,GACtB,IAEI,OADA+0B,GAAW/0B,IACJ,EAEX,MAAOuD,IACP,OAAO,EAOJzD,eAAe62B,GAAer1B,EAAQs1B,GAEzC,GAAwB,iBAAZ,EAAsB,CAC9B,GAAIt1B,EAAOoH,MAAM,qBACb,OAAOqsB,GAAWzzB,GAEtB,GAAgB,MAAZs1B,EACA,OAAO1tB,GAAOnD,WAAW,qCAAsC,wBAAyB,CACpFY,UAAW,gBAGnB,MAAMgC,QAAeiuB,EAASC,YAAYv1B,GAC1C,OAAc,MAAVqH,GAA6B,+CAAXA,EACXO,GAAOnD,WAAW,oBAAqB,oBAAqB,CAAE/F,MAAOsB,IAEzEyzB,GAAWpsB,GAEjB,GAAI8tB,GAAcn1B,GAAS,CAC5B,MAAMqH,QAAerH,EAAOyzB,aAI5B,OAHc,MAAVpsB,GACAO,GAAOlD,mBAAmB,+BAAgC,SAAU1E,GAEjEyzB,GAAWpsB,GAEtB,OAAOO,GAAOlD,mBAAmB,gCAAiC,SAAU1E,GC1ChF,IAWIw1B,GAXA90B,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAIxF,MAAM60B,GAAS,GACf,SAASha,GAAE/c,EAAO6R,GACd,IAAI6B,GAAS,EAMb,OALI7B,EAAQ,IACR6B,GAAS,EACT7B,IAAU,GAGP,IAAImlB,GAAMD,GAAQ,GAAGrjB,EAAS,GAAK,SAAS7B,IAAS7R,EAAO,CAAE0T,OAAAA,EAAQ7B,MAAAA,IAEjF,SAASqC,GAAElU,EAAOyN,GAEd,OAAO,IAAIupB,GAAMD,GAAQ,QAAQ,GAAgB,KAAM/2B,EAAO,CAAEyN,KAAAA,IAEpE,MAAMwpB,GAAerpB,OAAOC,IAAI,iBACzB,MAAMmpB,GACTn0B,YAAYq0B,EAAOr2B,EAAMb,EAAOm3B,EAAU,MAEtC,GADAL,GAAer0B,IAAIR,UAAM,GACrBi1B,IAAUH,GACV,MAAM,IAAI31B,MAAM,uBAEpBC,EAAiBY,KAAM,CAAEg1B,aAAAA,GAAcp2B,KAAAA,EAAMb,MAAAA,IAC7CgC,GAAuBC,KAAM60B,GAAgBK,EAAS,KAEtDl1B,KAAKkM,SAETA,SACI,GAAkB,UAAdlM,KAAKpB,KACL,MAAM,IAAIO,MAAM,IAEf,GAAkB,iBAAda,KAAKpB,KACV,MAAM,IAAIO,MAAM,IAEf,MAAkB,UAAda,KAAKpB,KACH,SAASoB,KAAKjC,MAAMK,KAAKK,GAAMA,EAAEyN,WAAUrI,KAAK,QAEpD7D,KAAKpB,KAEhB+S,eACI,OAAO,EAEXwjB,WACI,OAAO,EAEXpyB,WACI,OAAO,EAEXqyB,WACI,QAAUp1B,KAAKpB,KAAK6H,MAAM,iBAE9B4uB,SACI,MAAsC,UAA9Br1B,KAAKpB,KAAKiI,UAAU,EAAG,GAEnCyuB,WACI,MAAsB,WAAdt1B,KAAKpB,KAEb22B,gBACA,GAAkB,UAAdv1B,KAAKpB,KACL,MAAMyB,UAAU,eAEpB,OAAOI,GAAuBT,KAAM60B,GAAgB,KAMpD7oB,kBACA,GAAkB,UAAdhM,KAAKpB,KACL,MAAMyB,UAAU,gBAEpB,OAA0D,IAAtDI,GAAuBT,KAAM60B,GAAgB,MACrC,GAE8C,IAAtDp0B,GAAuBT,KAAM60B,GAAgB,KACrC70B,KAAU,MAAEd,OAEjB,KAEX+G,YAAYrH,EAAMb,GACd,OAAO,IAAIg3B,GAAMD,GAAQl2B,EAAMb,GAEnCkI,aAAaxH,GAAK,OAAOqc,GAAErc,EAAG,GAC9BwH,cAAcxH,GAAK,OAAOqc,GAAErc,EAAG,IAC/BwH,cAAcxH,GAAK,OAAOqc,GAAErc,EAAG,IAC/BwH,cAAcxH,GAAK,OAAOqc,GAAErc,EAAG,IAC/BwH,cAAcxH,GAAK,OAAOqc,GAAErc,EAAG,IAC/BwH,cAAcxH,GAAK,OAAOqc,GAAErc,EAAG,IAC/BwH,cAAcxH,GAAK,OAAOqc,GAAErc,EAAG,IAC/BwH,cAAcxH,GAAK,OAAOqc,GAAErc,EAAG,IAC/BwH,cAAcxH,GAAK,OAAOqc,GAAErc,EAAG,IAC/BwH,cAAcxH,GAAK,OAAOqc,GAAErc,EAAG,IAC/BwH,cAAcxH,GAAK,OAAOqc,GAAErc,EAAG,IAC/BwH,cAAcxH,GAAK,OAAOqc,GAAErc,EAAG,IAC/BwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,eAAexH,GAAK,OAAOqc,GAAErc,EAAG,KAChCwH,YAAYxH,GAAK,OAAOqc,GAAErc,EAAG,KAC7BwH,YAAYxH,GAAK,OAAOqc,GAAErc,GAAI,GAC9BwH,aAAaxH,GAAK,OAAOqc,GAAErc,GAAI,IAC/BwH,aAAaxH,GAAK,OAAOqc,GAAErc,GAAI,IAC/BwH,aAAaxH,GAAK,OAAOqc,GAAErc,GAAI,IAC/BwH,aAAaxH,GAAK,OAAOqc,GAAErc,GAAI,IAC/BwH,aAAaxH,GAAK,OAAOqc,GAAErc,GAAI,IAC/BwH,aAAaxH,GAAK,OAAOqc,GAAErc,GAAI,IAC/BwH,aAAaxH,GAAK,OAAOqc,GAAErc,GAAI,IAC/BwH,aAAaxH,GAAK,OAAOqc,GAAErc,GAAI,IAC/BwH,aAAaxH,GAAK,OAAOqc,GAAErc,GAAI,IAC/BwH,aAAaxH,GAAK,OAAOqc,GAAErc,GAAI,IAC/BwH,aAAaxH,GAAK,OAAOqc,GAAErc,GAAI,IAC/BwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,cAAcxH,GAAK,OAAOqc,GAAErc,GAAI,KAChCwH,WAAWxH,GAAK,OAAOqc,GAAErc,GAAI,KAC7BwH,aAAaxH,GAAK,OAAOwT,GAAExT,GAC3BwH,cAAcxH,GAAK,OAAOwT,GAAExT,EAAG,GAC/BwH,cAAcxH,GAAK,OAAOwT,GAAExT,EAAG,GAC/BwH,cAAcxH,GAAK,OAAOwT,GAAExT,EAAG,GAC/BwH,cAAcxH,GAAK,OAAOwT,GAAExT,EAAG,GAC/BwH,cAAcxH,GAAK,OAAOwT,GAAExT,EAAG,GAC/BwH,cAAcxH,GAAK,OAAOwT,GAAExT,EAAG,GAC/BwH,cAAcxH,GAAK,OAAOwT,GAAExT,EAAG,GAC/BwH,cAAcxH,GAAK,OAAOwT,GAAExT,EAAG,GAC/BwH,cAAcxH,GAAK,OAAOwT,GAAExT,EAAG,GAC/BwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAOwT,GAAExT,EAAG,IAChCwH,eAAexH,GAAK,OAAO,IAAIs2B,GAAMD,GAAQ,UAAWr2B,GACxDwH,YAAYxH,GAAK,OAAO,IAAIs2B,GAAMD,GAAQ,SAAUr2B,GACpDwH,cAAcxH,GAAK,OAAO,IAAIs2B,GAAMD,GAAQ,SAAUr2B,GACtDwH,aAAaxH,EAAGiZ,GACZ,MAAM,IAAIvY,MAAM,uBAGpB8G,aAAaxH,EAAGqE,GACZ,MAAM,IAAI3D,MAAM,uBAGpB8G,iBAAiBxH,GACb,OAAO,IAAIs2B,GAAMD,GAAQ,YAAa72B,OAAOoN,OAAO,GAAI5M,IAE5DwH,eAAelI,GACX,OAAQA,GAASA,EAAMi3B,eAAiBA,GAE5C/uB,mBAAmBlI,EAAOa,GACtB,GAAIm2B,GAAMS,QAAQz3B,GAAQ,CACtB,GAAIA,EAAMa,OAASA,EACf,MAAM,IAAIO,MAAM,0BAA0BP,UAAab,EAAMa,QAEjE,OAAOb,EAAMA,MAEjB,OAAOA,GAGf82B,GAAiB,IAAIpzB,QCxNd,MAAMg0B,WAAqBje,GAC9B5W,YAAY6W,GACRrJ,MAAM,UAAW,UAAWqJ,GAAW,GAE3C9F,eACI,MAAO,6CAEXgJ,OAAO7C,EAAQtI,GACX,IAAIzR,EAAQg3B,GAAMW,YAAYlmB,EAAQ,UACtC,IACIzR,EAAQ+0B,GAAW/0B,GAEvB,MAAOuD,GACH,OAAOtB,KAAK2X,YAAYrW,EAAMmC,QAAS+L,GAE3C,OAAOsI,EAAOG,WAAWla,GAE7B43B,OAAOC,GACH,OAAO9C,GAAWpjB,GAAMkmB,EAAOnd,YAAa,MCpB7C,MAAMod,WAAuBre,GAChC5W,YAAYk1B,GACR1nB,MAAM0nB,EAAMhzB,KAAMgzB,EAAMl3B,KAAM,IAAKk3B,EAAMpe,SACzC1X,KAAK81B,MAAQA,EAEjBnkB,eACI,OAAO3R,KAAK81B,MAAMnkB,eAEtBgJ,OAAO7C,EAAQ/Z,GACX,OAAOiC,KAAK81B,MAAMnb,OAAO7C,EAAQ/Z,GAErC43B,OAAOC,GACH,OAAO51B,KAAK81B,MAAMH,OAAOC,ICR1B,SAASG,GAAKje,EAAQke,EAAQ12B,GACjC,IAAI22B,EAAc,GAClB,GAAInpB,MAAMN,QAAQlN,GACd22B,EAAc32B,OAEb,GAAIA,GAA8B,iBAApB,EAA8B,CAC7C,IAAI42B,EAAS,GACbD,EAAcD,EAAO53B,KAAK03B,IACtB,MAAMhzB,EAAOgzB,EAAMre,UAgBnB,OAfK3U,GACDmE,EAAOnD,WAAW,wDAAyD,mBAAoB,CAC3FE,SAAU,SACV/B,KAAM,CAAE6zB,MAAAA,GACR/3B,MAAOuB,IAGX42B,EAAOpzB,IACPmE,EAAOnD,WAAW,0DAA2D,mBAAoB,CAC7FE,SAAU,SACV/B,KAAM,CAAE6zB,MAAAA,GACR/3B,MAAOuB,IAGf42B,EAAOpzB,IAAQ,EACRxD,EAAOwD,WAIlBmE,EAAOlD,mBAAmB,sBAAuB,QAASzE,GAE1D02B,EAAO92B,SAAW+2B,EAAY/2B,QAC9B+H,EAAOlD,mBAAmB,8BAA+B,QAASzE,GAEtE,IAAI62B,EAAe,IAAIve,GACnBwe,EAAgB,IAAIxe,GACpBye,EAAc,GAClBL,EAAOpuB,SAAQ,CAACkuB,EAAOp3B,KACnB,IAAIX,EAAQk4B,EAAYv3B,GACxB,GAAIo3B,EAAMpe,QAAS,CAEf,IAAI4e,EAAgBF,EAAcl3B,OAElC42B,EAAMnb,OAAOyb,EAAer4B,GAE5B,IAAIw4B,EAAaJ,EAAaje,sBAC9Bme,EAAY1zB,MAAM6zB,IACdD,EAAWC,EAAaF,WAI5BR,EAAMnb,OAAOwb,EAAcp4B,MAInCs4B,EAAYzuB,SAASif,IAAWA,EAAKsP,EAAaj3B,WAClD,IAAIA,EAAS4Y,EAAOD,aAAase,GAEjC,OADAj3B,GAAU4Y,EAAOD,aAAaue,GACvBl3B,EAEJ,SAASu3B,GAAOb,EAAQI,GAC3B,IAAI12B,EAAS,GACTtB,EAAO,GAEP04B,EAAad,EAAOtd,UAAU,GAyClC,OAxCA0d,EAAOpuB,SAASkuB,IACZ,IAAI/3B,EAAQ,KACZ,GAAI+3B,EAAMpe,QAAS,CACf,IAAI/Q,EAASivB,EAAOld,YAChBie,EAAeD,EAAWpe,UAAU3R,GACxC,IACI5I,EAAQ+3B,EAAMH,OAAOgB,GAEzB,MAAOr1B,GAEH,GAAID,EAAQC,EAAO,kBACf,MAAMA,EAEVvD,EAAQuD,EACRvD,EAAM8N,SAAWiqB,EAAMhzB,KACvB/E,EAAM+E,KAAOgzB,EAAMre,UACnB1Z,EAAMa,KAAOk3B,EAAMl3B,WAIvB,IACIb,EAAQ+3B,EAAMH,OAAOC,GAEzB,MAAOt0B,GAEH,GAAID,EAAQC,EAAO,kBACf,MAAMA,EAEVvD,EAAQuD,EACRvD,EAAM8N,SAAWiqB,EAAMhzB,KACvB/E,EAAM+E,KAAOgzB,EAAMre,UACnB1Z,EAAMa,KAAOk3B,EAAMl3B,KAG3B,GAAac,MAAT3B,EACA,MAAM,IAAIoB,MAAM,eAEpBG,EAAOqD,KAAK5E,GACZC,EAAK2E,KAAKmzB,EAAMre,WAAa,SAE1BT,GAAO4f,UAAUt3B,EAAQtB,GAE7B,MAAM64B,WAAmBrf,GAC5B5W,YAAYk1B,EAAO52B,EAAQuY,GAGvBrJ,MAAM,QAFQ0nB,EAAMl3B,KAAO,KAAOM,GAAU,EAAIA,EAAS,IAAM,IAE1CuY,GADQ,IAAZvY,GAAiB42B,EAAMpe,SAExCtY,EAAiBY,KAAM,CAAE81B,MAAAA,EAAO52B,OAAAA,IAEpCyS,eAEI,MAAMmlB,EAAe92B,KAAK81B,MAAMnkB,eAC1BjL,EAAS,GACf,IAAK,IAAIzH,EAAI,EAAGA,EAAIe,KAAKd,OAAQD,IAC7ByH,EAAO/D,KAAKm0B,GAEhB,OAAOpwB,EAEXiU,OAAO7C,EAAQtI,GACX,MAAMzR,EAAQg3B,GAAMW,YAAYlmB,EAAQ,SACnC1C,MAAMN,QAAQzO,IACfiC,KAAK2X,YAAY,uBAAwB5Z,GAE7C,IAAIqH,EAAQpF,KAAKd,QACF,IAAXkG,IACAA,EAAQrH,EAAMmB,OACd4Y,EAAOG,WAAWla,EAAMmB,SAE5B+H,EAAO9B,oBAAoBpH,EAAMmB,OAAQkG,EAAO,eAAiBpF,KAAKyX,UAAa,IAAMzX,KAAKyX,UAAa,KAC3G,IAAIue,EAAS,GACb,IAAK,IAAI/2B,EAAI,EAAGA,EAAIlB,EAAMmB,OAAQD,IAC9B+2B,EAAOrzB,KAAK3C,KAAK81B,OAErB,OAAOC,GAAKje,EAAQke,EAAQj4B,GAEhC43B,OAAOC,GACH,IAAIxwB,EAAQpF,KAAKd,QACF,IAAXkG,IACAA,EAAQwwB,EAAOld,YlCpIH,GkC0IRtT,EAAmBwwB,EAAOpgB,YAC1BvO,EAAOnD,WAAW,2BAA4B,iBAAkB,CAC5D8R,OAAQggB,EAAOzgB,MACfxO,OlC7II,GkC6IIvB,EACRlG,OAAQ02B,EAAOpgB,cAI3B,IAAIwgB,EAAS,GACb,IAAK,IAAI/2B,EAAI,EAAGA,EAAImG,EAAOnG,IACvB+2B,EAAOrzB,KAAK,IAAIkzB,GAAe71B,KAAK81B,QAExC,OAAOW,GAAOb,EAAQI,ICpKvB,MAAMe,WAAqBvf,GAC9B5W,YAAY6W,GACRrJ,MAAM,OAAQ,OAAQqJ,GAAW,GAErC9F,eACI,OAAO,EAEXgJ,OAAO7C,EAAQtI,GACX,MAAMzR,EAAQg3B,GAAMW,YAAYlmB,EAAQ,QACxC,OAAOsI,EAAOG,WAAWla,EAAQ,EAAI,GAEzC43B,OAAOC,GACH,QAASA,EAAOnd,aCZjB,MAAMue,WAA0Bxf,GACnC5W,YAAYhC,EAAM6Y,GACdrJ,MAAMxP,EAAMA,EAAM6Y,GAAW,GAEjC9F,eACI,MAAO,KAEXgJ,OAAO7C,EAAQ/Z,GACXA,EAAQ2W,GAAS3W,GACjB,IAAImB,EAAS4Y,EAAOG,WAAWla,EAAMmB,QAErC,OADAA,GAAU4Y,EAAOC,WAAWha,GACrBmB,EAEXy2B,OAAOC,GACH,OAAOA,EAAOrd,UAAUqd,EAAOld,aAAa,IAG7C,MAAMue,WAAmBD,GAC5Bp2B,YAAY6W,GACRrJ,MAAM,QAASqJ,GAEnBke,OAAOC,GACH,OAAO1gB,GAAQ9G,MAAMunB,OAAOC,KCpB7B,MAAMsB,WAAwB1f,GACjC5W,YAAY4K,EAAMiM,GACd,IAAI3U,EAAO,QAAUL,OAAO+I,GAC5B4C,MAAMtL,EAAMA,EAAM2U,GAAW,GAC7BrY,EAAiBY,KAAM,CAAEwL,KAAAA,GAAQ,CAAEA,KAAM,WAE7CmG,eACI,MAAO,qEAAuE9K,UAAU,EAAG,EAAgB,EAAZ7G,KAAKwL,MAExGmP,OAAO7C,EAAQtI,GACX,IAAImF,EAAOD,GAASqgB,GAAMW,YAAYlmB,EAAQxP,KAAKpB,OAInD,OAHI+V,EAAKzV,SAAWc,KAAKwL,MACrBxL,KAAK2X,YAAY,wBAAyBnI,GAEvCsI,EAAOC,WAAWpD,GAE7BghB,OAAOC,GACH,OAAO1gB,GAAQ0gB,EAAOrd,UAAUvY,KAAKwL,QCpB7C,MAAM2rB,GAAQ,IAAI3wB,WAAW,IACtB,MAAM4wB,WAAkB5f,GAC3B5W,YAAY6W,GACRrJ,MAAM,OAAQ,GAAIqJ,GAAW,GAEjC9F,eACI,OAAO,KAEXgJ,OAAO7C,EAAQ/Z,GAIX,OAHa,MAATA,GACAiC,KAAK2X,YAAY,WAAY5Z,GAE1B+Z,EAAOC,WAAWof,IAE7BxB,OAAOC,GAEH,OADAA,EAAOrd,UAAU,GACV,MCZf,MAAMjJ,GAAO7J,OAAO,GACdsK,GAAOtK,OAAO,GACd4xB,GAAiB5xB,OAAO,sEACvB,MAAM6xB,WAAoB9f,GAC7B5W,YAAY4K,EAAMiG,EAAQgG,GACtB,MAAM3U,GAAS2O,EAAS,MAAQ,QAAkB,EAAPjG,EAC3C4C,MAAMtL,EAAMA,EAAM2U,GAAW,GAC7BrY,EAAiBY,KAAM,CAAEwL,KAAAA,EAAMiG,OAAAA,GAAU,CAAEjG,KAAM,SAAUiG,OAAQ,YAEvEE,eACI,OAAO,EAEXgJ,OAAO7C,EAAQtI,GACX,IAAIzR,EAAQkJ,EAAOtB,UAAUovB,GAAMW,YAAYlmB,EAAQxP,KAAKpB,OAExD24B,EAAernB,GAAKmnB,GAAgBG,KACxC,GAAIx3B,KAAKyR,OAAQ,CACb,IAAIgmB,EAASvnB,GAAKqnB,EAA2B,EAAZv3B,KAAKwL,KAAY,IAC9CzN,EAAQ05B,GAAU15B,IAAU05B,EAAS1nB,MACrC/P,KAAK2X,YAAY,sBAAuBnI,QAGvCzR,EAAQuR,IAAQvR,EAAQmS,GAAKqnB,EAA0B,EAAZv3B,KAAKwL,QACrDxL,KAAK2X,YAAY,sBAAuBnI,GAM5C,OAJAzR,EAAQmS,GAAKD,GAAOlS,EAAmB,EAAZiC,KAAKwL,MAAuB,EAAZxL,KAAKwL,MAC5CxL,KAAKyR,SACL1T,EAAQkS,GAAOD,GAASjS,EAAmB,EAAZiC,KAAKwL,MAAW,MAE5CsM,EAAOG,WAAWla,GAE7B43B,OAAOC,GACH,IAAI73B,EAAQmS,GAAK0lB,EAAOnd,YAAyB,EAAZzY,KAAKwL,MAI1C,OAHIxL,KAAKyR,SACL1T,EAAQiS,GAASjS,EAAmB,EAAZiC,KAAKwL,OAE1BzN,GCzCR,MCEMkJ,GAAS,IAAI5D,EDFH,uCEEb,IAACq0B,GASAC,GA+BX,SAASC,GAAWC,EAAQlxB,EAAQwO,EAAO2iB,EAAQC,GAE/C,GAAIF,IAAWF,GAAgBK,YAAcH,IAAWF,GAAgBM,oBAAqB,CACzF,IAAIh5B,EAAI,EACR,IAAK,IAAIgQ,EAAItI,EAAS,EAAGsI,EAAIkG,EAAMjW,QAC3BiW,EAAMlG,IAAM,GAAM,EADiBA,IAIvChQ,IAEJ,OAAOA,EAIX,OAAI44B,IAAWF,GAAgBO,QACpB/iB,EAAMjW,OAASyH,EAAS,EAG5B,GAzDX,SAAW+wB,GACPA,EAAkC,QAAI,GACtCA,EAA8B,IAAI,MAClCA,EAA8B,IAAI,MAClCA,EAA+B,KAAI,OACnCA,EAA+B,KAAI,OALvC,CAMGA,KAA6BA,GAA2B,KAG3D,SAAWC,GAGPA,EAAqC,oBAAI,+BAGzCA,EAA4B,WAAI,uBAGhCA,EAAyB,QAAI,iBAG7BA,EAAkC,iBAAI,4BAItCA,EAA8B,aAAI,qBAIlCA,EAAiC,gBAAI,mBAIrCA,EAA0B,SAAI,0BAxBlC,CAyBGA,KAAoBA,GAAkB,KAqC7B,MAACQ,GAAiBl6B,OAAO4J,OAAO,CACxCvG,MApCJ,SAAmBu2B,EAAQlxB,EAAQwO,EAAO2iB,EAAQC,GAC9C,OAAO9wB,GAAOlD,mBAAmB,+BAA+B4C,MAAWkxB,IAAU,QAAS1iB,IAoC9FijB,OAAQR,GACRS,QAfJ,SAAqBR,EAAQlxB,EAAQwO,EAAO2iB,EAAQC,GAEhD,OAAIF,IAAWF,GAAgBW,UAC3BR,EAAOn1B,KAAsB,MAAhBo1B,EAAwBA,GAAgB,GAC9C,IAGXD,EAAOn1B,KAAK,OAELi1B,GAAWC,EAAQlxB,EAAQwO,OAStC,SAASojB,GAAkBC,EAAQC,GAChB,MAAXA,IACAA,EAAUN,GAAe72B,OAE7B,MAAM6T,EAAQlO,GAAO3B,SAASkzB,EAAQ,SAChC9xB,EAAS,GACf,IAAIzH,EAAI,EAER,KAAOA,EAAIkW,EAAMjW,QAAQ,CACrB,MAAMoN,EAAI6I,EAAMlW,KAEhB,GAAIqN,GAAK,GAAM,EAAG,CACd5F,EAAO/D,KAAK2J,GACZ,SAGJ,IAAIosB,EAAc,KACdC,EAAe,KAEnB,GAAmB,MAAV,IAAJrsB,GACDosB,EAAc,EACdC,EAAe,SAGd,GAAmB,MAAV,IAAJrsB,GACNosB,EAAc,EACdC,EAAe,SAGd,CAAA,GAAmB,MAAV,IAAJrsB,GAIL,CAEGrN,GAAKw5B,EADU,MAAV,IAAJnsB,GACYqrB,GAAgBM,oBAGhBN,GAAgBK,WAHqB/4B,EAAI,EAAGkW,EAAOzO,GAKpE,SAVAgyB,EAAc,EACdC,EAAe,MAYnB,GAAI15B,EAAI,EAAIy5B,GAAevjB,EAAMjW,OAAQ,CACrCD,GAAKw5B,EAAQd,GAAgBO,QAASj5B,EAAI,EAAGkW,EAAOzO,GACpD,SAGJ,IAAI2Y,EAAM/S,GAAM,GAAM,EAAIosB,EAAc,GAAM,EAC9C,IAAK,IAAIhR,EAAI,EAAGA,EAAIgR,EAAahR,IAAK,CAClC,IAAIkR,EAAWzjB,EAAMlW,GAErB,GAAyB,MAAT,IAAX25B,GAA0B,CAC3B35B,GAAKw5B,EAAQd,GAAgBkB,iBAAkB55B,EAAGkW,EAAOzO,GACzD2Y,EAAM,KACN,MAGJA,EAAOA,GAAO,EAAiB,GAAXuZ,EACpB35B,IAGQ,OAARogB,IAIAA,EAAM,QACNpgB,GAAKw5B,EAAQd,GAAgBmB,aAAc75B,EAAI,EAAIy5B,EAAavjB,EAAOzO,EAAQ2Y,GAI/EA,GAAO,OAAUA,GAAO,MACxBpgB,GAAKw5B,EAAQd,GAAgBoB,gBAAiB95B,EAAI,EAAIy5B,EAAavjB,EAAOzO,EAAQ2Y,GAIlFA,GAAOsZ,EACP15B,GAAKw5B,EAAQd,GAAgBW,SAAUr5B,EAAI,EAAIy5B,EAAavjB,EAAOzO,EAAQ2Y,GAG/E3Y,EAAO/D,KAAK0c,IAEhB,OAAO3Y,EAGJ,SAASsyB,GAAYve,EAAKnY,EAAOo1B,GAAyBuB,SACzD32B,GAAQo1B,GAAyBuB,UACjChyB,GAAOrC,gBAAgBtC,GACvBmY,EAAMA,EAAIlY,UAAUD,IAExB,IAAIoE,EAAS,GACb,IAAK,IAAIzH,EAAI,EAAGA,EAAIwb,EAAIvb,OAAQD,IAAK,CACjC,MAAMqN,EAAImO,EAAI6X,WAAWrzB,GACzB,GAAIqN,EAAI,IACJ5F,EAAO/D,KAAK2J,QAEX,GAAIA,EAAI,KACT5F,EAAO/D,KAAM2J,GAAK,EAAK,KACvB5F,EAAO/D,KAAU,GAAJ2J,EAAY,UAExB,GAAoB,QAAX,MAAJA,GAAuB,CAC7BrN,IACA,MAAMi6B,EAAKze,EAAI6X,WAAWrzB,GAC1B,GAAIA,GAAKwb,EAAIvb,QAA4B,QAAZ,MAALg6B,GACpB,MAAM,IAAI/5B,MAAM,wBAGpB,MAAMg6B,EAAO,QAAgB,KAAJ7sB,IAAe,KAAY,KAAL4sB,GAC/CxyB,EAAO/D,KAAMw2B,GAAQ,GAAM,KAC3BzyB,EAAO/D,KAAOw2B,GAAQ,GAAM,GAAQ,KACpCzyB,EAAO/D,KAAOw2B,GAAQ,EAAK,GAAQ,KACnCzyB,EAAO/D,KAAa,GAAPw2B,EAAe,UAG5BzyB,EAAO/D,KAAM2J,GAAK,GAAM,KACxB5F,EAAO/D,KAAO2J,GAAK,EAAK,GAAQ,KAChC5F,EAAO/D,KAAU,GAAJ2J,EAAY,KAGjC,OAAO,IAAI9F,WAAWE,GAG1B,SAAS0yB,GAAWr7B,GAChB,MAAM+R,EAAO,OAAS/R,EAAM+L,SAAS,IACrC,MAAO,MAAQgG,EAAIjJ,UAAUiJ,EAAI5Q,OAAS,GAEvC,SAASm6B,GAAqBlkB,EAAOsjB,GACxC,MAAO,IAAMF,GAAkBpjB,EAAOsjB,GAASr6B,KAAKk7B,IAChD,GAAIA,EAAY,IAAK,CACjB,OAAQA,GACJ,KAAK,EAAG,MAAO,MACf,KAAK,EAAG,MAAO,MACf,KAAK,GAAI,MAAO,MAChB,KAAK,GAAI,MAAO,MAChB,KAAK,GAAI,MAAO,MAChB,KAAK,GAAI,MAAO,OAEpB,GAAIA,GAAa,IAAMA,EAAY,IAC/B,OAAO72B,OAAOC,aAAa42B,GAGnC,OAAIA,GAAa,MACNF,GAAWE,GAGfF,GAAyC,QADhDE,GAAa,QACoB,GAAM,OAAmBF,GAAiC,OAAT,KAAZE,OACvEz1B,KAAK,IAAM,IAEX,SAAS01B,GAAcC,GAC1B,OAAOA,EAAWp7B,KAAKk7B,GACfA,GAAa,MACN72B,OAAOC,aAAa42B,IAE/BA,GAAa,MACN72B,OAAOC,aAA4C,OAA5B42B,GAAa,GAAM,MAAyC,OAAT,KAAZA,OACtEz1B,KAAK,IAEL,SAAS41B,GAAatkB,EAAOsjB,GAChC,OAAOc,GAAchB,GAAkBpjB,EAAOsjB,IAE3C,SAASiB,GAAiBjf,EAAKnY,EAAOo1B,GAAyBuB,SAClE,OAAOV,GAAkBS,GAAYve,EAAKnY,IC9OvC,SAASq3B,GAAoBvwB,GAEhC,MAAM+L,EAAQ6jB,GAAY5vB,GAE1B,GAAI+L,EAAMjW,OAAS,GACf,MAAM,IAAIC,MAAM,6CAGpB,OAAO+W,GAAaf,EAAO,IAExB,SAASykB,GAAmBpB,GAC/B,MAAM7jB,EAAO1N,GAAO3B,SAASkzB,EAAQ,SAErC,GAAoB,KAAhB7jB,EAAKzV,OACL,MAAM,IAAIC,MAAM,uCAEpB,GAAiB,IAAbwV,EAAK,IACL,MAAM,IAAIxV,MAAM,+CAGpB,IAAID,EAAS,GACb,KAA4B,IAArByV,EAAKzV,EAAS,IACjBA,IAGJ,OAAOu6B,GAAa9kB,EAAK9L,MAAM,EAAG3J,IChBtC,SAAS26B,GAAYllB,EAAMmlB,GACvB,MAAMjT,EAAOiT,GAAS,SAAU/7B,GAAS,MAAO,CAAC6I,SAAS7I,EAAO,MACjE,IAAIg8B,EAAK,EACLrzB,EAAS,GAMb,OALAiO,EAAK7V,MAAM,KAAK8I,SAASuxB,IACrB,IAAIhsB,EAAQgsB,EAAKr6B,MAAM,KACvBi7B,GAAMnzB,SAASuG,EAAM,GAAI,IACzBzG,EAAOqzB,GAAMlT,EAAK1Z,EAAM,OAErBzG,EAEX,SAASszB,GAAiBrlB,GACtB,IAAIslB,EAAK,EACT,OAAOtlB,EAAK7V,MAAM,KAAKV,KAAKK,IACxB,IAAI0O,EAAQ1O,EAAEK,MAAM,KACC,IAAjBqO,EAAMjO,OACNiO,EAAM,GAAK,IAEO,KAAbA,EAAM,KACXA,EAAM,GAAK,KAEf,IAAI4sB,EAAKE,EAAKrzB,SAASuG,EAAM,GAAI,IAEjC,OADA8sB,EAAKrzB,SAASuG,EAAM,GAAI,IACjB,CAAE+R,EAAG6a,EAAI9a,EAAGgb,MAG3B,SAASC,GAASn8B,EAAOo8B,GACrB,IAAIJ,EAAK,EACT,IAAK,IAAI96B,EAAI,EAAGA,EAAIk7B,EAAOj7B,OAAQD,IAAK,CACpC,IAAIm7B,EAAQD,EAAOl7B,GAEnB,GADA86B,GAAMK,EAAMlb,EACRnhB,GAASg8B,GAAMh8B,GAASg8B,EAAKK,EAAMnb,IAAOlhB,EAAQg8B,IAAOK,EAAM7kB,GAAK,IAAQ,EAAG,CAC/E,GAAI6kB,EAAM10B,IAAsC,IAAjC00B,EAAM10B,EAAEb,QAAQ9G,EAAQg8B,GACnC,SAEJ,OAAOK,GAGf,OAAO,KAEX,MAAMC,GAAmBL,GAAiB,g8CAEpCM,GAAkB,sDAAsDx7B,MAAM,KAAKV,KAAKK,GAAMmI,SAASnI,EAAG,MAC1G87B,GAAmB,CACrB,CAAEtb,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,IACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIzb,EAAG,CAAC,IAAKwZ,EAAG,KAC5B,CAAED,EAAG,GAAIkC,EAAG,EAAGzb,EAAG,CAAC,IAAKwZ,EAAG,GAAI3J,EAAG,GAClC,CAAE0J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI3J,EAAG,GACzB,CAAE0J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI3J,EAAG,GACzB,CAAE0J,EAAG,GAAIkC,EAAG,EAAGzb,EAAG,CAAC,EAAG,EAAG,GAAIwZ,EAAG,GAAI3J,EAAG,GACvC,CAAE0J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI3J,EAAG,GACzB,CAAE0J,EAAG,GAAIkC,EAAG,EAAGzb,EAAG,CAAC,GAAI,GAAI,IAAKwZ,EAAG,GAAI3J,EAAG,GAC1C,CAAE0J,EAAG,GAAIkC,EAAG,GAAIzb,EAAG,CAAC,IAAKwZ,EAAG,KAC5B,CAAED,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI3J,EAAG,GACzB,CAAE0J,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,IACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,IACnB,CAAED,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI3J,EAAG,GACzB,CAAE0J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI3J,EAAG,GACzB,CAAE0J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI3J,EAAG,GACzB,CAAE0J,EAAG,GAAIkC,EAAG,EAAGzb,EAAG,CAAC,IAAKwZ,EAAG,GAAI3J,EAAG,GAClC,CAAE0J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI3J,EAAG,GACzB,CAAE0J,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,IACnB,CAAED,EAAG,IAAKkC,EAAG,EAAGjC,EAAG,KAAM3J,EAAG,GAC5B,CAAE0J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,IAAK3J,EAAG,GAC1B,CAAE0J,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,KACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,KACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,OACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,MACnB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,OACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQzb,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAKwZ,EAAG,IACxD,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQzb,EAAG,CAAC,EAAG,EAAG,EAAG,IAAKwZ,EAAG,IAC1C,CAAED,EAAG,GAAIkC,GAAI,OAAQzb,EAAG,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,IAAKwZ,EAAG,IACnD,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQzb,EAAG,CAAC,IAAKwZ,EAAG,IACjC,CAAED,EAAG,GAAIkC,GAAI,OAAQzb,EAAG,CAAC,IAAKwZ,EAAG,IACjC,CAAED,EAAG,GAAIkC,GAAI,OAAQzb,EAAG,CAAC,IAAKwZ,EAAG,IACjC,CAAED,EAAG,GAAIkC,GAAI,OAAQzb,EAAG,CAAC,IAAKwZ,EAAG,IACjC,CAAED,EAAG,GAAIkC,GAAI,OAAQzb,EAAG,CAAC,IAAKwZ,EAAG,KAE/Bsb,GAAoBX,GAAY,yfAChCY,GAAoBZ,GAAY,0dAChCa,GAAoBb,GAAY,03DAnGtC,SAAgBllB,GACZ,GAAKA,EAAKzV,OAAS,GAAO,EACtB,MAAM,IAAIC,MAAM,+BAEpB,IAAIuH,EAAS,GACb,IAAK,IAAIzH,EAAI,EAAGA,EAAI0V,EAAKzV,OAAQD,GAAK,EAClCyH,EAAO/D,KAAKiE,SAAS+N,EAAK9N,UAAU5H,EAAGA,EAAI,GAAI,KAEnD,OAAOyH,KA4FLi0B,GAAiBX,GAAiB,2LAmCjC,SAASY,GAAS78B,GAIrB,GAAIA,EAAM0I,MAAM,kBAAoB1I,EAAMmB,QAAU,GAChD,OAAOnB,EAAMqI,cAGjB,IAAIy0B,EAAQnB,GAAiB37B,GA1CjC,IAAiBuB,EAAAA,EA2CGu7B,EAAMz8B,KAAKmD,IAEvB,GAAI+4B,GAAgBz1B,QAAQtD,IAAS,EACjC,MAAO,GAEX,GAAIA,GAAQ,OAAUA,GAAQ,MAC1B,MAAO,GAGX,IAAIu5B,EA3CL,SAA0BC,GAC7B,MAAMX,EAAQF,GAASa,EAAWR,IAClC,GAAIH,EAAO,CACP,GAAe,MAAXA,EAAMjZ,EACN,MAAM,IAAIhiB,MAAM,gCAEpB,MAAO,CAAC47B,EAAYX,EAAMjZ,GAE9B,MAAM0Z,EAAQL,GAAkBO,GAChC,GAAIF,EACA,OAAOA,EAEX,MAAMthB,EAAQkhB,GAAkBM,GAChC,OAAIxhB,EACO,CAACwhB,EAAYxhB,EAAM,IAEdmhB,GAAkBK,IAI3B,KAuBgBC,CAAiBz5B,GACpC,OAAIu5B,GAIG,CAACv5B,MAdZs5B,EA1COv7B,EAAOf,QAAO,CAACC,EAAOT,KACzBA,EAAM6J,SAAS7J,IAAYS,EAAMmE,KAAK5E,MAC/BS,IACR,IAwDHq8B,EAAQnB,GAAiBH,GAAcsB,GAAQnD,GAAyBuD,MAExEJ,EAAMjzB,SAASrG,IA9BN24B,GA+Be34B,EA/BKo5B,KAgCrB1zB,GAAOlD,mBAAmB,iCAAkC,QAAShG,MAI7E88B,EAAMjzB,SAASrG,IA7DN24B,GA8DgB34B,EA9DI84B,KA+DrBpzB,GAAOlD,mBAAmB,iCAAkC,QAAShG,MAI7E,IAAI+E,EAAOy2B,GAAcsB,GASzB,MAP6B,MAAzB/3B,EAAK+D,UAAU,EAAG,IAAuC,OAAzB/D,EAAK+D,UAAU,EAAG,IAAmD,MAApC/D,EAAK+D,UAAU/D,EAAK5D,OAAS,IAC9F+H,GAAOlD,mBAAmB,iBAAkB,QAAShG,GAGrD+E,EAAK5D,OAAS,IACd+H,GAAOlD,mBAAmB,WAAY,QAAShG,GAE5C+E,ECvLJ,MAAMo4B,WAAoBlE,GAC7Bp2B,YAAY6W,GACRrJ,MAAM,SAAUqJ,GAEpB9F,eACI,MAAO,GAEXgJ,OAAO7C,EAAQtI,GACX,OAAOpB,MAAMuM,OAAO7C,EAAQkhB,GAAYjE,GAAMW,YAAYlmB,EAAQ,YAEtEmmB,OAAOC,GACH,OAAO6D,GAAarrB,MAAMunB,OAAOC,KCVlC,MAAMuF,WAAmB3jB,GAC5B5W,YAAYo1B,EAAQve,GAChB,IAAIC,GAAU,EACd,MAAM7Y,EAAQ,GACdm3B,EAAOpuB,SAASkuB,IACRA,EAAMpe,UACNA,GAAU,GAEd7Y,EAAM8D,KAAKmzB,EAAMl3B,SAGrBwP,MAAM,QADQ,SAAWvP,EAAMgF,KAAK,KAAO,IACtB4T,EAAWC,GAChCtY,EAAiBY,KAAM,CAAEg2B,OAAQ/3B,OAAO4J,OAAOmuB,EAAOntB,WAE1D8I,eACI,MAAMrS,EAAS,GACfU,KAAKg2B,OAAOpuB,SAASkuB,IACjBx2B,EAAOqD,KAAKmzB,EAAMnkB,mBAGtB,MAAMypB,EAAcp7B,KAAKg2B,OAAOz3B,QAAO,CAACC,EAAOs3B,KAC3C,MAAMhzB,EAAOgzB,EAAMre,UAOnB,OANI3U,IACKtE,EAAMsE,KACPtE,EAAMsE,GAAQ,GAElBtE,EAAMsE,MAEHtE,IACR,IAeH,OAbAwB,KAAKg2B,OAAOpuB,SAAQ,CAACkuB,EAAOp3B,KACxB,IAAIoE,EAAOgzB,EAAMre,UACZ3U,GAA8B,IAAtBs4B,EAAYt4B,KAGZ,WAATA,IACAA,EAAO,WAES,MAAhBxD,EAAOwD,KAGXxD,EAAOwD,GAAQxD,EAAOZ,QAEnBT,OAAO4J,OAAOvI,GAEzBqb,OAAO7C,EAAQtI,GACX,MAAMzR,EAAQg3B,GAAMW,YAAYlmB,EAAQ,SACxC,OAAOumB,GAAKje,EAAQ9X,KAAKg2B,OAAQj4B,GAErC43B,OAAOC,GACH,OAAOa,GAAOb,EAAQ51B,KAAKg2B,SCtDnC,IAKIqF,GAAqBC,GALrB76B,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAexF,MAAMs7B,GAAiB,IAAIhzB,OAAO,mBAC5BizB,GAAkB,IAAIjzB,OAAO,qBAwBnC8yB,GAAsB,IAAI/0B,QAAWg1B,GAAqB,SAASA,EAAmB9tB,GAClF,GAAIA,EAAMhB,UACN,OAAO,IAAIqqB,GAAWp2B,GAAuBT,KAAMq7B,GAAqB,IAAKC,GAAoB/6B,KAAKP,KAAMwN,EAAMvB,eAAgBuB,EAAMxB,YAAawB,EAAM1K,MAE/J,GAAI0K,EAAMnB,UACN,OAAO,IAAI8uB,GAAW3tB,EAAMzB,WAAW3N,KAAKkO,GAAM7L,GAAuBT,KAAMq7B,GAAqB,IAAKC,GAAoB/6B,KAAKP,KAAMsM,KAAKkB,EAAM1K,MAEvJ,OAAQ0K,EAAM3B,UACV,IAAK,UACD,OAAO,IAAI4pB,GAAajoB,EAAM1K,MAClC,IAAK,OACD,OAAO,IAAIi0B,GAAavpB,EAAM1K,MAClC,IAAK,SACD,OAAO,IAAIo4B,GAAY1tB,EAAM1K,MACjC,IAAK,QACD,OAAO,IAAIm0B,GAAWzpB,EAAM1K,MAChC,IAAK,GACD,OAAO,IAAIs0B,GAAU5pB,EAAM1K,MAGnC,IAAI2D,EAAQ+G,EAAM5O,KAAK6H,MAAM+0B,IAC7B,GAAI/0B,EAAO,CACP,IAAI+E,EAAO5E,SAASH,EAAM,IAAM,OAIhC,OAHa,IAAT+E,GAAcA,EAAO,KAAQA,EAAO,GAAO,IAC3CvE,EAAOlD,mBAAmB,WAAa0C,EAAM,GAAK,cAAe,QAAS+G,GAEvE,IAAI8pB,GAAY9rB,EAAO,EAAiB,QAAb/E,EAAM,GAAe+G,EAAM1K,MAIjE,GADA2D,EAAQ+G,EAAM5O,KAAK6H,MAAM80B,IACrB90B,EAAO,CACP,IAAI+E,EAAO5E,SAASH,EAAM,IAI1B,OAHa,IAAT+E,GAAcA,EAAO,KACrBvE,EAAOlD,mBAAmB,uBAAwB,QAASyJ,GAExD,IAAI0pB,GAAgB1rB,EAAMgC,EAAM1K,MAE3C,OAAOmE,EAAOlD,mBAAmB,eAAgB,OAAQyJ,EAAM5O,OAE5D,MAAM68B,GAAkB,IA9DxB,MACH76B,cACIy6B,GAAoB93B,IAAIvD,MAE5B07B,gBAAgB78B,GACZ,MAAMm3B,EAASn3B,EAAMT,KAAKQ,GAAS6B,GAAuBT,KAAMq7B,GAAqB,IAAKC,IAAoB/6B,KAAKP,KAAM+K,GAAUI,KAAKvM,MAExI,OADc,IAAIu8B,GAAWnF,EAAQ,KACxBrkB,eAEjBgJ,OAAO9b,EAAOS,GACV2H,EAAO9B,oBAAoB7F,EAAOJ,OAAQL,EAAMK,OAAQ,gCACxD,MAAM82B,EAASn3B,EAAMT,KAAKQ,GAAS6B,GAAuBT,KAAMq7B,GAAqB,IAAKC,IAAoB/6B,KAAKP,KAAM+K,GAAUI,KAAKvM,MAClIk3B,EAAK,IAAQqF,GAAWnF,EAAQ,KAChCle,EAAS,IAAIF,GAEnB,OADAke,EAAMnb,OAAO7C,EAAQxY,GACdwY,EAAOnD,KAElBghB,OAAO92B,EAAO8V,EAAM6D,GAChB,MAAMwd,EAASn3B,EAAMT,KAAKQ,GAAS6B,GAAuBT,KAAMq7B,GAAqB,IAAKC,IAAoB/6B,KAAKP,KAAM+K,GAAUI,KAAKvM,MAExI,OADc,IAAIu8B,GAAWnF,EAAQ,KACxBL,OAAO,IAAIxd,GAAOxD,EAAM6D,MCvCtC,SAASmjB,GAAG59B,GACf,OAAOgsB,GAAUiP,GAAYj7B,ICH1B,MCEMkJ,GAAS,IAAI5D,EDFH,oCEIjBu4B,GAAQ,IAAIp1B,WAAW,IAC7Bo1B,GAAM5lB,KAAK,GACX,MAAM6lB,GAAY,IAAItzB,OAAO,uBACtB,SAASuzB,GAAYh5B,GACxB,IACI,MAAMqK,EAAQrK,EAAKhE,MAAM,KACzB,IAAK,IAAIG,EAAI,EAAGA,EAAIkO,EAAMjO,OAAQD,IAC9B,GAAkC,IAA9B27B,GAASztB,EAAMlO,IAAIC,OACnB,MAAM,IAAIC,MAAM,SAGxB,OAAO,EAEX,MAAOmC,IACP,OAAO,EAEJ,SAASy6B,GAASj5B,GACC,iBAAV,GACRmE,GAAOlD,mBAAmB,iCAAkC,OAAQjB,GAExE,IAAIm2B,EAAUn2B,EACV4D,EAASk1B,GACb,KAAO3C,EAAQ/5B,QAAQ,CACnB,MAAM88B,EAAY/C,EAAQxyB,MAAMo1B,IAChC,GAAiB,MAAbG,GAAsC,KAAjBA,EAAU,GAC/B,OAAO/0B,GAAOlD,mBAAmB,sCAAuC,OAAQjB,GAGpF4D,EAASqjB,GAAU1U,GAAO,CAAC3O,EAAQqjB,GADrBiP,GAAY4B,GAASoB,EAAU,SAE7C/C,EAAU+C,EAAU,IAAM,GAE9B,OAAO9mB,GAAQxO,GAEZ,SAASu1B,GAAUn5B,GAItB,MAHsB,iBAAV,GACRmE,GAAOlD,mBAAmB,iCAAkC,OAAQjB,GAE3D,KAATA,EACO,OAGJuS,GAAOvS,EAAKhE,MAAM,KAAKV,KAAKqO,IAClB,KAATA,GACAxF,GAAOlD,mBAAmB,sCAAuC,OAAQjB,GAI7E,MAAMqS,EAAQ6jB,GAAY,IAAM4B,GAASnuB,IAEzC,OADA0I,EAAM,GAAKA,EAAMjW,OAAS,EACnBiW,MACL,KCnDE,MAAC+mB,GAAgB,8BACtB,SAASC,GAAY14B,GAIxB,MAHyB,iBAAb,IACRA,EAAUu1B,GAAYv1B,IAEnBsmB,GAAU1U,GAAO,CACpB2jB,GAAYkD,IACZlD,GAAYv2B,OAAOgB,EAAQvE,SAC3BuE,KCNR,MAAM24B,GAAa,IAAI7zB,OAAO,mBACxBC,GAAc,IAAID,OAAO,qBACzB8zB,GAAa,IAAI9zB,OAAO,wBAC9B,SAAS+zB,GAAM19B,EAAMb,EAAOyO,GACxB,OAAQ5N,GACJ,IAAK,UACD,OAAI4N,EACOvF,GAAO3B,SAAS2Q,GAAalY,EAAO,KAExCkJ,GAAO3B,SAASvH,GAC3B,IAAK,SACD,OAAOi7B,GAAYj7B,GACvB,IAAK,QACD,OAAOkJ,GAAO3B,SAASvH,GAC3B,IAAK,OAED,OADAA,EAAWA,EAAQ,OAAS,OACxByO,EACOvF,GAAO3B,SAAS2Q,GAAalY,EAAO,KAExCkJ,GAAO3B,SAASvH,GAE/B,IAAI0I,EAAQ7H,EAAK6H,MAAM+B,IACvB,GAAI/B,EAAO,CACP,IAAI+E,EAAO5E,SAASH,EAAM,IAAM,OAChC,OAAKA,EAAM,IAAMhE,OAAO+I,KAAU/E,EAAM,IAAQ+E,EAAO,GAAM,GAAe,IAATA,GAAcA,EAAO,IAC7EvE,GAAOlD,mBAAmB,sBAAuB,OAAQnF,IAEhE4N,IACAhB,EAAO,KAEXzN,EAAQkS,GAAOlS,EAAOyN,GACfvE,GAAO3B,SAAS2Q,GAAalY,EAAOyN,EAAO,KAGtD,GADA/E,EAAQ7H,EAAK6H,MAAM21B,IACf31B,EAAO,CACP,MAAM+E,EAAO5E,SAASH,EAAM,IAC5B,OAAIhE,OAAO+I,KAAU/E,EAAM,IAAe,IAAT+E,GAAcA,EAAO,GAC3CvE,GAAOlD,mBAAmB,qBAAsB,OAAQnF,GAE/D4W,GAAWzX,KAAWyN,EACfvE,GAAOlD,mBAAmB,qBAAqBnF,IAAQ,QAASb,GAEvEyO,EACOvF,GAAO3B,SAAS4Q,GAAanY,EAAO,KAExCA,EAGX,GADA0I,EAAQ7H,EAAK6H,MAAM41B,IACf51B,GAASqG,MAAMN,QAAQzO,GAAQ,CAC/B,MAAM8N,EAAWpF,EAAM,GACTG,SAASH,EAAM,IAAMhE,OAAO1E,EAAMmB,UACnCnB,EAAMmB,QACf+H,GAAOlD,mBAAmB,4BAA4BnF,IAAQ,QAASb,GAE3E,MAAM2I,EAAS,GAIf,OAHA3I,EAAM6J,SAAQ,SAAU7J,GACpB2I,EAAO/D,KAAK25B,GAAMzwB,EAAU9N,GAAO,OAEhCkJ,GAAO3B,SAAS+P,GAAO3O,IAElC,OAAOO,GAAOlD,mBAAmB,eAAgB,OAAQnF,GAGtD,SAAS29B,GAAe19B,EAAOS,GAC9BT,EAAMK,QAAUI,EAAOJ,QACvB+H,GAAOlD,mBAAmB,qDAAsD,SAAUzE,GAE9F,MAAMk9B,EAAQ,GAId,OAHA39B,EAAM+I,SAAQ,SAAUhJ,EAAMF,GAC1B89B,EAAM75B,KAAK25B,GAAM19B,EAAMU,EAAOZ,QAE3BwW,GAAQG,GAAOmnB,IAEnB,SAASC,GAAwB59B,EAAOS,GAC3C,OAAOuqB,GAAW0S,GAAe19B,EAAOS,IAErC,SAASo9B,GAAqB79B,EAAOS,GACxC,OAAOqyB,GAAQ4K,GAAe19B,EAAOS,IClFzC,IAWIq9B,GAA6BC,GAAyBC,GAA6BC,GAAgCC,GAXnHh9B,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAWxF,MAAM+8B,GAAU,IAAIx2B,WAAW,IAC/Bw2B,GAAQhnB,KAAK,GACb,MAAMinB,GAAQx3B,QAAQ,GAChB6J,GAAO7J,OAAO,GACdsK,GAAOtK,OAAO,GACd4xB,GAAiB5xB,OAAO,sEAW9B,MAAMy3B,GAAUxtB,GAAMK,GAAM,IACtBotB,GAAWztB,GAAMJ,GAAM,IACvB8tB,GAAmB,CACrBt6B,KAAM,SACNQ,QAAS,SACT+5B,QAAS,UACTC,kBAAmB,UACnBtgB,KAAM,WAEJugB,GAAmB,CACrB,OAAQ,UAAW,UAAW,oBAAqB,QAEvD,SAASC,GAAYh+B,GACjB,OAAO,SAAUzB,GAIb,MAHuB,iBAAX,GACRkJ,GAAOlD,mBAAmB,4BAA4BJ,KAAKC,UAAUpE,KAAQ,UAAUA,IAAOzB,GAE3FA,GAGf,MAAM0/B,GAAe,CACjB36B,KAAM06B,GAAY,QAClBl6B,QAASk6B,GAAY,WACrBH,QAAS,SAAUt/B,GACf,OAAOkJ,GAAOtB,UAAU5H,EAAO,mBAEnCu/B,kBAAmB,SAAUv/B,GACzB,IACI,OAAO+0B,GAAW/0B,GAAOqI,cAE7B,MAAO9E,IACP,OAAO2F,GAAOlD,mBAAmB,2CAA4C,2BAA4BhG,IAE7Gif,KAAM,SAAUjf,GACZ,MAAMoX,EAAQlO,GAAO3B,SAASvH,EAAO,eAIrC,OAHqB,KAAjBoX,EAAMjW,QACN+H,GAAOlD,mBAAmB,8BAA+B,cAAehG,GAErEmX,GAAQC,KAGvB,SAASuoB,GAAe9+B,GAEpB,CACI,MAAM6H,EAAQ7H,EAAK6H,MAAM,kBACzB,GAAIA,EAAO,CACP,MAAMgL,EAAuB,KAAbhL,EAAM,GAChBmJ,EAAQhJ,SAASH,EAAM,IAAM,QAC/BmJ,EAAQ,GAAM,GAAKA,EAAQ,KAAQnJ,EAAM,IAAMA,EAAM,KAAOhE,OAAOmN,KACnE3I,GAAOlD,mBAAmB,wBAAyB,OAAQnF,GAE/D,MAAM++B,EAAcztB,GAAKmnB,GAAgB5lB,EAAU7B,EAAQ,EAAKA,GAC1DguB,EAAcnsB,GAAWksB,EAAc5tB,IAAQktB,GAAS3tB,GAC9D,OAAO,SAAUE,GACb,MAAMzR,EAAQkJ,GAAOtB,UAAU6J,EAAQ,SAIvC,OAHIzR,EAAQ6/B,GAAe7/B,EAAQ4/B,IAC/B12B,GAAOlD,mBAAmB,2BAA2BnF,IAAQ,QAASb,GAEnE2R,GAAMO,GAAOlS,EAAO,KAAM,MAK7C,CACI,MAAM0I,EAAQ7H,EAAK6H,MAAM,gBACzB,GAAIA,EAAO,CACP,MAAMmJ,EAAQhJ,SAASH,EAAM,IAI7B,OAHc,IAAVmJ,GAAeA,EAAQ,IAAMnJ,EAAM,KAAOhE,OAAOmN,KACjD3I,GAAOlD,mBAAmB,sBAAuB,OAAQnF,GAEtD,SAAUb,GAKb,OAJc2W,GAAS3W,GACbmB,SAAW0Q,GACjB3I,GAAOlD,mBAAmB,sBAAsBnF,IAAQ,QAASb,GAjFrF,SAAqBA,GACjB,MAAMoX,EAAQT,GAAS3W,GACjBsgB,EAAYlJ,EAAMjW,OAAS,GACjC,OAAImf,EACOhJ,GAAO,CAACF,EAAO6nB,GAAQn0B,MAAMwV,KAEjCnJ,GAAQC,GA6EI0oB,CAAY9/B,KAI/B,OAAQa,GACJ,IAAK,UAAW,OAAO,SAAUb,GAC7B,OAAOkY,GAAa6c,GAAW/0B,GAAQ,KAE3C,IAAK,OAAQ,OAAO,SAAUA,GAC1B,OAAUA,EAAoBm/B,GAAXC,IAEvB,IAAK,QAAS,OAAO,SAAUp/B,GAC3B,OAAOgsB,GAAUhsB,IAErB,IAAK,SAAU,OAAO,SAAUA,GAC5B,OAAO49B,GAAG59B,IAGlB,OAAO,KAEX,SAAS+/B,GAAWh7B,EAAMi7B,GACtB,MAAO,GAAGj7B,KAAQi7B,EAAO3/B,KAAI,EAAG0E,KAAAA,EAAMlE,KAAAA,KAAYA,EAAO,IAAMkE,IAAOe,KAAK,QAExE,MAAMm6B,GACTp9B,YAAY/B,GACR89B,GAA4Bp5B,IAAIvD,MAChC48B,GAAwBp8B,IAAIR,UAAM,GAClC68B,GAA4Br8B,IAAIR,UAAM,GACtC88B,GAA+Bt8B,IAAIR,UAAM,GACzCD,GAAuBC,KAAM48B,GAAyBj5B,KAAKC,UAAU/E,GAAQ,KAC7EkB,GAAuBC,KAAM68B,GAA6B,IAAI5lB,IAAO,KACrElX,GAAuBC,KAAM88B,GAAgC,IAAI7lB,IAAO,KAExE,MAAMgnB,EAAQ,IAAIhnB,IAEZinB,EAAU,IAAIjnB,IAEdknB,EAAW,IAAIlnB,IACrBhZ,OAAOD,KAAKa,GAAO+I,SAAShJ,IACxBq/B,EAAMz9B,IAAI5B,EAAM,IAAI+I,KACpBu2B,EAAQ19B,IAAI5B,EAAM,IAClBu/B,EAAS39B,IAAI5B,EAAM,IAAI+I,QAE3B,IAAK,MAAM7E,KAAQjE,EAAO,CACtB,MAAMu8B,EAAc,IAAIzzB,IACxB,IAAK,MAAMy2B,KAASv/B,EAAMiE,GAAO,CAEzBs4B,EAAY96B,IAAI89B,EAAMt7B,OACtBmE,GAAOlD,mBAAmB,2BAA2BJ,KAAKC,UAAUw6B,EAAMt7B,YAAYa,KAAKC,UAAUd,KAAS,QAASjE,GAE3Hu8B,EAAY73B,IAAI66B,EAAMt7B,MAEtB,MAAM+I,EAAYuyB,EAAMx/B,KAAK6H,MAAM,uBAAwB,IAAM,KAC7DoF,IAAa/I,GACbmE,GAAOlD,mBAAmB,8BAA8BJ,KAAKC,UAAUiI,KAAa,QAAShN,GAGjF6+B,GAAe7xB,KAI1BqyB,EAAQ59B,IAAIuL,IACb5E,GAAOlD,mBAAmB,gBAAgBJ,KAAKC,UAAUiI,KAAa,QAAShN,GAGnFq/B,EAAQx9B,IAAImL,GAAUlJ,KAAKG,GAC3Bm7B,EAAMv9B,IAAIoC,GAAMS,IAAIsI,KAI5B,MAAMwyB,EAAevxB,MAAM3B,KAAK+yB,EAAQlgC,QAAQ+C,QAAQ+Z,GAAiC,IAA1BojB,EAAQx9B,IAAIoa,GAAG5b,SAClD,IAAxBm/B,EAAan/B,OACb+H,GAAOlD,mBAAmB,uBAAwB,QAASlF,GAEtDw/B,EAAan/B,OAAS,GAC3B+H,GAAOlD,mBAAmB,4CAA4Cs6B,EAAajgC,KAAKW,GAAO4E,KAAKC,UAAU7E,KAAK8E,KAAK,QAAS,QAAShF,GAE9IO,EAAiBY,KAAM,CAAEs+B,YAAaD,EAAa,KAEnD,SAASE,EAAc3/B,EAAM4/B,GACrBA,EAAMl+B,IAAI1B,IACVqI,GAAOlD,mBAAmB,8BAA8BJ,KAAKC,UAAUhF,KAAS,QAASC,GAE7F2/B,EAAMj7B,IAAI3E,GACV,IAAK,MAAMy0B,KAAS4K,EAAMv9B,IAAI9B,GAC1B,GAAKs/B,EAAQ59B,IAAI+yB,GAAjB,CAIAkL,EAAclL,EAAOmL,GAErB,IAAK,MAAMC,KAAWD,EAClBL,EAASz9B,IAAI+9B,GAASl7B,IAAI8vB,GAGlCmL,EAAME,OAAO9/B,GAEjB2/B,CAAcv+B,KAAKs+B,YAAa,IAAI32B,KAEpC,IAAK,MAAO7E,EAAMtC,KAAQ29B,EAAU,CAChC,MAAMQ,EAAK7xB,MAAM3B,KAAK3K,GACtBm+B,EAAGC,OACHn+B,GAAuBT,KAAM68B,GAA6B,KAAKr8B,IAAIsC,EAAMg7B,GAAWh7B,EAAMjE,EAAMiE,IAAS67B,EAAGvgC,KAAKW,GAAM++B,GAAW/+B,EAAGF,EAAME,MAAK8E,KAAK,MAGzJhF,YACA,OAAO8E,KAAK4I,MAAM9L,GAAuBT,KAAM48B,GAAyB,MAE5EiC,WAAWjgC,GACP,IAAIkgC,EAAUr+B,GAAuBT,KAAM88B,GAAgC,KAAKp8B,IAAI9B,GAKpF,OAJKkgC,IACDA,EAAUr+B,GAAuBT,KAAM28B,GAA6B,IAAKI,IAA8Bx8B,KAAKP,KAAMpB,GAClH6B,GAAuBT,KAAM88B,GAAgC,KAAKt8B,IAAI5B,EAAMkgC,IAEzEA,EAEXhB,WAAWh7B,GACP,MAAM4D,EAASjG,GAAuBT,KAAM68B,GAA6B,KAAKn8B,IAAIoC,GAClF,OAAK4D,GACMO,GAAOlD,mBAAmB,iBAAiBJ,KAAKC,UAAUd,KAAS,OAAQA,GAI1Fi8B,WAAWngC,EAAMb,GACb,OAAOiC,KAAK6+B,WAAWjgC,EAAhBoB,CAAsBjC,GAEjCihC,WAAWl8B,EAAM/E,GACb,OAAOgsB,GAAU/pB,KAAK++B,WAAWj8B,EAAM/E,IAE3C4c,OAAO5c,GACH,OAAOiC,KAAK++B,WAAW/+B,KAAKs+B,YAAavgC,GAE7Ckd,KAAKld,GACD,OAAOiC,KAAKg/B,WAAWh/B,KAAKs+B,YAAavgC,GAE7CkhC,OAAOrgC,EAAMb,EAAOmhC,GAIZ,GADgBxB,GAAe9+B,GAE3B,OAAOsgC,EAAStgC,EAAMb,GAI9B,MAAM0I,EAAQ7H,EAAK6H,MAAM,yBACzB,GAAIA,EAAO,CACP,MAAMg4B,EAAUh4B,EAAM,GAChBvH,EAAS0H,SAASH,EAAM,IAI9B,OAHIvH,GAAU,GAAKnB,EAAMmB,SAAWA,GAChC+H,GAAOlD,mBAAmB,0DAA2D,QAAShG,GAE3FA,EAAMK,KAAKK,GAAMuB,KAAKi/B,OAAOR,EAAShgC,EAAGygC,KAGpD,MAAMnB,EAAS/9B,KAAKnB,MAAMD,GAC1B,OAAIm/B,EACOA,EAAOx/B,QAAO,CAACC,GAASsE,KAAAA,EAAMlE,KAAAA,MACjCJ,EAAMsE,GAAQ9C,KAAKi/B,OAAOrgC,EAAMb,EAAM+E,GAAOo8B,GACtC1gC,IACR,IAEAyI,GAAOlD,mBAAmB,iBAAiBnF,IAAQ,OAAQA,GAEtEugC,MAAMphC,EAAOmhC,GACT,OAAOl/B,KAAKi/B,OAAOj/B,KAAKs+B,YAAavgC,EAAOmhC,GAEhDj5B,YAAYpH,GACR,OAAO,IAAIm/B,GAAiBn/B,GAEhCoH,sBAAsBpH,GAClB,OAAOm/B,GAAiB7yB,KAAKtM,GAAOy/B,YAExCr4B,kBAAkBnD,EAAMjE,EAAOd,GAC3B,OAAOigC,GAAiB7yB,KAAKtM,GAAOmgC,WAAWl8B,EAAM/E,GAEzDkI,kBAAkBm5B,GACd,MAAMC,EAAe,GACrB,IAAK,MAAMv8B,KAAQs8B,EAAQ,CACvB,MAAMxgC,EAAOw+B,GAAiBt6B,GACzBlE,GACDqI,GAAOlD,mBAAmB,kCAAkCJ,KAAKC,UAAUd,KAAS,SAAUs8B,GAElGC,EAAa18B,KAAK,CAAEG,KAAAA,EAAMlE,KAAAA,IAK9B,OAHAygC,EAAaT,MAAK,CAAC5sB,EAAGC,IACXsrB,GAAiB14B,QAAQmN,EAAElP,MAAQy6B,GAAiB14B,QAAQoN,EAAEnP,QAElEk7B,GAAiBgB,WAAW,eAAgB,CAAEM,aAAcD,GAAgBD,GAEvFn5B,cAAcm5B,EAAQvgC,EAAOd,GACzB,OAAOsX,GAAO,CACV,SACA2oB,GAAiBuB,WAAWH,GAC5BpB,GAAiB7yB,KAAKtM,GAAOoc,KAAKld,KAG1CkI,YAAYm5B,EAAQvgC,EAAOd,GACvB,OAAOgsB,GAAUiU,GAAiBrjB,OAAOykB,EAAQvgC,EAAOd,IAG5DkI,0BAA0Bm5B,EAAQvgC,EAAOd,EAAO62B,GAE5CwK,EAASnhC,OAAOoN,OAAO,GAAI+zB,GAE3B,MAAMI,EAAW,GAEbJ,EAAO9B,oBAAsBhpB,GAAY8qB,EAAO9B,kBAAmB,MACnEkC,EAASJ,EAAO9B,mBAAqB,MAGzC,MAAMwB,EAAUd,GAAiB7yB,KAAKtM,GAEtCigC,EAAQK,MAAMphC,GAAO,CAACa,EAAMb,KACX,YAATa,GAAuB0V,GAAYvW,EAAO,MAC1CyhC,EAASzhC,GAAS,MAEfA,KAGX,IAAK,MAAM+E,KAAQ08B,EACfA,EAAS18B,SAAc8xB,EAAY9xB,GAavC,OAVIs8B,EAAO9B,mBAAqBkC,EAASJ,EAAO9B,qBAC5C8B,EAAO9B,kBAAoBkC,EAASJ,EAAO9B,oBASxC,CAAE8B,OAAAA,EAAQrhC,MANjBA,EAAQ+gC,EAAQK,MAAMphC,GAAO,CAACa,EAAMb,IACnB,YAATa,GAAsB4gC,EAASzhC,GACxByhC,EAASzhC,GAEbA,KAIfkI,kBAAkBm5B,EAAQvgC,EAAOd,GAE7BigC,GAAiBuB,WAAWH,GAE5B,MAAMK,EAAe,GACfC,EAAc,GACpBnC,GAAiB31B,SAAS9E,IACtB,MAAM/E,EAAQqhC,EAAOt8B,GACR,MAAT/E,IAGJ0hC,EAAa38B,GAAQ26B,GAAa36B,GAAM/E,GACxC2hC,EAAY/8B,KAAK,CAAEG,KAAAA,EAAMlE,KAAMw+B,GAAiBt6B,SAEpD,MAAMg8B,EAAUd,GAAiB7yB,KAAKtM,GAChC8gC,EAAkB1hC,OAAOoN,OAAO,GAAIxM,GAS1C,OARI8gC,EAAgBL,aAChBr4B,GAAOlD,mBAAmB,2CAA4C,qBAAsBlF,GAG5F8gC,EAAgBL,aAAeI,EAGnCZ,EAAQnkB,OAAO5c,GACR,CACHc,MAAO8gC,EACPP,OAAQK,EACRnB,YAAaQ,EAAQR,YACrB76B,QAASq7B,EAAQK,MAAMphC,GAAO,CAACa,EAAMb,KAEjC,GAAIa,EAAK6H,MAAM,eACX,OAAOyO,GAAQjO,GAAO3B,SAASvH,IAGnC,GAAIa,EAAK6H,MAAM,UACX,OAAOQ,GAAOtB,UAAU5H,GAAO+L,WAEnC,OAAQlL,GACJ,IAAK,UACD,OAAOb,EAAMqI,cACjB,IAAK,OACD,QAASrI,EACb,IAAK,SAID,MAHuB,iBAAX,GACRkJ,GAAOlD,mBAAmB,iBAAkB,QAAShG,GAElDA,EAEf,OAAOkJ,GAAOlD,mBAAmB,mBAAoB,OAAQnF,QAK7Eg+B,GAA0B,IAAIn7B,QAAWo7B,GAA8B,IAAIp7B,QAAWq7B,GAAiC,IAAIr7B,QAAWk7B,GAA8B,IAAIr2B,QAAWy2B,GAA+B,SAAsCn+B,GAEpP,CACI,MAAMkgC,EAAUpB,GAAe9+B,GAC/B,GAAIkgC,EACA,OAAOA,EAIf,MAAMr4B,EAAQ7H,EAAK6H,MAAM,yBACzB,GAAIA,EAAO,CACP,MAAMg4B,EAAUh4B,EAAM,GAChBm5B,EAAa5/B,KAAK6+B,WAAWJ,GAC7Bv/B,EAAS0H,SAASH,EAAM,IAC9B,OAAQ1I,IACAmB,GAAU,GAAKnB,EAAMmB,SAAWA,GAChC+H,GAAOlD,mBAAmB,0DAA2D,QAAShG,GAElG,IAAI2I,EAAS3I,EAAMK,IAAIwhC,GAIvB,OAHIn/B,GAAuBT,KAAM68B,GAA6B,KAAKv8B,IAAIm+B,KACnE/3B,EAASA,EAAOtI,IAAI2rB,KAEjBA,GAAU1U,GAAO3O,KAIhC,MAAMq3B,EAAS/9B,KAAKnB,MAAMD,GAC1B,GAAIm/B,EAAQ,CACR,MAAM8B,EAAclE,GAAGl7B,GAAuBT,KAAM68B,GAA6B,KAAKn8B,IAAI9B,IAC1F,OAAQb,IACJ,MAAMuB,EAASy+B,EAAO3/B,KAAI,EAAG0E,KAAAA,EAAMlE,KAAAA,MAC/B,MAAM8H,EAAS1G,KAAK6+B,WAAWjgC,EAAhBoB,CAAsBjC,EAAM+E,IAC3C,OAAIrC,GAAuBT,KAAM68B,GAA6B,KAAKv8B,IAAI1B,GAC5DmrB,GAAUrjB,GAEdA,KAGX,OADApH,EAAOsV,QAAQirB,GACRxqB,GAAO/V,IAGtB,OAAO2H,GAAOlD,mBAAmB,iBAAiBnF,IAAQ,OAAQA,ICxbtE,IAWIkhC,GAAsBC,GAAmBC,GAAmBC,GAAsBC,GAAqBC,GAAwBC,GAX/HrgC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAajF,MAAMogC,GACTz/B,YAAY0/B,EAAUC,EAAO36B,GACzB,MAAM9C,EAAOw9B,EAASx9B,KAAM09B,EAAYF,EAASp0B,SACjD9M,EAAiBY,KAAM,CACnBsgC,SAAAA,EAAUx9B,KAAAA,EAAM09B,UAAAA,EAAWD,MAAAA,EAAO36B,KAAAA,KAIvC,MAAM66B,GACT7/B,YAAY0/B,EAAUI,EAAU96B,EAAM7H,GAClC,MAAM+E,EAAOw9B,EAASx9B,KAAM09B,EAAYF,EAASp0B,SACjD9M,EAAiBY,KAAM,CACnBsgC,SAAAA,EAAUx9B,KAAAA,EAAM8C,KAAAA,EAAM46B,UAAAA,EAAWE,SAAAA,EAAU3iC,MAAAA,KAIhD,MAAM4iC,GACT//B,YAAY0/B,EAAUI,EAAU96B,GAC5B,MAAM9C,EAAOw9B,EAASx9B,KAAM09B,EAAYF,EAASp0B,SACjD9M,EAAiBY,KAAM,CACnBsgC,SAAAA,EAAUx9B,KAAAA,EAAM8C,KAAAA,EAAM46B,UAAAA,EAAWE,SAAAA,KAItC,MAAME,GACThgC,YAAYqa,GACR7b,EAAiBY,KAAM,CAAEib,KAAAA,EAAM4lB,YAAY,IAE/C56B,iBAAiBlI,GACb,SAAUA,IAASA,EAAM8iC,aAIjC,MAAMC,GAAe,CACjB,EAAK,gBACL,EAAK,gBACL,GAAM,sBACN,GAAM,6BACN,GAAM,gBACN,GAAM,8CACN,GAAM,wDACN,GAAM,6CACN,GAAM,gBACN,GAAM,0BAEJC,GAAgB,CAClB,aAAc,CACVP,UAAW,gBACX19B,KAAM,QACN6K,OAAQ,CAAC,UACTkqB,OAASp0B,GACE,+BAA+BE,KAAKC,UAAUH,MAG7D,aAAc,CACV+8B,UAAW,iBACX19B,KAAM,QACN6K,OAAQ,CAAC,WACTkqB,OAASt2B,IACL,IAAIs2B,EAAS,qBAIb,OAHIt2B,GAAQ,GAAKA,GAAQ,KAAQu/B,GAAav/B,EAAKuI,cAC/C+tB,EAASiJ,GAAav/B,EAAKuI,aAExB,8BAA8BvI,EAAKuI,SAAS,QAAQ+tB,QAIhE,MAAMmJ,GACTpgC,YAAYqgC,GACRnB,GAAqBv8B,IAAIvD,MACzB+/B,GAAkBv/B,IAAIR,UAAM,GAC5BggC,GAAkBx/B,IAAIR,UAAM,GAC5BigC,GAAqBz/B,IAAIR,UAAM,GAE/BkgC,GAAoB1/B,IAAIR,UAAM,GAC9B,IAAIkhC,EAAM,GAENA,EADuB,iBAAf,EACFv9B,KAAK4I,MAAM00B,GAGXA,EAEVlhC,GAAuBC,KAAMigC,GAAsB,IAAIhpB,IAAO,KAC9DlX,GAAuBC,KAAM+/B,GAAmB,IAAI9oB,IAAO,KAC3DlX,GAAuBC,KAAMggC,GAAmB,IAAI/oB,IAAO,KAE3D7X,EAAiBY,KAAM,CACnBihC,UAAWhjC,OAAO4J,OAAOq5B,EAAI9iC,KAAKgC,GAAMsN,GAASvC,KAAK/K,KAAIW,QAAQX,GAAY,MAALA,OAE7EL,GAAuBC,KAAMkgC,GAAqBlgC,KAAKmhC,cAAe,KAEtEnhC,KAAKihC,UAAUr5B,SAAS04B,IACpB,IAAIc,EACJ,OAAQd,EAAS1hC,MACb,IAAK,cACD,OAAIoB,KAAKqhC,YACLp6B,EAAOlB,KAAK,2CAIhB3G,EAAiBY,KAAM,CAAEqhC,OAAQf,IAErC,IAAK,WAGDc,EAAS3gC,GAAuBT,KAAMigC,GAAsB,KAC5D,MACJ,IAAK,QAEDmB,EAAS3gC,GAAuBT,KAAMggC,GAAmB,KACzD,MACJ,IAAK,QACDoB,EAAS3gC,GAAuBT,KAAM+/B,GAAmB,KACzD,MACJ,QACI,OAER,MAAMS,EAAYF,EAASp0B,SACvBk1B,EAAO9gC,IAAIkgC,GACXv5B,EAAOlB,KAAK,0BAA4By6B,GAG5CY,EAAO5gC,IAAIggC,EAAWF,MAGrBtgC,KAAKqhC,QACNjiC,EAAiBY,KAAM,CACnBqhC,OAAQvzB,GAAoBF,WAAW,mBAKnD1B,OAAOA,GACEA,IACDA,EAAS1E,EAAWkF,MAEpBR,IAAW1E,EAAW2E,SACtBlF,EAAOlD,mBAAmB,gDAAiD,SAAUmI,GAEzF,MAAMg1B,EAAMlhC,KAAKihC,UAAU7iC,KAAKgC,GAAMA,EAAE8L,OAAOA,KAE/C,OAAIA,IAAW1E,EAAW4E,KACfzI,KAAKC,UAAUs9B,EAAI9iC,KAAKspB,GAAM/jB,KAAK4I,MAAMmb,MAE7CwZ,EAEXC,cACI,OAAO1F,GAEX6F,gBAAgB9hC,GACZ,OAAQiB,GAAuBT,KAAM8/B,GAAsB,IAAKK,IAAwB5/B,KAAKP,KAAMR,EAAK,MAAM,GAAQsD,KAE1Hy+B,YAAY/hC,EAAKF,GACb,OAAOmB,GAAuBT,KAAM8/B,GAAsB,IAAKK,IAAwB5/B,KAAKP,KAAMR,EAAKF,GAAU,MAAM,GAE3HkiC,aAAahiC,GACT,OAAQiB,GAAuBT,KAAM8/B,GAAsB,IAAKM,IAAqB7/B,KAAKP,KAAMR,EAAK,MAAM,GAAQsD,KAEvH2+B,SAASjiC,EAAKF,GACV,OAAOmB,GAAuBT,KAAM8/B,GAAsB,IAAKM,IAAqB7/B,KAAKP,KAAMR,EAAKF,GAAU,MAAM,GAGxHoiC,SAASliC,EAAKF,GACV,GAAIgV,GAAY9U,GAAM,CAClB,MAAMkhC,EAAWlhC,EAAI4G,cACrB,IAAK,MAAMk6B,KAAY7/B,GAAuBT,KAAM+/B,GAAmB,KAAKzgC,SACxE,GAAIohC,IAAa1gC,KAAK2hC,YAAYrB,GAC9B,OAAOA,EAGfr5B,EAAOlD,mBAAmB,oBAAqB,WAAYvE,GAG/D,IAA0B,IAAtBA,EAAIqF,QAAQ,KAAa,CACzB,MAAM+8B,EAAW,GACjB,IAAK,MAAO9+B,EAAMw9B,KAAa7/B,GAAuBT,KAAM+/B,GAAmB,KACvEj9B,EAAKhE,MAAM,KAAiB,KAAOU,GACnCoiC,EAASj/B,KAAK29B,GAUtB,OAPwB,IAApBsB,EAAS1iC,OACT+H,EAAOlD,mBAAmB,oBAAqB,OAAQvE,GAElDoiC,EAAS1iC,OAAS,GAEvB+H,EAAOlD,mBAAmB,2BAA4B,OAAQvE,GAE3DoiC,EAAS,GAGpB,MAAMl7B,EAASjG,GAAuBT,KAAM+/B,GAAmB,KAAKr/B,IAAIqN,GAAcH,WAAWpO,GAAK0M,UACtG,OAAIxF,GAGGO,EAAOlD,mBAAmB,oBAAqB,YAAavE,GAGvEmiC,YAAYrB,GAiBR,OAAO7qB,GAAUkmB,GAAG2E,EAASp0B,UAAW,EAAG,GAG/C21B,cAAcvB,GAEV,OAAO3E,GAAG2E,EAASp0B,UAEvB41B,cAAcxzB,EAAQqG,GAClB,OAAOlU,GAAuBT,KAAMkgC,GAAqB,KAAKvK,OAAOrnB,EAAQqG,GAEjFotB,cAAczzB,EAAQhP,GAClB,OAAOmB,GAAuBT,KAAMkgC,GAAqB,KAAKvlB,OAAOrM,EAAQhP,GAEjF0iC,aAAa1iC,GACT,OAAOU,KAAK+hC,cAAc/hC,KAAKqhC,OAAO1zB,OAAQrO,GAAU,IAE5D2iC,kBAAkB3B,EAAU3rB,GAOxB,MAN0B,iBAAd,IACR2rB,EAAWtgC,KAAK0hC,SAASpB,IAEzB7qB,GAAUd,EAAM,EAAG,KAAO3U,KAAK2hC,YAAYrB,IAC3Cr5B,EAAOlD,mBAAmB,uCAAuCu8B,EAASx9B,QAAS,OAAQ6R,GAExF3U,KAAK8hC,cAAcxB,EAAS3yB,OAAQ8H,GAAUd,EAAM,IAE/DutB,kBAAkB5B,EAAUhhC,GAIxB,MAH0B,iBAAd,IACRghC,EAAWtgC,KAAK0hC,SAASpB,IAEtBjrB,GAAO,CACVrV,KAAK2hC,YAAYrB,GACjBtgC,KAAK+hC,cAAczB,EAAS3yB,OAAQrO,GAAU,MAItD6iC,mBAAmB7B,EAAU3rB,GAOzB,MAN0B,iBAAd,IACR2rB,EAAWtgC,KAAKuhC,YAAYjB,IAE5B7qB,GAAUd,EAAM,EAAG,KAAO3U,KAAK2hC,YAAYrB,IAC3Cr5B,EAAOlD,mBAAmB,0CAA0Cu8B,EAASx9B,QAAS,OAAQ6R,GAE3F3U,KAAK8hC,cAAcxB,EAAS3yB,OAAQ8H,GAAUd,EAAM,IAG/DytB,mBAAmB9B,EAAUhhC,GAIzB,MAH0B,iBAAd,IACRghC,EAAWtgC,KAAKuhC,YAAYjB,IAEzBjrB,GAAO,CACVrV,KAAK2hC,YAAYrB,GACjBtgC,KAAK+hC,cAAczB,EAAS3yB,OAAQrO,GAAU,MAItD+iC,qBAAqB/B,EAAU3rB,GACD,iBAAd,IACR2rB,EAAWtgC,KAAKuhC,YAAYjB,IAEhC,IAAI78B,EAAU,iCACd,MAAM0R,EAAQT,GAASC,GACvB,GAAKQ,EAAMjW,OAAS,IAAQ,EACxB,IACI,OAAOuB,GAAuBT,KAAMkgC,GAAqB,KAAKvK,OAAO2K,EAASxxB,QAASqG,GAE3F,MAAO7T,GACHmC,EAAU,+BAIlB,OAAOwD,EAAOnD,WAAWL,EAAS,WAAY,CAC1C1F,MAAOmX,GAAQC,GACflT,KAAM,CAAEiD,OAAQo7B,EAASx9B,KAAM09B,UAAWF,EAASp0B,YAG3D1I,UAAU88B,EAAU7Z,EAAOwN,GACG,iBAAd,IACRqM,EAAWtgC,KAAKuhC,YAAYjB,IAEhC,MAAM3rB,EAAO1N,EAAO3B,SAASmhB,GAC7B,IAAI7gB,EASA08B,EACAC,EACAC,EAVJ,GAAIvO,EACA,IACIruB,EAAOnF,GAAuBT,KAAMkgC,GAAqB,KAAKvK,OAAO2K,EAAS3yB,OAAQsmB,EAAGtf,MAAQ,MAErG,MAAOrT,GACHwF,QAAQC,IAAIzF,GAMpB,IAAIu2B,EAAS,iBACb,GAAoB,IAAhBljB,EAAKzV,OACL24B,EAAS,4BAER,GAAKljB,EAAKzV,OAAS,IAAQ,EAAG,CAC/B,MAAMwhC,EAAWxrB,GAAQP,EAAK9L,MAAM,EAAG,IACjC45B,EAAU1B,GAAcL,GAC9B,GAAI+B,EACA,IACIF,EAAYE,EAAQ3/B,KACpB0/B,EAAiBC,EAAQjC,UACzB8B,EAAY7hC,GAAuBT,KAAMkgC,GAAqB,KAAKvK,OAAO8M,EAAQ90B,OAAQgH,EAAK9L,MAAM,IACrGgvB,EAAS4K,EAAQ5K,UAAUyK,GAE/B,MAAOhhC,GACHwF,QAAQC,IAAIzF,OAGf,CACDu2B,EAAS,uBACT,IACI,MAAMv2B,EAAQtB,KAAK0hC,SAAShB,GAC5B6B,EAAYjhC,EAAMwB,KAClB0/B,EAAiBlhC,EAAM4K,SACvB2rB,EAAS,iBAAiB2K,IAC1B,IACIF,EAAY7hC,GAAuBT,KAAMkgC,GAAqB,KAAKvK,OAAOr0B,EAAMqM,OAAQgH,EAAK9L,MAAM,IAEvG,MAAOvH,GACHu2B,EAAS,iBAAiB2K,mCAGlC,MAAOlhC,GACHwF,QAAQC,IAAIzF,KAIxB,OAAO2F,EAAOzD,UAAU,wBAAyB,iBAAkB,CAC/DmR,KAAMO,GAAQP,GAAO+tB,YAAa,KAClCx9B,OAAQo7B,EAASx9B,KAAM09B,UAAWF,EAASp0B,SAAUtG,KAAAA,EACrD08B,UAAAA,EAAWC,UAAAA,EAAWC,eAAAA,EAAgB3K,OAAAA,IAI9C8K,qBAAqBC,EAAkBtjC,GAInC,MAHkC,iBAAtB,IACRsjC,EAAmB5iC,KAAKuhC,YAAYqB,IAEjC1tB,GAAQzU,GAAuBT,KAAMkgC,GAAqB,KAAKvlB,OAAOioB,EAAiB9zB,QAASxP,GAAU,KAiCrHujC,mBAAmBC,EAAexjC,GACC,iBAAnB,IACRwjC,EAAgB9iC,KAAKyhC,SAASqB,IAE9BxjC,EAAOJ,OAAS4jC,EAAcn1B,OAAOzO,QACrC+H,EAAOnD,WAAW,0BAA4Bg/B,EAAc52B,SAAU,sBAAuB,CACzF9G,MAAO9F,EAAOJ,OACdmG,cAAey9B,EAAcn1B,OAAOzO,SAG5C,MAAM6jC,EAAS,GACVD,EAAcr0B,WACfs0B,EAAOpgC,KAAK3C,KAAK6hC,cAAciB,IAEnC,MAAME,EAAc,CAACx1B,EAAOzP,IACL,WAAfyP,EAAM5O,KACC+8B,GAAG59B,GAEU,UAAfyP,EAAM5O,KACJmrB,GAAU7U,GAAQnX,KAGV,YAAfyP,EAAM5O,MACN6B,GAAuBT,KAAMkgC,GAAqB,KAAKvlB,OAAO,CAAC,WAAY,CAAC5c,IAEzEkY,GAAaf,GAAQnX,GAAQ,KAyBxC,IAtBAuB,EAAOsI,SAAQ,CAAC7J,EAAOW,KACnB,MAAM8O,EAAQs1B,EAAcn1B,OAAOjP,GAC9B8O,EAAM1B,QAME,MAAT/N,EACAglC,EAAOpgC,KAAK,MAEY,UAAnB6K,EAAM3B,UAA2C,UAAnB2B,EAAM3B,SACzC5E,EAAOlD,mBAAmB,gDAAkD,YAAcyJ,EAAM1K,KAAO/E,GAElG+O,MAAMN,QAAQzO,GACnBglC,EAAOpgC,KAAK5E,EAAMK,KAAKL,GAAUilC,EAAYx1B,EAAOzP,MAGpDglC,EAAOpgC,KAAKqgC,EAAYx1B,EAAOzP,IAflB,MAATA,GACAkJ,EAAOlD,mBAAmB,qDAAuD,YAAcyJ,EAAM1K,KAAO/E,MAkBjHglC,EAAO7jC,QAAwC,OAA9B6jC,EAAOA,EAAO7jC,OAAS,IAC3C6jC,EAAO15B,MAEX,OAAO05B,EAEXE,eAAeH,EAAexjC,GACK,iBAAnB,IACRwjC,EAAgB9iC,KAAKyhC,SAASqB,IAElC,MAAMC,EAAS,GACTG,EAAY,GACZC,EAAa,GA6BnB,OA5BKL,EAAcr0B,WACfs0B,EAAOpgC,KAAK3C,KAAK6hC,cAAciB,IAE/BxjC,EAAOJ,SAAW4jC,EAAcn1B,OAAOzO,QACvC+H,EAAOlD,mBAAmB,kCAAmC,SAAUzE,GAE3EwjC,EAAcn1B,OAAO/F,SAAQ,CAAC4F,EAAO9O,KACjC,MAAMX,EAAQuB,EAAOZ,GACrB,GAAI8O,EAAM1B,QACN,GAAmB,WAAf0B,EAAM5O,KACNmkC,EAAOpgC,KAAKg5B,GAAG59B,SAEd,GAAmB,UAAfyP,EAAM5O,KACXmkC,EAAOpgC,KAAKonB,GAAUhsB,QAErB,CAAA,GAAuB,UAAnByP,EAAM3B,UAA2C,UAAnB2B,EAAM3B,SAEzC,MAAM,IAAI1M,MAAM,mBAGhB4jC,EAAOpgC,KAAKlC,GAAuBT,KAAMkgC,GAAqB,KAAKvlB,OAAO,CAACnN,EAAM5O,MAAO,CAACb,UAI7FmlC,EAAUvgC,KAAK6K,GACf21B,EAAWxgC,KAAK5E,MAGjB,CACH4W,KAAMlU,GAAuBT,KAAMkgC,GAAqB,KAAKvlB,OAAOuoB,EAAWC,GAC/EJ,OAAQA,GAIhBK,eAAeN,EAAenuB,EAAMouB,GAIhC,GAH+B,iBAAnB,IACRD,EAAgB9iC,KAAKyhC,SAASqB,IAEpB,MAAVC,IAAmBD,EAAcr0B,UAAW,CAC5C,MAAM40B,EAAarjC,KAAK6hC,cAAciB,GACjCxuB,GAAYyuB,EAAO,GAAI,KAAOA,EAAO,GAAG38B,gBAAkBi9B,GAC3Dp8B,EAAOlD,mBAAmB,0BAA2B,YAAag/B,EAAO,IAE7EA,EAASA,EAAOl6B,MAAM,GAE1B,MAAMiD,EAAU,GACVw3B,EAAa,GACb5rB,EAAU,GAChBorB,EAAcn1B,OAAO/F,SAAQ,CAAC4F,EAAO9O,KAC7B8O,EAAM1B,QACa,WAAf0B,EAAM5O,MAAoC,UAAf4O,EAAM5O,MAAuC,UAAnB4O,EAAM3B,UAA2C,UAAnB2B,EAAM3B,UACzFC,EAAQnJ,KAAKoI,GAAU8C,WAAW,CAAEjP,KAAM,UAAWkE,KAAM0K,EAAM1K,QACjE4U,EAAQ/U,MAAK,KAGbmJ,EAAQnJ,KAAK6K,GACbkK,EAAQ/U,MAAK,KAIjB2gC,EAAW3gC,KAAK6K,GAChBkK,EAAQ/U,MAAK,OAGrB,MAAM4gC,EAA2B,MAAVR,EAAkBtiC,GAAuBT,KAAMkgC,GAAqB,KAAKvK,OAAO7pB,EAASuJ,GAAO0tB,IAAW,KAC5HS,EAAmB/iC,GAAuBT,KAAMkgC,GAAqB,KAAKvK,OAAO2N,EAAY3uB,GAAM,GAEnGrV,EAAS,GACTtB,EAAO,GACb,IAAIylC,EAAkB,EAAGC,EAAe,EA8BxC,OA7BAZ,EAAcn1B,OAAO/F,SAAQ,CAAC4F,EAAO9O,KACjC,IAAIX,EAAQ,KACZ,GAAIyP,EAAM1B,QACN,GAAqB,MAAjBy3B,EACAxlC,EAAQ,IAAI6iC,GAAQ,WAEnB,GAAIlpB,EAAQhZ,GACbX,EAAQ,IAAI6iC,GAAQ2C,EAAcG,WAGlC,IACI3lC,EAAQwlC,EAAcG,KAE1B,MAAOpiC,GACHvD,EAAQuD,OAKhB,IACIvD,EAAQylC,EAAiBC,KAE7B,MAAOniC,GACHvD,EAAQuD,EAGhBhC,EAAOqD,KAAK5E,GACZC,EAAK2E,KAAK6K,EAAM1K,MAAQ,SAErBkU,GAAO4f,UAAUt3B,EAAQtB,GAIpC2lC,iBAAiB1P,GACb,MAAMtf,EAAO1N,EAAO3B,SAAS2uB,EAAGtf,KAAM,WAChC5W,EAAQkJ,EAAOtB,UAAuB,MAAZsuB,EAAGl2B,MAAiBk2B,EAAGl2B,MAAQ,EAAG,YAC5DuiC,EAAWtgC,KAAKuhC,YAAYrsB,GAAQP,EAAK9L,MAAM,EAAG,KACxD,IAAKy3B,EACD,OAAO,KAEX,MAAM16B,EAAOnF,GAAuBT,KAAMkgC,GAAqB,KAAKvK,OAAO2K,EAAS3yB,OAAQgH,EAAK9L,MAAM,IACvG,OAAO,IAAI43B,GAAuBH,EAAUtgC,KAAK2hC,YAAYrB,GAAW16B,EAAM7H,GAMlF6lC,SAAS78B,GACL,MAAMu5B,EAAWtgC,KAAKyhC,SAAS16B,EAAIg8B,OAAO,IAC1C,OAAKzC,GAAYA,EAAS7xB,UACf,KAKJ,IAAI4xB,GAAeC,EAAUtgC,KAAK6hC,cAAcvB,GAAWtgC,KAAKojC,eAAe9C,EAAUv5B,EAAI4N,KAAM5N,EAAIg8B,SAElHc,WAAWlvB,GACP,MAAMmvB,EAAU5uB,GAAQP,GAClB2rB,EAAWtgC,KAAK0hC,SAASjsB,GAAUquB,EAAS,EAAG,IACrD,IAAKxD,EACD,OAAO,KAEX,MAAM16B,EAAOnF,GAAuBT,KAAMkgC,GAAqB,KAAKvK,OAAO2K,EAAS3yB,OAAQ8H,GAAUquB,EAAS,IAC/G,OAAO,IAAInD,GAAiBL,EAAUtgC,KAAK2hC,YAAYrB,GAAW16B,GAEtEK,YAAYlI,GAER,OAAIA,aAAiBijC,GACVjjC,EAGY,iBAAX,EACD,IAAIijC,GAAUr9B,KAAK4I,MAAMxO,IAGN,mBAAlBA,EAAY,OACb,IAAIijC,GAAUjjC,EAAMmO,OAAO1E,EAAW4E,OAG1C,IAAI40B,GAAUjjC,IAG7BgiC,GAAoB,IAAIt+B,QAAWu+B,GAAoB,IAAIv+B,QAAWw+B,GAAuB,IAAIx+B,QAAWy+B,GAAsB,IAAIz+B,QAAWq+B,GAAuB,IAAIx5B,QAAW65B,GAAyB,SAAgC3gC,EAAKF,EAAQykC,GAEzP,GAAIzvB,GAAY9U,GAAM,CAClB,MAAMkhC,EAAWlhC,EAAI4G,cACrB,IAAK,MAAMk6B,KAAY7/B,GAAuBT,KAAMigC,GAAsB,KAAK3gC,SAC3E,GAAIohC,IAAa1gC,KAAK2hC,YAAYrB,GAC9B,OAAOA,EAGfr5B,EAAOlD,mBAAmB,uBAAwB,WAAYvE,GAGlE,IAA0B,IAAtBA,EAAIqF,QAAQ,KAAa,CACzB,MAAM+8B,EAAW,GACjB,IAAK,MAAO9+B,EAAMw9B,KAAa7/B,GAAuBT,KAAMigC,GAAsB,KAC1En9B,EAAKhE,MAAM,KAAiB,KAAOU,GACnCoiC,EAASj/B,KAAK29B,GAGtB,GAAIhhC,EAAQ,CACR,MAAM0kC,EAAa1kC,EAAOJ,OAAS,EAAKI,EAAOA,EAAOJ,OAAS,GAAK,KACpE,IAAI+kC,EAAc3kC,EAAOJ,OACrBglC,GAAe,EACfnP,GAAMS,QAAQwO,IAAiC,cAAnBA,EAAUplC,OACtCslC,GAAe,EACfD,KAIJ,IAAK,IAAIhlC,EAAI2iC,EAAS1iC,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC3C,MAAM0O,EAASi0B,EAAS3iC,GAAG0O,OAAOzO,OAC9ByO,IAAWs2B,GAAiBC,GAAgBv2B,IAAWs2B,EAAc,GACrErC,EAASuC,OAAOllC,EAAG,GAI3B,IAAK,IAAIA,EAAI2iC,EAAS1iC,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC3C,MAAM0O,EAASi0B,EAAS3iC,GAAG0O,OAC3B,IAAK,IAAI+Z,EAAI,EAAGA,EAAIpoB,EAAOJ,OAAQwoB,IAE/B,GAAKqN,GAAMS,QAAQl2B,EAAOooB,IAA1B,CAIA,GAAIA,GAAK/Z,EAAOzO,OAAQ,CACpB,GAAuB,cAAnBI,EAAOooB,GAAG9oB,KACV,SAEJgjC,EAASuC,OAAOllC,EAAG,GACnB,MAGJ,GAAIK,EAAOooB,GAAG9oB,OAAS+O,EAAO+Z,GAAG7b,SAAU,CACvC+1B,EAASuC,OAAOllC,EAAG,GACnB,SAOhB,GAAwB,IAApB2iC,EAAS1iC,QAAgBI,GAAUA,EAAOJ,SAAW0iC,EAAS,GAAGj0B,OAAOzO,OAAQ,CAChF,MAAMklC,EAAU9kC,EAAOA,EAAOJ,OAAS,IACxB,MAAXklC,GAAmBt3B,MAAMN,QAAQ43B,IAAiC,iBAArB,IAC7CxC,EAASuC,OAAO,EAAG,GAG3B,GAAwB,IAApBvC,EAAS1iC,OACT+H,EAAOlD,mBAAmB,uBAAwB,OAAQvE,QAEzD,GAAIoiC,EAAS1iC,OAAS,GAAK6kC,EAAa,CACzC,MAAMM,EAAWzC,EAASxjC,KAAKkmC,GAAM3gC,KAAKC,UAAU0gC,EAAEp4B,YAAWrI,KAAK,MACtEoD,EAAOlD,mBAAmB,qCAAqCsgC,KAAa,OAAQ7kC,GAExF,OAAOoiC,EAAS,GAGpB,MAAMl7B,EAASjG,GAAuBT,KAAMigC,GAAsB,KAAKv/B,IAAIuN,GAAiBL,WAAWpO,GAAK0M,UAC5G,OAAIxF,GAGGO,EAAOlD,mBAAmB,uBAAwB,YAAavE,IACvE4gC,GAAsB,SAA6B5gC,EAAKF,EAAQykC,GAE/D,GAAIzvB,GAAY9U,GAAM,CAClB,MAAM6jC,EAAa7jC,EAAI4G,cACvB,IAAK,MAAMk6B,KAAY7/B,GAAuBT,KAAMggC,GAAmB,KAAK1gC,SACxE,GAAI+jC,IAAerjC,KAAK6hC,cAAcvB,GAClC,OAAOA,EAGfr5B,EAAOlD,mBAAmB,oBAAqB,aAAcvE,GAGjE,IAA0B,IAAtBA,EAAIqF,QAAQ,KAAa,CACzB,MAAM+8B,EAAW,GACjB,IAAK,MAAO9+B,EAAMw9B,KAAa7/B,GAAuBT,KAAMggC,GAAmB,KACvEl9B,EAAKhE,MAAM,KAAiB,KAAOU,GACnCoiC,EAASj/B,KAAK29B,GAGtB,GAAIhhC,EAAQ,CAER,IAAK,IAAIL,EAAI2iC,EAAS1iC,OAAS,EAAGD,GAAK,EAAGA,IAClC2iC,EAAS3iC,GAAG0O,OAAOzO,OAASI,EAAOJ,QACnC0iC,EAASuC,OAAOllC,EAAG,GAI3B,IAAK,IAAIA,EAAI2iC,EAAS1iC,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC3C,MAAM0O,EAASi0B,EAAS3iC,GAAG0O,OAC3B,IAAK,IAAI+Z,EAAI,EAAGA,EAAIpoB,EAAOJ,OAAQwoB,IAE/B,GAAKqN,GAAMS,QAAQl2B,EAAOooB,KAItBpoB,EAAOooB,GAAG9oB,OAAS+O,EAAO+Z,GAAG7b,SAAU,CACvC+1B,EAASuC,OAAOllC,EAAG,GACnB,QAYhB,OAPwB,IAApB2iC,EAAS1iC,OACT+H,EAAOlD,mBAAmB,oBAAqB,OAAQvE,GAElDoiC,EAAS1iC,OAAS,GAAK6kC,GAE5B98B,EAAOlD,mBAAmB,2BAA4B,OAAQvE,GAE3DoiC,EAAS,GAGpB,MAAMl7B,EAASjG,GAAuBT,KAAMggC,GAAmB,KAAKt/B,IAAIsN,GAAcJ,WAAWpO,GAAK0M,UACtG,OAAIxF,GAGGO,EAAOlD,mBAAmB,oBAAqB,YAAavE,IC1vBhE,MCEMyH,GAAS,IAAI5D,EDFH,mCEAvB,IAWIkhC,GAAsBC,GAXtBzkC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAQjF,MAAMwkC,GACT7jC,YAAY8jC,EAAYC,EAAeC,EAASC,EAAMC,GAClDP,GAAqB/jC,IAAIR,UAAM,GAC/BwkC,GAAqBhkC,IAAIR,UAAM,GAC/BD,GAAuBC,KAAMukC,GAAsB,CAC/CG,WAAAA,EACAC,cAAAA,EACAC,QAAS3mC,OAAO4J,OAAO5J,OAAOoN,OAAO,GAAIpN,OAAOD,KAAK4mC,GAASrmC,QAAO,CAACC,EAAOH,KACzEG,EAAMH,EAAE+H,eAAiBw+B,EAAQvmC,GAC1BG,IACR,MACHqmC,KAAgB,MAARA,EAAgB,KAAO,IAAIr+B,WAAWq+B,GAC9CC,QAAUA,GAAW,MACtB,KACH/kC,GAAuBC,KAAMwkC,GAAsB,CAAE/gC,QAAS,IAAM,KAExEqG,WACI,MAAM+6B,EAAO5jC,EAASR,GAAuBT,KAAMukC,GAAsB,KAAM,QAC/E,MAAO,oBAAoBvkC,KAAK0kC,mBAAmBG,EAAO3vB,GAAQ2vB,GAAQ,UAE1EH,iBAAe,OAAOzjC,EAASR,GAAuBT,KAAMukC,GAAsB,KAAM,cACxFI,oBAAkB,OAAO1jC,EAASR,GAAuBT,KAAMukC,GAAsB,KAAM,iBAC3FK,cAAY,OAAO3jC,EAASR,GAAuBT,KAAMukC,GAAsB,KAAM,WACrFM,WACA,MAAMA,EAAO5jC,EAASR,GAAuBT,KAAMukC,GAAsB,KAAM,QAC/E,OAAgB,MAARM,EAAgB,KAAO,IAAIr+B,WAAWq+B,GAE9CE,eACA,IACI,MAAMF,EAAO5jC,EAASR,GAAuBT,KAAMukC,GAAsB,KAAM,QAC/E,OAAgB,MAARM,EAAgB,GAAKpL,GAAaoL,GAE9C,MAAOvjC,GACH,OAAO2F,GAAOnD,WAAW,wCAAyC,wBAAyB,CACvFY,UAAW,WAAYzC,KAAM,CAAE+iC,SAAUhlC,SAIjDilC,eACA,IACI,OAAOthC,KAAK4I,MAAMvM,KAAK+kC,UAE3B,MAAOzjC,GACH,OAAO2F,GAAOnD,WAAW,kCAAmC,wBAAyB,CACjFY,UAAW,WAAYzC,KAAM,CAAE+iC,SAAUhlC,SAIrD,EAAEukC,GAAuB,IAAI9iC,QAAW+iC,GAAuB,IAAI/iC,QAAWkK,OAAOu5B,aACjF,MAAMN,EAAU5kC,KAAK4kC,QACf5mC,EAAOC,OAAOD,KAAK4mC,GACzB,IAAIlmC,EAAQ,EACZ,MAAO,CACHymC,KAAM,KACF,GAAIzmC,EAAQV,EAAKkB,OAAQ,CACrB,MAAMM,EAAMxB,EAAKU,KACjB,MAAO,CACHX,MAAO,CAACyB,EAAKolC,EAAQplC,IAAO4lC,MAAM,GAG1C,MAAO,CAAErnC,WAAO2B,EAAW0lC,MAAM,KAI7CC,gBAAgB5hC,EAASnC,GACrB,IAAIqjC,EAMAA,EALClhC,EAKe,kCAAkCzD,KAAK0kC,cAAc1kC,KAAK2kC,kBAAkBlhC,KAH5E,kCADhBA,EAAU,GAAGzD,KAAK0kC,cAAc1kC,KAAK2kC,mBAMzC,MAAMK,EAAW,IAAIP,GAAc,IAAKE,EAAe3kC,KAAK4kC,QAAS5kC,KAAK6kC,KAAM5jC,EAASR,GAAuBT,KAAMukC,GAAsB,KAAM,iBAAc7kC,GAEhK,OADAK,GAAuBilC,EAAUR,GAAsB,CAAE/gC,QAAAA,EAASnC,MAAAA,GAAS,KACpE0jC,EAEXM,mBAAmB7hC,EAAS8hC,GACX,MAATA,IACAA,EAAQ,MAEW,iBAAX,IAAwBhhC,OAAOC,UAAU+gC,IAAUA,EAAQ,IACnEt+B,GAAOlD,mBAAmB,wBAAyB,QAASwhC,GAEhE,MAAMjkC,EAAQ,IAAInC,MAAMsE,GAAW,uBAEnC,MADArE,EAAiBkC,EAAO,CAAEikC,MAAAA,EAAOC,UAAU,IACrClkC,EAEVmkC,UAAUjmC,GACN,OAAOQ,KAAK4kC,QAAQplC,EAAI4G,eAE5Bs/B,UAEI,OAAgB,MADHzkC,EAASR,GAAuBT,KAAMukC,GAAsB,KAAM,QAG/EO,cAAY,OAAO7jC,EAASR,GAAuBT,KAAMukC,GAAsB,KAAM,WACzFoB,KACI,MAA4E,KAApEllC,GAAuBT,KAAMwkC,GAAsB,KAAK/gC,SAAkBzD,KAAK0kC,YAAc,KAAO1kC,KAAK0kC,WAAa,IAElIkB,WACI,GAAI5lC,KAAK2lC,KACL,OAEJ,IAAIliC,QAAEA,EAAOnC,MAAEA,GAAUb,GAAuBT,KAAMwkC,GAAsB,KAC5D,KAAZ/gC,IACAA,EAAU,mBAAmBzD,KAAK0kC,cAAc1kC,KAAK2kC,iBAEzD19B,GAAOnD,WAAWL,EAAS,eAAgB,CACvCqhC,QAAU9kC,KAAK8kC,SAAW,kBAAoBE,SAAUhlC,KAAMsB,MAAAA,KC3HnEzD,eAAegoC,GAAOC,EAAKC,GAC9B,MAAMC,EAAWF,EAAIG,IAAInnC,MAAM,KAAK,GAAGsH,cACtB,SAAb4/B,GAAoC,UAAbA,GACvB/+B,GAAOnD,WAAW,wBAAwBkiC,IAAY,wBAAyB,CAC3E/jC,KAAM,CAAE+jC,SAAAA,GACRthC,UAAW,YAGfohC,EAAII,cAAgBJ,EAAIK,6BACxBl/B,GAAOnD,WAAW,8CAA+C,wBAAyB,CACtFY,UAAW,YAGnB,MAAM0hC,EAAO,CACTlhC,OAAQ4gC,EAAI5gC,OACZ0/B,QAAS,IAAIyB,QAAQv5B,MAAM3B,KAAK26B,IAChCjB,KAAMiB,EAAIjB,WAAQnlC,GAEhB4mC,QAAaC,MAAMT,EAAIG,IAAKG,GAC5BxB,EAAU,GAChB0B,EAAK1B,QAAQh9B,SAAQ,CAAC7J,EAAOyB,KACzBolC,EAAQplC,EAAI4G,eAAiBrI,KAEjC,MAAM8mC,EAAO,IAAIr+B,iBAAiB8/B,EAAKE,eACvC,OAAO,IAAI/B,GAAc6B,EAAKG,OAAQH,EAAKI,WAAY9B,EAASC,EAAMiB,GC1B1E,IAWIa,GAXA5mC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAMxF,SAASuC,GAAMzE,EAAOa,EAAMkE,GACxB,UAAY,IAAWlE,EACnB,MAAM,IAAIO,MAAM,WAAW2D,KAE/B,OAAO/E,EAEJ,MAAM6oC,GACThmC,YAAYqlC,GACRU,GAAoBnmC,IAAIR,UAAM,GAC9BD,GAAuBC,KAAM2mC,GAAqB,CAC9CE,eAAe,EACfC,MAAM,EACNlC,QAAS,GACT1/B,OAAQ,GACR6gC,QAAS,IACTE,IAAKzjC,GAAMyjC,EAAK,SAAU,QAC3B,KAGHA,UAAQ,OAAOhlC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,OAChFV,QAAIA,GACJ9kC,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,MAAOnkC,GAAMyjC,EAAK,SAAU,QAG7FpB,WACA,MAAMA,EAAO5jC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,QAC9E,OAAY,MAAR9B,EACO,KAEP7kC,KAAKoB,WACE,IAAIoF,WAAWq+B,GAEnBA,EAEPA,SAAKA,GACL,GAAY,MAARA,EACA1jC,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,YAAQjnC,GACzEyB,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,gBAAYjnC,QAE5E,GAAsB,iBAAV,EAEbyB,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,OAAQ3N,GAAY6L,IACrF1jC,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,WAAY,mBAE5E,GAAI9B,aAAgBr+B,WACrBrF,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,OAAQ9B,GACzE1jC,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,WAAY,gCAE5E,CAAA,GAAsB,iBAAV,EAKb,MAAM,IAAIxnC,MAAM,gBAJhBgC,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,OAAQ3N,GAAYr1B,KAAKC,UAAUihC,KACpG1jC,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,WAAY,qBAMrFjB,UACI,OAAoF,MAA5EzkC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,QAGzEzhC,aACA,MAAMA,EAASjE,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,UAChF,OAAIzhC,EACOA,EAAOstB,cAEdxyB,KAAK6kC,KACE,OAEJ,MAEP3/B,WAAOA,GACO,MAAVA,IACAA,EAAS,IAEb/D,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,SAAUnkC,GAAM0C,EAAQ,SAAU,WAGnG0/B,cACA,MAAMA,EAAU3mC,OAAOoN,OAAO,GAAIpK,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,YAC7FI,EAAW9lC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,YAYlF,OAXI3mC,KAAKkmC,YAELlmC,KAAKgnC,YACLpC,EAAQ,mBAAqB,QAEF,MAA3BA,EAAQ,iBAA2BmC,IACnCnC,EAAQ,gBAAkBmC,GAE1B/mC,KAAK6kC,OACLD,EAAQ,kBAAoBniC,OAAOzC,KAAK6kC,KAAK3lC,SAE1CjB,OAAO4J,OAAO+8B,GAEzBa,UAAUjmC,GACN,OAAOQ,KAAK4kC,QAAQplC,EAAI4G,eAE5B6gC,UAAUznC,EAAKzB,GACX,MAAM6mC,EAAU3jC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,WACjFxlC,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,UAAW/B,GAC5EA,EAAQpiC,GAAMhD,EAAK,SAAU,OAAO4G,eAAiB3D,OAAO1E,GAEhEmpC,eACI/lC,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,UAAW,IAEhF,EAAEA,GAAsB,IAAIllC,QAAWkK,OAAOu5B,aAC1C,MAAMN,EAAU5kC,KAAK4kC,QACf5mC,EAAOC,OAAOD,KAAK4mC,GACzB,IAAIlmC,EAAQ,EACZ,MAAO,CACHymC,KAAM,KACF,GAAIzmC,EAAQV,EAAKkB,OAAQ,CACrB,MAAMM,EAAMxB,EAAKU,KACjB,MAAO,CACHX,MAAO,CAACyB,EAAKolC,EAAQplC,IAAO4lC,MAAM,GAG1C,MAAO,CAAErnC,WAAO2B,EAAW0lC,MAAM,KAKzCc,kBACA,OAAOjlC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,UAAY,KAExFQ,eAAeC,EAAUrqB,GACjBqqB,EAAS3gC,MAAM,MACfQ,GAAOlD,mBAAmB,wCAAyC,WAAY,cAEnF5C,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,QAAS,GAAGS,KAAYrqB,KAOzFiqB,gBACA,OAAO/lC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,QAExEK,cAAUjpC,GACVoD,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,SAAU5oC,GAG3EooC,kCACA,QAASllC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,iBAE1ER,gCAA4BpoC,GAC5BoD,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,gBAAiBnkC,GAAMzE,EAAO,UAAW,gCAG1GgoC,cAAY,OAAO9kC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,WACpFZ,YAAQA,GAER,IADAA,EAAUvjC,GAAMujC,EAAS,SAAU,aACpB,EACX,MAAM,IAAI5mC,MAAM,oBAEpBgC,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,UAAWZ,GAEhFsB,SAASC,GAEL,MAAMrO,EAAUj5B,KAAKimC,IAAInnC,MAAM,KAAK,GAAGsH,cACjC/G,EAASioC,EAASxoC,MAAM,KAAK,GAAGsH,cACtC,GAAoB,QAAhBpG,KAAKkF,QAAiC,UAAZ+zB,GAAkC,SAAX55B,IAChDioC,EAAS7gC,MAAM,YAChB,OAAOQ,GAAOnD,WAAW,uBAAwB,wBAAyB,CACtEY,UAAW,YAAY1E,KAAKkF,UAAUvB,KAAKC,UAAU5D,KAAKimC,WAAWtiC,KAAKC,UAAU0jC,QAI5F,MAAMxB,EAAM,IAAIc,GAAaU,GAW7B,OAVAxB,EAAI5gC,OAAS,MACb4gC,EAAIkB,UAAYhnC,KAAKgnC,UACrBlB,EAAIC,QAAU/lC,KAAK+lC,QACnB5kC,EAASV,GAAuBqlC,EAAKa,GAAqB,KAAM,OAAQ1lC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,SACzIxlC,EAASV,GAAuBqlC,EAAKa,GAAqB,KAAM,UAAW1oC,OAAOoN,OAAO,GAAIpK,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,aAC9JxlC,EAASV,GAAuBqlC,EAAKa,GAAqB,KAAM,WAAY1lC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,aAKtIb,EAEXh9B,QACI,MAAMA,EAAQ,IAAI89B,GAAa5mC,KAAKimC,KAEpC9kC,EAASV,GAAuBqI,EAAO69B,GAAqB,KAAM,SAAU1lC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,WAE7I,MAAM9B,EAAO5jC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,QAc9E,OAbAxlC,EAASV,GAAuBqI,EAAO69B,GAAqB,KAAM,OAAiB,MAAR9B,OAAgBnlC,EAAY,IAAI8G,WAAWq+B,IACtH1jC,EAASV,GAAuBqI,EAAO69B,GAAqB,KAAM,WAAY1lC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,aAE/IxlC,EAASV,GAAuBqI,EAAO69B,GAAqB,KAAM,UAAW1oC,OAAOoN,OAAO,GAAIpK,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,aAEhKxlC,EAASV,GAAuBqI,EAAO69B,GAAqB,KAAM,QAAS1lC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,UACxI3mC,KAAKgnC,YACLl+B,EAAMk+B,WAAY,GAEtBl+B,EAAMi9B,QAAU/lC,KAAK+lC,QACjB/lC,KAAKmmC,8BACLr9B,EAAMq9B,6BAA8B,GAEjCr9B,EAEXjB,SAEI,MAAMg9B,EAAO5jC,EAASR,GAAuBT,KAAM2mC,GAAqB,KAAM,QAM9E,OALY,MAAR9B,GACA1jC,EAASV,GAAuBT,KAAM2mC,GAAqB,KAAM,OAAQ,IAAIngC,WAAWq+B,IAE5F5mC,OAAO4J,OAAOpH,GAAuBT,KAAM2mC,GAAqB,KAAK/B,SACrE3mC,OAAO4J,OAAOpH,GAAuBT,KAAM2mC,GAAqB,MACzD3mC,KAEXoB,WACI,OAAOnD,OAAOmD,SAASX,GAAuBT,KAAM2mC,GAAqB,OC9NjF9oC,eAAe0pC,GAAMC,GACjB,OAAO,IAAItpC,SAASI,IAAcyb,WAAWzb,EAASkpC,MAG1D,SAASC,KAAY,OAAO,IAAKptB,MAAQotB,UAOzC,IAAIC,IAAe,EAGZ7pC,eAAe8pC,GAAUC,GAC5B,MAAMC,EAAgC,mBAAY,CAC9C/C,QAAS,IAAI8B,GAAagB,IACzBA,aAAsBhB,GAAgB,CACvC9B,QAAS8C,GACT3pC,OAAOoN,OAAO,GAAIu8B,GACtB,GAAoB,MAAhBC,EAAK/C,QACL,OAAO79B,GAAOlD,mBAAmB,kBAAmB,aAAc6jC,GAEtE,IAAI9B,EAAM+B,EAAK/C,QAAQh8B,QAAQjB,SAC/B,OAAQggC,EAAK/C,QAAQmB,IAAInnC,MAAM,KAAK,IAChC,IAAK,OAAQ,CACT,MAAM2H,EAAQq/B,EAAIG,IAAIx/B,MAAM,oCAC5B,GAAIA,EACA,IACI,MAAMm+B,EAAU,CACZ,eAAiBn+B,EAAM,GAAKA,EAAM,GAAK,cAErCo+B,EAAQp+B,EAAM,GAAKqO,GAAarO,EAAM,IAvBrDuyB,GAuBqEvyB,EAAM,GA1BpE4xB,QAAQ,yBAAyB,CAACl6B,EAAKoD,IAC1CkB,OAAOC,aAAakE,SAASrF,EAAM,QA0B9B,OAAO,IAAIkjC,GAAc,IAAK,KAAMG,EAASC,EAAMiB,EAAIh9B,SAE3D,MAAOxH,GACH,OAAO,IAAImjC,GAAc,IAAK,4CAA6C,GAAI,KAAMqB,EAAIh9B,SAGjG,OAAO,IAAI27B,GAAc,IAAK,+CAAgD,GAAI,KAAMqB,EAAIh9B,SAEhG,IAAK,OACL,IAAK,OACL,IAAK,KACD,MAAM,IAAI3J,MAAM,uBAEpB,IAAK,OACL,IAAK,QACD,MACJ,QACI,MAAM,IAAIA,MAAM,sBAExB,MAAM2oC,EAAkC,MAAtBD,EAAKE,cAAyBF,EAAKE,cAAgB,GACrE,IAAKxjC,OAAOC,UAAUsjC,IAAaA,EAAW,EAC1C,OAAO7gC,GAAOlD,mBAAmB,wBAAyB,aAAc6jC,GAE5E,MAAMI,EAA6C,MAA7BH,EAAKI,qBAAgCJ,EAAKI,qBAAuB,IAEvF,IAAK1jC,OAAOC,UAAUwjC,IAAiBF,EAAW,EAC9C,OAAO7gC,GAAOlD,mBAAmB,+BAAgC,aAAc6jC,GAEnF,MAAMM,EAAmC,MAAtBL,EAAKM,cAAyBN,EAAKM,cAAgB,KACtE,GAAID,GAAoC,mBAAvB,EACb,OAAOjhC,GAAOlD,mBAAmB,iCAAkC,aAAc6jC,GAErF,MAAMQ,EAAmBP,EAAKO,kBAAoB,KAClD,GAAIA,GAAkD,mBAA9B,EACpB,OAAOnhC,GAAOlD,mBAAmB,oCAAqC,aAAc6jC,GAExF,MAAMS,EAAkBR,EAAKQ,iBAAmB,KAChD,GAAIA,GAAgD,mBAA7B,EACnB,OAAOphC,GAAOlD,mBAAmB,mCAAoC,aAAc6jC,GAGvF,MAAMU,EAAKb,KACX,IAAIzC,EAAW,KACf,IAAK,IAAIhzB,EAAI,EAAGA,EAAI81B,EAAU91B,IAAK,CAC/B,IAAI8yB,EAAUgB,EAAIh9B,QACds/B,IACAtD,SAAiBsD,EAAiBtD,EAAQj9B,WAAWiB,SAGzD,GADsB2+B,KAAYa,EACd,EAChB,OAAOrhC,GAAOnD,WAAW,UAAW,UAAW,CAAEY,UAAW,UAAWmzB,OAAQ,UAAWiN,QAAAA,IAI9F,GAFAE,QAAiBa,GAAOf,GAEpB9yB,EAAI81B,EAAU,CACd,GAA4B,MAAxB9C,EAASN,YAA8C,MAAxBM,EAASN,WAAoB,CAG5D,IACIoB,EAAMhB,EAAQuC,SAASrC,EAASJ,QAAQ0C,UAAY,IACpD,SAEJ,MAAOhmC,IAGP,OAAO0jC,EAEN,GAA4B,MAAxBA,EAASN,aACG,MAAbwD,SAA4BA,EAAUpD,EAAQj9B,SAAUm9B,EAAUhzB,IAAK,CACvE,MAAMu2B,EAAavD,EAASJ,QAAQ,eACR,iBAAxB,GAAoC2D,EAAW9hC,MAAM,uBAC/C8gC,GAAM3gC,SAAS2hC,UAGfhB,GAAMS,EAAepvB,KAAK4vB,MAAM5vB,KAAK6vB,SAAW7vB,KAAK8vB,IAAI,EAAG12B,KAEtE,UAOZ,GAAIq2B,EACA,IACI,aAAaA,EAAgBvD,EAASE,GAE1C,MAAO1jC,GAEH,GAAIA,EAAMkkC,UAAqC,iBAAjBlkC,EAAW,MAAgB,CACrD,GAAI0Q,EAAI81B,EAAU,OACRP,GAAMjmC,EAAMikC,OAClB,SAGJ,OAAOP,EAASK,gBAAgB,+BAAgC/jC,GAGpE0jC,EAASK,gBAAgB,oCAAqC/jC,GAAOskC,WAG7E,OAAOZ,EAGX,OAAOA,EAASK,gBAAgB,gCAEpCsC,GAAUhhB,KAAO,WACb+gB,IAAe,GAGnBC,GAAUgB,WAAa,SAAUC,KAEjCjB,GAAUkB,eAAiB,SAAUD,GAC7BlB,IACAzgC,GAAOnD,WAAW,sBAAuB,wBAAyB,CAC9DY,UAAW,oBAKvBijC,GAAUmB,aAAe,SAAUF,GAC3BlB,IACAzgC,GAAOnD,WAAW,sBAAuB,wBAAyB,CAC9DY,UAAW,kBClKhB,MCEMuC,GAAS,IAAI5D,EDFH,yCEAvB,IAWIwG,GAAIk/B,GAA2BC,GAX/BjpC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAUxF,MAAM8P,GAAOtK,OAAO,GACd0xB,GAAQ,IAAI3wB,WAAW,IACvByiC,GAAW,qEACjB,SAASC,GAAWxiC,EAAQgP,GACxB,GAAe,OAAXhP,EACA,OAAO,KAEX,MAAMC,EAAS8I,GAASgG,GAAU/O,EAAQgP,EAAOA,EAAQ,KACnDxW,EAASuQ,GAASgG,GAAU/O,EAAQC,EAAQA,EAAS,KAC3D,OAAO8O,GAAU/O,EAAQC,EAAS,GAAIA,EAAS,GAAKzH,GAExD,SAASiqC,GAAYziC,EAAQgP,GACzB,IACI,MAAMP,EAAQ+zB,GAAWxiC,EAAQgP,GACjC,GAAa,MAATP,EACA,OAAOskB,GAAatkB,GAG5B,MAAO7T,IACP,OAAO,KAEX,SAAS8nC,GAAOrrC,GACZ,MAAM2I,EAASmJ,GAAQ9R,GACvB,GAAI2I,EAAOxH,OAAS,GAChB,MAAM,IAAIC,MAAM,+BAEpB,MAAMkqC,EAAS,IAAI7iC,WAAW,IAE9B,OADA6iC,EAAO7oC,IAAIkG,EAAQ,GAAKA,EAAOxH,QACxBmqC,EAEX,SAASC,GAASvrC,GACd,GAAKA,EAAMmB,OAAS,IAAQ,EACxB,OAAOnB,EAEX,MAAM2I,EAAS,IAAIF,WAA0C,GAA/BoS,KAAKC,KAAK9a,EAAMmB,OAAS,KAEvD,OADAwH,EAAOlG,IAAIzC,GACJ2I,EAGX,SAAS6iC,GAAYj0B,GACjB,MAAM5O,EAAS,GACf,IAAI8iC,EAAY,EAEhB,IAAK,IAAIvqC,EAAI,EAAGA,EAAIqW,EAAMpW,OAAQD,IAC9ByH,EAAO/D,KAAKw0B,IACZqS,GAAa,GAEjB,IAAK,IAAIvqC,EAAI,EAAGA,EAAIqW,EAAMpW,OAAQD,IAAK,CACnC,MAAM0V,EAAO1N,GAAO3B,SAASgQ,EAAMrW,IAEnCyH,EAAOzH,GAAKmqC,GAAOI,GAEnB9iC,EAAO/D,KAAKymC,GAAOz0B,EAAKzV,SACxBwH,EAAO/D,KAAK2mC,GAAS30B,IACrB60B,GAAa,GAAmC,GAA9B5wB,KAAKC,KAAKlE,EAAKzV,OAAS,IAE9C,OAAOmW,GAAO3O,GAIlB,SAAS+iC,GAAYhgC,GAUjB,OATIA,EAAKhD,MAAM,qBACXgD,EAAOA,EAAK5C,UAAU,IAEjB4C,EAAKhD,MAAM,eAChBgD,EAAOA,EAAK5C,UAAU,GAGtBI,GAAOlD,mBAAmB,0BAA2B,OAAQ0F,GAE1D,gCAAiCA,IAIrC,MAAMigC,GACT9oC,YAAYkC,GACR1D,EAAiBY,KAAM,CAAE8C,KAAAA,IAE7B6mC,SAASC,GACL,OAAO5pC,KAEX6pC,iBAAiBC,GACb,OAAO,EAEXjsC,oBAAoBisC,EAAU3X,GAC1B,MAAM,IAAIhzB,MAAM,oBAEpBtB,oBAAoBisC,EAAUn1B,GAC1B,MAAM,IAAIxV,MAAM,qBASxB,MAAM4qC,GAAc,IAAIxhC,OAAO,kBAAoB,KAC7CyhC,GAAW,CACb,IAAIzhC,OAAO,mBAAqB,KAChC,IAAIA,OAAO,gBAAiB,KAC5BwhC,GACA,IAAIxhC,OAAO,mCAAoC,MAE5C,MAAM0hC,GACTrpC,YAAYspC,EAAU/X,EAASrvB,GAE3BimC,GAA0BvoC,IAAIR,UAAM,GACpCZ,EAAiBY,KAAM,CAAEkqC,SAAAA,EAAU/X,QAAAA,EAASrvB,KAAAA,IAC5C/C,GAAuBC,KAAM+oC,GAA2B,KAAM,KAElElrC,yBAiBI,OAhBK4C,GAAuBT,KAAM+oC,GAA2B,MAEzDhpC,GAAuBC,KAAM+oC,GAA2B/oC,KAAKkqC,SAAS3pC,KAAK,CACvE6K,GAAIpL,KAAKmyB,QACTxd,KAAM,+EACPlH,MAAM/G,GACGO,GAAOtB,UAAUe,KAAYqJ,KACtCo6B,OAAO7oC,IACN,GAAmB,mBAAfA,EAAMC,KACN,OAAO,EAIX,MADAxB,GAAuBC,KAAM+oC,GAA2B,KAAM,KACxDznC,KACN,WAEKb,GAAuBT,KAAM+oC,GAA2B,KAEzElrC,aAAa6iC,EAAU0J,EAAa,MAEhC,MAAMC,EAAWh1B,GAAO,CAACqrB,EAAU3E,GAAS/7B,KAAK8C,MAAOsnC,IAClDnW,EAAK,CACP7oB,GAAIpL,KAAKmyB,QACTmY,gBAAgB,EAChB31B,KAAM01B,GAGV,IAAI9yB,GAAU,QACJvX,KAAKuqC,qBACXhzB,GAAU,EAEV0c,EAAGtf,KAAOU,GAAO,CAAC,aAAck0B,GAAY,CAACtN,GAAUj8B,KAAK8C,MAAOunC,OAEvE,IACI,IAAI11B,QAAa3U,KAAKkqC,SAAS3pC,KAAK0zB,GACpC,OAAKhtB,GAAO3B,SAASqP,GAAMzV,OAAS,IAAQ,EACjC+H,GAAOnD,WAAW,uBAAwB,iBAAkB,CAC/D4+B,YAAazO,EAAItf,KAAAA,IAGrB4C,EACO2xB,GAAWv0B,EAAM,GAErBA,EAEX,MAAOrT,GACH,GAAmB,mBAAfA,EAAMC,KACN,MAAMD,EAGd,OAAO,KAEXzD,iBAAiBisC,EAAW,IACxB,GAAiB,KAAbA,EACA,IAEI,MAAMpjC,QAAe1G,KAAKwqC,OAAO,cAEjC,GAAe,OAAX9jC,GAAmBA,IAAWuiC,GAC9B,OAAO,KAGX,aADsBjpC,KAAKkqC,SAASO,cACrBC,UAAUC,YAAYjkC,GAEzC,MAAOpF,GACH,GAAmB,mBAAfA,EAAMC,KACN,OAAO,KAEX,MAAMD,EAGd,IAAIspC,EAAa,KACjB,IAAK,MAAMC,KAAU7qC,KAAKkqC,SAASY,QAC/B,GAAMD,aAAkBnB,IAGpBmB,EAAOhB,iBAAiBC,GAAW,CACnCc,EAAaC,EACb,MAGR,GAAkB,MAAdD,EACA,OAAO,KAGX,MAAMj2B,EAAOu0B,SAAkBlpC,KAAKwqC,OAAO,aAAcpB,GAAOU,KAAe,KAAM,GAErF,GAAY,MAARn1B,GAAyB,OAATA,EAChB,OAAO,KAGX,MAAMwd,QAAgByY,EAAWG,cAAcjB,EAAUn1B,GACzD,OAAe,MAAXwd,EACOA,EAEJlrB,GAAOnD,WAAW,oBAAqB,wBAAyB,CACnEY,UAAW,cAAcolC,KACzB7nC,KAAM,CAAE6nC,SAAAA,EAAUn1B,KAAAA,KAG1B9W,cAAc2B,GAEV,IAAIwrC,EAAWhS,GAAYx5B,GAG3B,MAAMyrC,EAAWhkC,GAAO3B,SAAS+P,GAAO,CAAC+zB,GAAO,IAAKA,GAAO4B,EAAS9rC,QAAS8rC,KACxEE,EAAWhC,SAAkBlpC,KAAKwqC,OAAO,aAAclB,GAAS2B,KAAe,KAAM,GAC3F,OAAgB,MAAZC,GAAiC,OAAbA,EACb,KAEJzR,GAAayR,GAExBrtC,uBAEI,MAAMqtC,EAAWhC,SAAkBlpC,KAAKwqC,OAAO,eAAkB,KAAM,GAEvE,GAAgB,MAAZU,GAAiC,OAAbA,EACpB,OAAO,KAGX,MAAMC,EAAOD,EAASzkC,MAAM,4EAC5B,GAAI0kC,EAAM,CACN,MAAMC,EAAsB,aAAZD,EAAK,GAAqB,OAAS,OAC7CjsC,EAAS0H,SAASukC,EAAK,GAAI,IACjC,GAAIA,EAAK,GAAGjsC,SAAoB,EAATA,EACnB,MAAO,GAAGksC,OAAav3B,GAAa,KAAOs3B,EAAK,MAIxD,MAAME,EAAQH,EAASzkC,MAAM,iCAC7B,OAAI4kC,GAA6B,KAApBA,EAAM,GAAGnsC,OACX,SAAUmsC,EAAM,KAEpBpkC,GAAOnD,WAAW,2CAA4C,wBAAyB,CAC1FY,UAAW,mBACXzC,KAAM,CAAE0S,KAAMu2B,KAGtBrtC,kBACI,aAAcmC,KAAKsrC,cAAcrF,IAErCpoC,mBACI,MAAM0tC,EAAU,CAAC,CAAE3sC,KAAM,OAAQb,MAAOiC,KAAK8C,OAC7C,IAGI,MAAM0oC,QAAexrC,KAAKyrC,QAAQ,UAClC,GAAc,MAAVD,EAEA,MADAD,EAAQ5oC,KAAK,CAAE/D,KAAM,UAAWb,MAAO,KACjC,IAAIoB,MAAM,WAEpBosC,EAAQ5oC,KAAK,CAAE/D,KAAM,SAAUb,MAAOytC,IACtC,IAAK,IAAIvsC,EAAI,EAAGA,EAAI+qC,GAAS9qC,OAAQD,IAAK,CACtC,MAAMwH,EAAQ+kC,EAAO/kC,MAAMujC,GAAS/qC,IACpC,GAAa,MAATwH,EACA,SAEJ,MAAM2kC,EAAS3kC,EAAM,GAAGL,cACxB,OAAQglC,GACJ,IAAK,QACL,IAAK,OAED,OADAG,EAAQ5oC,KAAK,CAAE/D,KAAM,MAAOb,MAAOytC,IAC5B,CAAED,QAAAA,EAAStF,IAAKuF,GAC3B,IAAK,OAAQ,CACT,MAAMvF,EAAMwD,GAAY+B,GAGxB,OAFAD,EAAQ5oC,KAAK,CAAE/D,KAAM,OAAQb,MAAOytC,IACpCD,EAAQ5oC,KAAK,CAAE/D,KAAM,MAAOb,MAAOkoC,IAC5B,CAAEsF,QAAAA,EAAStF,IAAAA,GAEtB,IAAK,SACL,IAAK,UAAW,CAEZ,MAAMvF,EAAuB,WAAX0K,EAAuB,aAAe,aACxDG,EAAQ5oC,KAAK,CAAE/D,KAAMwsC,EAAQrtC,MAAOytC,IAEpC,MAAME,QAAc1rC,KAAK8yB,aACzB,GAAa,MAAT4Y,EAEA,MADAH,EAAQ5oC,KAAK,CAAE/D,KAAM,SAAUb,MAAO,KAChC,IAAIoB,MAAM,UAEpB,MAAMgO,GAAS1G,EAAM,IAAM,IAAI3H,MAAM,KACrC,GAAqB,IAAjBqO,EAAMjO,OAEN,MADAqsC,EAAQ5oC,KAAK,CAAE/D,KAAM,IAAIwsC,QAAcrtC,MAAQ0I,EAAM,IAAM,KACrD,IAAItH,MAAM,SAEpB,MAAMurC,SAAmB1qC,KAAKkqC,SAASO,cAAcC,UAC/CiB,EAAOjB,EAAUvY,QAAQhlB,EAAM,IAC/By+B,EAAUxC,GAAOj8B,EAAM,IAE7B,GAAe,WAAXi+B,EAAqB,CAErB,MAAMS,EAAanB,EAAUC,kBAAkB3qC,KAAKkqC,SAAS3pC,KAAK,CAC9D6K,GAAIugC,EAAMh3B,KAAMU,GAAO,CAAC,aAAcu2B,OAE1C,GAAIF,IAAUG,EAEV,MADAN,EAAQ5oC,KAAK,CAAE/D,KAAM,SAAUb,MAAO8tC,IAChC,IAAI1sC,MAAM,UAEpBosC,EAAQ5oC,KAAK,CAAE/D,KAAM,QAASb,MAAO8tC,SAEpC,GAAe,YAAXT,EAAsB,CAE3B,MAAMU,EAAU7kC,GAAOtB,gBAAgB3F,KAAKkqC,SAAS3pC,KAAK,CACtD6K,GAAIugC,EAAMh3B,KAAMU,GAAO,CAAC,aAAcY,GAAay1B,EAAO,IAAKE,OAEnE,IAAKE,EAED,MADAP,EAAQ5oC,KAAK,CAAE/D,KAAM,WAAYb,MAAO,MAClC,IAAIoB,MAAM,YAEpBosC,EAAQ5oC,KAAK,CAAE/D,KAAM,UAAWb,MAAO+tC,EAAQhiC,aAGnD,MAAMmqB,EAAK,CACP7oB,GAAI+B,EAAM,GACVwH,KAAMU,GAAO,CAACqrB,EAAUkL,KAE5B,IAAIG,EAAc5C,SAAkBnpC,KAAKkqC,SAAS3pC,KAAK0zB,GAAK,GAC5D,GAAmB,MAAf8X,EAEA,MADAR,EAAQ5oC,KAAK,CAAE/D,KAAM,gBAAiBb,MAAO,KACvC,IAAIoB,MAAM,iBAEpBosC,EAAQ5oC,KAAK,CAAE/D,KAAM,oBAAqBb,MAAOguC,IAElC,YAAXX,IACAW,EAAcA,EAAY1T,QAAQ,OAAQnjB,GAAQ02B,GAAS/kC,UAAU,IACrE0kC,EAAQ5oC,KAAK,CAAE/D,KAAM,wBAAyBb,MAAOguC,KAGrDA,EAAYtlC,MAAM,aAClBslC,EAActC,GAAYsC,IAE9BR,EAAQ5oC,KAAK,CAAE/D,KAAM,eAAgBb,MAAOguC,IAE5C,IAAIC,EAAW,GACf,MAAMhH,QAAiB2C,GAAUoE,GACjC/G,EAASY,WACT,IACIoG,EAAWhH,EAASC,SAExB,MAAO3jC,GACH,IACIiqC,EAAQ5oC,KAAK,CAAE/D,KAAM,YAAab,MAAOinC,EAASD,WAEtD,MAAOzjC,GACH,MAAM6T,EAAQ6vB,EAASH,KAIvB,MAHI1vB,GACAo2B,EAAQ5oC,KAAK,CAAE/D,KAAM,YAAab,MAAOmX,GAAQC,KAE/C7T,EAEV,MAAMA,EAEV,IAAK0qC,EAED,MADAT,EAAQ5oC,KAAK,CAAE/D,KAAM,YAAab,MAAO,KACnC,IAAIoB,MAAM,aAEpBosC,EAAQ5oC,KAAK,CAAE/D,KAAM,WAAYb,MAAO4F,KAAKC,UAAUooC,KAEvD,IAAIC,EAAWD,EAASE,MACxB,GAA0B,iBAAd,EAER,MADAX,EAAQ5oC,KAAK,CAAE/D,KAAM,YAAab,MAAO,KACnC,IAAIoB,MAAM,aAEpB,GAAI8sC,EAASxlC,MAAM,6BAGd,CAGD,GAAY,MADCwlC,EAASxlC,MAAMsjC,IAGxB,MADAwB,EAAQ5oC,KAAK,CAAE/D,KAAM,iBAAkBb,MAAOkuC,IACxC,IAAI9sC,MAAM,kBAEpBosC,EAAQ5oC,KAAK,CAAE/D,KAAM,gBAAiBb,MAAOkuC,IAC7CA,EAAWxC,GAAYwC,GAG3B,OADAV,EAAQ5oC,KAAK,CAAE/D,KAAM,MAAOb,MAAOkuC,IAC5B,CAAEV,QAAAA,EAAStF,IAAKgG,MAKvC,MAAO3qC,GACHwF,QAAQC,IAAI,KAAMzF,GAEtB,MAAO,CAAEiqC,QAAAA,EAAStF,IAAK,MAE3BhgC,sBAAsBikC,EAAUpnC,GAC5B,IAAIqpC,EAAcrpC,EAClB,OAAa,CACT,GAAoB,KAAhBqpC,GAAsC,MAAhBA,EACtB,OAAO,KAIX,GAAa,QAATrpC,GAAkC,QAAhBqpC,EAClB,OAAO,KAGX,MAAMR,QAAalrC,GAAuBwpC,GAAapgC,GAAI,IAAKm/B,IAA0BzoC,KAAK0pC,GAAaC,EAAUiC,GAEtH,GAAY,MAARR,EAAc,CACd,MAAMhX,EAAW,IAAIsV,GAAYC,EAAUyB,EAAM7oC,GAEjD,OAAIqpC,IAAgBrpC,SAAgB6xB,EAAS4V,mBAGtC5V,EAFI,KAKfwX,EAAcA,EAAYrtC,MAAM,KAAK+J,MAAM,GAAGhF,KAAK,OAI/DgG,GAAKogC,GAAalB,GAA4B,IAAItnC,QAAWunC,GAA2BnrC,eAAwCqsC,EAAUpnC,GACtI,MAAMspC,QAAgBlC,EAASO,aACzB4B,EAAYD,EAAQE,UAAU,0BAEpC,IAAKD,EACD,OAAOplC,GAAOnD,WAAW,+BAAgC,wBAAyB,CAC9EY,UAAW,cAAezC,KAAM,CAAEmqC,QAASA,EAAQtpC,QAG3D,IAEI,MAAMunC,QAAiBH,EAAS3pC,KAAK,CACjC6K,GAAIihC,EAAUla,QACdxd,KAAMU,GAAO,CAAC,aAAc0mB,GAASj5B,KACrCwnC,gBAAgB,IAEdqB,EAAOS,EAAQ1B,UAAUC,YAAYN,GAC3C,OAAIsB,IAASl2B,GAAUwzB,GAAU,EAAG,IACzB,KAEJ0C,EAEX,MAAOrqC,GAGH,MAAMA,EAEV,OAAO,MCxdJ,MCEM2F,GAAS,IAAI5D,EDFH,2CEAvB,IAWIkpC,GAXAxsC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAOxF,MAAMqP,GAAO7J,OAAO,GACdsK,GAAOtK,OAAO,GACd+mC,GAAO/mC,OAAO,GACdgnC,GAAQhnC,OAAO,IACfinC,GAAQjnC,OAAO,IACfknC,GAAQlnC,OAAO,IACfgG,GAAS,GACTmhC,GAAO,qEACN,MAAMC,GACTjsC,YAAYoE,EAAO4qB,EAAGzO,EAAG1iB,GACrB8tC,GAAiB/rC,IAAIR,UAAM,GAC3BiH,GAAOnC,cAAcE,EAAOyG,GAAQ,aACpC1L,GAAuBC,KAAMusC,GAAkB,CAAE3c,EAAAA,EAAGzO,EAAAA,EAAG1iB,EAAAA,EAAGquC,SAAU,MAAQ,KAE5Eld,QAAM,OAAO3uB,EAASR,GAAuBT,KAAMusC,GAAkB,KAAM,KAC3E3c,MAAE7xB,GACwB,KAAtByX,GAAWzX,IACXkJ,GAAOlD,mBAAmB,YAAa,QAAShG,GAEpDoD,EAASV,GAAuBT,KAAMusC,GAAkB,KAAM,IAAKr3B,GAAQnX,IAE3EojB,QAAM,OAAOlgB,EAASR,GAAuBT,KAAMusC,GAAkB,KAAM,KAC3EprB,MAAEpjB,GACwB,KAAtByX,GAAWzX,GACXkJ,GAAOlD,mBAAmB,YAAa,QAAShG,GAEf,IAA5BkJ,GAAO3B,SAASvH,GAAO,IAC5BkJ,GAAOlD,mBAAmB,kBAAmB,QAAShG,GAE1DoD,EAASV,GAAuBT,KAAMusC,GAAkB,KAAM,IAAKr3B,GAAQnX,IAE3EU,QAAM,OAAOwC,EAASR,GAAuBT,KAAMusC,GAAkB,KAAM,KAC3E9tC,MAAEV,GACF,MAAMU,EAAIwI,GAAOzB,UAAUzH,EAAO,SAClC,GAAU,KAANU,GAAkB,KAANA,EACZ,MAAM,IAAIU,MAAM,SAEpBgC,EAASV,GAAuBT,KAAMusC,GAAkB,KAAM,IAAK9tC,GAEnEquC,eAAa,OAAO7rC,EAASR,GAAuBT,KAAMusC,GAAkB,KAAM,YAClFQ,oBACA,MAAMtuC,EAAIuB,KAAK8sC,SACf,OAAS,MAALruC,EACO,KAEJouC,GAAUG,WAAWvuC,GAE5BwuC,cACA,OAAe,KAAXjtC,KAAKvB,EACE,EAEJ,EAUPyuC,kBAEA,MAAMA,EAAcjmC,GAAO3B,SAAStF,KAAKmhB,GAIzC,OAHInhB,KAAKitC,UACLC,EAAY,IAAM,KAEfh4B,GAAQg4B,GAEfC,wBACA,OAAO93B,GAAO,CAACrV,KAAK4vB,EAAG5vB,KAAKktC,cAE5BE,iBACA,OAAO/3B,GAAO,CAACrV,KAAK4vB,EAAG5vB,KAAKmhB,EAAInhB,KAAKitC,QAAU,OAAS,SAE5D,EAAEV,GAAmB,IAAI9qC,QAAWkK,OAAOC,IAAI,kCAC3C,MAAO,mBAAmB5L,KAAK4vB,WAAW5vB,KAAKmhB,gBAAgBnhB,KAAKitC,sBAAsBjtC,KAAK8sC,aAEnGhkC,QACI,MAAMA,EAAQ,IAAI+jC,GAAUphC,GAAQzL,KAAK4vB,EAAG5vB,KAAKmhB,EAAGnhB,KAAKvB,GAIzD,OAHIuB,KAAK8sC,UACL3rC,EAASV,GAAuBqI,EAAOyjC,GAAkB,KAAM,WAAYvsC,KAAK8sC,UAE7EhkC,EAEXjB,SAEI,OADA5J,OAAO4J,OAAOpH,GAAuBT,KAAMusC,GAAkB,MACtDvsC,KAEXoB,WACI,OAAOnD,OAAOmD,SAASX,GAAuBT,KAAMusC,GAAkB,MAE1Ec,SACI,MAAMP,EAAW9sC,KAAK8sC,SACtB,MAAO,CACHQ,MAAO,YACPR,SAAwB,MAAZA,EAAoBA,EAAShjC,WAAa,KACtD8lB,EAAG5vB,KAAK4vB,EAAGzO,EAAGnhB,KAAKmhB,EAAG1iB,EAAGuB,KAAKvB,GAGtCwH,gBACI,OAAO,IAAI4mC,GAAUphC,GAAQmhC,GAAMA,GAAM,IAG7C3mC,kBAAkBxH,GACd,MAAM8uC,EAAKtmC,GAAOtB,UAAUlH,EAAG,KAE/B,OAAK8uC,GAAMd,IAAWc,GAAMb,GACjBp9B,IAGPi+B,EAAKZ,IACL1lC,GAAOlD,mBAAmB,oBAAqB,IAAKtF,IAEhD8uC,EAAKZ,IAASH,IAG1BvmC,mBAAmBo3B,EAAS5+B,GACxB,OAAQwI,GAAOtB,UAAU03B,GAAWmP,GAAQ/mC,OAAO,GAAKhH,EAAI,IAGhEwH,sBAAsBxH,GAClB,MAAM8uC,EAAKtmC,GAAOtB,UAAUlH,GAC5B,OAAI8uC,GAAMj+B,GACC,GAEPi+B,GAAMx9B,GACC,GAGHw9B,EAAKx9B,GAAQ,GAAK,GAE9B9J,YAAYunC,GACR,MAAM1pC,EAAcL,GACTwD,GAAOlD,mBAAmBN,EAAS,YAAa+pC,GAE3D,GAAqB,iBAAT,EAAmB,CAC3B,MAAMr4B,EAAQlO,GAAO3B,SAASkoC,EAAK,aACnC,GAAqB,KAAjBr4B,EAAMjW,OAAe,CACrB,MAAM0wB,EAAI1a,GAAQC,EAAMtM,MAAM,EAAG,KAC3BsY,EAAIhM,EAAMtM,MAAM,GAAI,IACpBpK,EAAY,IAAP0iB,EAAE,GAAa,GAAK,GAE/B,OADAA,EAAE,IAAM,IACD,IAAI0rB,GAAUphC,GAAQmkB,EAAG1a,GAAQiM,GAAI1iB,GAEhD,GAAwB,KAApB+W,GAAWg4B,GAAa,CACxB,MAAM5d,EAAI1a,GAAQs4B,EAAI3kC,MAAM,EAAG,KACzBsY,EAAIhM,EAAMtM,MAAM,GAAI,IACf,IAAPsY,EAAE,IACFrd,EAAW,mBAEf,MAAMrF,EAAIouC,GAAUY,eAAet4B,EAAM,KACzC,OAAO,IAAI03B,GAAUphC,GAAQmkB,EAAG1a,GAAQiM,GAAI1iB,GAEhD,OAAOqF,EAAW,gCAEtB,GAAI0pC,aAAeX,GACf,OAAOW,EAAI1kC,QAGf,MAAM8mB,EAAI4d,EAAI5d,EACL,MAALA,GACA9rB,EAAW,aAEVwQ,GAAYsb,EAAG,KAChB9rB,EAAW,aAGf,MAAMqd,EAAI,SAAWA,EAAG+rB,GACpB,GAAS,MAAL/rB,EAIA,OAHK7M,GAAY6M,EAAG,KAChBrd,EAAW,aAERqd,EAEX,GAAmB,MAAf+rB,EAAqB,CAChB54B,GAAY44B,EAAa,KAC1BppC,EAAW,uBAEf,MAAMqR,EAAQlO,GAAO3B,SAAS4nC,GAE9B,OADA/3B,EAAM,IAAM,IACLD,GAAQC,GAEnB,OAAOrR,EAAW,aAfZ,CAgBP0pC,EAAIrsB,EAAGqsB,EAAIN,aACc,IAAxBjmC,GAAO3B,SAAS6b,GAAG,IACnBrd,EAAW,mBAGf,MAAMgpC,SAAEA,EAAQruC,EAAEA,GAAM,SAAWivC,EAAIR,EAAaD,GAChD,GAAU,MAANS,EAAY,CACZ,MAAMjvC,EAAIwI,GAAOtB,UAAU+nC,GAC3B,MAAO,CACHZ,SAAYruC,GAAKkuC,GAASluC,OAAIiB,EAC9BjB,EAAGouC,GAAUY,eAAehvC,IAGpC,GAAmB,MAAfyuC,EAIA,OAHK54B,GAAY44B,EAAa,KAC1BppC,EAAW,uBAER,CAAErF,EAAuC,IAAlCwI,GAAO3B,SAAS4nC,GAAa,GAAa,GAAK,IAEjE,GAAe,MAAXD,EAAiB,CACjB,OAAQA,GACJ,KAAK,EAAG,MAAO,CAAExuC,EAAG,IACpB,KAAK,EAAG,MAAO,CAAEA,EAAG,IAExB,OAAOqF,EAAW,mBAEtB,OAAOA,EAAW,aArBE,CAsBrB0pC,EAAI/uC,EAAG+uC,EAAIN,YAAaM,EAAIP,SACzBvmC,EAAS,IAAImmC,GAAUphC,GAAQmkB,EAAGzO,EAAG1iB,GAW3C,OAVIquC,GACA3rC,EAASV,GAAuBiG,EAAQ6lC,GAAkB,KAAM,WAAYO,GAG5E,YAAaU,GAAOA,EAAIP,UAAYvmC,EAAOumC,QAC3CnpC,EAAW,oBAEN,gBAAiB0pC,GAAOA,EAAIN,cAAgBxmC,EAAOwmC,aACxDppC,EAAW,wBAER4C;yEC9Of,MACMugB,GAAMxhB,OAAO,GACbyhB,GAAMzhB,OAAO,GACb0hB,GAAM1hB,OAAO,GACbkoC,GAAMloC,OAAO,GACbmoC,GAAMnoC,OAAO,GACbooC,GAAY1mB,IAAO1hB,OAAO,KAC1BqoC,GAAQ,CACV97B,EAAGiV,GACHhV,EAAGxM,OAAO,GACVsoC,EAAGF,GAAY1mB,IAAO1hB,OAAO,IAAMA,OAAO,KAC1CqV,EAAG+yB,GAAYpoC,OAAO,2CACtBwZ,EAAGiI,GACH8mB,GAAIvoC,OAAO,iFACXwoC,GAAIxoC,OAAO,iFACXyoC,KAAMzoC,OAAO,uEAGjB,SAAS0oC,GAAU3mB,GACf,MAAMxV,EAAEA,EAACC,EAAEA,GAAM67B,GACXM,EAAKC,GAAI7mB,EAAIA,GACb8mB,EAAKD,GAAID,EAAK5mB,GACpB,OAAO6mB,GAAIC,EAAKt8B,EAAIwV,EAAIvV,GAE5B,MAAMs8B,GAAmBT,GAAM97B,IAAMiV,GACrC,MAAMunB,GACF5tC,YAAY4mB,EAAGC,EAAGoD,GACd7qB,KAAKwnB,EAAIA,EACTxnB,KAAKynB,EAAIA,EACTznB,KAAK6qB,EAAIA,EAEb5kB,kBAAkBsI,GACd,KAAMA,aAAakgC,IACf,MAAM,IAAIpuC,UAAU,4CAExB,OAAO,IAAImuC,GAAcjgC,EAAEiZ,EAAGjZ,EAAEkZ,EAAGP,IAEvCjhB,qBAAqByoC,GACjB,MAAMC,EAsjBd,SAAqBC,EAAMrgC,EAAIu/B,GAAMC,GACjC,MAAMc,EAAU,IAAI/hC,MAAM8hC,EAAK1vC,QAOzB4vC,EAAWC,GANMH,EAAKrwC,QAAO,CAACywC,EAAKC,EAAKhwC,IACtCgwC,IAAQhoB,GACD+nB,GACXH,EAAQ5vC,GAAK+vC,EACNX,GAAIW,EAAMC,EAAK1gC,KACvB2Y,IACqC3Y,GAOxC,OANAqgC,EAAKM,aAAY,CAACF,EAAKC,EAAKhwC,IACpBgwC,IAAQhoB,GACD+nB,GACXH,EAAQ5vC,GAAKovC,GAAIW,EAAMH,EAAQ5vC,GAAIsP,GAC5B8/B,GAAIW,EAAMC,EAAK1gC,KACvBugC,GACID,EArkBWM,CAAYT,EAAOtwC,KAAKmQ,GAAMA,EAAEsc,KAC9C,OAAO6jB,EAAOtwC,KAAI,CAACmQ,EAAGtP,IAAMsP,EAAE6gC,SAAST,EAAM1vC,MAEjDgH,kBAAkByoC,GACd,OAAOF,GAAca,cAAcX,GAAQtwC,IAAIowC,GAAcc,YAEjEC,OAAOx9B,GACH,KAAMA,aAAiBy8B,IACnB,MAAM,IAAInuC,UAAU,0BACxB,MAAQmnB,EAAGgoB,EAAI/nB,EAAGgoB,EAAI5kB,EAAG6kB,GAAO1vC,MACxBwnB,EAAGmoB,EAAIloB,EAAGmoB,EAAI/kB,EAAGglB,GAAO99B,EAC1B+9B,EAAOzB,GAAIqB,GAAMvoB,IACjB4oB,EAAO1B,GAAIwB,GAAM1oB,IACjB6oB,EAAK3B,GAAImB,EAAKO,GACdE,EAAK5B,GAAIsB,EAAKG,GACdI,EAAK7B,GAAIA,GAAIoB,EAAKI,GAAME,GACxBI,EAAK9B,GAAIA,GAAIuB,EAAKF,GAAMI,GAC9B,OAAOE,IAAOC,GAAMC,IAAOC,EAE/BC,SACI,OAAO,IAAI5B,GAAcxuC,KAAKwnB,EAAG6mB,IAAKruC,KAAKynB,GAAIznB,KAAK6qB,GAExDwlB,SACI,MAAQ7oB,EAAGgoB,EAAI/nB,EAAGgoB,EAAI5kB,EAAG6kB,GAAO1vC,KAC1B4f,EAAIyuB,GAAImB,GAAMroB,IACdtH,EAAIwuB,GAAIoB,GAAMtoB,IACdrH,EAAIuuB,GAAIxuB,GAAKsH,IACbpH,EAAIsuB,GAAIlnB,IAAOknB,IAAKmB,EAAK3vB,IAAMsH,IAAOvH,EAAIE,IAC1CE,EAAIquB,GAAIV,GAAM/tB,GACdK,EAAIouB,GAAIruB,GAAKmH,IACbmpB,EAAKjC,GAAIpuB,EAAIkH,GAAMpH,GACnBwwB,EAAKlC,GAAIruB,GAAKD,EAAIuwB,GAAM1C,GAAM9tB,GAC9B0wB,EAAKnC,GAAIlnB,GAAMsoB,EAAKC,GAC1B,OAAO,IAAIlB,GAAc8B,EAAIC,EAAIC,GAErCjtC,IAAIwO,GACA,KAAMA,aAAiBy8B,IACnB,MAAM,IAAInuC,UAAU,0BACxB,MAAQmnB,EAAGgoB,EAAI/nB,EAAGgoB,EAAI5kB,EAAG6kB,GAAO1vC,MACxBwnB,EAAGmoB,EAAIloB,EAAGmoB,EAAI/kB,EAAGglB,GAAO99B,EAChC,GAAI49B,IAAO1oB,IAAO2oB,IAAO3oB,GACrB,OAAOjnB,KACX,GAAIwvC,IAAOvoB,IAAOwoB,IAAOxoB,GACrB,OAAOlV,EACX,MAAM+9B,EAAOzB,GAAIqB,GAAMvoB,IACjB4oB,EAAO1B,GAAIwB,GAAM1oB,IACjB6oB,EAAK3B,GAAImB,EAAKO,GACdE,EAAK5B,GAAIsB,EAAKG,GACdI,EAAK7B,GAAIA,GAAIoB,EAAKI,GAAME,GACxBI,EAAK9B,GAAIA,GAAIuB,EAAKF,GAAMI,GACxB3vB,EAAIkuB,GAAI4B,EAAKD,GACbpgB,EAAIye,GAAI8B,EAAKD,GACnB,GAAI/vB,IAAM8G,GACN,OAAI2I,IAAM3I,GACCjnB,KAAKqwC,SAGL7B,GAAciC,KAG7B,MAAMC,EAAKrC,GAAIluB,GAAKgH,IACdwpB,EAAMtC,GAAIluB,EAAIuwB,GACdngB,EAAI8d,GAAI2B,EAAKU,GACbJ,EAAKjC,GAAIze,GAAKzI,GAAMwpB,EAAMxpB,GAAMoJ,GAChCggB,EAAKlC,GAAIze,GAAKW,EAAI+f,GAAMJ,EAAKS,GAC7BH,EAAKnC,GAAIqB,EAAKG,EAAK1vB,GACzB,OAAO,IAAIquB,GAAc8B,EAAIC,EAAIC,GAErCI,SAAS7+B,GACL,OAAO/R,KAAKuD,IAAIwO,EAAMq+B,UAE1BS,eAAeC,GACX,IAAIh2B,EAAIi2B,GAAgBD,GAExB,MAAME,EAAKxC,GAAciC,KACzB,GAAI31B,IAAMmM,GACN,OAAO+pB,EACX,GAAIl2B,IAAMoM,GACN,OAAOlnB,KACX,IAAKuuC,GAAkB,CACnB,IAAIhgC,EAAIyiC,EACJz7B,EAAIvV,KACR,KAAO8a,EAAImM,IACHnM,EAAIoM,KACJ3Y,EAAIA,EAAEhL,IAAIgS,IACdA,EAAIA,EAAE86B,SACNv1B,IAAMoM,GAEV,OAAO3Y,EAEX,IAAI0iC,MAAEA,EAAKC,GAAEA,EAAEC,MAAEA,EAAKC,GAAEA,GAAOC,GAAgBv2B,GAC3Cw2B,EAAMN,EACNO,EAAMP,EACNz7B,EAAIvV,KACR,KAAOkxC,EAAKjqB,IAAOmqB,EAAKnqB,IAChBiqB,EAAKhqB,KACLoqB,EAAMA,EAAI/tC,IAAIgS,IACd67B,EAAKlqB,KACLqqB,EAAMA,EAAIhuC,IAAIgS,IAClBA,EAAIA,EAAE86B,SACNa,IAAOhqB,GACPkqB,IAAOlqB,GAOX,OALI+pB,IACAK,EAAMA,EAAIlB,UACVe,IACAI,EAAMA,EAAInB,UACdmB,EAAM,IAAI/C,GAAcH,GAAIkD,EAAI/pB,EAAIsmB,GAAMI,MAAOqD,EAAI9pB,EAAG8pB,EAAI1mB,GACrDymB,EAAI/tC,IAAIguC,GAEnBC,iBAAiBC,GACb,MAAMC,EAAUnD,GAAmB,IAAMkD,EAAI,EAAI,IAAMA,EAAI,EACrD/C,EAAS,GACf,IAAIngC,EAAIvO,KACJ2xC,EAAOpjC,EACX,IAAK,IAAIoX,EAAS,EAAGA,EAAS+rB,EAAS/rB,IAAU,CAC7CgsB,EAAOpjC,EACPmgC,EAAO/rC,KAAKgvC,GACZ,IAAK,IAAI1yC,EAAI,EAAGA,EAAI,IAAMwyC,EAAI,GAAIxyC,IAC9B0yC,EAAOA,EAAKpuC,IAAIgL,GAChBmgC,EAAO/rC,KAAKgvC,GAEhBpjC,EAAIojC,EAAKtB,SAEb,OAAO3B,EAEXkD,KAAK92B,EAAG+2B,IACCA,GAAe7xC,KAAKuvC,OAAOf,GAAcsD,QAC1CD,EAAcpD,GAAMqD,MACxB,MAAML,EAAKI,GAAeA,EAAYE,cAAiB,EACvD,GAAI,IAAMN,EACN,MAAM,IAAItyC,MAAM,iEAEpB,IAAI6yC,EAAcH,GAAeI,GAAiBvxC,IAAImxC,GACjDG,IACDA,EAAchyC,KAAKwxC,iBAAiBC,GAChCI,GAAqB,IAANJ,IACfO,EAAcxD,GAAc0D,WAAWF,GACvCC,GAAiBzxC,IAAIqxC,EAAaG,KAG1C,IAAIzjC,EAAIigC,GAAciC,KAClBrwC,EAAIouC,GAAciC,KACtB,MAAMiB,EAAU,GAAKnD,GAAmB,IAAMkD,EAAI,IAAMA,GAClDU,EAAa,IAAMV,EAAI,GACvBvhC,EAAOzK,OAAO,GAAKgsC,EAAI,GACvBW,EAAY,GAAKX,EACjBY,EAAU5sC,OAAOgsC,GACvB,IAAK,IAAI9rB,EAAS,EAAGA,EAAS+rB,EAAS/rB,IAAU,CAC7C,MAAMhf,EAASgf,EAASwsB,EACxB,IAAIG,EAAQ/tC,OAAOuW,EAAI5K,GAMvB,GALA4K,IAAMu3B,EACFC,EAAQH,IACRG,GAASF,EACTt3B,GAAKoM,IAEK,IAAVorB,EAAa,CACb,IAAIC,EAAKP,EAAYrrC,GACjBgf,EAAS,IACT4sB,EAAKA,EAAGnC,UACZhwC,EAAIA,EAAEmD,IAAIgvC,OAET,CACD,IAAIC,EAASR,EAAYrrC,EAASiS,KAAK65B,IAAIH,GAAS,GAChDA,EAAQ,IACRE,EAASA,EAAOpC,UACpB7hC,EAAIA,EAAEhL,IAAIivC,IAGlB,MAAO,CAAEjkC,EAAAA,EAAGnO,EAAAA,GAEhBsyC,SAAS5B,EAAQe,GACb,IACIc,EACAC,EAFA93B,EAAIi2B,GAAgBD,GAGxB,GAAIvC,GAAkB,CAClB,MAAM0C,MAAEA,EAAKC,GAAEA,EAAEC,MAAEA,EAAKC,GAAEA,GAAOC,GAAgBv2B,GACjD,IAAMvM,EAAG+iC,EAAKlxC,EAAGyyC,GAAQ7yC,KAAK4xC,KAAKV,EAAIW,IACjCtjC,EAAGgjC,EAAKnxC,EAAG0yC,GAAQ9yC,KAAK4xC,KAAKR,EAAIS,GACnCZ,IACAK,EAAMA,EAAIlB,UACVe,IACAI,EAAMA,EAAInB,UACdmB,EAAM,IAAI/C,GAAcH,GAAIkD,EAAI/pB,EAAIsmB,GAAMI,MAAOqD,EAAI9pB,EAAG8pB,EAAI1mB,GAC5D8nB,EAAQrB,EAAI/tC,IAAIguC,GAChBqB,EAAOC,EAAItvC,IAAIuvC,OAEd,CACD,MAAMvkC,EAAEA,EAACnO,EAAEA,GAAMJ,KAAK4xC,KAAK92B,EAAG+2B,GAC9Bc,EAAQpkC,EACRqkC,EAAOxyC,EAEX,OAAOouC,GAAc0D,WAAW,CAACS,EAAOC,IAAO,GAEnDxD,SAAS2D,EAAOhE,GAAO/uC,KAAK6qB,IACxB,MAAMrD,EAAEA,EAACC,EAAEA,EAACoD,EAAEA,GAAM7qB,KACdgzC,EAAMD,EACNE,EAAM5E,GAAI2E,EAAMA,GAChBE,EAAM7E,GAAI4E,EAAMD,GAChBG,EAAK9E,GAAI7mB,EAAIyrB,GACbG,EAAK/E,GAAI5mB,EAAIyrB,GAEnB,GADW7E,GAAIxjB,EAAImoB,KACR9rB,GACP,MAAM,IAAI/nB,MAAM,oBACpB,OAAO,IAAIsvC,GAAM0E,EAAIC,IAG7B5E,GAAcsD,KAAO,IAAItD,GAAcV,GAAME,GAAIF,GAAMG,GAAI/mB,IAC3DsnB,GAAciC,KAAO,IAAIjC,GAAcvnB,GAAKC,GAAKD,IACjD,MAAMgrB,GAAmB,IAAIxwC,QACtB,MAAMgtC,GACT7tC,YAAY4mB,EAAGC,GACXznB,KAAKwnB,EAAIA,EACTxnB,KAAKynB,EAAIA,EAEb4rB,eAAelB,GACXnyC,KAAK+xC,aAAeI,EACpBF,GAAiBvT,OAAO1+B,MAE5BiG,yBAAyBkP,GACrB,MAAMm+B,EAA2B,KAAjBn+B,EAAMjW,OAChBsoB,EAAI+rB,GAAcD,EAAUn+B,EAAQA,EAAM6I,SAAS,IACzD,IAAKw1B,GAAoBhsB,GACrB,MAAM,IAAIroB,MAAM,yBAEpB,IAAIsoB,EA2SZ,SAAiBD,GACb,MAAMumB,EAAEA,GAAMD,GACR2F,EAAMhuC,OAAO,GACbiuC,EAAOjuC,OAAO,IACdkuC,EAAOluC,OAAO,IACdmuC,EAAOnuC,OAAO,IACdouC,EAAOpuC,OAAO,IACdquC,EAAOruC,OAAO,IACdsuC,EAAMvsB,EAAIA,EAAIA,EAAKumB,EACnBiG,EAAMD,EAAKA,EAAKvsB,EAAKumB,EACrBkG,EAAMC,GAAKF,EAAIrG,IAAOqG,EAAMjG,EAC5BoG,EAAMD,GAAKD,EAAItG,IAAOqG,EAAMjG,EAC5BqG,EAAOF,GAAKC,EAAIhtB,IAAO4sB,EAAMhG,EAC7BsG,EAAOH,GAAKE,EAAKV,GAAQU,EAAOrG,EAChCuG,EAAOJ,GAAKG,EAAKV,GAAQU,EAAOtG,EAChCwG,EAAOL,GAAKI,EAAKT,GAAQS,EAAOvG,EAChCyG,EAAQN,GAAKK,EAAKT,GAAQS,EAAOxG,EACjC0G,EAAQP,GAAKM,EAAMX,GAAQS,EAAOvG,EAClC2G,EAAQR,GAAKO,EAAM9G,IAAOqG,EAAMjG,EAChC4G,EAAMT,GAAKQ,EAAMd,GAAQS,EAAOtG,EAChC6G,EAAMV,GAAKS,EAAIlB,GAAOM,EAAMhG,EAClC,OAAOmG,GAAKU,EAAIztB,IAhUJ0tB,CADG1G,GAAU3mB,IAErB,MAAMstB,GAAUrtB,EAAIP,MAASA,GAC7B,GAAIosB,EACIwB,IACArtB,EAAI4mB,IAAK5mB,QAEZ,CACyC,IAAP,EAAXtS,EAAM,MACP2/B,IACnBrtB,EAAI4mB,IAAK5mB,IAEjB,MAAMkrB,EAAQ,IAAIlE,GAAMjnB,EAAGC,GAE3B,OADAkrB,EAAMoC,iBACCpC,EAEX1sC,2BAA2BkP,GACvB,MAAMqS,EAAI+rB,GAAcp+B,EAAM6I,SAAS,EAAG,KACpCyJ,EAAI8rB,GAAcp+B,EAAM6I,SAAS,GAAI,KACrC20B,EAAQ,IAAIlE,GAAMjnB,EAAGC,GAE3B,OADAkrB,EAAMoC,iBACCpC,EAEX1sC,eAAe6J,GACX,MAAMqF,EAAQ6/B,GAAYllC,GACpByO,EAAMpJ,EAAMjW,OACZ+1C,EAAS9/B,EAAM,GACrB,GAAY,KAARoJ,GAAuB,KAARA,IAA0B,IAAX02B,GAA8B,IAAXA,GACjD,OAAOj1C,KAAKk1C,kBAAkB//B,GAElC,GAAY,KAARoJ,GAAyB,IAAX02B,EACd,OAAOj1C,KAAKm1C,oBAAoBhgC,GACpC,MAAM,IAAIhW,MAAM,wGAAwGof,KAE5HtY,sBAAsBmvC,GAClB,OAAO3G,GAAMqD,KAAKY,SAAS2C,GAAoBD,IAEnDnvC,qBAAqBqvC,EAAS9U,EAAW+U,GAErC,MAAMt2B,EAuVd,SAAsBhE,GAClB,MAAMH,EAAEA,GAAMgzB,GAER0H,EAAqB,EADRv6B,EAAK/b,OACO,IAC/B,IAAI+f,EAAIs0B,GAAct4B,GAClBu6B,EAAQ,IACRv2B,IAASxZ,OAAO+vC,IAChBv2B,GAAKnE,IACLmE,GAAKnE,GACT,OAAOmE,EAhWOw2B,CADVH,EAAUN,GAAYM,KAEhB1lB,EAAEA,EAACzO,EAAEA,GA2cnB,SAA4Bqf,GACxB,GAAIA,aAAqBqM,GAErB,OADArM,EAAUuU,iBACHvU,EAEX,IACI,OAAOqM,GAAU6I,QAAQlV,GAE7B,MAAOl/B,GACH,OAAOurC,GAAU8I,YAAYnV,IApdZoV,CAAmBpV,GACpC,GAAiB,IAAb+U,GAA+B,IAAbA,EAClB,MAAM,IAAIp2C,MAAM,kDAEpB,GAAI8f,IAAMgI,GACN,MAAM,IAAI9nB,MAAM,iDACpB,MAAM02C,EAAoB,EAAXN,EAAe,KAAO,KAC/BhuB,EAAIknB,GAAMqH,QAAQD,EAASE,GAAYnmB,KACvC9U,EAAEA,GAAMgzB,GACRkI,EAAOjH,GAAOnf,EAAG9U,GACjBm7B,EAAK5H,IAAKpvB,EAAI+2B,EAAMl7B,GACpBo7B,EAAK7H,GAAIltB,EAAI60B,EAAMl7B,GACnBq7B,EAAI1H,GAAMqD,KAAKsE,qBAAqB7uB,EAAG0uB,EAAIC,GACjD,IAAKC,EACD,MAAM,IAAIh3C,MAAM,+CAEpB,OADAg3C,EAAEpB,iBACKoB,EAEXE,WAAWC,GAAe,GACtB,OAAOC,GAAWv2C,KAAK0P,MAAM4mC,IAEjC5mC,MAAM4mC,GAAe,GACjB,MAAM9uB,EAAIuuB,GAAY/1C,KAAKwnB,GAC3B,GAAI8uB,EAAc,CAEd,MAAO,GADQt2C,KAAKynB,EAAIP,GAAM,KAAO,OAClBM,IAGnB,MAAO,KAAKA,IAAIuuB,GAAY/1C,KAAKynB,KAGzC+uB,SACI,OAAOx2C,KAAK0P,OAAM,GAAM7G,MAAM,GAElC4tC,SACI,OAAOz2C,KAAKq2C,YAAW,GAAMxtC,MAAM,GAEvCksC,iBACI,MAAMprB,EAAM,kCACNnC,EAAEA,EAACC,EAAEA,GAAMznB,KACjB,IAAKwzC,GAAoBhsB,KAAOgsB,GAAoB/rB,GAChD,MAAM,IAAItoB,MAAMwqB,GACpB,MAAM5T,EAAOs4B,GAAI5mB,EAAIA,GAErB,GAAI4mB,GAAIt4B,EADMo4B,GAAU3mB,MACEP,GACtB,MAAM,IAAI9nB,MAAMwqB,GAExB4lB,OAAOx9B,GACH,OAAO/R,KAAKwnB,IAAMzV,EAAMyV,GAAKxnB,KAAKynB,IAAM1V,EAAM0V,EAElD2oB,SACI,OAAO,IAAI3B,GAAMzuC,KAAKwnB,EAAG6mB,IAAKruC,KAAKynB,IAEvC4oB,SACI,OAAO7B,GAAcc,WAAWtvC,MAAMqwC,SAASjB,WAEnD7rC,IAAIwO,GACA,OAAOy8B,GAAcc,WAAWtvC,MAAMuD,IAAIirC,GAAcc,WAAWv9B,IAAQq9B,WAE/EwB,SAAS7+B,GACL,OAAO/R,KAAKuD,IAAIwO,EAAMq+B,UAE1BsC,SAAS5B,GACL,OAAOtC,GAAcc,WAAWtvC,MAAM0yC,SAAS5B,EAAQ9wC,MAAMovC,WAEjEgH,qBAAqBD,EAAGnkC,EAAGC,GACvB,MACMykC,EADIlI,GAAcc,WAAWtvC,MACtB0yC,SAAS1gC,GAChB2kC,EAAKnI,GAAcc,WAAW6G,GAAGtF,eAAe5+B,GAChD2kC,EAAMF,EAAGnzC,IAAIozC,GACnB,OAAOC,EAAIrH,OAAOf,GAAciC,WAAQ/wC,EAAYk3C,EAAIxH,YAKhE,SAASyH,GAAS11B,GACd,OAAO5c,OAAOqC,SAASua,EAAE,GAAI,KAAO,EAAI,KAAOA,EAAIA,EAEvD,SAAS21B,GAAYniC,GACjB,GAAIA,EAAKzV,OAAS,GAAiB,IAAZyV,EAAK,GACxB,MAAM,IAAIxV,MAAM,kCAAkC43C,GAAWpiC,MAEjE,MAAM4J,EAAM5J,EAAK,GACX0K,EAAM1K,EAAKqJ,SAAS,EAAGO,EAAM,GACnC,IAAKA,GAAOc,EAAIngB,SAAWqf,EACvB,MAAM,IAAIpf,MAAM,2CAEpB,GAAe,IAAXkgB,EAAI,IAAeA,EAAI,IAAM,IAC7B,MAAM,IAAIlgB,MAAM,8CAEpB,MAAO,CAAEwV,KAAM4+B,GAAcl0B,GAAMtJ,KAAMpB,EAAKqJ,SAASO,EAAM,IAjBjEkwB,GAAMqD,KAAO,IAAIrD,GAAMX,GAAME,GAAIF,GAAMG,IACvCQ,GAAMgC,KAAO,IAAIhC,GAAMxnB,GAAKA,IAgCrB,MAAM4lB,GACTjsC,YAAYgvB,EAAGzO,GACXnhB,KAAK4vB,EAAIA,EACT5vB,KAAKmhB,EAAIA,EACTnhB,KAAK+0C,iBAET9uC,mBAAmB6J,GACf,MAAMiJ,EAAMi+B,GAASlnC,GACfhN,EAAO,wBACb,GAAmB,iBAARgN,IAAqBiJ,EAC5B,MAAM,IAAI1Y,UAAU,GAAGyC,oCAC3B,MAAM2X,EAAM1B,EAAMg+B,GAAWjnC,GAAOA,EACpC,GAAmB,MAAf2K,EAAIvb,OACJ,MAAM,IAAIC,MAAM,GAAG2D,2BACvB,OAAO,IAAI+pC,GAAUoK,GAAYx8B,EAAI5R,MAAM,EAAG,KAAMouC,GAAYx8B,EAAI5R,MAAM,GAAI,OAElF5C,eAAe6J,GACX,MAAMiJ,EAAMi+B,GAASlnC,GACrB,GAAmB,iBAARA,IAAqBiJ,EAC5B,MAAM,IAAI1Y,UAAU,oDACxB,MAAMuvB,EAAEA,EAACzO,EAAEA,GAlCnB,SAA2BxM,GACvB,GAAIA,EAAKzV,OAAS,GAAgB,IAAXyV,EAAK,GACxB,MAAM,IAAIxV,MAAM,0BAA0B43C,GAAWpiC,MAEzD,GAAIA,EAAK,KAAOA,EAAKzV,OAAS,EAC1B,MAAM,IAAIC,MAAM,uCAEpB,MAAQwV,KAAMib,EAAG7Z,KAAMmhC,GAAWJ,GAAYniC,EAAKqJ,SAAS,KACpDrJ,KAAMwM,EAAGpL,KAAMohC,GAAeL,GAAYI,GAClD,GAAIC,EAAWj4C,OACX,MAAM,IAAIC,MAAM,gDAAgD43C,GAAWI,MAE/E,MAAO,CAAEvnB,EAAAA,EAAGzO,EAAAA,GAsBSi2B,CAAkBr+B,EAAMjJ,EAAMymC,GAAWzmC,IAC1D,OAAO,IAAI+8B,GAAUjd,EAAGzO,GAE5Blb,eAAe6J,GACX,OAAO9P,KAAK01C,QAAQ5lC,GAExBilC,iBACI,MAAMnlB,EAAEA,EAACzO,EAAEA,GAAMnhB,KACjB,IAAKq3C,GAAmBznB,GACpB,MAAM,IAAIzwB,MAAM,0CACpB,IAAKk4C,GAAmBl2B,GACpB,MAAM,IAAIhiB,MAAM,0CAExBm4C,WACI,MAAMC,EAAOzJ,GAAMhzB,GAAKoM,GACxB,OAAOlnB,KAAKmhB,EAAIo2B,EAEpBC,aACI,OAAOx3C,KAAKs3C,WAAa,IAAIzK,GAAU7sC,KAAK4vB,EAAGke,GAAMhzB,EAAI9a,KAAKmhB,GAAKnhB,KAEvEy3C,cAAcnB,GAAe,GACzB,OAAOC,GAAWv2C,KAAK03C,SAASpB,IAEpCoB,SAASpB,GAAe,GACpB,MAAMqB,EAAOd,GAASe,GAAoB53C,KAAKmhB,IAC/C,GAAIm1B,EACA,OAAOqB,EACX,MAAME,EAAOhB,GAASe,GAAoB53C,KAAK4vB,IACzCkoB,EAAOF,GAAoBC,EAAK34C,OAAS,GACzC64C,EAAOH,GAAoBD,EAAKz4C,OAAS,GAE/C,MAAO,KADQ04C,GAAoBC,EAAK34C,OAAS,EAAIy4C,EAAKz4C,OAAS,EAAI,OAChD44C,IAAOD,MAASE,IAAOJ,IAElDtB,aACI,OAAOr2C,KAAKy3C,gBAEhB/nC,QACI,OAAO1P,KAAK03C,WAEhBM,oBACI,OAAOzB,GAAWv2C,KAAKi4C,gBAE3BA,eACI,OAAOlC,GAAY/1C,KAAK4vB,GAAKmmB,GAAY/1C,KAAKmhB,IAGtD,SAAS+2B,MAAeC,GACpB,IAAKA,EAAOC,MAAMpB,IACd,MAAM,IAAI73C,MAAM,4BACpB,GAAsB,IAAlBg5C,EAAOj5C,OACP,OAAOi5C,EAAO,GAClB,MAAMj5C,EAASi5C,EAAO55C,QAAO,CAACyT,EAAG+G,IAAQ/G,EAAI+G,EAAI7Z,QAAQ,GACnDwH,EAAS,IAAIF,WAAWtH,GAC9B,IAAK,IAAID,EAAI,EAAGqd,EAAM,EAAGrd,EAAIk5C,EAAOj5C,OAAQD,IAAK,CAC7C,MAAM8Z,EAAMo/B,EAAOl5C,GACnByH,EAAOlG,IAAIuY,EAAKuD,GAChBA,GAAOvD,EAAI7Z,OAEf,OAAOwH,EAEX,SAASswC,GAAS7hC,GACd,OAAOA,aAAiB3O,WAE5B,MAAM6xC,GAAQvrC,MAAM3B,KAAK,CAAEjM,OAAQ,MAAO,CAACT,EAAGQ,IAAMA,EAAE6K,SAAS,IAAI0P,SAAS,EAAG,OAC/E,SAASu9B,GAAWuB,GAChB,KAAMA,aAAkB9xC,YACpB,MAAM,IAAIrH,MAAM,uBACpB,IAAI2Q,EAAM,GACV,IAAK,IAAI7Q,EAAI,EAAGA,EAAIq5C,EAAOp5C,OAAQD,IAC/B6Q,GAAOuoC,GAAMC,EAAOr5C,IAExB,OAAO6Q,EAEX,SAASimC,GAAY9G,GACjB,GAAIA,EAAMpB,GACN,MAAM,IAAI1uC,MAAM,2BACpB,OAAO8vC,EAAInlC,SAAS,IAAI0P,SAAS,GAAI,KAKzC,SAASo+B,GAAoB3I,GACzB,MAAMn/B,EAAMm/B,EAAInlC,SAAS,IACzB,OAAoB,EAAbgG,EAAI5Q,OAAa,IAAI4Q,IAAQA,EAExC,SAASmnC,GAAYnnC,GACjB,GAAmB,iBAARA,EACP,MAAM,IAAIzP,UAAU,4CAA8CyP,GAEtE,OAAOrK,OAAO,KAAKqK,KAEvB,SAASymC,GAAWzmC,GAChB,GAAmB,iBAARA,EACP,MAAM,IAAIzP,UAAU,2CAA6CyP,GAErE,GAAIA,EAAI5Q,OAAS,EACb,MAAM,IAAIC,MAAM,4CAA8C2Q,EAAI5Q,QACtE,MAAMq5C,EAAQ,IAAI/xC,WAAWsJ,EAAI5Q,OAAS,GAC1C,IAAK,IAAID,EAAI,EAAGA,EAAIs5C,EAAMr5C,OAAQD,IAAK,CACnC,MAAMyoB,EAAQ,EAAJzoB,EACJu5C,EAAU1oC,EAAIjH,MAAM6e,EAAGA,EAAI,GAC3B+wB,EAAOl0C,OAAOqC,SAAS4xC,EAAS,IACtC,GAAIj0C,OAAOm0C,MAAMD,IAASA,EAAO,EAC7B,MAAM,IAAIt5C,MAAM,yBACpBo5C,EAAMt5C,GAAKw5C,EAEf,OAAOF,EAEX,SAAShF,GAAcp+B,GACnB,OAAO8hC,GAAYF,GAAW5hC,IAElC,SAAS6/B,GAAYllC,GACjB,OAAOA,aAAetJ,WAAaA,WAAW2E,KAAK2E,GAAOymC,GAAWzmC,GAEzE,SAASihC,GAAgB9B,GACrB,GAAmB,iBAARA,GAAoB1qC,OAAOwW,cAAck0B,IAAQA,EAAM,EAC9D,OAAOxpC,OAAOwpC,GAClB,GAAmB,iBAARA,GAAoBoI,GAAmBpI,GAC9C,OAAOA,EACX,MAAM,IAAI5uC,UAAU,uDAExB,SAASguC,GAAIr8B,EAAGC,EAAI67B,GAAMC,GACtB,MAAMrnC,EAASsL,EAAIC,EACnB,OAAOvL,GAAUugB,GAAMvgB,EAASuL,EAAIvL,EAExC,SAASwtC,GAAK1sB,EAAGmxB,GACb,MAAM5K,EAAEA,GAAMD,GACd,IAAIzuB,EAAMmI,EACV,KAAOmxB,KAAU1xB,IACb5H,GAAOA,EACPA,GAAO0uB,EAEX,OAAO1uB,EAyBX,SAAS0vB,GAAO6J,EAAQC,EAAS/K,GAAMC,GACnC,GAAI6K,IAAW3xB,IAAO4xB,GAAU5xB,GAC5B,MAAM,IAAI9nB,MAAM,6CAA6Cy5C,SAAcC,KAE/E,IAAI7mC,EAAIq8B,GAAIuK,EAAQC,GAChB5mC,EAAI4mC,EACJrxB,EAAIP,GAAcrJ,EAAIsJ,GAC1B,KAAOlV,IAAMiV,IAAK,CACd,MACM2I,EAAI3d,EAAID,EACRsyB,EAAI9c,EAAI5J,GAFJ3L,EAAID,GAIdC,EAAID,EAAGA,EAAI4d,EAAGpI,EAAI5J,EAAUA,EAAI0mB,EAGpC,GADYryB,IACAiV,GACR,MAAM,IAAI/nB,MAAM,0BACpB,OAAOkvC,GAAI7mB,EAAGqxB,GAmBlB,MAAMC,GAAa,CAAC9mC,EAAGC,KAAOD,EAAIC,EAAIkV,IAAOlV,EACvC8mC,GAAY5xB,IAAO1hB,OAAO,KAChC,SAAS4rC,GAAgBhzC,GACrB,MAAMyc,EAAEA,GAAMgzB,GACRkL,EAAKvzC,OAAO,sCACZwzC,GAAM/xB,GAAMzhB,OAAO,sCACnByzC,EAAKzzC,OAAO,uCACZsuC,EAAKiF,EACLG,EAAKL,GAAW/E,EAAK11C,EAAGyc,GACxBoe,EAAK4f,IAAYG,EAAK56C,EAAGyc,GAC/B,IAAIo2B,EAAK7C,GAAIhwC,EAAI86C,EAAKH,EAAK9f,EAAKggB,EAAIp+B,GAChCs2B,EAAK/C,IAAK8K,EAAKF,EAAK/f,EAAK6a,EAAIj5B,GACjC,MAAMm2B,EAAQC,EAAK6H,GACb5H,EAAQC,EAAK2H,GAKnB,GAJI9H,IACAC,EAAKp2B,EAAIo2B,GACTC,IACAC,EAAKt2B,EAAIs2B,GACTF,EAAK6H,IAAa3H,EAAK2H,GACvB,MAAM,IAAI55C,MAAM,2CAA6Cd,GAEjE,MAAO,CAAE4yC,MAAAA,EAAOC,GAAAA,EAAIC,MAAAA,EAAOC,GAAAA,GAa/B,MAAMgI,GACFx4C,cACIZ,KAAKvB,EAAI,IAAI+H,WAAW,IAAIwP,KAAK,GACjChW,KAAK3B,EAAI,IAAImI,WAAW,IAAIwP,KAAK,GACjChW,KAAKq5C,QAAU,EAEnBx8B,QAAQvd,GACJ,OAAOg6C,GAAMC,WAAWv5C,KAAK3B,KAAMiB,GAEvCk6C,YAAYl6C,GACR,GAAoC,mBAAzBg6C,GAAMG,eACb,MAAM,IAAIt6C,MAAM,yDACpB,MAAMkgB,EAAMi6B,GAAMG,eAAez5C,KAAK3B,KAAMiB,GAC5C,GAAI+f,aAAenhB,QACf,MAAM,IAAIiB,MAAM,uDACpB,OAAOkgB,EAEXq6B,OACI,GAAI15C,KAAKq5C,SAAW,IAChB,MAAM,IAAIl6C,MAAM,qDAEpBa,KAAKq5C,SAAW,EAEpBx7C,aAAa87C,EAAO,IAAInzC,YACpBxG,KAAK3B,QAAU2B,KAAK6c,KAAK7c,KAAKvB,EAAG+H,WAAW2E,KAAK,CAAC,IAAQwuC,GAC1D35C,KAAKvB,QAAUuB,KAAK6c,KAAK7c,KAAKvB,GACV,IAAhBk7C,EAAKz6C,SAETc,KAAK3B,QAAU2B,KAAK6c,KAAK7c,KAAKvB,EAAG+H,WAAW2E,KAAK,CAAC,IAAQwuC,GAC1D35C,KAAKvB,QAAUuB,KAAK6c,KAAK7c,KAAKvB,IAElCm7C,WAAWD,EAAO,IAAInzC,YAClBxG,KAAK3B,EAAI2B,KAAKw5C,SAASx5C,KAAKvB,EAAG+H,WAAW2E,KAAK,CAAC,IAAQwuC,GACxD35C,KAAKvB,EAAIuB,KAAKw5C,SAASx5C,KAAKvB,GACR,IAAhBk7C,EAAKz6C,SAETc,KAAK3B,EAAI2B,KAAKw5C,SAASx5C,KAAKvB,EAAG+H,WAAW2E,KAAK,CAAC,IAAQwuC,GACxD35C,KAAKvB,EAAIuB,KAAKw5C,SAASx5C,KAAKvB,IAEhCZ,iBAGI,OAFAmC,KAAK05C,OACL15C,KAAKvB,QAAUuB,KAAK6c,KAAK7c,KAAKvB,GACvBuB,KAAKvB,EAEhBo7C,eAGI,OAFA75C,KAAK05C,OACL15C,KAAKvB,EAAIuB,KAAKw5C,SAASx5C,KAAKvB,GACrBuB,KAAKvB,GAGpB,SAAS44C,GAAmBpI,GACxB,OAAOhoB,GAAMgoB,GAAOA,EAAMnB,GAAMhzB,EAEpC,SAAS04B,GAAoBvE,GACzB,OAAOhoB,GAAMgoB,GAAOA,EAAMnB,GAAMC,EAEpC,SAAS+L,GAASC,EAAQzV,EAAG/uB,GACzB,MAAMlX,EAAIk1C,GAAcwG,GACxB,IAAK1C,GAAmBh5C,GACpB,OACJ,MAAMyc,EAAEA,GAAMgzB,GACRkM,EAAIvL,GAAMqD,KAAKY,SAASr0C,GACxBuxB,EAAIye,GAAI2L,EAAExyB,EAAG1M,GACnB,GAAI8U,IAAM3I,GACN,OACJ,MAAM9F,EAAIktB,GAAIU,GAAO1wC,EAAGyc,GAAKuzB,GAAI/J,EAAI/uB,EAAIqa,EAAG9U,GAAIA,GAChD,GAAIqG,IAAM8F,GACN,OACJ,MAAMumB,EAAM,IAAIX,GAAUjd,EAAGzO,GAE7B,MAAO,CAAEqsB,IAAAA,EAAK+H,UADIyE,EAAExyB,IAAMgmB,EAAI5d,EAAI,EAAI,GAAKrrB,OAAOy1C,EAAEvyB,EAAIP,KAG5D,SAASmuB,GAAoB71C,GACzB,IAAIyvC,EACJ,GAAmB,iBAARzvC,EACPyvC,EAAMzvC,OAEL,GAAmB,iBAARA,GAAoB+E,OAAOwW,cAAcvb,IAAQA,EAAM,EACnEyvC,EAAMxpC,OAAOjG,QAEZ,GAAmB,iBAARA,EAAkB,CAC9B,GAAmB,KAAfA,EAAIN,OACJ,MAAM,IAAIC,MAAM,oCACpB8vC,EAAMgI,GAAYz3C,OAEjB,CAAA,IAAIw3C,GAASx3C,GAMd,MAAM,IAAIa,UAAU,8BALpB,GAAmB,KAAfb,EAAIN,OACJ,MAAM,IAAIC,MAAM,oCACpB8vC,EAAMsE,GAAc/zC,GAKxB,IAAK63C,GAAmBpI,GACpB,MAAM,IAAI9vC,MAAM,qCACpB,OAAO8vC,EA6BX,SAASgL,GAAM7iC,GACX,MAAM2B,EAAMi+B,GAAS5/B,GACfqD,EAAsB,iBAATrD,EACbmH,GAAOxF,GAAO0B,IAAQrD,EAAKlY,OACjC,OAAI6Z,EACe,KAARwF,GAAsB,KAARA,EACrB9D,EACe,KAAR8D,GAAsB,MAARA,EACrBnH,aAAgBq3B,GAIjB,SAASyL,GAAgBC,EAAUC,EAAS9D,GAAe,GAC9D,GAAI2D,GAAME,GACN,MAAM,IAAI95C,UAAU,kDACxB,IAAK45C,GAAMG,GACP,MAAM,IAAI/5C,UAAU,kDACxB,MAAM4R,GA5CkBooC,EA4CKD,aA3CJ3L,IACrB4L,EAAUtF,iBACHsF,GAGA5L,GAAMqH,QAAQuE,GAN7B,IAA4BA,EA8CxB,OADApoC,EAAE8iC,iBACK9iC,EAAEygC,SAAS2C,GAAoB8E,IAAW9D,WAAWC,GAEhE,SAASgE,GAASnlC,GAEd,OAAOo+B,GADOp+B,EAAMjW,OAAS,GAAKiW,EAAMtM,MAAM,EAAG,IAAMsM,GAG3D,SAASolC,GAAYplC,GACjB,MAAMqlC,EAAKF,GAASnlC,GACdslC,EAAKpM,GAAImM,EAAI1M,GAAMhzB,GACzB,OAAO4/B,GAAWD,EAAKxzB,GAAMuzB,EAAKC,GAEtC,SAASC,GAAWzL,GAChB,GAAmB,iBAARA,EACP,MAAM,IAAI9vC,MAAM,mBAEpB,OAAOo3C,GADKR,GAAY9G,IAwC5B,SAAS0L,GAASrF,EAASsF,EAAS39B,EAAO,IACvC,MAAM08B,KAAEA,EAAIrV,EAAEA,EAAC/uB,EAAEA,GAtCrB,SAAqB+/B,EAASF,EAAYyF,GACtC,GAAe,MAAXvF,EACA,MAAM,IAAIn2C,MAAM,2CAA2Cm2C,MAC/D,MAAMrqB,EAAK+pB,GAAYM,GACjB//B,EAAI8/B,GAAoBD,GACxB0F,EAAW,CAACJ,GAAWnlC,GAAIglC,GAAYtvB,IAC7C,GAAoB,MAAhB4vB,EAAsB,EACD,IAAjBA,IACAA,EAAevB,GAAMjsB,YAAY,KACrC,MAAM3nB,EAAIsvC,GAAY6F,GACtB,GAAiB,KAAbn1C,EAAExG,OACF,MAAM,IAAIC,MAAM,yCACpB27C,EAASn4C,KAAK+C,GAIlB,MAAO,CAAEi0C,KAFIzB,MAAe4C,GAEbxW,EADLgW,GAASrvB,GACD1V,EAAAA,GAsBKwlC,CAAYzF,EAASsF,EAAS39B,EAAK49B,cAC1D,IAAIrN,EACJ,MAAMwN,EAAO,IAAI5B,GAEjB,IADA4B,EAAKpB,WAAWD,KACPnM,EAAMsM,GAASkB,EAAKnB,eAAgBvV,EAAG/uB,KAC5CylC,EAAKpB,aACT,OA1BJ,SAAqBqB,EAAQh+B,GACzB,IAAIuwB,IAAEA,EAAG+H,SAAEA,GAAa0F,EACxB,MAAMC,UAAEA,EAASC,IAAEA,EAAGC,UAAEA,GAAcn9C,OAAOoN,OAAO,CAAE6vC,WAAW,EAAMC,KAAK,GAAQl+B,GAChFi+B,GAAa1N,EAAI8J,aACjB9J,EAAMA,EAAIgK,aACVjC,GAAY,GAEhB,MAAMhjB,EAAS4oB,EAAM3N,EAAIiK,gBAAkBjK,EAAIwK,oBAC/C,OAAOoD,EAAY,CAAC7oB,EAAQgjB,GAAYhjB,EAkBjC8oB,CAAY7N,EAAKvwB,GAyI5BwxB,GAAMqD,KAAKuB,eAAe,GAC1B,MAAMvtB,GAAS,CACXw1B,KAt+B4B57C,UAu+B5B67C,IAAqB,iBAAT71B,MAAqB,WAAYA,KAAOA,KAAKI,YAASpmB,GAEzD45C,GAAQ,CACjBkC,kBAAkBpG,GACd,IAEI,OADAC,GAAoBD,IACb,EAEX,MAAO9zC,GACH,OAAO,IAGfm6C,iBAAmBxgC,IAEf,IADAA,EAAO+5B,GAAY/5B,IACV/b,OAAS,IAAM+b,EAAK/b,OAAS,KAClC,MAAM,IAAIC,MAAM,yDACpB,MAAM8vC,EAAMZ,GAAIkF,GAAct4B,GAAO6yB,GAAMhzB,GAC3C,GAAIm0B,IAAQhoB,IAAOgoB,IAAQ/nB,GACvB,MAAM,IAAI/nB,MAAM,uBACpB,OAhgBR,SAAkB8vC,GACd,OAAOsH,GAAWR,GAAY9G,IA+fnByM,CAASzM,IAEpB5hB,YAAa,CAACsuB,EAAc,MACxB,GAAI71B,GAAOy1B,IACP,OAAOz1B,GAAOy1B,IAAIruB,gBAAgB,IAAI1mB,WAAWm1C,IAOjD,MAAM,IAAIx8C,MAAM,sDAGxBy8C,iBAAkB,IACPtC,GAAMmC,iBAAiBnC,GAAMjsB,YAAY,KAEpD0pB,WAAAA,GACA1I,IAAAA,GACA1tB,OAAQ9iB,MAAO4F,IACX,GAAIqiB,GAAOy1B,IAAK,CACZ,MAAM3lC,QAAekQ,GAAOy1B,IAAIM,OAAO9/B,OAAO,UAAWtY,EAAQmS,QACjE,OAAO,IAAIpP,WAAWoP,GAOtB,MAAM,IAAIzW,MAAM,iDAGxBo6C,WAAY17C,MAAO2B,KAAQs8C,KACvB,GAAIh2B,GAAOy1B,IAAK,CACZ,MAAMQ,QAAaj2B,GAAOy1B,IAAIM,OAAOG,UAAU,MAAOx8C,EAAK,CAAEsD,KAAM,OAAQmY,KAAM,CAAEnY,KAAM,aAAe,EAAO,CAAC,SAC1GW,EAAUy0C,MAAe4D,GACzBlmC,QAAekQ,GAAOy1B,IAAIM,OAAOI,KAAK,OAAQF,EAAMt4C,GAC1D,OAAO,IAAI+C,WAAWoP,GAStB,MAAM,IAAIzW,MAAM,sDAGxB+8C,gBAAYx8C,EACZ+5C,oBAAgB/5C,EAChBy8C,WAAWhK,EAAa,EAAGQ,EAAQlE,GAAMqD,MACrC,MAAMU,EAASG,IAAUlE,GAAMqD,KAAOa,EAAQ,IAAIlE,GAAMkE,EAAMnrB,EAAGmrB,EAAMlrB,GAGvE,OAFA+qB,EAAOa,eAAelB,GACtBK,EAAOE,SAAS/E,IACT6E,ICljCf,IAWI4J,GAXAr8C,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAUxFo8C,GAAgB5C,eAAiB,SAAUj6C,KAAQs8C,GAC/C,OAAOpnC,GAAS8R,GAAY,SAAUhnB,EAAK6V,GAAOymC,MAE/C,MAAMQ,GACT17C,YAAYw0C,GACRgH,GAAuB57C,IAAIR,UAAM,GACjCiH,GAAO9C,eAA2C,KAA3BqR,GAAW4/B,GAAqB,6BAA8B,aAAc,cACnGr1C,GAAuBC,KAAMo8C,GAAwBlnC,GAAQkgC,GAAa,KAE1EA,iBAAe,OAAO30C,GAAuBT,KAAMo8C,GAAwB,KAC3E/B,gBAAc,OAAOiC,GAAWC,iBAAiB97C,GAAuBT,KAAMo8C,GAAwB,MACtGI,0BAAwB,OAAOF,GAAWC,iBAAiB97C,GAAuBT,KAAMo8C,GAAwB,MAAM,GAC1HH,KAAKlgC,GACD9U,GAAO9C,eAAuC,KAAvBqR,GAAWuG,GAAiB,wBAAyB,SAAUA,GACtF,MAAO0gC,EAAQC,GAASC,GAAmBjoC,GAASqH,GAASrH,GAASjU,GAAuBT,KAAMo8C,GAAwB,MAAO,CAC9HhB,WAAW,EACXF,WAAW,IAET1N,EAAMoP,GAAoB9G,QAAQ2G,GACxC,OAAO5P,GAAU1hC,KAAK,CAClBykB,EAAGlgB,GAAM,KAAO89B,EAAI5d,EAAE9lB,SAAS,IAAK,IACpCqX,EAAGzR,GAAM,KAAO89B,EAAIrsB,EAAErX,SAAS,IAAK,IACpCrL,EAAIi+C,EAAQ,GAAO,KACpB70C,SAEPg1C,mBAAmB9qC,GACf,MAAM+qC,EAASR,GAAWC,iBAAiBxqC,GAC3C,OAAOmD,GAAQ6nC,GAA0BroC,GAASjU,GAAuBT,KAAMo8C,GAAwB,MAAOU,IAElH72C,wBAAwBzG,EAAKw9C,GACzB,IAAI7nC,EAAQlO,GAAO3B,SAAS9F,EAAK,OACjC,GAAqB,KAAjB2V,EAAMjW,OAAe,CAErB,OAAOgW,GDktBZ,SAAsBkgC,EAAYkB,GAAe,GACpD,OAAO7H,GAAMwO,eAAe7H,GAAYiB,WAAWC,GCptB5B4G,CAAuB/nC,IAAS6nC,IAGnD,GAAqB,KAAjB7nC,EAAMjW,OAAe,CACrB,MAAMi+C,EAAM,IAAI32C,WAAW,IAC3B22C,EAAI,GAAK,EACTA,EAAI38C,IAAI2U,EAAO,GACfA,EAAQgoC,EAGZ,OAAOjoC,GADOkoC,GAAgBtH,QAAQ3gC,GACjBkhC,WAAW2G,IAEpC/2C,wBAAwB8V,EAAQykB,GAC5B,MAAMgN,EAAMX,GAAU1hC,KAAKq1B,GACrB2a,EAAMyB,GAAoBjH,YAAYjhC,GAASW,GAAO,CAACm4B,EAAI5d,EAAG4d,EAAIrsB,MAAMs2B,gBACxEqF,EDusBP,SAA0BxH,EAAS9U,EAAW+U,EAAUe,GAAe,GAC1E,OAAO7H,GAAM4O,cAAc/H,EAAS9U,EAAW+U,GAAUc,WAAWC,GCxsBjDgH,CAA2B5oC,GAASqH,GAASo/B,EAAK3N,EAAIP,SACrE,OAAc,MAAV6P,EACO5nC,GAAQ4nC,GAEZ71C,GAAOlD,mBAAmB,+BAAgC,YAAay8B,GAElFv6B,kBAAkBs3C,EAAIC,EAAIR,GACtB,MAAMS,EAAOL,GAAgBtH,QAAQwG,GAAWC,iBAAiBgB,GAAI12C,UAAU,IACzE62C,EAAON,GAAgBtH,QAAQwG,GAAWC,iBAAiBiB,GAAI32C,UAAU,IAC/E,MAAO,KAAO42C,EAAKl6C,IAAIm6C,GAAMhuC,QAAQstC,ICzE7C,SAASW,GAAahS,EAAMiS,GACxB,MAAO,CACHzrB,QAASW,GAAW6Y,GACpBiS,aAAcA,GAAe,IAAIx/C,KAAI,CAACy/C,EAAYn/C,KAC9C,GAA+B,KAA3B8W,GAAWqoC,GAEX,MAAM,IAAI1+C,MAAM,IAEpB,OAAO0+C,EAAWz3C,kBAIvB,SAAS03C,GAAc//C,GAC1B,GAAI+O,MAAMN,QAAQzO,GACd,OAAOA,EAAMK,KAAI,CAACoC,EAAK9B,KACnB,GAAIoO,MAAMN,QAAQhM,GAAM,CACpB,GAAIA,EAAItB,OAAS,EAEb,MAAM,IAAIC,MAAM,IAEpB,OAAOw+C,GAAan9C,EAAI,GAAIA,EAAI,IAEpC,OAAOm9C,GAAan9C,EAAI2xB,QAAS3xB,EAAIo9C,gBAG7C,MAAMl3C,EAASzI,OAAOD,KAAKD,GAAOK,KAAKutC,IACnC,MAAMiS,EAAc7/C,EAAM4tC,GAAMptC,QAAO,CAACC,EAAOq/C,KAC3Cr/C,EAAMq/C,IAAc,EACbr/C,IACR,IACH,OAAOm/C,GAAahS,EAAM1tC,OAAOD,KAAK4/C,GAAahf,WAGvD,OADAl4B,EAAOk4B,MAAK,CAAC5sB,EAAGC,IAAOD,EAAEmgB,QAAQ4rB,cAAc9rC,EAAEkgB,WAC1CzrB,EChCJ,SAASs3C,GAAex+C,GAE3B,OAAOszB,GAAW/I,GAAU,KADVuyB,GAAWC,iBAAiB/8C,GAAK,GACNqH,UAAU,IAAIA,UAAU,KAElE,SAASo3C,GAAeliC,EAAQykB,GACnC,OAAOwd,GAAe1B,GAAW4B,iBAAiBniC,EAAQykB,IFsE9D4b,GAAyB,IAAI36C,QG9EtB,MCEMwF,GAAS,IAAI5D,EDFH,2CEAvB,IAWI86C,GAXAp+C,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAaxF,MAAMqP,GAAO7J,OAAO,GACd+mC,GAAO/mC,OAAO,GACdgnC,GAAQhnC,OAAO,IACfinC,GAAQjnC,OAAO,IACfknC,GAAQlnC,OAAO,IACf24C,GAAc34C,OAAO,sEAC3B,SAAS44C,GAActgD,GACnB,MAAc,OAAVA,EACO,KAEJ+0B,GAAW/0B,GAEtB,SAASugD,GAAWvgD,EAAOyP,GACvB,IACI,OAAO0H,GAAQnX,GAEnB,MAAOuD,GACH,OAAO2F,GAAOlD,mBAAmB,eAAgByJ,EAAOzP,IAGhE,SAASwgD,GAAiBxgD,EAAOyP,GAC7B,IACI,OAAOswC,GAAc//C,GAEzB,MAAOuD,GACH,OAAO2F,GAAOlD,mBAAmB,qBAAsByJ,EAAOzP,IAGtE,SAASygD,GAAahvC,EAAQhC,GAC1B,MAAe,OAAXgC,EACO,EAEJvI,GAAOzB,UAAUgK,EAAQhC,GAEpC,SAASixC,GAAWjvC,EAAQhC,GACxB,GAAe,OAAXgC,EACA,OAAOF,GAEX,MAAMvR,EAAQkJ,GAAOtB,UAAU6J,EAAQhC,GAIvC,OAHIzP,EAAQqgD,IACRn3C,GAAOlD,mBAAmB,0BAA2ByJ,EAAOzP,GAEzDA,EAEX,SAAS2gD,GAAalvC,EAAQ1M,GAC1B,MAAM/E,EAAQkJ,GAAOtB,UAAU6J,EAAQ,SACjC9I,EAASmJ,GAAQ9R,GAIvB,OAHI2I,EAAOxH,OAAS,IAChB+H,GAAOlD,mBAAmB,kBAAmB,MAAMjB,IAAQ/E,GAExD2I,EAEX,SAASi4C,GAAiB5gD,GACtB,OAAO+/C,GAAc//C,GAAOK,KAAKoC,GAAQ,CAACA,EAAI2xB,QAAS3xB,EAAIo9C,eAgD/D,SAASgB,GAAiB3qB,EAAIuZ,GAC1B,MAAMzP,EAAS,CACX2gB,GAAazqB,EAAGE,OAAS,EAAG,SAC5BuqB,GAAazqB,EAAG4qB,UAAY,EAAG,YAC/BH,GAAazqB,EAAG6qB,UAAY,EAAG,YACpB,MAAT7qB,EAAG7oB,GAAc0nB,GAAWmB,EAAG7oB,IAAM,KACvCszC,GAAazqB,EAAGl2B,OAAS,EAAG,SAC3Bk2B,EAAGtf,MAAQ,MAEhB,IAAI0oB,EAAU/tB,GACd,GAAkB,MAAd2kB,EAAGoJ,QAEHA,EAAUp2B,GAAOtB,UAAUsuB,EAAGoJ,QAAS,cAGnCmQ,GAAuB,MAAhBA,EAAIV,UAAoBU,EAAIT,gBAAkB1P,GACrDp2B,GAAOlD,mBAAmB,4BAA6B,MAAOypC,QAGjE,GAAIA,EAAK,CAEV,MAAMuR,EAASvR,EAAIT,cACL,MAAVgS,IACA1hB,EAAU0hB,GAIlB,IAAKvR,EAOD,OALInQ,IAAY/tB,KACZyuB,EAAOp7B,KAAKkN,GAAQwtB,IACpBU,EAAOp7B,KAAK,MACZo7B,EAAOp7B,KAAK,OAET2wB,GAAUyK,GAGrB,IAAIt/B,EAAIgH,OAAO,GAAK+nC,EAAIP,SAUxB,OATI5P,IAAY/tB,GACZ7Q,EAAIouC,GAAUmS,YAAY3hB,EAASmQ,EAAI/uC,GAElCgH,OAAO+nC,EAAI/uC,KAAOA,GACvBwI,GAAOlD,mBAAmB,4BAA6B,MAAOypC,GAElEzP,EAAOp7B,KAAKkN,GAAQpR,IACpBs/B,EAAOp7B,KAAKkN,GAAQ29B,EAAI5d,IACxBmO,EAAOp7B,KAAKkN,GAAQ29B,EAAIrsB,IACjBmS,GAAUyK,GAErB,SAASkhB,GAAmBhrB,EAAI8J,EAAQmhB,GACpC,IAAIjS,EACJ,IAEI,GADAA,EAAUuR,GAAazgB,EAAO,GAAI,WAClB,IAAZkP,GAA6B,IAAZA,EACjB,MAAM,IAAI9tC,MAAM,eAGxB,MAAOmC,GACH,OAAO2F,GAAOlD,mBAAmB,kBAAmB,UAAWg6B,EAAO,IAE1E,MAAMnO,EAAI3Z,GAAa8nB,EAAO,GAAI,IAC5B5c,EAAIlL,GAAa8nB,EAAO,GAAI,IAC5ByC,EAAYqM,GAAU1hC,KAAK,CAAEykB,EAAAA,EAAGzO,EAAAA,EAAG8rB,QAAAA,IACzChZ,EAAGuM,UAAYA,EA8BnB,SAAS2e,GAAkBlrB,EAAIuZ,GAC3B,MAAMzP,EAAS,CACX2gB,GAAazqB,EAAGoJ,SAAW,EAAG,WAC9BqhB,GAAazqB,EAAGE,OAAS,EAAG,SAC5BuqB,GAAazqB,EAAGmrB,sBAAwB,EAAG,wBAC3CV,GAAazqB,EAAGorB,cAAgB,EAAG,gBACnCX,GAAazqB,EAAG6qB,UAAY,EAAG,YACpB,MAAT7qB,EAAG7oB,GAAc0nB,GAAWmB,EAAG7oB,IAAM,KACvCszC,GAAazqB,EAAGl2B,OAAS,EAAG,SAC3Bk2B,EAAGtf,MAAQ,KACXgqC,GAAiB1qB,EAAGqrB,YAAc,KAOvC,OALI9R,IACAzP,EAAOp7B,KAAK+7C,GAAalR,EAAIP,QAAS,YACtClP,EAAOp7B,KAAKkN,GAAQ29B,EAAI5d,IACxBmO,EAAOp7B,KAAKkN,GAAQ29B,EAAIrsB,KAErB9L,GAAO,CAAC,OAAQie,GAAUyK,KA0BrC,SAASwhB,GAAkBtrB,EAAIuZ,GAC3B,MAAMzP,EAAS,CACX2gB,GAAazqB,EAAGoJ,SAAW,EAAG,WAC9BqhB,GAAazqB,EAAGE,OAAS,EAAG,SAC5BuqB,GAAazqB,EAAG4qB,UAAY,EAAG,YAC/BH,GAAazqB,EAAG6qB,UAAY,EAAG,YACpB,MAAT7qB,EAAG7oB,GAAc0nB,GAAWmB,EAAG7oB,IAAM,KACvCszC,GAAazqB,EAAGl2B,OAAS,EAAG,SAC3Bk2B,EAAGtf,MAAQ,KACXgqC,GAAiB1qB,EAAGqrB,YAAc,KAOvC,OALI9R,IACAzP,EAAOp7B,KAAK+7C,GAAalR,EAAIP,QAAS,kBACtClP,EAAOp7B,KAAKkN,GAAQ29B,EAAI5d,IACxBmO,EAAOp7B,KAAKkN,GAAQ29B,EAAIrsB,KAErB9L,GAAO,CAAC,OAAQie,GAAUyK,KAE9B,MAAMyhB,GACT5+C,cACIu9C,GAAmB39C,IAAIR,UAAM,GAC7BD,GAAuBC,KAAMm+C,GAAoB,CAC7Cv/C,KAAM,KACNwM,GAAI,KACJ+oB,MAAO,EACP2qB,SAAUr5C,OAAO,GACjBo5C,SAAU,KACVO,qBAAsB,KACtBC,aAAc,KACd1qC,KAAM,KACN5W,MAAO0H,OAAO,GACd43B,QAAS53B,OAAO,GAChB+nC,IAAK,KACL8R,WAAY,MACb,KAGH1gD,WAAS,OAAOqC,EAASR,GAAuBT,KAAMm+C,GAAoB,KAAM,QAChFsB,eACA,OAAQz/C,KAAKpB,MACT,KAAK,EAAG,MAAO,SACf,KAAK,EAAG,MAAO,WACf,KAAK,EAAG,MAAO,WAEnB,OAAO,KAEPA,SAAKb,GACL,OAAQA,GACJ,KAAK,KACDoD,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,OAAQ,MACxE,MACJ,KAAK,EACL,IAAK,SACDh9C,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,OAAQ,GACxE,MACJ,KAAK,EACL,IAAK,SACL,IAAK,WACDh9C,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,OAAQ,GACxE,MACJ,KAAK,EACL,IAAK,SACL,IAAK,WACDh9C,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,OAAQ,GACxE,MACJ,QACI,MAAM,IAAIh/C,MAAM,iCAGxBiM,SAAO,OAAOnK,EAASR,GAAuBT,KAAMm+C,GAAoB,KAAM,MAC9E/yC,OAAGrN,GACHoD,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,KAAgB,MAATpgD,EAAiB,KAAO+0B,GAAW/0B,IAE1Go2B,YAAU,OAAOlzB,EAASR,GAAuBT,KAAMm+C,GAAoB,KAAM,SACjFhqB,UAAMp2B,GAASoD,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,QAASl3C,GAAOzB,UAAUzH,EAAO,UAChH+gD,eAAa,OAAO79C,EAASR,GAAuBT,KAAMm+C,GAAoB,KAAM,YACpFW,aAAS/gD,GAASoD,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,WAAYl3C,GAAOtB,UAAU5H,IAC/G8gD,eACA,MAAM9gD,EAAQkD,EAASR,GAAuBT,KAAMm+C,GAAoB,KAAM,YAC9E,OAAa,MAATpgD,GAAgC,IAAdiC,KAAKpB,MAA4B,IAAdoB,KAAKpB,KAGvCb,EAFIuR,GAIXuvC,aAAS9gD,GACToD,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,WAAsB,MAATpgD,EAAiB,KAAOkJ,GAAOtB,UAAU5H,EAAO,aAE7HqhD,2BACA,MAAMrhD,EAAQkD,EAASR,GAAuBT,KAAMm+C,GAAoB,KAAM,wBAC9E,OAAa,MAATpgD,GAA+B,IAAdiC,KAAKpB,KACf0Q,GAEJvR,EAEPqhD,yBAAqBrhD,GACrBoD,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,uBAAkC,MAATpgD,EAAiB,KAAOkJ,GAAOtB,UAAU5H,EAAO,yBAEzIshD,mBACA,MAAMthD,EAAQkD,EAASR,GAAuBT,KAAMm+C,GAAoB,KAAM,gBAC9E,OAAa,MAATpgD,GAA+B,IAAdiC,KAAKpB,KACf0Q,GAEJvR,EAEPshD,iBAAathD,GACboD,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,eAA0B,MAATpgD,EAAiB,KAAOkJ,GAAOtB,UAAU5H,EAAO,iBAEjI4W,WAAS,OAAO1T,EAASR,GAAuBT,KAAMm+C,GAAoB,KAAM,QAChFxpC,SAAK5W,GAASoD,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,OAAQjpC,GAAQnX,IAC9FA,YAAU,OAAOkD,EAASR,GAAuBT,KAAMm+C,GAAoB,KAAM,SACjFpgD,UAAMA,GACNoD,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,QAASl3C,GAAOtB,UAAU5H,EAAO,UAEjGs/B,cAAY,OAAOp8B,EAASR,GAAuBT,KAAMm+C,GAAoB,KAAM,WACnF9gB,YAAQt/B,GAASoD,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,UAAWl3C,GAAOtB,UAAU5H,IAC7GyiC,gBAAc,OAAOv/B,EAASR,GAAuBT,KAAMm+C,GAAoB,KAAM,QAAU,KAC/F3d,cAAUziC,GACVoD,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,MAAiB,MAATpgD,EAAiB,KAAO8uC,GAAU1hC,KAAKpN,IAE/GuhD,iBACA,MAAMvhD,EAAQkD,EAASR,GAAuBT,KAAMm+C,GAAoB,KAAM,eAAiB,KAC/F,OAAa,MAATpgD,GAAgC,IAAdiC,KAAKpB,MAA4B,IAAdoB,KAAKpB,KAGvCb,EAFI,GAIXuhD,eAAWvhD,GACXoD,EAASV,GAAuBT,KAAMm+C,GAAoB,KAAM,aAAwB,MAATpgD,EAAiB,KAAO+/C,GAAc//C,IAErHkd,WACA,GAAsB,MAAlBjb,KAAKwgC,UACL,MAAM,IAAIrhC,MAAM,mEAEpB,OAAO4qB,GAAU/pB,KAAKotC,YAEtBsS,mBACA,OAAO31B,GAAU/pB,KAAK2/C,oBAEtBx0C,WACA,OAAsB,MAAlBnL,KAAKwgC,UACE,KAEJyd,GAAej+C,KAAK2/C,mBAAoB3/C,KAAKwgC,WAEpDof,oBACA,OAAsB,MAAlB5/C,KAAKwgC,UACE,KAGJ,GAEXqf,WACI,OAAyB,MAAlB7/C,KAAKwgC,UAEZ4M,iBACA,GAAsB,MAAlBptC,KAAKwgC,UACL,MAAM,IAAIrhC,MAAM,8EAEpB,MAAMN,EAAQmB,KAAK8/C,aACnB,GAAqB,IAAjBjhD,EAAMK,OACN,MAAM,IAAIC,MAAM,4DAEpB,OAAQN,EAAM,IACV,KAAK,EACD,OAAO+/C,GAAiB5+C,KAAMA,KAAKwgC,WACvC,KAAK,EACD,OAAO+e,GAAkBv/C,KAAMA,KAAKwgC,WACxC,KAAK,EACD,OAAO2e,GAAkBn/C,KAAMA,KAAKwgC,WAE5C,MAAM,IAAIrhC,MAAM,oBAEhBwgD,yBACA,MAAM9gD,EAAQmB,KAAK8/C,aACnB,GAAqB,IAAjBjhD,EAAMK,OACN,MAAM,IAAIC,MAAM,4DAEpB,OAAQN,EAAM,IACV,KAAK,EACD,OAAO+/C,GAAiB5+C,MAC5B,KAAK,EACD,OAAOu/C,GAAkBv/C,MAC7B,KAAK,EACD,OAAOm/C,GAAkBn/C,MAEjC,MAAM,IAAIb,MAAM,oBAGpB2gD,aAEI,MAAMC,EAA+B,MAAjB//C,KAAK6+C,SACnBmB,EAA+B,MAArBhgD,KAAKq/C,cAAqD,MAA7Br/C,KAAKo/C,qBAC5Ca,EAAoC,MAAnBjgD,KAAKs/C,WAI5B,GAAyB,MAArBt/C,KAAKq/C,cAAqD,MAA7Br/C,KAAKo/C,sBAC9Bp/C,KAAKq/C,aAAer/C,KAAKo/C,qBACzB,MAAM,IAAIjgD,MAAM,0CAMxB,IAAmB,IAAda,KAAKpB,MAA4B,IAAdoB,KAAKpB,OAAeohD,EACxC,MAAM,IAAI7gD,MAAM,qEAEpB,GAAkB,IAAda,KAAKpB,MAAcqhD,EACnB,MAAM,IAAI9gD,MAAM,6CAEpB,MAAMN,EAAQ,GA0Bd,OAxBiB,MAAbmB,KAAKpB,KACLC,EAAM8D,KAAK3C,KAAKpB,MAGZohD,EACAnhD,EAAM8D,KAAK,GAENo9C,GACLlhD,EAAM8D,KAAK,GACNs9C,GACDphD,EAAM8D,KAAK,IAGVs9C,GACLphD,EAAM8D,KAAK,GACX9D,EAAM8D,KAAK,KAGX9D,EAAM8D,KAAK,GACX9D,EAAM8D,KAAK,GACX9D,EAAM8D,KAAK,IAGnB9D,EAAM+/B,OACC//B,EAEXqhD,WAAa,OAAsB,IAAdlgD,KAAKpB,KAC1BuhD,WAAa,OAAsB,IAAdngD,KAAKpB,KAC1BwhD,WAAa,OAAsB,IAAdpgD,KAAKpB,KAC1BkK,QACI,OAAO02C,GAAYr0C,KAAKnL,MAE5B6H,SAWI,OAVIpH,GAAuBT,KAAMm+C,GAAoB,KAAK3Q,MACtD/sC,GAAuBT,KAAMm+C,GAAoB,KAAK3Q,IAAO/sC,GAAuBT,KAAMm+C,GAAoB,KAAK3Q,IAAI1kC,QAAQjB,UAE/HpH,GAAuBT,KAAMm+C,GAAoB,KAAKmB,aACtD7+C,GAAuBT,KAAMm+C,GAAoB,KAAKmB,WAAarhD,OAAO4J,OAAOpH,GAAuBT,KAAMm+C,GAAoB,KAAKmB,WAAWlhD,KAAKoC,IACnJvC,OAAO4J,OAAOrH,EAAIo9C,aACX3/C,OAAO4J,OAAOrH,QAG7BvC,OAAO4J,OAAOpH,GAAuBT,KAAMm+C,GAAoB,MACxDn+C,KAEXoB,WACI,OAAOnD,OAAOmD,SAASX,GAAuBT,KAAMm+C,GAAoB,MAE5El4C,YAAYguB,GACR,GAAoB,iBAAR,EAAkB,CAC1B,MAAMb,EAAU1e,GAASuf,GACzB,GAAIb,EAAQ,IAAM,IACd,OAAOosB,GAAYr0C,KA9bnC,SAAsBwJ,GAClB,MAAMopB,EAAShK,GAAUpf,GACzB,IAAK7H,MAAMN,QAAQuxB,IAA8B,IAAlBA,EAAO7+B,QAAkC,IAAlB6+B,EAAO7+B,OACzD,OAAO+H,GAAOlD,mBAAmB,6CAA8C,OAAQ4Q,GAE3F,MAAMsf,EAAK,CACPr1B,KAAM,EACNu1B,MAAOqqB,GAAazgB,EAAO,GAAI,SAC/B8gB,SAAUJ,GAAW1gB,EAAO,GAAI,YAChC+gB,SAAUL,GAAW1gB,EAAO,GAAI,YAChC3yB,GAAIizC,GAActgB,EAAO,IACzBhgC,MAAO0gD,GAAW1gB,EAAO,GAAI,SAC7BppB,KAAM2pC,GAAWvgB,EAAO,GAAI,OAC5BV,QAAS/tB,IAGb,GAAsB,IAAlByuB,EAAO7+B,OACP,OAAO+0B,EAEX,MAAMx1B,EAAIggD,GAAW1gB,EAAO,GAAI,KAC1BnO,EAAI6uB,GAAW1gB,EAAO,GAAI,KAC1B5c,EAAIs9B,GAAW1gB,EAAO,GAAI,KAChC,GAAInO,IAAMtgB,IAAQ6R,IAAM7R,GAEpB2kB,EAAGoJ,QAAU5+B,MAEZ,CAED,IAAI4+B,GAAW5+B,EAAIkuC,IAASH,GACxBnP,EAAU/tB,KACV+tB,EAAU/tB,IAEd2kB,EAAGoJ,QAAUA,EAETA,IAAY/tB,KAAS7Q,EAAIguC,IAAShuC,EAAIiuC,KACtCzlC,GAAOlD,mBAAmB,yBAA0B,IAAKg6B,EAAO,IAEpE9J,EAAGuM,UAAYqM,GAAU1hC,KAAK,CAC1BykB,EAAG3Z,GAAa8nB,EAAO,GAAI,IAC3B5c,EAAGlL,GAAa8nB,EAAO,GAAI,IAC3Bt/B,EAAAA,IAEJw1B,EAAGhZ,KAAO8O,GAAUpV,GAExB,OAAOsf,EAkZ6BosB,CAAajtB,IAEzC,OAAQA,EAAQ,IACZ,KAAK,EAAG,OAAOosB,GAAYr0C,KAnS3C,SAAuBwJ,GACnB,MAAMopB,EAAShK,GAAU9sB,GAAO3B,SAASqP,GAAM9L,MAAM,MAChDiE,MAAMN,QAAQuxB,IAA8B,IAAlBA,EAAO7+B,QAAkC,KAAlB6+B,EAAO7+B,SACzD+H,GAAOlD,mBAAmB,8CAA+C,OAAQmR,GAAQP,IAE7F,MAAMsf,EAAK,CACPr1B,KAAM,EACNy+B,QAASohB,GAAW1gB,EAAO,GAAI,WAC/B5J,MAAOqqB,GAAazgB,EAAO,GAAI,SAC/B8gB,SAAUJ,GAAW1gB,EAAO,GAAI,YAChC+gB,SAAUL,GAAW1gB,EAAO,GAAI,YAChC3yB,GAAIizC,GAActgB,EAAO,IACzBhgC,MAAO0gD,GAAW1gB,EAAO,GAAI,SAC7BppB,KAAM2pC,GAAWvgB,EAAO,GAAI,QAC5BuhB,WAAYf,GAAiBxgB,EAAO,GAAI,eAG5C,OAAsB,IAAlBA,EAAO7+B,SAGX+0B,EAAGhZ,KAAO8O,GAAUpV,GACpBsqC,GAAmBhrB,EAAI8J,EAAOl1B,MAAM,KAHzBorB,EAiRiCqsB,CAAcltB,IAC9C,KAAK,EAAG,OAAOosB,GAAYr0C,KAnV3C,SAAuBwJ,GACnB,MAAMopB,EAAShK,GAAU9sB,GAAO3B,SAASqP,GAAM9L,MAAM,MAChDiE,MAAMN,QAAQuxB,IAA8B,IAAlBA,EAAO7+B,QAAkC,KAAlB6+B,EAAO7+B,SACzD+H,GAAOlD,mBAAmB,8CAA+C,OAAQmR,GAAQP,IAE7F,MAAMyqC,EAAuBX,GAAW1gB,EAAO,GAAI,wBAC7CshB,EAAeZ,GAAW1gB,EAAO,GAAI,gBACrC9J,EAAK,CACPr1B,KAAM,EACNy+B,QAASohB,GAAW1gB,EAAO,GAAI,WAC/B5J,MAAOqqB,GAAazgB,EAAO,GAAI,SAC/BqhB,qBAAsBA,EACtBC,aAAcA,EACdR,SAAU,KACVC,SAAUL,GAAW1gB,EAAO,GAAI,YAChC3yB,GAAIizC,GAActgB,EAAO,IACzBhgC,MAAO0gD,GAAW1gB,EAAO,GAAI,SAC7BppB,KAAM2pC,GAAWvgB,EAAO,GAAI,QAC5BuhB,WAAYf,GAAiBxgB,EAAO,GAAI,eAG5C,OAAsB,IAAlBA,EAAO7+B,SAGX+0B,EAAGhZ,KAAO8O,GAAUpV,GACpBsqC,GAAmBhrB,EAAI8J,EAAOl1B,MAAM,KAHzBorB,EA6TiCssB,CAAcntB,IAElD,MAAM,IAAIj0B,MAAM,gCAEpB,MAAMuH,EAAS,IAAI84C,GAqCnB,GApCe,MAAXvrB,EAAGr1B,OACH8H,EAAO9H,KAAOq1B,EAAGr1B,MAER,MAATq1B,EAAG7oB,KACH1E,EAAO0E,GAAK6oB,EAAG7oB,IAEH,MAAZ6oB,EAAGE,QACHztB,EAAOytB,MAAQF,EAAGE,OAEH,MAAfF,EAAG6qB,WACHp4C,EAAOo4C,SAAW7qB,EAAG6qB,UAEN,MAAf7qB,EAAG4qB,WACHn4C,EAAOm4C,SAAW5qB,EAAG4qB,UAEM,MAA3B5qB,EAAGmrB,uBACH14C,EAAO04C,qBAAuBnrB,EAAGmrB,sBAEd,MAAnBnrB,EAAGorB,eACH34C,EAAO24C,aAAeprB,EAAGorB,cAEd,MAAXprB,EAAGtf,OACHjO,EAAOiO,KAAOsf,EAAGtf,MAEL,MAAZsf,EAAGl2B,QACH2I,EAAO3I,MAAQk2B,EAAGl2B,OAEJ,MAAdk2B,EAAGoJ,UACH32B,EAAO22B,QAAUpJ,EAAGoJ,SAEJ,MAAhBpJ,EAAGuM,YACH95B,EAAO85B,UAAYqM,GAAU1hC,KAAK8oB,EAAGuM,YAEpB,MAAjBvM,EAAGqrB,aACH54C,EAAO44C,WAAarrB,EAAGqrB,YAEZ,MAAXrrB,EAAGhZ,KAAc,CACjB,IAAIvU,EAAOm5C,WAMP,MAAM,IAAI1gD,MAAM,4CALhB,GAAIuH,EAAOuU,OAASgZ,EAAGhZ,KACnB,MAAM,IAAI9b,MAAM,iBAO5B,GAAe,MAAX80B,EAAG9oB,KAAc,CACjB,IAAIzE,EAAOm5C,WAMP,MAAM,IAAI1gD,MAAM,2CALhB,GAAIuH,EAAOyE,KAAK/E,iBAAmB6tB,EAAG9oB,MAAQ,IAAI/E,cAC9C,MAAM,IAAIjH,MAAM,iBAO5B,OAAOuH,GAGfy3C,GAAqB,IAAI18C,QC/kBzB,IAWI++C,GAAqBC,GAXrB1gD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IASxF,SAASqX,GAASvZ,GACd,OAAa,MAATA,EACO,KAEJA,EAEX,SAAS2iD,GAAO3iD,GACZ,OAAa,MAATA,EACO,KAEJA,EAAM+L,WAGV,MAAM62C,GACT//C,YAAYi+C,EAAUQ,EAAcD,GAChChgD,EAAiBY,KAAM,CACnB6+C,SAAUvnC,GAASunC,GACnBQ,aAAc/nC,GAAS+nC,GACvBD,qBAAsB9nC,GAAS8nC,KAGvC/R,SACI,MAAMwR,SAAEA,EAAQQ,aAAEA,EAAYD,qBAAEA,GAAyBp/C,KACzD,MAAO,CACHstC,MAAO,UACPuR,SAAU6B,GAAO7B,GACjBQ,aAAcqB,GAAOrB,GACrBD,qBAAsBsB,GAAOtB,KA8ClC,MAAMwB,GACThgD,YAAY+xB,EAAOuX,GACfsW,GAAoBhgD,IAAIR,UAAM,GACd,MAAZkqC,IACAA,EAAW2W,IAEf9gD,GAAuBC,KAAMwgD,GAAqBviD,OAAO4J,OAAO8qB,EAAMmuB,aAAa1iD,KAAK61B,IACpF,GAAoB,iBAAhB,GAA4BA,EAAGiW,WAAaA,EAC5C,MAAM,IAAI/qC,MAAM,qBAEpB,OAAO80B,MACN,KAEL70B,EAAiBY,KAAM,CACnBkqC,SAAAA,EACAjvB,KAAM3D,GAASqb,EAAM1X,MACrB29B,OAAQjmB,EAAMimB,OACdmI,UAAWpuB,EAAMouB,UACjBC,WAAYruB,EAAMquB,WAClB7sB,MAAOxB,EAAMwB,MACb8sB,WAAYtuB,EAAMsuB,WAClBnC,SAAUnsB,EAAMmsB,SAChBoC,QAASvuB,EAAMuuB,QACfC,MAAOxuB,EAAMwuB,MACbC,UAAWzuB,EAAMyuB,UACjBC,cAAe/pC,GAASqb,EAAM0uB,iBAGlCP,mBAAiB,OAAOrgD,GAAuBT,KAAMwgD,GAAqB,KAI9EnT,SACI,MAAMgU,cAAEA,EAAaJ,WAAEA,EAAUG,UAAEA,EAAStC,SAAEA,EAAQoC,QAAEA,EAAOjmC,KAAEA,EAAIkmC,MAAEA,EAAKhtB,MAAEA,EAAKykB,OAAEA,EAAMoI,WAAEA,EAAUD,UAAEA,EAASD,aAAEA,GAAiB9gD,KACrI,MAAO,CACHstC,MAAO,QACP+T,cAAeX,GAAOW,GACtBJ,WAAYP,GAAOO,GACnBG,UAAAA,EACAtC,SAAU4B,GAAO5B,GACjBoC,QAASR,GAAOQ,GAChBjmC,KAAAA,EAAMkmC,MAAAA,EAAOhtB,MAAAA,EAAOykB,OAAAA,EAAQoI,WAAAA,EAAYD,UAAAA,EACxCD,aAAAA,GAGR,EAAEN,GAAsB,IAAI/+C,QAAWkK,OAAOu5B,aAC1C,IAAIxmC,EAAQ,EACZ,MAAO,CACHymC,KAAM,IACEzmC,EAAQsB,KAAKd,OACN,CACHnB,MAAOiC,KAAK8gD,aAAapiD,KAAU0mC,MAAM,GAG1C,CAAErnC,WAAO2B,EAAW0lC,MAAM,IAIzClmC,aAAW,OAAOc,KAAK8gD,aAAa5hD,OACpCoiD,WACA,OAAsB,MAAlBthD,KAAK+gD,UACE,KAEJ,IAAI1mC,KAAsB,IAAjBra,KAAK+gD,WAEzBljD,qBAAqBa,GACjB,MAAMu1B,EAAKj0B,KAAK8gD,aAAapiD,GAC7B,GAAU,MAANu1B,EACA,MAAM,IAAI90B,MAAM,cAEpB,MAAoB,iBAAR,QACMa,KAAKkqC,SAASqX,eAAettB,GAGpCA,EAGfutB,UAAY,QAASxhD,KAAKib,KAC1BmlC,WAAa,QAASpgD,KAAKqhD,cAC3BI,gBACI,IAAKzhD,KAAKwhD,UACN,MAAM,IAAIriD,MAAM,IAEpB,MA+OG,CAAEuiD,OAAQ,aAAczmC,MADA0X,EA9OM3yB,MA+OMib,KAAM29B,OAAQjmB,EAAMimB,QADnE,IAAmCjmB,GA3O5B,MAAMgvB,GACT/gD,YAAYmG,EAAKmjC,GACG,MAAZA,IACAA,EAAW2W,IAEf7gD,KAAKkqC,SAAWA,EAChB,MAAMnH,EAAS9kC,OAAO4J,OAAOd,EAAIg8B,OAAOl6B,SACxCzJ,EAAiBY,KAAM,CACnB4hD,gBAAiB76C,EAAI66C,gBACrBC,UAAW96C,EAAI86C,UACfC,YAAa/6C,EAAI+6C,YACjBC,QAASh7C,EAAIg7C,QACb5vB,QAASprB,EAAIorB,QACbxd,KAAM5N,EAAI4N,KACVouB,OAAAA,EACArkC,MAAOqI,EAAIrI,MACXsjD,iBAAkBj7C,EAAIi7C,mBAM9B3U,SACI,MAAMlb,QAAEA,EAAO0vB,UAAEA,EAASC,YAAEA,EAAWntC,KAAEA,EAAIjW,MAAEA,EAAKqjD,QAAEA,EAAOhf,OAAEA,EAAM6e,gBAAEA,EAAeI,iBAAEA,GAAqBhiD,KAC7G,MAAO,CACHstC,MAAO,MACPnb,QAAAA,EAAS0vB,UAAAA,EAAWC,YAAAA,EAAantC,KAAAA,EAAMjW,MAAAA,EACvCqjD,QAAAA,EAAShf,OAAAA,EAAQ6e,gBAAAA,EAAiBI,iBAAAA,GAG1CnkD,iBACI,aAAcmC,KAAKkqC,SAAS+X,SAASjiD,KAAK6hD,WAE9ChkD,uBACI,aAAcmC,KAAKkqC,SAASqX,eAAevhD,KAAK4hD,iBAEpD/jD,8BACI,aAAcmC,KAAKkqC,SAASgY,sBAAsBliD,KAAK4hD,iBAE3DO,eACI,MA6MG,CAAET,OAAQ,WAAY36C,IAAK,CAC1B66C,iBAFoB76C,EA5MM/G,MA8ML4hD,gBACrBC,UAAW96C,EAAI86C,UACfC,YAAa/6C,EAAI+6C,YACjB3vB,QAASprB,EAAIorB,QACbxd,KAAM5N,EAAI4N,KACVouB,OAAQ9kC,OAAO4J,OAAOd,EAAIg8B,OAAOl6B,SACjCnK,MAAOqI,EAAIrI,QARvB,IAAgCqI,GAzMzB,MAAMq7C,GACTxhD,YAAYqzB,EAAIiW,GACZuW,GAAyBjgD,IAAIR,UAAM,GACnB,MAAZkqC,IACAA,EAAW2W,IAEf9gD,GAAuBC,KAAMygD,GAA0BxiD,OAAO4J,OAAOosB,EAAGouB,KAAKjkD,KAAK2I,IAC9E,GAAImjC,IAAanjC,EAAImjC,SAEjB,MAAM,IAAI/qC,MAAM,qBAEpB,OAAO4H,MACN,KACL3H,EAAiBY,KAAM,CACnBkqC,SAAAA,EACA9+B,GAAI6oB,EAAG7oB,GACPD,KAAM8oB,EAAG9oB,KACTm3C,gBAAiBruB,EAAGquB,gBACpBrnC,KAAMgZ,EAAGhZ,KACTvc,MAAOu1B,EAAGv1B,MACVmjD,UAAW5tB,EAAG4tB,UACdC,YAAa7tB,EAAG6tB,YAChBS,UAAWtuB,EAAGsuB,UACdrB,QAASjtB,EAAGitB,QACZsB,kBAAmBvuB,EAAGuuB,kBACtB3D,SAAW5qB,EAAGwuB,mBAAqBxuB,EAAG4qB,SACtC6D,UAAWzuB,EAAGyuB,UACdjc,OAAQxS,EAAGwS,OACXkc,KAAM1uB,EAAG0uB,OAGbN,WAAS,OAAO5hD,GAAuBT,KAAMygD,GAA0B,KAI3EpT,SACI,MAAMjiC,GAAEA,EAAED,KAAEA,EAAIm3C,gBAAEA,EAAernC,KAAEA,EAAIvc,MAAEA,EAAKmjD,UAAEA,EAASC,YAAEA,EAAWS,UAAEA,EAASF,KAAEA,EAAIK,UAAEA,EAASjc,OAAEA,EAAMkc,KAAEA,GAAS3iD,KACrH,MAAO,CACHstC,MAAO,qBACPuU,UAAAA,EAAWC,YAAAA,EAAaY,UAAAA,EAAWJ,gBAAAA,EACnCE,kBAAmB9B,GAAO1gD,KAAKwiD,mBAC/Br3C,KAAAA,EACA0zC,SAAU6B,GAAO1gD,KAAK6+C,UACtBqC,QAASR,GAAO1gD,KAAKkhD,SACrBjmC,KAAAA,EAAMvc,MAAAA,EAAO2jD,KAAAA,EAAME,UAAAA,EAAWI,KAAAA,EAAMlc,OAAAA,EAAQr7B,GAAAA,GAGhDlM,aAAW,OAAOc,KAAKqiD,KAAKnjD,OAChC,EAAEuhD,GAA2B,IAAIh/C,QAAWkK,OAAOu5B,aAC/C,IAAIxmC,EAAQ,EACZ,MAAO,CACHymC,KAAM,IACEzmC,EAAQsB,KAAKd,OACN,CAAEnB,MAAOiC,KAAKqiD,KAAK3jD,KAAU0mC,MAAM,GAEvC,CAAErnC,WAAO2B,EAAW0lC,MAAM,IAIzCwd,UACA,OAAO5iD,KAAKkhD,QAAUlhD,KAAK6+C,SAE/BhhD,iBACI,MAAM80B,QAAc3yB,KAAKkqC,SAAS+X,SAASjiD,KAAK6hD,WAChD,GAAa,MAATlvB,EACA,MAAM,IAAIxzB,MAAM,QAEpB,OAAOwzB,EAEX90B,uBACI,MAAMo2B,QAAWj0B,KAAKkqC,SAASqX,eAAevhD,KAAKib,MACnD,GAAU,MAANgZ,EACA,MAAM,IAAI90B,MAAM,QAEpB,OAAO80B,EAEXp2B,sBACI,aAAcmC,KAAKkqC,SAAS2Y,iBAAoB7iD,KAAK8hD,YAAc,EAEvEK,eACI,OAAOW,GAA+B9iD,MAE1C+iD,eAAehxC,GACX,OAAIA,IAAUA,EAAMyvC,UACTv6C,GAAOnD,WAAW,gDAAiD,wBAAyB,CAC/FY,UAAW,0BAGZs+C,GAAiChjD,KAAM+R,IAI/C,MAAMkxC,GACTriD,YAAYqzB,EAAIiW,GACI,MAAZA,IACAA,EAAW2W,IAEf7gD,KAAKkqC,SAAWA,EAChBlqC,KAAK8hD,YAAiC,MAAlB7tB,EAAG6tB,YAAuB7tB,EAAG6tB,YAAc,KAC/D9hD,KAAK6hD,UAA6B,MAAhB5tB,EAAG4tB,UAAqB5tB,EAAG4tB,UAAY,KACzD7hD,KAAKib,KAAOgZ,EAAGhZ,KACfjb,KAAKtB,MAAQu1B,EAAGv1B,MAChBsB,KAAKpB,KAAOq1B,EAAGr1B,KACfoB,KAAKmL,KAAO8oB,EAAG9oB,KACfnL,KAAKoL,GAAK6oB,EAAG7oB,IAAM,KACnBpL,KAAK8+C,SAAW7qB,EAAG6qB,SACnB9+C,KAAKm0B,MAAQF,EAAGE,MAChBn0B,KAAK2U,KAAOsf,EAAGtf,KACf3U,KAAKjC,MAAQk2B,EAAGl2B,MAChBiC,KAAK6+C,SAAW5qB,EAAG4qB,SACnB7+C,KAAKo/C,qBAAmD,MAA3BnrB,EAAGmrB,qBAAgCnrB,EAAGmrB,qBAAuB,KAC1Fp/C,KAAKq/C,aAAmC,MAAnBprB,EAAGorB,aAAwBprB,EAAGorB,aAAe,KAClEr/C,KAAKq9B,QAAUpJ,EAAGoJ,QAClBr9B,KAAKwgC,UAAYvM,EAAGuM,UACpBxgC,KAAKs/C,WAA+B,MAAjBrrB,EAAGqrB,WAAsBrrB,EAAGqrB,WAAa,KAKhEjS,SACI,MAAMyU,YAAEA,EAAWD,UAAEA,EAASnjD,MAAEA,EAAKuc,KAAEA,EAAIrc,KAAEA,EAAIwM,GAAEA,EAAED,KAAEA,EAAIgpB,MAAEA,EAAKxf,KAAEA,EAAI6rB,UAAEA,EAAS8e,WAAEA,GAAet/C,KACpG,MAAO,CACHstC,MAAO,qBACPgS,WAAAA,EAAYwC,YAAAA,EAAaD,UAAAA,EACzBxkB,QAASqjB,GAAO1gD,KAAKq9B,SACrB1oB,KAAAA,EAAMxJ,KAAAA,EACN2zC,SAAU4B,GAAO1gD,KAAK8+C,UACtBD,SAAU6B,GAAO1gD,KAAK6+C,UACtB5jC,KAAAA,EACAokC,aAAcqB,GAAO1gD,KAAKq/C,cAC1BD,qBAAsBsB,GAAO1gD,KAAKo/C,sBAClCjrB,MAAAA,EAAOqM,UAAAA,EAAWp1B,GAAAA,EAAI1M,MAAAA,EAAOE,KAAAA,EAC7Bb,MAAO2iD,GAAO1gD,KAAKjC,QAG3BF,iBACI,IAAIikD,EAAc9hD,KAAK8hD,YACvB,GAAmB,MAAfA,EAAqB,CACrB,MAAM7tB,QAAWj0B,KAAKuhD,iBAClBttB,IACA6tB,EAAc7tB,EAAG6tB,aAGzB,GAAmB,MAAfA,EACA,OAAO,KAEX,MAAMnvB,EAAQ3yB,KAAKkqC,SAAS+X,SAASH,GACrC,GAAa,MAATnvB,EACA,MAAM,IAAIxzB,MAAM,QAEpB,OAAOwzB,EAEX90B,uBACI,OAAOmC,KAAKkqC,SAASqX,eAAevhD,KAAKib,MAE7Cpd,WAAWqlD,GACP,OAAOljD,KAAKkqC,SAASiZ,mBAAmBnjD,KAAKib,KAAMioC,GAEvD1B,UACI,OAA0B,MAAlBxhD,KAAK6hD,UAEjB3B,WACI,OAAsB,IAAdlgD,KAAKpB,KAEjBuhD,WACI,OAAsB,IAAdngD,KAAKpB,KAEjBwhD,WACI,OAAsB,IAAdpgD,KAAKpB,KAEjBujD,eACI,OAAKniD,KAAKwhD,UAKHsB,GAA+B9iD,MAJ3BiH,GAAOnD,WAAW,wCAAyC,wBAAyB,CACvFY,UAAW,kBAKvBq+C,eAAehxC,GACX,OAAK/R,KAAKwhD,UAKNzvC,IAAUA,EAAMyvC,UACTv6C,GAAOnD,WAAW,gDAAiD,wBAAyB,CAC/FY,UAAW,kBAGZs+C,GAAiChjD,KAAM+R,GATnC9K,GAAOnD,WAAW,wCAAyC,wBAAyB,CACvFY,UAAW,mBAc3B,SAASs+C,GAAiC/uB,EAAIliB,GAC1C,MAAO,CAAE2vC,OAAQ,sBAAuBztB,GAAAA,EAAIliB,MAAAA,GAEhD,SAAS+wC,GAA+B7uB,GACpC,MAAO,CAAEytB,OAAQ,mBAAoBztB,GAAAA,GAazC,SAASmvB,KACL,MAAM,IAAIjkD,MAAM,oCAkER,MAAC0hD,GAAgB,IAhE7B,MACQ3W,eAAa,OAAOlqC,KACxBnC,mBAAqB,OAAOulD,KAC5BvlD,mBAAqB,OAAOulD,KAC5BvlD,kBAAkBo2B,GAAM,OAAOmvB,KAC/BvlD,WAAWo2B,GAAM,OAAOmvB,KACxBvlD,kBAAkBiF,GAAQ,OAAOsgD,KAEjCvlD,uBAAyB,OAAOulD,KAEhCvlD,mBAAmBs0B,EAASkxB,GACxB,OAAOD,KAEXvlD,4BAA4Bs0B,EAASkxB,GACjC,OAAOD,KAEXvlD,cAAcs0B,EAASkxB,GACnB,OAAOD,KAEXvlD,mBAAmBs0B,EAASmxB,EAAUD,GAClC,OAAOD,KAGXvlD,2BAA2B0lD,GAAY,OAAOH,KAE9CvlD,eAAe2lD,GACX,OAAOJ,KAEXvlD,+BAA+B2lD,GAC3B,OAAOJ,KAEXvlD,qBAAqBod,GACjB,OAAOmoC,KAEXvlD,4BAA4Bod,GACxB,OAAOmoC,KAGXvlD,cAAckD,GACV,OAAOqiD,KAGXvlD,oBAAoBs0B,GAChB,OAAOixB,KAEXvlD,yBAAyBod,EAAMioC,EAAUnd,GACrC,OAAOqd,KAEXvlD,mBAAmBwlD,GACf,OAAOD,KAGXvlD,SAAS6Q,EAAO5N,GAAY,OAAOsiD,KACnCvlD,WAAW6Q,EAAO5N,GAAY,OAAOsiD,KACrCvlD,WAAW6Q,KAAU9I,GAAQ,OAAOw9C,KACpCvlD,oBAAoB6Q,GAAS,OAAO00C,KACpCvlD,gBAAgB6Q,GAAS,OAAO00C,KAChCvlD,UAAU6Q,EAAO5N,GAAY,OAAOsiD,KACpCvlD,yBAAyB6Q,GAAS,OAAO00C,KACzCvlD,kBAAkB6Q,EAAO5N,GAAY,OAAOsiD,KAC5CvlD,qBAAqB6Q,EAAO5N,GAAY,OAAOsiD,OC7enD,IAWIK,GAAmBC,GAXnB3jD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAuBxF,MAAMo3B,GAAiB5xB,OAAO,sEAM9B,SAAS7B,GAAU7F,GACf,GAAuB,iBAAX,EACR,MAAM,IAAIoB,MAAM,kBAEpB,OAAOpB,EAEJ,MAAM4lD,GACT/iD,cACI6iD,GAAkBjjD,IAAIR,UAAM,GAC5B0jD,GAAqBljD,IAAIR,UAAM,GAC/B,MAAMmyB,EAAUnyB,KAAKmyB,QAAQtY,KAAK7Z,MAC5B4jD,EAAY5jD,KAAK4jD,UAAU/pC,KAAK7Z,MAChCqjD,EAAWrjD,KAAKqjD,SAASxpC,KAAK7Z,MAC9B2U,EAAO3U,KAAK2U,KAAKkF,KAAK7Z,MACtBib,EAAOjb,KAAKib,KAAKpB,KAAK7Z,MACtB44C,EAAS54C,KAAK44C,OAAO/+B,KAAK7Z,MAC1B6jD,EAAU7jD,KAAK6jD,QAAQhqC,KAAK7Z,MAC5B+iC,EAAS/iC,KAAK8jD,QAAQ7oC,GAC5Blb,GAAuBC,KAAMyjD,GAAmB,CAC5CtxB,QAAAA,EACAyxB,UAAAA,EACAP,SAAAA,EACA1uC,KAAAA,EACAsG,KAAAA,EACA29B,OAAAA,EACAiL,QAAAA,EACA9gB,OAAAA,EACAhiC,OAAQf,KAAK6C,OAAO,CAChBkhD,UAAW/jD,KAAKgkD,UAAUX,OAAU3jD,GACpCukD,QAASjkD,KAAKgkD,UAAUX,OAAU3jD,GAClCmiD,UAAW7hD,KAAKgkD,UAAU/oC,OAAMvb,GAChCyyB,QAASnyB,KAAKgkD,UAAU7xB,OAASzyB,GACjCqjC,OAAQ/iC,KAAKgkD,UAAUjhB,OAAQrjC,KAEnCwkD,mBAAoBlkD,KAAK6C,OAAO,CAC5BsI,KAAMnL,KAAKgkD,UAAU7xB,GACrBvzB,KAAMoB,KAAKgkD,UAAUpL,GACrBxtC,GAAIpL,KAAKgkD,UAAU7xB,GACnBgC,MAAOn0B,KAAKgkD,UAAUpL,GACtBkG,SAAU9+C,KAAKgkD,UAAUH,GACzBhF,SAAU7+C,KAAKgkD,UAAUH,GACzBxE,aAAcr/C,KAAKgkD,UAAUH,GAC7BzE,qBAAsBp/C,KAAKgkD,UAAUH,GACrClvC,KAAM3U,KAAKgkD,UAAUrvC,GACrB5W,MAAOiC,KAAKgkD,UAAUH,KAE1BM,oBAAqBnkD,KAAK6C,OAAO,CAC7BoY,KAAMA,EACNvc,MAAOk6C,EACPh6C,KAAMoB,KAAKgkD,UAAUpL,EAAQ,GAE7BiJ,UAAW7hD,KAAKgkD,UAAU/oC,GAC1B6mC,YAAa9hD,KAAKgkD,UAAUpL,GAE5Bvb,QAASr9B,KAAKgkD,UAAUpL,GACxBztC,KAAMgnB,EACN/mB,GAAIpL,KAAKmyB,QACT2sB,SAAU8E,EACV/E,SAAU7+C,KAAKgkD,UAAUJ,GACzBvE,aAAcr/C,KAAKgkD,UAAUJ,GAC7BxE,qBAAsBp/C,KAAKgkD,UAAUJ,GACrC7lD,MAAO6lD,EACPjvC,KAAMA,EACNwf,MAAOykB,EACPhpB,EAAG3U,EACHkG,EAAGlG,EACHxc,EAAGm6C,EACH0G,WAAYt/C,KAAKgkD,UAAUhkD,KAAKs/C,aACjC,CACC5gD,MAAO,CAAC,uBAEb,KACHqB,GAAuBC,KAAM0jD,GAAsB1jD,KAAK6C,OAAO,CAC3D+1C,OAAQA,EACR39B,KAAMjb,KAAKgkD,UAAU/oC,EAAM,MAC3B8lC,UAAWnI,EACXoI,WAAY/lC,EACZkZ,MAAOn0B,KAAKgkD,UAAUpgD,GAAW,sBACjCq9C,WAAY2C,EACZ9E,SAAU8E,EACV1C,QAAS0C,EACTzC,MAAOnhD,KAAKgkD,UAAU7xB,EAAS,8CAC/BivB,UAAWx9C,GACXy9C,cAAerhD,KAAKgkD,UAAUJ,KAC9B,KAGRzxB,QAAQp0B,GACJ,OAAO+0B,GAAW/0B,GAGtB4sC,YAAY5sC,GAIR,OAH0B,KAAtByX,GAAWzX,IAA6C,+BAA5B0X,GAAU1X,EAAO,EAAG,KAChDkJ,GAAOlD,mBAAmB,uBAAwB,QAAShG,GAExDiC,KAAKmyB,QAAQ1c,GAAU1X,EAAO,KAGzCukD,gBAAgBvkD,GACZ,OAAOi2B,GAAiB,CACpB7oB,KAAMnL,KAAKmyB,QAAQp0B,EAAMoN,MACzBgpB,MAAOltB,GAAOzB,UAAUzH,EAAMo2B,MAAO,iBAI7CkvB,SAAStlD,GACL,GAAa,MAATA,EACA,MAAO,SAEX,OAAQA,GACJ,IAAK,WACD,MAAO,MACX,IAAK,SACL,IAAK,UACD,OAAOA,EAEf,MAAuB,iBAAX,GAAwBuW,GAAYvW,IAAUyX,GAAWzX,GAAS,GACnEqX,GAASrX,GAEbkJ,GAAOlD,mBAAmB,mBAAoB,QAAShG,GAGlE40B,MAAM50B,EAAOmsC,GACT,MAAM57B,EAAS7N,GAAuBT,KAAM0jD,GAAsB,KAAKnjD,KAAKP,KAAMjC,GAElF,OADAuQ,EAAOwyC,aAAe/iD,EAAM+iD,aAAa1iD,KAAKW,GAAMiB,KAAKib,KAAKlc,KACvD,IAAI6hD,GAAMtyC,EAAQ47B,GAE7Bka,sBAAsBrmD,EAAOmsC,GACzB,MAAM,IAAI/qC,MAGd+kD,mBAAmBnmD,EAAOmsC,GACtB,OAAOzpC,GAAuBT,KAAMyjD,GAAmB,KAAKS,mBAAmBnmD,GAEnFomD,oBAAoBpmD,EAAOmsC,GAGL,OAFlBnsC,EAAQE,OAAOoN,OAAO,GAAItN,IAEhB4W,MAA+B,MAAf5W,EAAMyQ,QAC5BzQ,EAAM4W,KAAO5W,EAAMyQ,OAED,MAAlBzQ,EAAM+gD,UAAoB/gD,EAAM6Q,MAChC7Q,EAAM+gD,SAAW/gD,EAAM6Q,KAE3B7Q,EAAQ0C,GAAuBT,KAAMyjD,GAAmB,KAAKU,oBAAoBpmD,GACjF,MAAMyvC,EAAMX,GAAU1hC,KAAK,CAAEykB,EAAG7xB,EAAM6xB,EAAGzO,EAAGpjB,EAAMojB,EAAG1iB,EAAGV,EAAMU,IAK9D,OAJAV,EAAMyiC,UAAYgN,EACG,MAAjBzvC,EAAMs/B,UACNt/B,EAAMs/B,QAAUmQ,EAAIT,eAEjB,IAAIkW,GAAoBllD,EAAOmsC,GAG1CnjC,IAAIhJ,EAAOmsC,GACP,MAAMnjC,EAAM/G,KAAK6C,OAAO,CACpBsvB,QAASnyB,KAAKmyB,QACd0vB,UAAW7hD,KAAKib,KAChB6mC,YAAa9hD,KAAK44C,OAClBjkC,KAAM3U,KAAK2U,KACXjW,MAAOsB,KAAK44C,OACZmJ,QAAS/hD,KAAKqkD,QACdthB,OAAQ/iC,KAAK+iC,OACb6e,gBAAiB5hD,KAAKib,KACtB+mC,iBAAkBhiD,KAAK44C,QACxB,CACCl6C,MAAO,CAAC,aAXAsB,CAYTjC,GACH,OAAO,IAAI4jD,GAAI56C,EAAKmjC,GAExBoa,QAAQvmD,EAAOmsC,GACX,MAAMoa,EAAUtkD,KAAK6C,OAAO,CACxBg/C,UAAW7hD,KAAKib,KAChB6mC,YAAa9hD,KAAK44C,OAClB0J,gBAAiBtiD,KAAKgkD,UAAUhkD,KAAKmyB,SACrCqwB,kBAAmBxiD,KAAK4jD,UACxBz4C,KAAMnL,KAAKmyB,QACX+uB,QAASlhD,KAAK4jD,UACdvB,KAAMriD,KAAK8jD,SAASrlD,GAAOuB,KAAK+G,IAAItI,EAAGyrC,KACvCqY,UAAWviD,KAAK2U,KAChBguC,KAAM3iD,KAAKgkD,UAAUhkD,KAAK2U,MAC1B8xB,OAAQzmC,KAAKgkD,UAAUhkD,KAAK44C,QAC5BxtC,GAAIpL,KAAKmyB,QACT0sB,SAAU7+C,KAAKgkD,UAAUhkD,KAAK4jD,WAC9B3oC,KAAMjb,KAAKib,KACXvc,MAAOsB,KAAK44C,OACZh6C,KAAMoB,KAAKgkD,UAAUhkD,KAAK44C,OAAQ,IACnC,CACC39B,KAAM,CAAC,mBACP4jC,SAAU,CAAC,qBACXngD,MAAO,CAAC,qBAnBIsB,CAoBbjC,GAEH,GAAoB,MAAhBumD,EAAQ3B,KACR,GAAI2B,EAAQ3B,KAAKzjD,QAAU,EAAG,CAE1B,MAAMnB,EAAQ6I,SAAS09C,EAAQ3B,MAC/B,GAAc,IAAV5kD,GAAyB,IAAVA,EAWf,OAAOkJ,GAAOnD,WAAW,0BAA2B,WAAY,CAC5D/F,MAAOumD,EAAQ3B,OAVnB,GAAsB,MAAlB2B,EAAQ7d,QAAkB6d,EAAQ7d,SAAW1oC,EAC7C,OAAOkJ,GAAOnD,WAAW,kCAAmC,WAAY,CACpE/F,MAAO,CAAE4kD,KAAM2B,EAAQ3B,KAAMlc,OAAQ6d,EAAQ7d,UAGrD6d,EAAQ7d,OAAS1oC,SACVumD,EAAQ3B,UAQlB,IAAKruC,GAAYgwC,EAAQ3B,KAAM,IAEhC,OAAO17C,GAAOnD,WAAW,4BAA6B,WAAY,CAC9D/F,MAAOumD,EAAQ3B,OAK3B,OAAO,IAAIP,GAAmBkC,EAASpa,GAG3CnH,OAAOhlC,GACH,OAAO0C,GAAuBT,KAAMyjD,GAAmB,KAAK1gB,OAAOhlC,GAEvEgD,OAAOhD,GACH,OAAO0C,GAAuBT,KAAMyjD,GAAmB,KAAK1iD,OAAOhD,GAEvEwmD,UAAUxmD,GAEN,OADA+I,QAAQC,IAAI,KAAMhJ,GACX,KAGX2kC,YAAY3kC,GACR,MAAM,IAAIoB,MAKdmgD,WAAWvhD,GACP,OAAO+/C,GAAc//C,GAGzBymD,aAAat4C,EAAQu4C,GACjB,OAAS1mD,GACAA,EAGEmO,EAAO3L,KAAKP,KAAMjC,GAFd0mD,EAMnBT,UAAU93C,EAAQw4C,GACd,OAAS3mD,GACQ,MAATA,EACO2mD,EAEJx4C,EAAO3L,KAAKP,KAAMjC,GAIjC+lD,QAAQ53C,GACJ,OAASqsC,IACL,IAAKzrC,MAAMN,QAAQ+rC,GACf,MAAM,IAAIp5C,MAAM,gBAEpB,OAAOo5C,EAAMn6C,KAAKa,GAAMiN,EAAO3L,KAAKP,KAAMf,MAIlD2kD,UAAU7lD,GACN,OAAOkJ,GAAOtB,UAAU5H,EAAO,SAEnC8lD,QAAQ9lD,GACJ,MAAM2I,EAAS1G,KAAK4jD,UAAU7lD,GAI9B,OAHI2I,EAAS,GAAKA,EAAS2wB,KACvBpwB,GAAOlD,mBAAmB,kBAAmB,QAAShG,GAEnD2I,EAGX29C,QAAQtmD,GACJ,OAAQA,GACJ,KAAK,EACL,IAAK,OACD,OAAO,EACX,KAAK,EACL,IAAK,QACD,OAAO,EAEf,OAAOkJ,GAAOlD,mBAAmB,oBAAoBJ,KAAKC,UAAU7F,KAAU,QAASA,GAK3F4mD,WAAWC,GAIP,OAHoB,MAAhBA,IACAA,GAAe,GAEnB,SAAkB7mD,GACd,GAAIuW,GAAYvW,EAAO6mD,GACnB,OAAO7mD,EAAMqI,cAEjB,MAAM,IAAIjH,MAAM,kBAGxBwV,KAAK5W,GAID,OAHyB,MAArByX,GAAWzX,IACXkJ,GAAOlD,mBAAmB,GAAI,QAAShG,GAEpCA,EAGXkd,KAAKld,GAID,OAH0B,KAAtByX,GAAWzX,IACXkJ,GAAOlD,mBAAmB,GAAI,QAAShG,GAEpC0C,GAAuBT,KAAMyjD,GAAmB,KAAK9uC,KAAK5W,GAGrE66C,OAAO76C,GACH,OAAOkJ,GAAOzB,UAAUzH,GAK5B8E,OAAOqJ,EAAQ24C,GACX,OAAS9mD,IACL,MAAM2I,EAAS,GACf,IAAK,MAAMlH,KAAO0M,EAAQ,CACtB,IAAI44C,EAAStlD,EACb,GAAIqlD,GAAYrlD,KAAOqlD,KAAcC,KAAU/mD,GAC3C,IAAK,MAAMgnD,KAAUF,EAASrlD,GAC1B,GAAIulD,KAAUhnD,EAAO,CACjB+mD,EAASC,EACT,MAIZ,IACI,MAAMC,EAAK94C,EAAO1M,GAAKe,KAAKP,KAAMjC,EAAM+mD,SAC7BplD,IAAPslD,IACAt+C,EAAOlH,GAAOwlD,GAGtB,MAAO1jD,GACH,MAAMmC,EAAWnC,aAAiBnC,MAASmC,EAAMmC,QAAU,eAC3DwD,GAAOnD,WAAW,2BAA2BtE,MAAQiE,KAAY,WAAY,CAAE1F,MAAAA,KAGvF,OAAO2I,GAIfu+C,YAAYlnD,GACR,OAAO2R,GAAMzI,GAAOtB,UAAU5H,GAAQ,KAG9C0lD,GAAoB,IAAIhiD,QAAWiiD,GAAuB,IAAIjiD,QC3YvD,MAAMyjD,GACTtkD,YAAYkC,GACR1D,EAAiBY,KAAM,CAAE8C,KAAAA,IAE7BgG,QACI,OAAO,IAAIo8C,GAAcllD,KAAK8C,MAElC6mC,SAASyC,GACL,OAAOpsC,MAGR,MAAMmlD,WAAsBD,GAC/BtkD,YAAYwkD,EAAiB,EAAGC,GAC5Bj3C,MAAM,+BAAgCg3C,GAAkB,KACxD,MAAME,EAAQ,CAAEF,eAAAA,GAChB,SAAS5kD,EAAIsC,EAAMyiD,GACf,IAAIxnD,GAASsnD,GAAS,IAAIviD,GACb,MAAT/E,IACAA,EAAQwnD,GAEW,iBAAX,GACRt+C,GAAOlD,mBAAmB,qBAAqBjB,IAAQ,QAASuiD,GAEpEC,EAAMxiD,GAAQ/E,EAElByC,EAAI,SAAU,MACdA,EAAI,WAAY,MAChBA,EAAI,aAAc,GAClBA,EAAI,gBAAiB,IACrBA,EAAI,yBAA0B,MAC9BA,EAAI,sBAAuB,MAC3BpB,EAAiBY,KAAMslD,GAE3Bx8C,QACI,OAAO,IAAIq8C,GAAcnlD,KAAKolD,eAAgBplD,OAK/C,MAAMwlD,WAAkBN,GAC3BtkD,YAAYuxB,EAASszB,GACjBr3C,MAAM,0BACNhP,EAAiBY,KAAM,CACnBmyB,QAAUA,GA5CH,6CA6CPszB,cAAkC,MAAjBA,EAAyB,EAAIA,IAGtD38C,QACI,OAAO,IAAI08C,GAAUxlD,KAAKmyB,QAASnyB,KAAKylD,eAE5C9b,SAASyC,GAEL,OADAA,EAAQ1B,UAAUvY,QAAQnyB,KAAKmyB,SACxBnyB,MAGR,MAAM0lD,WAA6BR,GACtCtkD,YAAY+kD,GACRv3C,MAAM,uCACNhP,EAAiBY,KAAM,CACnB2lD,YAAa1+C,GAAOtB,UAAUggD,KAGtC9nD,qBAAqBqsC,GACjB,OAAOlqC,KAAK2lD,YAEhB78C,QACI,OAAO,IAAI48C,GAAqB1lD,KAAK2lD,cCrE7C,IAWIC,GAXA7lD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAyDxF,MAAM4lD,GAAW,IAAI5uC,IACf6uC,GAAmB,IAAInC,GACtB,MAAMoC,GACTnlD,YAAYkC,EAAMkjD,EAAUtb,GACxBkb,GAAeplD,IAAIR,UAAM,GACzB,MAAMq9B,EAAUp2B,GAAOtB,UAAUqgD,GAChB,MAAbtb,IACAA,EAAYob,IAEhB,MAAMhb,EAAU,IAAI7zB,IACpBlX,GAAuBC,KAAM4lD,GAAgB,CAAE9iD,KAAAA,EAAMu6B,QAAAA,EAASqN,UAAAA,EAAWI,QAAAA,GAAW,KAExFuC,SACI,MAAO,CAAEvqC,KAAM9C,KAAK8C,KAAMu6B,QAASr9B,KAAKq9B,SAExCv6B,WAAS,OAAO7B,EAASR,GAAuBT,KAAM4lD,GAAgB,KAAM,QAC5E9iD,SAAK/E,GAASoD,EAASV,GAAuBT,KAAM4lD,GAAgB,KAAM,OAAQ7nD,GAClFs/B,cAAY,OAAOp8B,EAASR,GAAuBT,KAAM4lD,GAAgB,KAAM,WAC/EvoB,YAAQt/B,GAASoD,EAASV,GAAuBT,KAAM4lD,GAAgB,KAAM,UAAW3+C,GAAOtB,UAAU5H,EAAO,YAChH2sC,gBAAc,OAAOzpC,EAASR,GAAuBT,KAAM4lD,GAAgB,KAAM,aACjFlb,cAAU3sC,GAASoD,EAASV,GAAuBT,KAAM4lD,GAAgB,KAAM,YAAa7nD,GAC5F+sC,cACA,OAAOh+B,MAAM3B,KAAK1K,GAAuBT,KAAM4lD,GAAgB,KAAK9a,QAAQxrC,UAEhF2mD,aAAapb,GACT,GAAI7qC,KAAKoB,WACL,MAAM,IAAIjC,MAAM,UAEpB,GAAIsB,GAAuBT,KAAM4lD,GAAgB,KAAK9a,QAAQpqC,IAAImqC,EAAO/nC,MACrE,MAAM,IAAI3D,MAAM,mCAAmC0rC,EAAO/nC,SAG9D,OADArC,GAAuBT,KAAM4lD,GAAgB,KAAK9a,QAAQtqC,IAAIqqC,EAAO/nC,KAAM+nC,EAAOlB,SAAS3pC,OACpFA,KAEXssC,UAAUxpC,GACN,OAAQrC,GAAuBT,KAAM4lD,GAAgB,KAAK9a,QAAQpqC,IAAIoC,IAAU,KAGpFojD,WAAWC,GACP,OAAQnmD,KAAK8qC,QAAQ/pC,QAAQwN,GAAOA,EAAEzL,KAAKhE,MAAM,KAAK,KAAOqnD,IAEjEr9C,QACI,MAAMA,EAAQ,IAAIi9C,GAAQ/lD,KAAK8C,KAAM9C,KAAKq9B,QAASr9B,KAAK0qC,WAIxD,OAHA1qC,KAAK8qC,QAAQljC,SAASijC,IAClB/hC,EAAMm9C,aAAapb,EAAO/hC,YAEvBA,EAEXjB,SAEI,OADA5J,OAAO4J,OAAOpH,GAAuBT,KAAM4lD,GAAgB,MACpD5lD,KAEXoB,WACI,OAAOnD,OAAOmD,SAASX,GAAuBT,KAAM4lD,GAAgB,MAExEQ,oBAAoBnyB,GAChB,MAAMoxB,EAAQrlD,KAAKssC,UAAU,wBAA2B,IAAI6Y,GAC5D,IAAIv2C,EAAMy2C,EAAMgB,OAIhB,GAHa,MAATpyB,EAAG7oB,KACHwD,GAAOy2C,EAAMiB,UAEbryB,EAAGtf,KACH,IAAK,IAAI1V,EAAI,EAAGA,EAAIg1B,EAAGtf,KAAKzV,OAAQD,GAAK,EACD,OAAhCg1B,EAAGtf,KAAK9N,UAAU5H,EAAGA,EAAI,GACzB2P,GAAOy2C,EAAMkB,WAGb33C,GAAOy2C,EAAMmB,cAIzB,GAAIvyB,EAAGqrB,WAAY,CACf,MAAMA,EAAat/C,KAAK0qC,UAAU4U,WAAWrrB,EAAGqrB,YAChD,IAAK,MAAM3T,KAAQ2T,EACf1wC,GAAOy2C,EAAMoB,oBAAsBpB,EAAMqB,uBAAyBpH,EAAW3T,GAAMiS,YAAY1+C,OAGvG,OAAO0P,EAEX3I,YAAYmmC,GAER,GAAe,MAAXA,EACA,OAAO2Z,GAAQ56C,KAAK,aAMxB,GAHyB,iBAAb,IACRihC,EAAU3mC,OAAO2mC,IAEI,iBAArB,GAAsD,iBAArB,EAA+B,CAChE,MAAMua,EAAcd,GAASnlD,IAAI0rC,GACjC,GAAIua,EACA,OAAOA,IAEX,GAAyB,iBAAb,EACR,OAAO,IAAIZ,GAAQ,UAAW3Z,GAElCnlC,GAAOlD,mBAAmB,kBAAmB,UAAWqoC,GAG5D,GAA+B,mBAAnBA,EAAa,MAAkB,CAIvC,OAHcA,EAAQtjC,QAM1B,GAAyB,iBAAb,EAAuB,CACD,iBAAlBsjC,EAAY,MAA+C,iBAArBA,EAAe,SAC7DnlC,GAAOlD,mBAAmB,yCAA0C,UAAWqoC,GAEnF,MAAMwa,EAAS,IAAIb,GAAS3Z,EAAY,KAAIA,EAAe,SAO3D,OANIA,EAAQya,YAAoC,MAAtBza,EAAQ0a,aAC9BF,EAAOX,aAAa,IAAIT,GAAUpZ,EAAQya,WAAYza,EAAQ0a,aAK3DF,EAEX,OAAO3/C,GAAOlD,mBAAmB,kBAAmB,UAAWqoC,GAEnEnmC,gBAAgB8gD,EAAeJ,GACI,iBAAnB,IACRI,EAAgBthD,OAAOshD,IAE3B,MAAMC,EAAWnB,GAASnlD,IAAIqmD,GAC1BC,GACA//C,GAAOlD,mBAAmB,2BAA2BJ,KAAKC,UAAUojD,EAASlkD,QAAS,gBAAiBikD,GAE3GlB,GAASrlD,IAAIumD,EAAeJ,IAGpCf,GAAiB,IAAInkD,QCtMrB,IAWIwlD,GAAmCC,GAAkCC,GAAgCC,GAAkCC,GAAqCC,GAA8BC,GAA6BC,GAAyBC,GAAiCC,GAAoCC,GAAmCC,GAAkCC,GAAgCC,GAAgCC,GAAqCC,GAX/ejoD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAKxF,SAASsG,GAAKyG,GACV,OAAOrJ,KAAK4I,MAAM5I,KAAKC,UAAUoJ,IAc9B,MAAMi7C,GACTrnD,YAAYspC,GACR+c,GAAkC1jD,IAAIvD,MACtCknD,GAAiC1mD,IAAIR,UAAM,GAC3CmnD,GAA+B3mD,IAAIR,UAAM,GACzConD,GAAiC5mD,IAAIR,UAAM,GAG3CqnD,GAAoC7mD,IAAIR,UAAM,GAC9CD,GAAuBC,KAAMknD,GAAkChd,EAAU,KACzEnqC,GAAuBC,KAAMmnD,GAAgC,KAAM,KACnEpnD,GAAuBC,KAAMonD,GAAkC,IAAM,KACrErnD,GAAuBC,KAAMqnD,IAAsC,EAAG,KAEtEa,sBAAoB,OAAOznD,GAAuBT,KAAMonD,GAAkC,KAC1Fc,oBAAgBnqD,GAASgC,GAAuBC,KAAMonD,GAAkCrpD,EAAO,KACnG2X,QACI,GAAIjV,GAAuBT,KAAMmnD,GAAgC,KAC7D,MAAM,IAAIhoD,MAAM,8BAEpBsB,GAAuBT,KAAMinD,GAAmC,IAAKK,IAA8B/mD,KAAKP,MACxGD,GAAuBC,KAAMmnD,GAAgC1mD,GAAuBT,KAAMknD,GAAkC,KAAKiB,YAAY1nD,GAAuBT,KAAMinD,GAAmC,IAAKK,IAA8BztC,KAAK7Z,MAAOS,GAAuBT,KAAMonD,GAAkC,MAAO,KAEtUgB,OACI,IAAK3nD,GAAuBT,KAAMmnD,GAAgC,KAC9D,MAAM,IAAIhoD,MAAM,0BAEpBsB,GAAuBT,KAAMknD,GAAkC,KAAKmB,cAAc5nD,GAAuBT,KAAMmnD,GAAgC,MAC/IpnD,GAAuBC,KAAMmnD,GAAgC,KAAM,KAEvEmB,MAAMC,GACFvoD,KAAKooD,OACDG,GACAxoD,GAAuBC,KAAMqnD,IAAsC,EAAG,KAG9EmB,SACIxoD,KAAK0V,SAGbwxC,GAAmC,IAAIzlD,QAAW0lD,GAAiC,IAAI1lD,QAAW2lD,GAAmC,IAAI3lD,QAAW4lD,GAAsC,IAAI5lD,QAAWwlD,GAAoC,IAAI3gD,QAAWghD,GAA+BzpD,eAAeypD,IACtS,MAAMxF,QAAoBrhD,GAAuBT,KAAMknD,GAAkC,KAAKrE,iBAC9F,IAAgF,IAA5EpiD,GAAuBT,KAAMqnD,GAAqC,KAAtE,CAKA,GAAIvF,IAAgBrhD,GAAuBT,KAAMqnD,GAAqC,KAAM,CACxF,IAAK,IAAIp1C,EAAIxR,GAAuBT,KAAMqnD,GAAqC,KAAO,EAAGp1C,GAAK6vC,EAAa7vC,IACvGxR,GAAuBT,KAAMknD,GAAkC,KAAKuB,KAAK,QAASx2C,GAEtFlS,GAAuBC,KAAMqnD,GAAqCvF,EAAa,KAEnF/hD,GAAuBC,KAAMmnD,GAAgC1mD,GAAuBT,KAAMknD,GAAkC,KAAKiB,YAAY1nD,GAAuBT,KAAMinD,GAAmC,IAAKK,GAA8BztC,KAAK7Z,MAAOS,GAAuBT,KAAMonD,GAAkC,MAAO,UAV9TrnD,GAAuBC,KAAMqnD,GAAqCvF,EAAa,MAYhF,MAAM4G,GACT9nD,YAAYspC,GACRqd,GAA4B/mD,IAAIR,UAAM,GACtCwnD,GAAwBhnD,IAAIR,UAAM,GAClCD,GAAuBC,KAAMunD,GAA6Brd,EAAU,KACpEnqC,GAAuBC,KAAMwnD,IAA0B1F,IACnD9hD,KAAK2oD,MAAM7G,EAAarhD,GAAuBT,KAAMunD,GAA6B,QACnF,KAEP1pD,YAAYikD,EAAa5X,GACrB,MAAM,IAAI/qC,MAAM,kCAEpBuW,QACIjV,GAAuBT,KAAMwnD,GAAyB,KAAKjnD,KAAKP,MAAO,GACvES,GAAuBT,KAAMunD,GAA6B,KAAKqB,GAAG,QAASnoD,GAAuBT,KAAMwnD,GAAyB,MAErIY,OACI3nD,GAAuBT,KAAMunD,GAA6B,KAAKvmD,IAAI,QAASP,GAAuBT,KAAMwnD,GAAyB,MAEtIc,MAAMC,GAAmBvoD,KAAKooD,OAC9BI,SAAWxoD,KAAK0V,SAEpB6xC,GAA8B,IAAI9lD,QAAW+lD,GAA0B,IAAI/lD,QACpE,MAAMonD,WAAgCH,GACzC9nD,YAAYspC,EAAUnpC,GAClBqN,MAAM87B,GACNud,GAAgCjnD,IAAIR,UAAM,GAC1CD,GAAuBC,KAAMynD,GAAiClhD,GAAKxF,GAAS,KAEhFlD,YAAYikD,EAAa5X,GACrB,MAAM,IAAI/qC,MAAM,UAIxBsoD,GAAkC,IAAIhmD,QAC/B,MAAMqnD,WAAqCJ,GAC9C9nD,YAAYspC,EAAUjvB,GAClB7M,MAAM87B,GACNwd,GAAmClnD,IAAIR,UAAM,GAC7CD,GAAuBC,KAAM0nD,GAAoCzsC,EAAM,KAE3Epd,YAAYikD,EAAa5X,GACrB,MAAMjW,QAAWiW,EAASgY,sBAAsBzhD,GAAuBT,KAAM0nD,GAAoC,MAC7GzzB,GACAiW,EAASue,KAAKhoD,GAAuBT,KAAM0nD,GAAoC,KAAMzzB,IAIjGyzB,GAAqC,IAAIjmD,QAClC,MAAMsnD,GACTnoD,YAAYspC,EAAUnpC,GAClB4mD,GAAkCpkD,IAAIvD,MACtC4nD,GAAiCpnD,IAAIR,UAAM,GAC3C6nD,GAA+BrnD,IAAIR,UAAM,GACzC8nD,GAA+BtnD,IAAIR,UAAM,GAGzC+nD,GAAoCvnD,IAAIR,UAAM,GAC9CD,GAAuBC,KAAM4nD,GAAkC1d,EAAU,KACzEnqC,GAAuBC,KAAM6nD,GAAgCthD,GAAKxF,GAAS,KAC3EhB,GAAuBC,KAAM8nD,GAAgCrnD,GAAuBT,KAAM2nD,GAAmC,IAAKK,IAA8BnuC,KAAK7Z,MAAO,KAC5KD,GAAuBC,KAAM+nD,IAAsC,EAAG,KAE1EryC,SACoF,IAA5EjV,GAAuBT,KAAM+nD,GAAqC,MAClEtnD,GAAuBT,KAAM4nD,GAAkC,KAAK/E,iBAAiBp1C,MAAMq0C,IACvF/hD,GAAuBC,KAAM+nD,GAAqCjG,EAAa,QAGvFrhD,GAAuBT,KAAM4nD,GAAkC,KAAKgB,GAAG,QAASnoD,GAAuBT,KAAM8nD,GAAgC,MAEjJM,OACI3nD,GAAuBT,KAAM4nD,GAAkC,KAAK5mD,IAAI,QAASP,GAAuBT,KAAM8nD,GAAgC,MAElJQ,MAAMC,GACFvoD,KAAKooD,OACDG,GACAxoD,GAAuBC,KAAM+nD,IAAsC,EAAG,KAG9ES,SACIxoD,KAAK0V,SAGbkyC,GAAmC,IAAInmD,QAAWomD,GAAiC,IAAIpmD,QAAWqmD,GAAiC,IAAIrmD,QAAWsmD,GAAsC,IAAItmD,QAAWkmD,GAAoC,IAAIrhD,QAAW0hD,GAA+BnqD,eAA4CikD,GAEjU,IAAgF,IAA5ErhD,GAAuBT,KAAM+nD,GAAqC,KAClE,OAEJ,MAAMhnD,EAASwF,GAAK9F,GAAuBT,KAAM6nD,GAAgC,MACjF9mD,EAAOgjD,UAAYtjD,GAAuBT,KAAM+nD,GAAqC,KAAO,EAC5FhnD,EAAOkjD,QAAUnC,EACjB,MAAMO,QAAa5hD,GAAuBT,KAAM4nD,GAAkC,KAAKoB,QAAQjoD,GAG/F,GAAoB,IAAhBshD,EAAKnjD,OAAT,CAMAa,GAAuBC,KAAM+nD,GAAqCjG,EAAa,KAC/E,IAAK,MAAM/6C,KAAOs7C,EACd5hD,GAAuBT,KAAM4nD,GAAkC,KAAKa,KAAKhoD,GAAuBT,KAAM6nD,GAAgC,KAAM9gD,QAPxItG,GAAuBT,KAAM+nD,GAAqC,KAAOjG,EAAc,IACvF/hD,GAAuBC,KAAM+nD,GAAqCjG,EAAc,GAAI,MC9KhG,IAWImH,GAA6BC,GAAwBC,GAA2BC,GAA+BC,GAAkCC,GAA8BC,GAAgCC,GAA6BC,GAA0BC,GAAmCC,GAA2BC,GAAwBC,GAA4BC,GAA0BC,GAXlZhqD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAgBxF,MAAMusC,GAAO/mC,OAAO,GAEpB,SAASukD,GAAOnU,EAAQ93C,GACpB,OAAO83C,EAAS,IAAMlyC,KAAKC,UAAU7F,GAAO,CAACM,EAAGI,KAC5C,GAAmB,iBAAP,EACR,MAAO,UAAUA,EAAEqL,aAEvB,GAAmB,iBAAP,EACR,OAAOrL,EAAE2H,cAGb,GAAmB,iBAAf,IAA4B0G,MAAMN,QAAQ/N,GAAI,CAC9C,MAAMT,EAAOC,OAAOD,KAAKS,GAEzB,OADAT,EAAK4gC,OACE5gC,EAAKO,QAAO,CAACC,EAAOgB,KACvBhB,EAAMgB,GAAOf,EAAEe,GACRhB,IACR,IAEP,OAAOC,KAGR,MAAMwrD,GACTrpD,YAAYkC,GAAQ1D,EAAiBY,KAAM,CAAE8C,KAAAA,IAC7C4S,SACA0yC,QACAE,MAAMC,IACNC,WAKJ,SAAS0B,GAAUxiD,GAGf,OAFAA,EAAQoF,MAAM3B,KAAK,IAAKxD,IAAID,GAAQpI,WAC9Bs/B,OACCl3B,EAMX7J,eAAessD,GAAgBC,EAAQlgB,GACnC,GAAc,MAAVkgB,EACA,MAAM,IAAIjrD,MAAM,iBAMpB,GAHI2N,MAAMN,QAAQ49C,KACdA,EAAS,CAAErnB,OAAQqnB,IAEC,iBAAZ,EACR,OAAQA,GACJ,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,UACD,MAAO,CAAExrD,KAAMwrD,EAAQC,IAAKD,GAIxC,GAAI91C,GAAY81C,EAAQ,IAAK,CACzB,MAAMnvC,EAAOmvC,EAAOhkD,cACpB,MAAO,CAAExH,KAAM,cAAeyrD,IAAKL,GAAO,KAAM,CAAE/uC,KAAAA,IAASA,KAAAA,GAE/D,GAAImvC,EAAO1I,OAAQ,CACf,MAAMhzC,EAAQ07C,EAEd,MAAO,CAAExrD,KAAM,SAAUyrD,IAAKL,GAAO,SAAUt7C,GAAQ3N,QArCjDhD,EAqC8D2Q,EApCjE/K,KAAK4I,MAAM5I,KAAKC,UAAU7F,MADrC,IAAcA,EAuCV,GAAKqsD,EAAOj4B,SAAWi4B,EAAOrnB,OAAS,CACnC,MAAMr0B,EAAQ07C,EACRrpD,EAAS,CACXgiC,QAAUr0B,EAAMq0B,QAAU,IAAI3kC,KAAKW,GACtB,MAALA,EACO,KAEP+N,MAAMN,QAAQzN,GACPmrD,GAAUnrD,EAAEX,KAAKW,GAAMA,EAAEqH,iBAE7BrH,EAAEqH,iBAGjB,GAAIsI,EAAMyjB,QAAS,CACf,MAAMm4B,EAAY,GACZv9C,EAAW,GACXw9C,EAAc5e,IACZr3B,GAAYq3B,GACZ2e,EAAU3nD,KAAKgpC,GAGf5+B,EAASpK,KAAK,WACV2nD,EAAU3nD,WAAW+xB,GAAeiX,EAAMzB,KADhC,KAKlBp9B,MAAMN,QAAQkC,EAAMyjB,SACpBzjB,EAAMyjB,QAAQvqB,QAAQ2iD,GAGtBA,EAAW77C,EAAMyjB,SAEjBplB,EAAS7N,cACHhB,QAAQC,IAAI4O,GAEtBhM,EAAOoxB,QAAU+3B,GAAUI,EAAUlsD,KAAK4T,GAAMA,EAAE5L,iBAEtD,MAAO,CAAErF,OAAAA,EAAQspD,IAAKL,GAAO,QAASjpD,GAASnC,KAAM,SAEzD,OAAOqI,GAAOlD,mBAAmB,wBAAyB,QAASqmD,GAEvE,SAAS3iB,KAAY,OAAO,IAAKptB,MAAQotB,UAKlC,MAAM+iB,GAGT5pD,YAAY6pD,GAYR,GAXAxB,GAA4B1lD,IAAIvD,MAChCkpD,GAAuB1oD,IAAIR,UAAM,GACjCmpD,GAA0B3oD,IAAIR,UAAM,GAEpCopD,GAA8B5oD,IAAIR,UAAM,GACxCqpD,GAAiC7oD,IAAIR,UAAM,GAC3CspD,GAA6B9oD,IAAIR,UAAM,GACvCupD,GAA+B/oD,IAAIR,UAAM,GACzCwpD,GAA4BhpD,IAAIR,UAAM,GACtCypD,GAAyBjpD,IAAIR,UAAM,GACnC0pD,GAAkClpD,IAAIR,UAAM,GAC3B,QAAbyqD,EACA1qD,GAAuBC,KAAMspD,IAA8B,EAAM,KACjEvpD,GAAuBC,KAAMqpD,GAAkC,KAAM,UAEpE,GAAIoB,EAAU,CACf,MAAMre,EAAU2Z,GAAQ56C,KAAKs/C,GAC7B1qD,GAAuBC,KAAMspD,IAA8B,EAAO,KAClEvpD,GAAuBC,KAAMqpD,GAAkCnrD,QAAQI,QAAQ8tC,GAAU,KACzFryB,YAAW,KAAQ/Z,KAAKyoD,KAAK,UAAWrc,EAAS,QAAU,QAG3DrsC,GAAuBC,KAAMspD,IAA8B,EAAO,KAClEvpD,GAAuBC,KAAMqpD,GAAkC,KAAM,KAEzEtpD,GAAuBC,KAAMupD,GAAgC,IAAItyC,IAAO,KACxElX,GAAuBC,KAAMkpD,GAAwB,IAAIjyC,IAAO,KAChElX,GAAuBC,KAAMmpD,GAA2B,IAAIlyC,IAAO,KACnElX,GAAuBC,KAAMopD,GAA+B,KAAM,KAClErpD,GAAuBC,KAAMwpD,GAA6B,EAAG,KAC7DzpD,GAAuBC,KAAMypD,GAA0B,IAAIxyC,IAAO,KAClElX,GAAuBC,KAAM0pD,IAAmC,EAAO,KAEvExf,eAAa,OAAOlqC,KACpB8qC,cACA,OAAOh+B,MAAM3B,KAAK1K,GAAuBT,KAAMmpD,GAA2B,KAAK7pD,UAEnF2mD,aAAapb,GACT,GAAIpqC,GAAuBT,KAAMmpD,GAA2B,KAAKzoD,IAAImqC,EAAO/nC,MACxE,MAAM,IAAI3D,MAAM,mCAAmC0rC,EAAO/nC,SAG9D,OADArC,GAAuBT,KAAMmpD,GAA2B,KAAK3oD,IAAIqqC,EAAO/nC,KAAM+nC,EAAOlB,SAAS3pC,OACvFA,KAEXssC,UAAUxpC,GACN,OAAQrC,GAAuBT,KAAMmpD,GAA2B,KAAKzoD,IAAIoC,IAAU,KAEnF4nD,oBAAgB3sD,GAASgC,GAAuBC,KAAM0pD,KAAqC3rD,EAAO,KAClG2sD,sBAAoB,OAAOjqD,GAAuBT,KAAM0pD,GAAmC,KAC/F7rD,oBAAoBo2B,EAAIgX,EAAU0f,GAC9B,GAAI3qD,KAAK0qD,iBAAmC,IAAhBC,EAAKzrD,QAAyB,MAAT+0B,EAAG7oB,GAChD,OAAO,KAEX,MAAMw/C,EAAS32B,EAAG7oB,GAAGhF,cACfuO,EAAOs2B,EAAS7kC,cAChBykD,EAAgB,GACtB,IAAK,IAAI5rD,EAAI,EAAGA,EAAI0rD,EAAKzrD,OAAQD,IAAK,CAClC,MAAMgnC,EAAM0kB,EAAK1rD,GAEX6rD,EAAO7kB,EAAI5N,QAAQ,WAAYuyB,GAAQvyB,QAAQ,SAAU1jB,GAOzDmwB,EAAU,IAAI8B,GAAakkB,IACF,IAA3B7kB,EAAIphC,QAAQ,YACZigC,EAAQD,KAAO,CAAElwB,KAAAA,EAAMi2C,OAAAA,IAE3B,IAAIG,EAAe,gBACnB,MAAMzkB,QAAaqB,GAAU7C,GAC7B,IACI,MAAMp+B,EAAS4/B,EAAKrB,SACpB,GAAIv+B,EAAOiO,KACP,OAAOjO,EAAOiO,KAEdjO,EAAOjD,UACPsnD,EAAerkD,EAAOjD,SAG9B,MAAOnC,IAEP,GAAIglC,EAAK5B,YAAc,KAAO4B,EAAK5B,WAAa,IAC5C,OAAOz9B,GAAOnD,WAAW,yCAAyCinD,IAAgB,iBAAkB,CAChGlzB,OAAQ,uBACR6K,YAAazO,EAAIhyB,KAAM,CAAEgkC,IAAAA,EAAK8kB,aAAAA,KAItCF,EAAcloD,KAAKooD,GAEvB,OAAO9jD,GAAOnD,WAAW,wCAAwC+mD,EAAczsD,KAAKkmC,GAAM3gC,KAAKC,UAAU0gC,KAAIzgC,KAAK,QAAS,iBAAkB,CACzIg0B,OAAQ,mBACR6K,YAAazO,EAAIhyB,KAAM,CAAE0oD,KAAAA,EAAME,cAAAA,KAGvCG,iBAAiB/2B,EAAIhZ,EAAM6mC,GACvB,OAAO7tB,EAEXg3B,iBACI,OAAOhkD,GAAOnD,WAAW,kCAAmC,wBAAyB,CACjFY,UAAW,mBAGnB7G,eAAeioC,GACX,OAAO7+B,GAAOnD,WAAW,uBAAuBgiC,EAAI5gC,SAAU,wBAAyB,CACnFR,UAAWohC,EAAI5gC,OACfjD,KAAM6jC,IAIdjoC,uBACI,OAAOoJ,GAAOzB,gBAAgB/E,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CAAEkF,OAAQ,mBAAqB,aAEtKrH,kBAAkBs0B,GACd,MAAyB,iBAAb,EACDA,QAEEA,EAAQW,aAEzBj1B,mBAAmBwlD,GACf,MAAMjX,QAAgBpsC,KAAKyqC,aAC3B,GAA0B,iBAAd,GAA0BlmC,OAAOwW,cAAcsoC,IAAaA,EAAW,EAAG,CAElF,IAAIvB,QAAoB9hD,KAAK6iD,iBAK7B,OAJAf,GAAeuB,EACXvB,EAAc,IACdA,EAAc,GAEX1V,EAAQ1B,UAAU2Y,SAASvB,GAEtC,OAAO1V,EAAQ1B,UAAU2Y,SAASA,GAEtCxlD,mBAEI,GAA2E,MAAvE4C,GAAuBT,KAAMqpD,GAAkC,KAAc,CAE7E,MAAM6B,EAAgBlrD,KAAKirD,iBAAiBx9C,MAAM2+B,IAC9CpsC,KAAKyoD,KAAK,UAAWrc,EAAS,MACvBA,KACP9qC,IAKA,MAHIb,GAAuBT,KAAMqpD,GAAkC,OAAS6B,GACxEnrD,GAAuBC,KAAMqpD,GAAkC,KAAM,KAEnE/nD,KAGV,OADAvB,GAAuBC,KAAMqpD,GAAkC6B,EAAe,WACjEA,EAEjB,MAAMC,EAAiB1qD,GAAuBT,KAAMqpD,GAAkC,MAC/E+B,EAAUC,SAAgBntD,QAAQC,IAAI,CACzCgtD,EACAnrD,KAAKirD,mBAkBT,OAhBIG,EAAS/tB,UAAYguB,EAAOhuB,UACxB58B,GAAuBT,KAAMspD,GAA8B,MAE3DtpD,KAAKyoD,KAAK,UAAW4C,EAAQD,GAEzB3qD,GAAuBT,KAAMqpD,GAAkC,OAAS8B,GACxEprD,GAAuBC,KAAMqpD,GAAkCnrD,QAAQI,QAAQ+sD,GAAS,MAK5FpkD,GAAOnD,WAAW,oBAAoBsnD,EAAS/tB,cAAcguB,EAAOhuB,WAAY,gBAAiB,CAC7F3uB,MAAO,aAIZ08C,EAAStiD,QAAQjB,SAE5BhK,mBACI,MAAM80B,MAAEA,EAAKksB,SAAEA,SAAmB/gD,EAAkB,CAChD60B,MAAO3yB,KAAKiiD,SAAS,UACrBpD,SAAW,WACP,IACI,MAAMA,QAAiBp+C,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CAAEkF,OAAQ,gBACtI,OAAO+B,GAAOtB,UAAUk5C,EAAU,aAEtC,MAAOv9C,IACP,OAAO,MANA,KASf,IAAI+9C,EAAe,KAAMD,EAAuB,KAChD,GAAIzsB,GAASA,EAAM0uB,cAAe,CAI9BjC,EAAuB35C,OAAO,cAE9B,MAAM6lD,SAA2BtrD,KAAKyqC,cAAc6B,UAAU,uCAC1Dgf,IACAlM,QAA6BkM,EAAkBC,eAAevrD,OAElEq/C,EAAgB1sB,EAAM0uB,cAAgB7U,GAAQ4S,EAElD,OAAO,IAAIuB,GAAQ9B,EAAUQ,EAAcD,GAE/CvhD,sBAAsB2tD,GAClB,MAAMpf,QAAgBpsC,KAAKyqC,aAErB3F,EAAU7mC,OAAOoN,OAAO,GAAImgD,QAAgB1tD,EAAkB,CAChEsN,GAAKogD,EAASpgD,GAAKspB,GAAe82B,EAASpgD,GAAIpL,WAAQN,EACvDyL,KAAOqgD,EAASrgD,KAAOupB,GAAe82B,EAASrgD,KAAMnL,WAAQN,KAEjE,OAAO0sC,EAAQ1B,UAAUwZ,mBAAmBpf,GAEhDjnC,kBAAkB4tD,GACd,MAAM/oB,QAAoB1iC,KAAK0rD,gBAAgBD,GAC/C,OAAOxkD,GAAOtB,gBAAgBlF,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CAC/HkF,OAAQ,cAAew9B,YAAAA,IACvB,aAER7kC,WAAW4tD,GACP,MAAMx3B,GAAEA,EAAEovB,SAAEA,SAAmBvlD,EAAkB,CAC7Cm2B,GAAIj0B,KAAK0rD,gBAAgBD,GACzBpI,SAAUrjD,KAAK2rD,aAAaF,EAAIpI,YAEpC,OAAO5iD,GAAuBT,KAAMipD,GAA6B,IAAKW,IAAwBrpD,KAAKP,KAAMi0B,EAAIovB,EAAUoI,EAAInhB,eAAiB,GAAK,GAGrJzsC,mBAAmB+tD,EAAUC,GACzB,MAAM15B,QAAEA,EAAOkxB,SAAEA,SAAmBvlD,EAAkB,CAClDq0B,QAASuC,GAAek3B,GACxBvI,SAAUrjD,KAAK2rD,aAAaE,KAEhC,OAAO5kD,GAAOtB,gBAAgBlF,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CAC/HkF,OAAQ,aAAcitB,QAAAA,EAASkxB,SAAAA,IAC/B,aAERxlD,4BAA4B+tD,EAAUC,GAClC,MAAM15B,QAAEA,EAAOkxB,SAAEA,SAAmBvlD,EAAkB,CAClDq0B,QAASuC,GAAek3B,GACxBvI,SAAUrjD,KAAK2rD,aAAaE,KAEhC,OAAO5kD,GAAOzB,gBAAgB/E,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CAC/HkF,OAAQ,sBAAuBitB,QAAAA,EAASkxB,SAAAA,IACxC,aAERxlD,cAAc+tD,EAAUC,GACpB,MAAM15B,QAAEA,EAAOkxB,SAAEA,SAAmBvlD,EAAkB,CAClDq0B,QAASuC,GAAek3B,GACxBvI,SAAUrjD,KAAK2rD,aAAaE,KAEhC,OAAO32C,SAAczU,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CACtHkF,OAAQ,UAAWitB,QAAAA,EAASkxB,SAAAA,KAGpCxlD,mBAAmB+tD,EAAUE,EAAWD,GACpC,MAAMvI,EAAWr8C,GAAOtB,UAAUmmD,IAC5B35B,QAAEA,EAAOkxB,SAAEA,SAAmBvlD,EAAkB,CAClDq0B,QAASuC,GAAek3B,GACxBvI,SAAUrjD,KAAK2rD,aAAaE,KAEhC,OAAO32C,SAAczU,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CACtHkF,OAAQ,eAAgBitB,QAAAA,EAASmxB,SAAAA,EAAUD,SAAAA,KAInDxlD,2BAA2B0lD,GACvB,MAAM,IAAIpkD,MAIdtB,eAAe80B,GACX,MAAMzmB,SAAgBlM,KAAKyqC,cAAcC,UACnCp8B,QAAe7N,GAAuBT,KAAMipD,GAA6B,IAAKY,IAA4BtpD,KAAKP,KAAM2yB,GAAO,GAClI,OAAc,MAAVrkB,EACO,KAEJpC,EAAOymB,MAAMrkB,EAAQtO,MAEhCnC,+BAA+B80B,GAC3B,MAAMzmB,SAAgBlM,KAAKyqC,cAAcC,UACnCp8B,EAAS7N,GAAuBT,KAAMipD,GAA6B,IAAKY,IAA4BtpD,KAAKP,KAAM2yB,GAAO,GAC5H,OAAc,MAAVrkB,EACO,KAEJpC,EAAOk4C,sBAAsB91C,EAAQtO,MAEhDnC,qBAAqBod,GACjB,MAAM/O,SAAgBlM,KAAKyqC,cAAcC,UACnCp8B,QAAe7N,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CAAEkF,OAAQ,iBAAkB+V,KAAAA,IACtJ,OAAO/O,EAAOi4C,oBAAoB71C,EAAQtO,MAE9CnC,4BAA4Bod,GACxB,MAAM/O,SAAgBlM,KAAKyqC,cAAcC,UACnC4Z,QAAgB7jD,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CAAEkF,OAAQ,wBAAyB+V,KAAAA,IAC9J,GAAe,MAAXqpC,EACA,OAAO,KAIX,GAAwB,MAApBA,EAAQzF,UAAiD,MAA7ByF,EAAQ7B,kBAA2B,CAC/D,MAAMxuB,QAAWxzB,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CAAEkF,OAAQ,iBAAkB+V,KAAAA,IAClJqpC,EAAQ7B,kBAAoBxuB,EAAG4qB,SAEnC,OAAO3yC,EAAOo4C,QAAQA,EAAStkD,MAEnCnC,iBAAiBkD,GAEb,MAAMgiC,GAAUhiC,EAAOgiC,QAAU,IAAI3kC,KAAKW,GAC7B,MAALA,EACO,KAEP+N,MAAMN,QAAQzN,GACPmrD,GAAUnrD,EAAEX,KAAKW,GAAMA,EAAEqH,iBAE7BrH,EAAEqH,gBAEPy7C,EAAa,cAAe9gD,EAAUA,EAAO8gD,eAAYniD,EACzDqsD,EAAS,GAEXhrD,EAAOoxB,UACHrlB,MAAMN,QAAQzL,EAAOoxB,SACrB45B,EAAO55B,QAAUj0B,QAAQC,IAAI4C,EAAOoxB,QAAQ/zB,KAAK4T,GAAM0iB,GAAe1iB,EAAGhS,SAGzE+rD,EAAO55B,QAAUuC,GAAe3zB,EAAOoxB,QAASnyB,OAIxD,MAAMgsD,EAAexsD,IACE,MAAfuB,EAAOvB,KAGXusD,EAAOvsD,GAAOQ,KAAK2rD,aAAa5qD,EAAOvB,MAE3CwsD,EAAY,aACZA,EAAY,WAEZ,MAAMtlD,QAAe5I,EAAkBiuD,GAMvC,GAJIj/C,MAAMN,QAAQ9F,EAAOyrB,UACrBzrB,EAAOyrB,QAAQyM,OAEnBl4B,EAAOq8B,OAASA,EACZ8e,EAAW,CACX,GAAI9gD,EAAOgjD,WAAahjD,EAAOkjD,QAC3B,MAAM,IAAI9kD,MAAM,kBAEpBuH,EAAOm7C,UAAYA,EAEvB,OAAOn7C,EAGX7I,cAAcouD,GACV,MAAM7f,QAAEA,EAAOrrC,OAAEA,SAAiBjD,EAAkB,CAChDsuC,QAASpsC,KAAKyqC,aACd1pC,OAAQf,KAAKksD,WAAWD,KAE5B,aAAcxrD,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CAAEkF,OAAQ,UAAWnE,OAAAA,KAAW3C,KAAK8gB,GAC7IktB,EAAQ1B,UAAU3jC,IAAImY,EAAGlf,QAIxCmsD,aAAa9uB,GACT,OAAOp2B,GAAOnD,WAAW,4CAA6C,wBAAyB,CAC3FY,UAAW,mBAGnB7G,kBAAkBiF,GACd,aAAamnC,GAAYmiB,SAASpsD,KAAM8C,GAE5CjF,gBAAgBiF,GACZ,MAAM6xB,QAAiB30B,KAAKqsD,YAAYvpD,GACxC,OAAI6xB,QACaA,EAAS23B,YAEnB,KAEXzuD,kBAAkBiF,GACd,GAAsB,iBAAV,EAMP,CACD,MAAMqvB,QAAgBrvB,EAAKgwB,aAC3B,OAAe,MAAXX,EACOlrB,GAAOlD,mBAAmB,kCAAmC,OAAQjB,GAEzEqvB,EAXqB,CAC5B,MAAMwC,QAAiB30B,KAAKqsD,YAAYvpD,GACxC,GAAI6xB,EACA,aAAaA,EAAS7B,aAU9B,OAAO,KAEXj1B,oBAAoBs0B,GAChB,MAAM,IAAIhzB,MAGdtB,yBAAyBod,EAAMioC,EAAW,EAAGnd,GACzC,OAAiB,IAAbmd,EACOljD,KAAKkiD,sBAAsBjnC,GAE/B,IAAI/c,SAAQL,MAAOS,EAASiuD,KAC/B,IAAIC,EAAQ,KACZ,MAAM1rD,EAAY,MAAOghD,IACrB,IACI,MAAMwC,QAAgBtkD,KAAKkiD,sBAAsBjnC,GACjD,GAAe,MAAXqpC,GACIxC,EAAcwC,EAAQxC,YAAc,GAAKoB,EAOzC,OANA5kD,EAAQgmD,GACRtkD,KAAKgB,IAAI,QAASF,QACd0rD,IACAC,aAAaD,GACbA,EAAQ,OAMxB,MAAOlrD,GACHwF,QAAQC,IAAI,MAAOzF,GAEvBtB,KAAK0sD,KAAK,QAAS5rD,IAER,MAAXilC,IACAymB,EAAQzyC,YAAW,KACF,MAATyyC,IAGJA,EAAQ,KACRxsD,KAAKgB,IAAI,QAASF,GAClByrD,EAAOtlD,GAAOzD,UAAU,UAAW,UAAW,CAAEq0B,OAAQ,gBACzDkO,IAEPjlC,QAAed,KAAK6iD,qBAG5BhlD,mBAAmBwlD,GACf,MAAM,IAAIlkD,MAGdkpD,cAAcsE,GACV,MAAMH,EAAQ/rD,GAAuBT,KAAMypD,GAA0B,KAAK/oD,IAAIisD,GACzEH,IAGDA,EAAMA,OACNC,aAAaD,EAAMA,OAEvB/rD,GAAuBT,KAAMypD,GAA0B,KAAK/qB,OAAOiuB,IAEvExE,YAAYruB,EAAOiM,EAAU,GACzB,IAAIl8B,EAAI+iD,EACR,MAAMD,GAAW5sD,GAAuBC,KAAMwpD,IAA8BoD,EAAKnsD,GAAuBT,KAAMwpD,GAA6B,KAAM3/C,EAAK+iD,IAAMA,GAAK,KAAM/iD,GACjKgd,EAAO,KACTpmB,GAAuBT,KAAMypD,GAA0B,KAAK/qB,OAAOiuB,GACnE7yB,KAEJ,GAAI95B,KAAK6sD,OACLpsD,GAAuBT,KAAMypD,GAA0B,KAAKjpD,IAAImsD,EAAS,CAAEH,MAAO,KAAM3lC,KAAAA,EAAMimC,KAAM/mB,QAEnG,CACD,MAAMymB,EAAQzyC,WAAW8M,EAAMkf,GAC/BtlC,GAAuBT,KAAMypD,GAA0B,KAAKjpD,IAAImsD,EAAS,CAAEH,MAAAA,EAAO3lC,KAAAA,EAAMimC,KAAMrlB,OAElG,OAAOklB,EAEXI,mBAAmBlmC,GACf,IAAK,MAAMmmC,KAAOvsD,GAAuBT,KAAMkpD,GAAwB,KAAK5pD,SACxEunB,EAAKmmC,EAAIC,YAKjBC,eAAeF,GACX,OAAQA,EAAIpuD,MACR,IAAK,QACL,IAAK,UACD,OAAO,IAAIqrD,GAAoB+C,EAAIpuD,MACvC,IAAK,QACD,OAAO,IAAIqpD,GAAuBjoD,MACtC,IAAK,QACD,OAAO,IAAI+oD,GAAuB/oD,KAAMgtD,EAAIjsD,QAChD,IAAK,cACD,OAAO,IAAI+nD,GAA6B9oD,KAAMgtD,EAAI/xC,MACtD,IAAK,SACD,OAAO,IAAI4tC,GAAwB7oD,KAAMgtD,EAAIjsD,QAErD,MAAM,IAAI5B,MAAM,sBAAsB6tD,EAAIpuD,QAE9CuuD,mBAAmBC,EAAQC,GACvB,IAAK,MAAML,KAAOvsD,GAAuBT,KAAMkpD,GAAwB,KAAK5pD,SACxE,GAAI0tD,EAAIC,aAAeG,EAAQ,CACvBJ,EAAIM,SACJN,EAAIC,WAAW7E,OAEnB4E,EAAIC,WAAaI,EACbL,EAAIM,SACJD,EAAO33C,QAE6D,MAApEjV,GAAuBT,KAAMopD,GAA+B,MAC5DiE,EAAO/E,MAAM7nD,GAAuBT,KAAMopD,GAA+B,MAE7E,OAIZvrD,SAAS6Q,EAAO5N,GACZ,MAAMksD,QAAYvsD,GAAuBT,KAAMipD,GAA6B,IAAKc,IAA0BxpD,KAAKP,KAAM0O,GAStH,OARAs+C,EAAIO,UAAU5qD,KAAK,CAAE7B,SAAAA,EAAU4rD,MAAM,IAChCM,EAAIM,UACLN,EAAIC,WAAWv3C,QACfs3C,EAAIM,SAAU,EAC0D,MAApE7sD,GAAuBT,KAAMopD,GAA+B,MAC5D4D,EAAIC,WAAW3E,MAAM7nD,GAAuBT,KAAMopD,GAA+B,OAGlFppD,KAEXnC,WAAW6Q,EAAO5N,GACd,MAAMksD,QAAYvsD,GAAuBT,KAAMipD,GAA6B,IAAKc,IAA0BxpD,KAAKP,KAAM0O,GAStH,OARAs+C,EAAIO,UAAU5qD,KAAK,CAAE7B,SAAAA,EAAU4rD,MAAM,IAChCM,EAAIM,UACLN,EAAIC,WAAWv3C,QACfs3C,EAAIM,SAAU,EAC0D,MAApE7sD,GAAuBT,KAAMopD,GAA+B,MAC5D4D,EAAIC,WAAW3E,MAAM7nD,GAAuBT,KAAMopD,GAA+B,OAGlFppD,KAEXnC,WAAW6Q,KAAU9I,GACjB,MAAMonD,QAAYvsD,GAAuBT,KAAMipD,GAA6B,IAAKa,IAA0BvpD,KAAKP,KAAM0O,EAAO9I,GAC7H,IAAKonD,EACD,OAAO,EAGX,MAAM5nD,EAAQ4nD,EAAIO,UAAUruD,OAS5B,OARA8tD,EAAIO,UAAYP,EAAIO,UAAUxsD,QAAO,EAAGD,SAAAA,EAAU4rD,KAAAA,MAC9C,MAAMt5B,EAAU,IAAIzyB,EAAaX,KAAO0sD,EAAO,KAAO5rD,EAAW4N,GACjE,IACI5N,EAASP,KAAKP,QAAS4F,EAAMwtB,GAEjC,MAAO9xB,IACP,OAAQorD,KAEJtnD,EAAQ,EAEpBvH,oBAAoB6Q,GAChB,GAAIA,EAAO,CACP,MAAMs+C,QAAYvsD,GAAuBT,KAAMipD,GAA6B,IAAKa,IAA0BvpD,KAAKP,KAAM0O,GACtH,OAAKs+C,EAGEA,EAAIO,UAAUruD,OAFV,EAIf,IAAIsuD,EAAQ,EACZ,IAAK,MAAMD,UAAEA,KAAe9sD,GAAuBT,KAAMkpD,GAAwB,KAAK5pD,SAClFkuD,GAASD,EAAUruD,OAEvB,OAAOsuD,EAEX3vD,gBAAgB6Q,GACZ,GAAIA,EAAO,CACP,MAAMs+C,QAAYvsD,GAAuBT,KAAMipD,GAA6B,IAAKa,IAA0BvpD,KAAKP,KAAM0O,GACtH,OAAKs+C,EAGEA,EAAIO,UAAUnvD,KAAI,EAAG0C,SAAAA,KAAeA,IAFhC,GAIf,IAAI4F,EAAS,GACb,IAAK,MAAM6mD,UAAEA,KAAe9sD,GAAuBT,KAAMkpD,GAAwB,KAAK5pD,SAClFoH,EAASA,EAAO2O,OAAOk4C,EAAUnvD,KAAI,EAAG0C,SAAAA,KAAeA,KAE3D,OAAO4F,EAEX7I,UAAU6Q,EAAO5N,GACb,MAAMksD,QAAYvsD,GAAuBT,KAAMipD,GAA6B,IAAKa,IAA0BvpD,KAAKP,KAAM0O,GACtH,IAAKs+C,EACD,OAAOhtD,KAEX,GAAIc,EAAU,CACV,MAAMpC,EAAQsuD,EAAIO,UAAUnvD,KAAI,EAAG0C,SAAAA,KAAeA,IAAU+D,QAAQ/D,GAChEpC,GAAS,GACTsuD,EAAIO,UAAUppB,OAAOzlC,EAAO,GASpC,OANKoC,GAAqC,IAAzBksD,EAAIO,UAAUruD,SACvB8tD,EAAIM,SACJN,EAAIC,WAAW7E,OAEnB3nD,GAAuBT,KAAMkpD,GAAwB,KAAKxqB,OAAOsuB,EAAI3C,MAElErqD,KAEXnC,yBAAyB6Q,GACrB,GAAIA,EAAO,CACP,MAAM27C,IAAEA,EAAGiD,QAAEA,EAAOL,WAAEA,SAAqBxsD,GAAuBT,KAAMipD,GAA6B,IAAKc,IAA0BxpD,KAAKP,KAAM0O,GAC3I4+C,GACAL,EAAW7E,OAEf3nD,GAAuBT,KAAMkpD,GAAwB,KAAKxqB,OAAO2rB,QAGjE,IAAK,MAAOA,GAAKiD,QAAEA,EAAOL,WAAEA,MAAiBxsD,GAAuBT,KAAMkpD,GAAwB,KAC1FoE,GACAL,EAAW7E,OAEf3nD,GAAuBT,KAAMkpD,GAAwB,KAAKxqB,OAAO2rB,GAGzE,OAAOrqD,KAGXnC,kBAAkB6Q,EAAO5N,GACrB,aAAad,KAAK4oD,GAAGl6C,EAAO5N,GAGhCjD,qBAAqB6Q,EAAO5N,GACxB,OAAOd,KAAKgB,IAAI0N,EAAO5N,GAI3BjD,iBAEImC,KAAKytD,qBAEL,IAAK,MAAMd,KAAWlsD,GAAuBT,KAAMypD,GAA0B,KAAKzrD,OAC9EgC,KAAKqoD,cAAcsE,GAGvBE,aAAW,OAA4E,MAApEpsD,GAAuBT,KAAMopD,GAA+B,KACnFd,MAAMC,GACF,GAAwE,MAApE9nD,GAAuBT,KAAMopD,GAA+B,KAAc,CAC1E,GAAI3oD,GAAuBT,KAAMopD,GAA+B,QAAUb,EACtE,OAEJ,OAAOthD,GAAOnD,WAAW,yCAA0C,wBAAyB,CACxFY,UAAW,UAGnB1E,KAAK+sD,oBAAoB5rC,GAAMA,EAAEmnC,MAAMC,KACvCxoD,GAAuBC,KAAMopD,KAAiCb,EAAiB,KAC/E,IAAK,MAAMiE,KAAS/rD,GAAuBT,KAAMypD,GAA0B,KAAKnqD,SAExEktD,EAAMA,OACNC,aAAaD,EAAMA,OAGvBA,EAAMM,KAAOrlB,KAAY+kB,EAAMM,KAGvCtE,SACI,GAAwE,MAApE/nD,GAAuBT,KAAMopD,GAA+B,KAAhE,CAGAppD,KAAK+sD,oBAAoB5rC,GAAMA,EAAEqnC,WACjCzoD,GAAuBC,KAAMopD,GAA+B,KAAM,KAClE,IAAK,MAAMoD,KAAS/rD,GAAuBT,KAAMypD,GAA0B,KAAKnqD,SAAU,CAEtF,IAAIymC,EAAUymB,EAAMM,KAChB/mB,EAAU,IACVA,EAAU,GAGdymB,EAAMM,KAAOrlB,KAEb1tB,WAAWyyC,EAAM3lC,KAAMkf,MAwGnC,SAAS2nB,GAAahnD,EAAQgP,GAC1B,IACI,MAAMP,EAAQw4C,GAAYjnD,EAAQgP,GAClC,GAAIP,EACA,OAAOskB,GAAatkB,GAG5B,MAAO7T,IACP,OAAO,KAEX,SAASqsD,GAAYjnD,EAAQgP,GACzB,GAAe,OAAXhP,EACA,OAAO,KAEX,IACI,MAAMC,EAASM,GAAOzB,UAAUiQ,GAAU/O,EAAQgP,EAAOA,EAAQ,KAC3DxW,EAAS+H,GAAOzB,UAAUiQ,GAAU/O,EAAQC,EAAQA,EAAS,KACnE,OAAO8O,GAAU/O,EAAQC,EAAS,GAAIA,EAAS,GAAKzH,GAExD,MAAOoC,IACP,OAAO,KAEX,SAAS8nC,GAAOrrC,GACZ,MAAM2I,EAASmJ,GAAQ9R,GACvB,GAAI2I,EAAOxH,OAAS,GAChB,MAAM,IAAIC,MAAM,+BAEpB,MAAMkqC,EAAS,IAAI7iC,WAAW,IAE9B,OADA6iC,EAAO7oC,IAAIkG,EAAQ,GAAKA,EAAOxH,QACxBmqC,EAEX,SAASC,GAASvrC,GACd,GAAKA,EAAMmB,OAAS,IAAQ,EACxB,OAAOnB,EAEX,MAAM2I,EAAS,IAAIF,WAA0C,GAA/BoS,KAAKC,KAAK9a,EAAMmB,OAAS,KAEvD,OADAwH,EAAOlG,IAAIzC,GACJ2I,EAzIXwiD,GAAyB,IAAIznD,QAAW0nD,GAA4B,IAAI1nD,QAAW2nD,GAAgC,IAAI3nD,QAAW4nD,GAAmC,IAAI5nD,QAAW6nD,GAA+B,IAAI7nD,QAAW8nD,GAAiC,IAAI9nD,QAAW+nD,GAA8B,IAAI/nD,QAAWgoD,GAA2B,IAAIhoD,QAAWioD,GAAoC,IAAIjoD,QAAWwnD,GAA8B,IAAI3iD,QAAWqjD,GAEzc9rD,eAAyCioC,GAErC,MAAMukB,EAAML,GAAOlkB,EAAI5gC,OAAQ4gC,GAC/B,IAAI8nB,EAAUntD,GAAuBT,KAAMupD,GAAgC,KAAK7oD,IAAI2pD,GAUpF,OATKuD,IACDA,EAAU5tD,KAAK6tD,SAAS/nB,GACxBrlC,GAAuBT,KAAMupD,GAAgC,KAAK/oD,IAAI6pD,EAAKuD,GAC3E7zC,YAAW,KACHtZ,GAAuBT,KAAMupD,GAAgC,KAAK7oD,IAAI2pD,KAASuD,GAC/EntD,GAAuBT,KAAMupD,GAAgC,KAAK7qB,OAAO2rB,KAE9E,YAEMuD,GACdhE,GAAyB/rD,eAAe+rD,EAAuB31B,EAAIovB,EAAUyK,GACxEA,GAjyBmB,IAkyBnB7mD,GAAOnD,WAAW,0CAA2C,iBAAkB,CAC3E+zB,OAAQ,qBACR6K,YAAazkC,OAAOoN,OAAO,GAAI4oB,EAAI,CAAEovB,SAAAA,EAAU/Y,gBAAgB,MAGvE,MAAM5H,EAA0BzO,EAChC,IACI,OAAO/e,SAAclV,KAAK6tD,SAAS,CAAE3oD,OAAQ,OAAQw9B,YAAAA,EAAa2gB,SAAAA,KAEtE,MAAO/hD,GAEH,IAAKtB,KAAK0qD,iBAAmBlpD,EAAgBF,IAAUwsD,GAAW,GAAkB,WAAbzK,GAA2C,MAAlB3gB,EAAYt3B,IAA8C,eAAhCqK,GAAUnU,EAAMqT,KAAM,EAAG,GAAqB,CACpK,MAAMA,EAAOrT,EAAMqT,KACbo5C,QAAiBr5B,GAAegO,EAAYt3B,GAAIpL,MAEtD,IAAIguD,EACJ,IACIA,EA8HhB,SAA6Br5C,GACzB,MAAMjO,EAAS,CACXkkD,OAAQ,GAAID,KAAM,GAAI1f,SAAU,GAAIvK,SAAU,GAAI0gB,UAAW,GAAI9e,UAAW,IAEhF,GAAI9sB,GAAWb,GAAQ,IACnB,MAAM,IAAIxV,MAAM,oCAEpB,MAAMyrD,EAASn1C,GAAUd,EAAM,EAAG,IAClC,GAAIc,GAAUm1C,EAAQ,EAAG,MAAQn1C,GAAU9E,GAAO,EAAG,IACjD,MAAM,IAAIxR,MAAM,iCAEpBuH,EAAOkkD,OAASn1C,GAAUm1C,EAAQ,IAElC,IACI,MAAMD,EAAO,GACPsD,EAAahnD,GAAOzB,UAAUiQ,GAAUd,EAAM,GAAI,KAClDu5C,EAAajnD,GAAOzB,UAAUiQ,GAAUd,EAAMs5C,EAAYA,EAAa,KACvEE,EAAW14C,GAAUd,EAAMs5C,EAAa,IAC9C,IAAK,IAAIrwC,EAAI,EAAGA,EAAIswC,EAAYtwC,IAAK,CACjC,MAAMqoB,EAAMynB,GAAaS,EAAc,GAAJvwC,GACnC,GAAW,MAAPqoB,EACA,MAAM,IAAI9mC,MAAM,SAEpBwrD,EAAKhoD,KAAKsjC,GAEdv/B,EAAOikD,KAAOA,EAElB,MAAOrpD,GACH,MAAM,IAAInC,MAAM,+BAGpB,IACI,MAAM8rC,EAAW0iB,GAAYh5C,EAAM,IACnC,GAAgB,MAAZs2B,EACA,MAAM,IAAI9rC,MAAM,SAEpBuH,EAAOukC,SAAWA,EAEtB,MAAO3pC,GACH,MAAM,IAAInC,MAAM,mCAGpB,GAAIsW,GAAUd,EAAM,IAAK,OAASc,GAAU9E,GAAO,EAAG,IAClD,MAAM,IAAIxR,MAAM,4CAEpBuH,EAAOg6B,SAAWjrB,GAAUd,EAAM,GAAI,KAEtC,IACI,MAAMysC,EAAYuM,GAAYh5C,EAAM,KACpC,GAAiB,MAAbysC,EACA,MAAM,IAAIjiD,MAAM,SAEpBuH,EAAO06C,UAAYA,EAEvB,MAAO9/C,GACH,MAAM,IAAInC,MAAM,oCAGpB,OADAuH,EAAO47B,UAAY,0CAA0CxjC,MAAM,KAAKV,KAAKC,GAAMqI,EAAOrI,KACnFqI,EAxLgB0nD,CAAoB34C,GAAUnU,EAAMqT,KAAM,IAEzD,MAAOrT,GACH,OAAO2F,GAAOnD,WAAWxC,EAAMmC,QAAS,iBAAkB,CACtDo0B,OAAQ,WACR6K,YAAAA,EAAazgC,KAAM,CAAE0S,KAAAA,KAI7B,GAAIq5C,EAASpD,OAAOxkD,gBAAkB2nD,EAAS3nD,cAC3C,OAAOa,GAAOnD,WAAW,4BAA6B,iBAAkB,CACpE6Q,KAAAA,EAAM+tB,YAAAA,EACNF,eAAgB,sDAChBD,UAAW,iBACXD,UAAW0rB,EAAS1rB,YAG5B,MAAM+rB,QAAmBruD,KAAKsuD,cAAc5rB,EAAasrB,EAAS/iB,SAAU+iB,EAASrD,MACrF,OAAkB,MAAd0D,EACOpnD,GAAOnD,WAAW,iCAAkC,iBAAkB,CACzE+zB,OAAQ,eACR6K,YAAAA,EAAazgC,KAAM,CAAE0S,KAAMrT,EAAMqT,KAAM2tB,UAAW0rB,EAAS1rB,aAG5D7hC,GAAuBT,KAAMipD,GAA6B,IAAKW,GAAwBrpD,KAAKP,KAAM,CACrGoL,GAAI2iD,EACJp5C,KAAMU,GAAO,CACT24C,EAASttB,SAAU6I,GAAY,CAAC8kB,EAAYL,EAAS5M,eAE1DiC,EAAUyK,EAAU,GAE3B,MAAMxsD,IAEXuoD,GAA6BhsD,eAA0C80B,EAAO47B,GAC7E,MAAMriD,SAAgBlM,KAAKyqC,cAAcC,UACzC,OAAIp2B,GAAYqe,EAAO,UACNlyB,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CAC9GkF,OAAQ,WAAY28C,UAAWlvB,EAAO47B,oBAAAA,UAGjC9tD,GAAuBT,KAAMipD,GAA6B,IAAKU,IAA2BppD,KAAKP,KAAM,CAC9GkF,OAAQ,WAAYm+C,SAAUn3C,EAAOm3C,SAAS1wB,GAAQ47B,oBAAAA,KAE3DzE,GAA2BjsD,eAAwC6Q,EAAO8/C,GACzE,IAAIxB,QAAY7C,GAAgBz7C,EAAO1O,MAMvC,MAHiB,UAAbgtD,EAAIpuD,MAAoB4vD,GAAYA,EAAStvD,OAAS,IAA6B,IAAxBsvD,EAAS,GAAGzM,UACvEiL,QAAY7C,GAAgB,CAAEzI,OAAQ,WAAY36C,IAAKynD,EAAS,IAAMxuD,OAEnES,GAAuBT,KAAMkpD,GAAwB,KAAKxoD,IAAIssD,EAAI3C,MAAQ,MAClFN,GAA2BlsD,eAAwC6Q,GAClE,MAAM+/C,QAAqBtE,GAAgBz7C,EAAO1O,MAE5CqqD,EAAMoE,EAAapE,IACzB,IAAI2C,EAAMvsD,GAAuBT,KAAMkpD,GAAwB,KAAKxoD,IAAI2pD,GACxE,IAAK2C,EAAK,CAINA,EAAM,CAAEC,WAHWjtD,KAAKktD,eAAeuB,GAGnBpE,IAAAA,EAAKqE,eAFF,IAAIjtD,QAEcktD,QADzB,IAAI13C,IAC8Bq2C,SAAS,EAAOC,UAAW,IAC7E9sD,GAAuBT,KAAMkpD,GAAwB,KAAK1oD,IAAI6pD,EAAK2C,GAEvE,OAAOA,GAyCX,MAAM4B,GAAQ,IAAIpoD,WAAW,IAE7B,SAAS+iC,GAAYj0B,GACjB,MAAM5O,EAAS,GACf,IAAI8iC,EAAY,EAEhB,IAAK,IAAIvqC,EAAI,EAAGA,EAAIqW,EAAMpW,OAAQD,IAC9ByH,EAAO/D,KAAKisD,IACZplB,GAAa,GAEjB,IAAK,IAAIvqC,EAAI,EAAGA,EAAIqW,EAAMpW,OAAQD,IAAK,CACnC,MAAM0V,EAAO1N,GAAO3B,SAASgQ,EAAMrW,IAEnCyH,EAAOzH,GAAKmqC,GAAOI,GAEnB9iC,EAAO/D,KAAKymC,GAAOz0B,EAAKzV,SACxBwH,EAAO/D,KAAK2mC,GAAS30B,IACrB60B,GAAa,GAAmC,GAA9B5wB,KAAKC,KAAKlE,EAAKzV,OAAS,IAE9C,OAAOmW,GAAO3O,GAElB,MAAMiK,GAAQ,qECj9Bd,IAWIk+C,GAA2BC,GAA+BC,GAAyBC,GAAuBC,GAA8BC,GAXxIzuD,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAEpFF,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAMjG,MAAMoxD,GACTvuD,YAAYspC,GACR2kB,GAA0BtrD,IAAIvD,MAC9BZ,EAAiBY,KAAM,CAAEkqC,SAAWA,GAAY,OAEpDrsC,iBAAiBwlD,GACb,OAAO5iD,GAAuBT,KAAM6uD,GAA2B,IAAKC,IAA+BvuD,KAAKP,KAAM,cAAcovD,mBAAmBpvD,KAAK8yB,aAAcuwB,GAEtKxlD,0BAA0BwlD,GACtB,OAAO5iD,GAAuBT,KAAM6uD,GAA2B,IAAKC,IAA+BvuD,KAAKP,KAAM,uBAAuBqvD,4BAA4BrvD,KAAK8yB,aAAcuwB,GAExLxlD,kBAAkBo2B,GACd,OAAOxzB,GAAuBT,KAAM6uD,GAA2B,IAAKC,IAA+BvuD,KAAKP,KAAM,eAAesvD,kBAAkB7uD,GAAuBT,KAAM6uD,GAA2B,IAAKE,IAAyBxuD,KAAKP,KAAMi0B,IAEpPp2B,WAAWo2B,GACP,OAAOxzB,GAAuBT,KAAM6uD,GAA2B,IAAKC,IAA+BvuD,KAAKP,KAAM,QAAQO,WAAWE,GAAuBT,KAAM6uD,GAA2B,IAAKE,IAAyBxuD,KAAKP,KAAMi0B,IAEtOp2B,0BAA0Bo2B,GACtB,MAAMiW,EAAWzpC,GAAuBT,KAAM6uD,GAA2B,IAAKC,IAA+BvuD,KAAKP,KAAM,uBAExH,IAAIqJ,EAAMpL,OAAOoN,OAAO,GAAI4oB,GAS5B,GARc,MAAV5qB,EAAI+B,KACJ/B,EAAI+B,GAAK8+B,EAAStV,YAAYvrB,EAAI+B,IAAIqC,MAAMrC,GAC9B,MAANA,EACOnE,GAAOlD,mBAAmB,yCAA0C,QAASsF,EAAI+B,IAErFA,KAGC,MAAZ/B,EAAI8B,KAAc,CAClB,MAAMA,EAAO9B,EAAI8B,KACjB9B,EAAI8B,KAAOjN,QAAQC,IAAI,CACnB6B,KAAK8yB,aACL9yB,KAAK40B,YAAYzpB,KAClBsC,MAAK,EAAE0kB,EAAShnB,KACVA,GAAQgnB,EAAQ/rB,gBAAkB+E,EAAK/E,cAGrC+rB,EAFIlrB,GAAOlD,mBAAmB,4BAA6B,UAAWoH,KAcrF,OATiB,MAAb9B,EAAI8qB,QACJ9qB,EAAI8qB,MAAQn0B,KAAKuvD,uBAErBlmD,EAAMvL,EAAkBuL,GACJ,MAAhBA,EAAIy1C,WACJz1C,EAAIy1C,SAAW5U,EAASolB,YAAYjmD,IAExCA,EAAMvL,EAAkBuL,SAEXvL,EAAkBuL,GAEnCxL,kBAAkBiF,GACd,MAAMonC,EAAWzpC,GAAuBT,KAAM6uD,GAA2B,IAAKC,IAA+BvuD,KAAKP,KAAM,eACxH,aAAakqC,EAAStV,YAAY9xB,GAEtCjF,sBAAsBo2B,GAClB,MAAMiW,EAAWzpC,GAAuBT,KAAM6uD,GAA2B,IAAKC,IAA+BvuD,KAAKP,KAAM,mBAClHwvD,EAAQhQ,GAAYr0C,WAAWnL,KAAKyvD,oBAAoBx7B,IAC9D,aAAaiW,EAASwlB,2BAA2B1vD,KAAK2vD,gBAAgBH,KAG9EX,GAA4B,IAAIvoD,QAAWwoD,GAAgC,SAAuCpqD,GAC9G,OAAI1E,KAAKkqC,SACElqC,KAAKkqC,SAETjjC,GAAOnD,WAAW,mBAAoB,wBAAyB,CAAEY,UAAAA,KACzEqqD,GAA0BlxD,eAAuCo2B,GAEhE,MAAM27B,EAAU,GAChB,GAAe,OAFf37B,EAAKh2B,OAAOoN,OAAO,GAAI4oB,IAEhB9oB,KAAc,CACjB,MAAMA,EAAO8oB,EAAG9oB,KAChBykD,EAAQjtD,KAAKzE,QAAQC,IAAI,CACrB6B,KAAK8yB,aACL9yB,KAAK40B,YAAYzpB,KAClBsC,MAAK,EAAE0kB,EAAShnB,MACVA,GAAQgnB,EAAQ/rB,gBAAkB+E,EAAK/E,eACxCa,GAAOlD,mBAAmB,4BAA6B,UAAWoH,GAEtE8oB,EAAG9oB,KAAOgnB,MAIlB,aADMj0B,QAAQC,IAAIyxD,GACX37B,GAEJ,MAAM47B,WAAmBV,GAC5BvuD,YAAYuxB,EAAS+X,GACjB97B,MAAM87B,GACN8kB,GAAsBzrD,IAAIvD,MAC1BZ,EAAiBY,KAAM,CAAEmyB,QAAAA,IAE7Bt0B,mBAAqB,OAAOmC,KAAKmyB,QACjC29B,QAAQ5lB,GACJ,OAAO,IAAI2lB,GAAW7vD,KAAKmyB,QAAS+X,GAExCrsC,sBAAsBo2B,GAClBxzB,GAAuBT,KAAMgvD,GAAuB,IAAKC,IAA8B1uD,KAAKP,KAAM,eAAgB,mBAEtHnC,kBAAkB4F,GACdhD,GAAuBT,KAAMgvD,GAAuB,IAAKC,IAA8B1uD,KAAKP,KAAM,WAAY,eAElHnC,oBAAoBuhC,EAAQvgC,EAAOd,GAC/B0C,GAAuBT,KAAMgvD,GAAuB,IAAKC,IAA8B1uD,KAAKP,KAAM,aAAc,kBAGxHgvD,GAAwB,IAAI1oD,QAAW2oD,GAA+B,SAAsC3kD,EAAQ5F,GAChH,OAAOuC,GAAOnD,WAAW,0BAA0BwG,IAAU,wBAAyB,CAClF5F,UAAAA,KAGD,MAAMqrD,WAAsBZ,GAE/BvuD,YAAYovD,GACR5hD,MAAM4hD,EAAO9lB,UACbglB,GAAsB1uD,IAAIR,UAAM,GAChCD,GAAuBC,KAAMkvD,GAAuBc,EAAQ,KAEhEnyD,mBACI,aAAa4C,GAAuBT,KAAMkvD,GAAuB,KAAKp8B,aAE1Eg9B,QAAQ5lB,GACJ,OAAO,IAAI6lB,GAActvD,GAAuBT,KAAMkvD,GAAuB,KAAKY,QAAQ5lB,IAE9FrsC,sBAAsBo2B,GAClB,aAAaxzB,GAAuBT,KAAMkvD,GAAuB,KAAKS,gBAAgB17B,GAE1Fp2B,sBAAsBo2B,GAClB,aAAaxzB,GAAuBT,KAAMkvD,GAAuB,KAAKe,gBAAgBh8B,GAE1Fp2B,kBAAkB4F,GACd,aAAahD,GAAuBT,KAAMkvD,GAAuB,KAAKgB,YAAYzsD,GAEtF5F,oBAAoBuhC,EAAQvgC,EAAOd,GAC/B,aAAa0C,GAAuBT,KAAMkvD,GAAuB,KAAKiB,cAAc/wB,EAAQvgC,EAAOd,IAG3GmxD,GAAwB,IAAIztD,QCtJ5B,MAAM2uD,GAAQ,IAAIzoD,IACX,SAAS0oD,GAAoBC,GAC5BF,GAAM9vD,IAAIgwD,KAGdF,GAAM7sD,IAAI+sD,GACVxpD,QAAQC,IAAI,8BACZD,QAAQC,IAAI,6BAA6BupD,yCACzCxpD,QAAQC,IAAI,IACZD,QAAQC,IAAI,6EACZD,QAAQC,IAAI,sEACZD,QAAQC,IAAI,IACZD,QAAQC,IAAI,2EACZD,QAAQC,IAAI,0EACZD,QAAQC,IAAI,iFACZD,QAAQC,IAAI,IACZD,QAAQC,IAAI,sDACZD,QAAQC,IAAI,+BClBhB,IAWIwpD,GAA+BC,GAA8BC,GAAqCC,GAA4BC,GAA6BC,GAA0BC,GAA8BC,GAXnN/wD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAOjF,MAAM8wD,GACTnwD,YAAYspC,GACRqmB,GAA8BhtD,IAAIvD,MAClCwwD,GAA6BhwD,IAAIR,UAAM,GACvCywD,GAAoCjwD,IAAIR,UAAM,GAC9C0wD,GAA2BlwD,IAAIR,UAAM,GACrC2wD,GAA4BnwD,IAAIR,UAAM,GACtCD,GAAuBC,KAAMwwD,GAA8BtmB,EAAU,KACrEnqC,GAAuBC,KAAMywD,GAAqC,KAAM,KACxE1wD,GAAuBC,KAAM0wD,GAA4BjwD,GAAuBT,KAAMuwD,GAA+B,IAAKK,IAA0B/2C,KAAK7Z,MAAO,KAChKD,GAAuBC,KAAM2wD,GAA6B,KAAM,KAEpEK,WAAW9mB,GACP,MAAM,IAAI/qC,MAAM,iCAEpB8xD,aAAa/mB,EAAUxjC,GACnB,MAAM,IAAIvH,MAAM,iCAEpB+xD,SAAShnB,GACL,MAAM,IAAI/qC,MAAM,iCAEpBuW,QAAUjV,GAAuBT,KAAMuwD,GAA+B,IAAKK,IAA0BrwD,KAAKP,MAAO,GACjHooD,OACI3nD,GAAuBT,KAAMuwD,GAA+B,IAAKM,IAA8BtwD,KAAKP,MACpGS,GAAuBT,KAAMwwD,GAA8B,KAAKxvD,IAAI,QAASP,GAAuBT,KAAM0wD,GAA4B,MAE1IpI,MAAMC,GACEA,GACA9nD,GAAuBT,KAAMuwD,GAA+B,IAAKM,IAA8BtwD,KAAKP,MAExGS,GAAuBT,KAAMwwD,GAA8B,KAAKxvD,IAAI,QAASP,GAAuBT,KAAM0wD,GAA4B,MAE1IlI,SAAWxoD,KAAK0V,SAEpB86C,GAA+B,IAAI/uD,QAAWgvD,GAAsC,IAAIhvD,QAAWivD,GAA6B,IAAIjvD,QAAWkvD,GAA8B,IAAIlvD,QAAW8uD,GAAgC,IAAIjqD,QAAWsqD,GAA2B/yD,eAAwCikD,GAC1S,IACkF,MAA1ErhD,GAAuBT,KAAMywD,GAAqC,MAClE1wD,GAAuBC,KAAMywD,GAAqCzwD,KAAKgxD,WAAWvwD,GAAuBT,KAAMwwD,GAA8B,MAAO,KAExJ,MAAMW,QAAiB1wD,GAAuBT,KAAMywD,GAAqC,KACzF,GAAgB,MAAZU,EAEA,YADA1wD,GAAuBT,KAAMwwD,GAA8B,KAAKrD,mBAAmBntD,KAAMA,KAAKkxD,SAASzwD,GAAuBT,KAAMwwD,GAA8B,OAGtK,MAAMpkB,QAAgB3rC,GAAuBT,KAAMwwD,GAA8B,KAAK/lB,aAItF,GAHKhqC,GAAuBT,KAAM2wD,GAA6B,MAC3D5wD,GAAuBC,KAAM2wD,GAA6BvkB,EAAS,KAEnE3rC,GAAuBT,KAAM2wD,GAA6B,KAAKtzB,UAAY+O,EAAQ/O,QACnF,MAAM,IAAIl+B,MAAM,iBAEpB,MAAMuH,QAAejG,GAAuBT,KAAMwwD,GAA8B,KAAKY,KAAK,uBAAwB,CAACD,UAC7GnxD,KAAKixD,aAAaxwD,GAAuBT,KAAMwwD,GAA8B,KAAM9pD,GAE7F,MAAOpF,GACHwF,QAAQC,IAAI,QAASzF,GAEzBb,GAAuBT,KAAMwwD,GAA8B,KAAK9D,KAAK,QAASjsD,GAAuBT,KAAM0wD,GAA4B,OACxIG,GAA+B,WAC9B,MAAMQ,EAAkB5wD,GAAuBT,KAAMywD,GAAqC,KACtFY,IACAtxD,GAAuBC,KAAMywD,GAAqC,KAAM,KACxEY,EAAgB5jD,MAAM0jD,IAClB1wD,GAAuBT,KAAMwwD,GAA8B,KAAKY,KAAK,sBAAuB,CAACD,SAIlG,MAAMG,WAAgCP,GACzCnwD,YAAYspC,EAAUnpC,GAvE1B,IAAciM,EAwENoB,MAAM87B,GACN4mB,GAA+BtwD,IAAIR,UAAM,GACzCD,GAAuBC,KAAM8wD,IA1EvB9jD,EA0E4DjM,EAzE/D4C,KAAK4I,MAAM5I,KAAKC,UAAUoJ,KAyE8C,KAE/EkkD,SAAShnB,GACL,OAAO,IAAI6e,GAAuB7e,EAAUzpC,GAAuBT,KAAM8wD,GAAgC,MAE7GjzD,iBAAiBqsC,GACb,MAAMinB,QAAiBjnB,EAASknB,KAAK,gBAAiB,CAAC3wD,GAAuBT,KAAM8wD,GAAgC,OAEpH,OADAhqD,QAAQC,IAAI,UAAWoqD,GAChBA,EAEXtzD,mBAAmBqsC,EAAUqnB,GACzB,MAAMnlB,QAAgBlC,EAASO,aAC/B,IAAK,MAAM/jC,KAAU6qD,EAAS,CAC1B,MAAMxqD,EAAMqlC,EAAQ1B,UAAU3jC,IAAIL,EAAQwjC,GAC1CA,EAASue,KAAKhoD,GAAuBT,KAAM8wD,GAAgC,KAAM/pD,KAI7F+pD,GAAiC,IAAIrvD,QAC9B,MAAM+vD,WAAkCT,GAC3ClzD,iBAAiBqsC,GACb,aAAaA,EAASknB,KAAK,kCAAmC,IAElEvzD,mBAAmBqsC,EAAUqnB,GACzB,MAAMnlB,QAAgBlC,EAASO,aAC/B,IAAK,MAAM/jC,KAAU6qD,EACjBrnB,EAASue,KAAK,UAAWrc,EAAQ1B,UAAUzvB,KAAKvU,KC/G5D,IAWI+qD,GAA4BC,GAA6BC,GAA0BC,GAXnF7xD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAkBxF,MAAM4xD,GAAY,+CAA+C/yD,MAAM,MAEvE,SAASgzD,GAAS/zD,GACd,GAAa,MAATA,GAAiB8zD,GAAUhtD,mBAA2B,EACtD,OAAO9G,EAGX,GAAkC,mBAAtBA,EAAgB,WACxB,OAAOA,EAEX,GAAI+O,MAAMN,QAAQzO,GACd,OAAQA,EAAMK,IAAI0zD,IAEtB,GAAuB,iBAAX,EACR,OAAO7zD,OAAOD,KAAKD,GAAOQ,QAAO,CAACC,EAAOgB,KACrChB,EAAMgB,GAAOzB,EAAMyB,GACZhB,IACR,IAEP,MAAM,IAAIW,MAAM,sBAAsBpB,mBAE1C,SAASg0D,GAAah0D,GAClB,OAAIA,EACOA,EAAMqI,cAEVrI,EAKX,MAAMi0D,GAAiB,CAGnBC,SAAS,EAETC,aAAe,GAAK,GAEpBC,eAAgB,KAGb,MAAMC,GACTxxD,YAAYspC,EAAU/X,GAClB/yB,EAAiBY,KAAM,CAAEkqC,SAAAA,EAAU/X,QAAAA,IAEvC29B,QAAQ5lB,GACJ,OAAOjjC,GAAOnD,WAAW,iCAAkC,wBAAyB,CAChFY,UAAW,mBAGnB7G,mBACI,OAAOmC,KAAKmyB,QAEhBt0B,mBACI,aAAamC,KAAKkqC,SAASO,aAE/B5sC,mBACI,aAAamC,KAAKkqC,SAASmoB,aAE/Bx0D,kBAAkBo2B,GACd,aAAaj0B,KAAKkqC,SAASolB,YAAYr7B,GAE3Cp2B,WAAWo2B,GACP,aAAaj0B,KAAKkqC,SAAS3pC,KAAK0zB,GAEpCp2B,kBAAkBiF,GACd,aAAa9C,KAAKkqC,SAAStV,YAAY9xB,GAE3CjF,iBAAiBwlD,GACb,aAAarjD,KAAKkqC,SAASklB,aAAapvD,KAAKmyB,SAEjDt0B,0BAA0BwlD,GACtB,aAAarjD,KAAKkqC,SAASmlB,sBAAsBrvD,KAAKmyB,SAI1Dt0B,+BAA+B4tD,GAC3B,MAAMx3B,EAAK69B,GAASrG,GACd1+C,EAAW,GAEjB,GAAIknB,EAAG9oB,KAAM,CACT,MAAMkpB,EAAQJ,EAAG9oB,KACjB4B,EAASpK,KAAK,WACV,MAAMwI,QAAaupB,GAAeL,EAAOr0B,KAAKkqC,UAClC,MAAR/+B,GAAgBA,EAAK/E,gBAAkBpG,KAAKmyB,QAAQ/rB,eACpDa,GAAOlD,mBAAmB,wBAAyB,cAAe0nD,GAEtEx3B,EAAG9oB,KAAOA,GALA,SASd8oB,EAAG9oB,KAAOnL,KAAKmyB,QAWnB,GANmB,MAAf8B,EAAG6qB,UACH/xC,EAASpK,KAAK,WACVsxB,EAAG6qB,eAAiB9+C,KAAKkqC,SAASolB,YAAYrxD,OAAOoN,OAAOpN,OAAOoN,OAAO,GAAI4oB,GAAK,CAAE9oB,KAAMnL,KAAKmyB,YADtF,IAKL,MAAT8B,EAAG7oB,GAAY,CACf,MAAMknD,EAAMr+B,EAAG7oB,GACf2B,EAASpK,KAAK,WACVsxB,EAAG7oB,SAAWspB,GAAe49B,EAAKtyD,KAAKkqC,WAD7B,IAKdn9B,EAAS7N,cACHhB,QAAQC,IAAI4O,GAEtB,MAAMwlD,EAAQvyD,KAAKkqC,SAASsoB,kBAAkBv+B,GAC9C,OAAOj0B,KAAKkqC,SAASknB,KAAK,sBAAuB,CAACmB,IAEtD10D,sBAAsBo2B,GAElB,MAAM6tB,QAAoB9hD,KAAKkqC,SAAS2Y,iBAElC5nC,QAAajb,KAAKyyD,yBAAyBx+B,GAIjD,iBAAkB/1B,SAAQ,CAACI,EAASiuD,KAChC,MAAMmG,EAAW,CAAC,IAAM,KAClBC,EAAU90D,UAEZ,MAAMo2B,QAAWj0B,KAAKkqC,SAASqX,eAAetmC,GACpC,MAANgZ,EAKJj0B,KAAKkqC,SAASie,aAAY,KAAQwK,MAAcD,EAASrpD,OAAS,KAJ9D/K,EAAQ0B,KAAKkqC,SAAS8gB,iBAAiB/2B,EAAIhZ,EAAM6mC,KAMzD6Q,OAGR90D,sBAAsB4tD,GAClB,MAAMx3B,EAAK69B,GAASrG,GAEpB,GAAIx3B,EAAG9oB,KAAM,CACT,MAAMA,QAAaupB,GAAeT,EAAG9oB,KAAMnL,KAAKkqC,UAChD,GAAY,MAAR/+B,GAAgBA,EAAK/E,gBAAkBpG,KAAKmyB,QAAQ/rB,cACpD,OAAOa,GAAOlD,mBAAmB,wBAAyB,cAAe0nD,GAE7Ex3B,EAAG9oB,KAAOA,OAGV8oB,EAAG9oB,KAAOnL,KAAKmyB,QAEnB,MAAMogC,EAAQvyD,KAAKkqC,SAASsoB,kBAAkBv+B,GAC9C,aAAaj0B,KAAKkqC,SAASknB,KAAK,uBAAwB,CAACmB,IAE7D10D,kBAAkB+0D,GACd,MAAMnvD,EAAkC,iBAAtB,EAAkCu1B,GAAY45B,GAAYA,EAC5E,aAAa5yD,KAAKkqC,SAASknB,KAAK,gBAAiB,CAC7Cl8C,GAAQzR,GAAUzD,KAAKmyB,QAAQ/rB,gBAGvCvI,oBAAoBuhC,EAAQvgC,EAAO2Q,GAC/B,MAAMzR,EAAQ+zD,GAAStiD,GAEjBqjD,QAAkB70B,GAAiB80B,aAAa1zB,EAAQvgC,EAAOd,GAAOF,MAAOE,IAC/E,MAAMo0B,QAAgBuC,GAAe32B,GACrC,OAAe,MAAXo0B,EACOlrB,GAAOlD,mBAAmB,0CAA2C,QAAShG,GAElFo0B,KAEX,aAAanyB,KAAKkqC,SAASknB,KAAK,uBAAwB,CACpDpxD,KAAKmyB,QAAQ/rB,cACbzC,KAAKC,UAAUo6B,GAAiB+0B,WAAWF,EAAUzzB,OAAQvgC,EAAOg0D,EAAU90D,UAGtFF,aAAakf,GACT,OAAO/c,KAAKkqC,SAASknB,KAAK,yBAA0B,CAChDpxD,KAAKmyB,QAAQ/rB,cAAe2W,EAAU,OAI9Clf,yBAAyB+0D,GACrB,MAAMnvD,EAAkC,iBAAtB,EAAkCu1B,GAAY45B,GAAYA,EAC5E,aAAa5yD,KAAKkqC,SAASknB,KAAK,WAAY,CACxCpxD,KAAKmyB,QAAQ/rB,cAAe8O,GAAQzR,MAIzC,MAAMuvD,WAA2BxI,GACpC5pD,YAAYwrC,GACRh+B,MAAMg+B,GACNqlB,GAA2BjxD,IAAIR,UAAM,GACrC0xD,GAA4BlxD,IAAIR,UAAM,GACtCD,GAAuBC,KAAMyxD,GAA4B,EAAG,KAC5D1xD,GAAuBC,KAAM0xD,GAA6BzzD,OAAOoN,OAAO,GAAI2mD,IAAiB,KAEjGiB,YAAYzzD,GACR,OAAOiB,GAAuBT,KAAM0xD,GAA6B,KAAKlyD,GAE1E0zD,YAAYh+B,GAER,IAAK,MAAMhZ,KAAQgZ,EAAS,CACxB,MAAM11B,EAAM0c,EACNne,EAAQm3B,EAAQ11B,GACtB,UAAY,UAAmBiB,GAAuBT,KAAM0xD,GAA6B,KAAKlyD,GAC1F,OAAOyH,GAAOlD,mBAAmB,uBAAwB,WAAWvE,IAAOzB,GAInF,IAAK,MAAMme,KAAQgZ,EAAS,CACxB,MAAM11B,EAAM0c,EACZzb,GAAuBT,KAAM0xD,GAA6B,KAAKlyD,GAAQ01B,EAAQ11B,IAGvF2zD,eAAejuD,EAAQoJ,GACnB,IAAIzE,EAAI+iD,EACR,MAAO,CACH1nD,OAAAA,EAAQoJ,OAAAA,EAAQqtB,IAAK57B,GAAuBC,KAAMyxD,IAA6B7E,EAAKnsD,GAAuBT,KAAMyxD,GAA4B,KAAM5nD,EAAK+iD,IAAMA,GAAK,KAAM/iD,GAAKupD,QAAS,OAO/Lv1D,WAAWqH,EAAQoJ,GAEf,MAAM,IAAInP,MAAM,iCAEpBtB,gBAAgBs0B,EAAU,GACtB,MAAMia,QAAgBpsC,KAAKyqC,aACrB4oB,QAAiBrzD,KAAKoxD,KAAK,eAAgB,IAEjD,GAAyB,iBAAb,EAAuB,CAC/B,GAAIj/B,EAAUkhC,EAASn0D,OACnB,MAAM,IAAIC,MAAM,mBAEpB,OAAO,IAAIizD,GAAcpyD,KAAMqzD,EAASlhC,IAG5CA,EAAUia,EAAQ1B,UAAUvY,QAAQA,GACpC,IAAK,MAAMmhC,KAAWD,EAClB,GAAIjnB,EAAQ1B,UAAUvY,QAAQmhC,KAAaA,EACvC,OAAO,IAAIlB,GAAcpyD,KAAMszD,GAGvC,MAAM,IAAIn0D,MAAM,mBAIpBtB,uBACI,OAAOkoD,GAAQ56C,KAAKlE,GAAOtB,gBAAgB3F,KAAK6tD,SAAS,CAAE3oD,OAAQ,cAEvEgoD,eAAeF,GAEX,MAAiB,YAAbA,EAAIpuD,KACG,IAAI4yD,GAA0BxxD,MAExB,UAAbgtD,EAAIpuD,KACG,IAAI0yD,GAAwBtxD,KAAMgtD,EAAIjsD,QAIhC,WAAbisD,EAAIpuD,MAA2C,aAAtBouD,EAAIjsD,OAAO2gD,OAC7B,IAAIuI,GAAoB,UAE5B77C,MAAM8+C,eAAeF,GAEhCwF,kBAAkBv+B,GACd,MAAMvtB,EAAS,GAuBf,MArBA,CAAC,UAAW,WAAY,WAAY,OAAQ,eAAgB,uBAAwB,QAAS,SAASkB,SAASpI,IAC3G,GAAe,MAAXy0B,EAAGz0B,GACH,OAEJ,IAAI+zD,EAAS/zD,EACD,aAARA,IACA+zD,EAAS,OAEb7sD,EAAO6sD,GAAUn+C,GAAS6e,EAAGz0B,OAGjC,CAAC,OAAQ,KAAM,QAAQoI,SAASpI,IACb,MAAXy0B,EAAGz0B,KAGPkH,EAAOlH,GAAO0V,GAAQ+e,EAAGz0B,QAGzBy0B,EAAGqrB,aACH54C,EAAmB,WAAIo3C,GAAc7pB,EAAGqrB,aAErC54C,EAEX8sD,cAAc1tB,GACV,OAAQA,EAAI5gC,QACR,IAAK,UACD,MAAO,CAAEA,OAAQ,cAAeU,KAAM,IAC1C,IAAK,iBACD,MAAO,CAAEV,OAAQ,kBAAmBU,KAAM,IAC9C,IAAK,cACD,MAAO,CAAEV,OAAQ,eAAgBU,KAAM,IAC3C,IAAK,aACD,MAAO,CACHV,OAAQ,iBACRU,KAAM,CAACmsD,GAAajsB,EAAI3T,SAAU2T,EAAIud,WAE9C,IAAK,sBACD,MAAO,CACHn+C,OAAQ,0BACRU,KAAM,CAACmsD,GAAajsB,EAAI3T,SAAU2T,EAAIud,WAE9C,IAAK,UACD,MAAO,CACHn+C,OAAQ,cACRU,KAAM,CAACmsD,GAAajsB,EAAI3T,SAAU2T,EAAIud,WAE9C,IAAK,eACD,MAAO,CACHn+C,OAAQ,mBACRU,KAAM,CACFmsD,GAAajsB,EAAI3T,SAChB,KAAO2T,EAAIwd,SAASx5C,SAAS,IAC9Bg8B,EAAIud,WAGhB,IAAK,kBACD,MAAO,CACHn+C,OAAQ,yBACRU,KAAM,CAACkgC,EAAI2tB,oBAEnB,IAAK,WACD,GAAI,aAAc3tB,EACd,MAAO,CACH5gC,OAAQ,uBACRU,KAAM,CAACkgC,EAAIud,WAAYvd,EAAIyoB,sBAG9B,GAAI,cAAezoB,EACpB,MAAO,CACH5gC,OAAQ,qBACRU,KAAM,CAACkgC,EAAI+b,YAAa/b,EAAIyoB,sBAGpC,MACJ,IAAK,iBACD,MAAO,CACHrpD,OAAQ,2BACRU,KAAM,CAACkgC,EAAI7qB,OAEnB,IAAK,wBACD,MAAO,CACH/V,OAAQ,4BACRU,KAAM,CAACkgC,EAAI7qB,OAEnB,IAAK,OACD,MAAO,CACH/V,OAAQ,WACRU,KAAM,CAAC5F,KAAKwyD,kBAAkB1sB,EAAIpD,aAAcoD,EAAIud,WAE5D,IAAK,cACD,MAAO,CACHn+C,OAAQ,kBACRU,KAAM,CAAC5F,KAAKwyD,kBAAkB1sB,EAAIpD,eAG1C,IAAK,UASD,OARIoD,EAAI/kC,QAAgC,MAAtB+kC,EAAI/kC,OAAOoxB,UACrBrlB,MAAMN,QAAQs5B,EAAI/kC,OAAOoxB,SACzB2T,EAAI/kC,OAAOoxB,QAAU2T,EAAI/kC,OAAOoxB,QAAQ/zB,IAAI2zD,IAG5CjsB,EAAI/kC,OAAOoxB,QAAU4/B,GAAajsB,EAAI/kC,OAAOoxB,UAG9C,CAAEjtB,OAAQ,cAAeU,KAAM,CAACkgC,EAAI/kC,SAEnD,OAAO,KAEX2yD,YAAYxuD,EAAQU,EAAMtE,GACtB,GAAe,aAAX4D,EAAuB,CACvB,MAAMwB,EAASitD,GAAYryD,GAC3B,OAAIoF,EAGOO,GAAOzD,UAAU,0CAA2C,iBAAkB,CACjFmR,KAAMjO,EAAOiO,KACb+tB,YAAa98B,EAAK,KAGnBqB,GAAOzD,UAAU,2CAA4C,iBAAkB,CAClFmR,KAAM,KAAM+tB,YAAa98B,EAAK,GAAI3D,KAAM,CAAEX,MAAAA,KAKlD,MAAMmC,EAAUE,KAAKC,UA8K7B,SAAwB7F,GACpB,MAAM2I,EAAS,GAEf,OADAktD,GAAgB71D,EAAO2I,GAChBA,EAjL4BmtD,CAAevyD,IAC9C,OAAImC,EAAQgD,MAAM,iDACPQ,GAAOzD,UAAU,oDAAqD,qBAAsB,CAC/Fk/B,YAAa98B,EAAK,KAGtBnC,EAAQgD,MAAM,UAAYhD,EAAQgD,MAAM,WACjCQ,GAAOzD,UAAU,8BAA+B,gBAAiB,CACpEk/B,YAAa98B,EAAK,KAItBnC,EAAQgD,MAAM,4BAA8BhD,EAAQgD,MAAM,eACnDQ,GAAOzD,UAAU,0BAA2B,0BAA2B,CAC1Ek/B,YAAa98B,EAAK,KAGtBnC,EAAQgD,MAAM,yBACPQ,GAAOzD,UAAU,gDAAiD,wBAAyB,CAC9FkB,UAAWQ,EAAQjD,KAAM,CAAEygC,YAAa98B,EAAK,MAGtC,gBAAXV,GAA4BzB,EAAQgD,MAAM,gFACnCQ,GAAOzD,UAAU,4EAA6E,0BAA2B,CAC5Hk/B,YAAa98B,EAAK,KAGnBtE,EAEXzD,eAAeioC,GAGX,GAAmB,SAAfA,EAAI5gC,QAAoC,gBAAf4gC,EAAI5gC,OAA0B,CACvD,IAAI+uB,EAAK6R,EAAIpD,YACb,GAAIzO,GAAiB,MAAXA,EAAGr1B,MAAgBqI,GAAOtB,UAAUsuB,EAAGr1B,OAEtB,MAAnBq1B,EAAGorB,cAAmD,MAA3BprB,EAAGmrB,qBAA8B,CAC5D,MAAM0U,QAAgB9zD,KAAKqyD,aACC,MAAxByB,EAAQzU,cAAwD,MAAhCyU,EAAQ1U,uBAExCtZ,EAAM7nC,OAAOoN,OAAO,GAAIy6B,EAAK,CACzBpD,YAAazkC,OAAOoN,OAAO,GAAI4oB,EAAI,CAAEr1B,UAAMc,QAM/D,MAAMolC,EAAU9kC,KAAKwzD,cAAc1tB,GACnC,GAAe,MAAXhB,EAAiB,CACjB9kC,KAAKyoD,KAAK,QAAS,CAAE7pD,KAAM,cAAekmC,QAAAA,IAC1C,IACI,MAAMp+B,QAAe1G,KAAKoxD,KAAKtsB,EAAQ5/B,OAAQ4/B,EAAQl/B,MAGvD,OADA5F,KAAKyoD,KAAK,QAAS,CAAE7pD,KAAM,cAAe8H,OAAAA,IACnCA,EAEX,MAAOpF,GAEH,MADAtB,KAAKyoD,KAAK,QAAS,CAAE7pD,KAAM,WAAY0C,MAAAA,IACjCtB,KAAK0zD,YAAY5uB,EAAQ5/B,OAAQ4/B,EAAQl/B,KAAMtE,IAG7D,OAAO8M,MAAMy/C,SAAS/nB,IAG9B2rB,GAA6B,IAAIhwD,QAAWiwD,GAA8B,IAAIjwD,QACvE,MAAMsyD,WAAwBf,GACjCpyD,YAAYqlC,EAAKmG,GACF,MAAPnG,IACAA,EAAM,yBAEV73B,MAAMg+B,GACNulB,GAAyBnxD,IAAIR,UAAM,GACnC4xD,GAAiCpxD,IAAIR,UAAM,GACtB,iBAAT,EACRD,GAAuBC,KAAM2xD,GAA0B,CAAE7sB,QAAS,IAAI8B,GAAaX,IAAQ,MAG3FlmC,GAAuBC,KAAM2xD,GAA0B1zD,OAAOoN,OAAO,GAAI46B,GAAM,KAC/ExlC,GAAuBT,KAAM2xD,GAA0B,KAAK7sB,QAAUrkC,GAAuBT,KAAM2xD,GAA0B,KAAK7sB,QAAQh8B,SAE9I/I,GAAuBC,KAAM4xD,GAAkC,IAAM,KAEzE/zD,WAAWqH,EAAQoJ,GA/dvB,IAAcvQ,EAAAA,EAgeQuQ,EAAdA,EA/dG3K,KAAK4I,MAAM5I,KAAKC,UAAU7F,IAie7B,MAAM6pC,EAAa3pC,OAAOoN,OAAO,GAAI5K,GAAuBT,KAAM2xD,GAA0B,MAC5F/pB,EAAW9C,QAAU8C,EAAW9C,QAAQh8B,QACxC8+B,EAAW9C,QAAQD,KAAO7kC,KAAKmzD,eAAejuD,EAAQoJ,GACtD,MAAM02B,QAAiB2C,GAAUC,GACjC5C,EAASY,WACT,MAAMl/B,EAASs+B,EAASC,SACxB,MAAI,UAAWv+B,EACJO,GAAOnD,WAAW,sBAAuB,gBAAiB,CAC7D4C,OAAAA,IAGDA,EAAOA,OAEdwhD,sBAAoB,OAAOznD,GAAuBT,KAAM4xD,GAAkC,KAC1F1J,oBAAgBnqD,GAChB,IAAKwG,OAAOC,UAAUzG,IAAUA,EAAQ,EACpC,MAAM,IAAIoB,MAAM,oBAEpBY,GAAuBC,KAAM4xD,GAAkC7zD,EAAO,KACtEiC,KAAK+sD,oBAAoBC,KAvdjC,SAAoBjvD,GAChB,OAAQA,GAA4C,iBAA3BA,EAAqB,iBAudlCi2D,CAAWhH,KACXA,EAAI9E,gBAAkBznD,GAAuBT,KAAM4xD,GAAkC,UAKrGD,GAA2B,IAAIlwD,QAAWmwD,GAAmC,IAAInwD,QAK1E,MAAMwyD,WAA8BF,GACvCnzD,YAAYqlC,EAAKmG,GACbh+B,MAAM63B,EAAKmG,GACXhtC,EAAiBY,KAAM,CAAEosC,QAAAA,IAE7BvuC,uBACI,OAAOmC,KAAKosC,SAGpB,SAASunB,GAAY51D,GACjB,GAAa,MAATA,EACA,OAAO,KAGX,GAA+B,iBAAnBA,EAAa,SAAkBA,EAAM0F,QAAQgD,MAAM,aAAe6N,GAAYvW,EAAM4W,MAC5F,MAAO,CAAElR,QAAS1F,EAAM0F,QAASkR,KAAM5W,EAAM4W,MAGjD,GAAuB,iBAAX,EAAqB,CAC7B,IAAK,MAAMnV,KAAOzB,EAAO,CACrB,MAAM2I,EAASitD,GAAY51D,EAAMyB,IACjC,GAAIkH,EACA,OAAOA,EAGf,OAAO,KAGX,GAAuB,iBAAX,EACR,IACI,OAAOitD,GAAYhwD,KAAK4I,MAAMxO,IAElC,MAAOuD,IAEX,OAAO,KAEX,SAASsyD,GAAgB71D,EAAO2I,GAC5B,GAAa,MAAT3I,EAAJ,CAQA,GAJ+B,iBAAnBA,EAAa,SACrB2I,EAAO/D,KAAK5E,EAAM0F,SAGC,iBAAX,EACR,IAAK,MAAMjE,KAAOzB,EACd61D,GAAgB71D,EAAMyB,GAAMkH,GAIpC,GAAuB,iBAAX,EACR,IACI,OAAOktD,GAAgBjwD,KAAK4I,MAAMxO,GAAQ2I,GAE9C,MAAOpF,MC5kBf,MAAM4yD,GAAgB,mEAYf,MAAMC,WAAqBF,GAC9BrzD,YAAY6pD,EAAW,YAAa2J,GAChC,MAAMhoB,EAAU2Z,GAAQ56C,KAAKs/C,GACf,MAAV2J,IACAA,EAASF,IAGb9lD,MADmB+lD,GAAaE,cAAcjoB,EAASgoB,GACrChoB,GAClBhtC,EAAiBY,KAAM,CAAEo0D,OAAAA,IAEzBhmD,MAAM8kD,YAAY,CAAEjB,SAAS,IAEjC9F,aAAa9uB,GACT,IACI,OAAO,IAAI82B,GAAa92B,EAASr9B,KAAKo0D,QAE1C,MAAO9yD,IACP,OAAO8M,MAAM+9C,aAAa9uB,GAE9Bp3B,qBAAqBmmC,EAASgoB,GACZ,MAAVA,IACAA,EAASF,IAEb,MAAMpvB,EAAU,IAAI8B,GAAa,WAlCzC,SAAiB9jC,GACb,OAAQA,GACJ,IAAK,YACD,MAAO,mBACX,IAAK,QACD,MAAO,uBACX,IAAK,WACD,MAAO,wBAEf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAWjB,GAyBlBwxD,CAAQloB,EAAQtpC,SAASsxD,KACtEtvB,EAAQkC,WAAY,EAOpB,MAAO,CAAElC,QAAAA,EAASqD,cANItqC,MAAOinC,EAASE,EAAU8oB,KACxCsG,IAAWF,IACX7D,GAAoB,iBAEjB,IAIfkE,sBACI,OAAQv0D,KAAKo0D,SAAWF,IC9ChC,MAAMA,GAAgB,mCA4Bf,MAAMM,WAAwBP,GACjCrzD,YAAY6pD,EAAW,YAAa2J,GAChC,MAAMhoB,EAAU2Z,GAAQ56C,KAAKs/C,GACf,MAAV2J,IACAA,EAASF,IAEb9lD,MAAMomD,GAAgBH,cAAcjoB,EAASgoB,GAAShoB,GACtDhtC,EAAiBY,KAAM,CAAEo0D,OAAAA,IAE7BjI,aAAa9uB,GACT,IACI,OAAO,IAAIm3B,GAAgBn3B,EAASr9B,KAAKo0D,QAE7C,MAAO9yD,IACP,OAAO8M,MAAM+9C,aAAa9uB,GAE9Bk3B,sBACI,OAAQv0D,KAAKo0D,SAAWF,GAE5BjuD,qBAAqBmmC,EAASgoB,GACZ,MAAVA,IACAA,EAASF,IAEb,MAAMpvB,EAAU,IAAI8B,GAAa,WAlDzC,SAAiB9jC,GACb,OAAQA,GACJ,IAAK,YACD,MAAO,4BACX,IAAK,UACD,MAAO,4BACX,IAAK,UACD,MAAO,4BACX,IAAK,SACD,MAAO,2BACX,IAAK,QACD,MAAO,0BACX,IAAK,QACD,MAAO,gCACX,IAAK,WACD,MAAO,+BACX,IAAK,WACD,MAAO,4BACX,IAAK,mBACD,MAAO,4BACX,IAAK,WACD,MAAO,4BACX,IAAK,iBACD,MAAO,0BAEf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAWjB,GAyBlBwxD,CAAQloB,EAAQtpC,YAAYsxD,KACzEtvB,EAAQkC,WAAY,EAOpB,MAAO,CAAElC,QAAAA,EAASqD,cANItqC,MAAOinC,EAASE,EAAU8oB,KACxCsG,IAAWF,IACX7D,GAAoB,YAEjB,KC5DZ,MAAMoE,WAA2BR,GACpCrzD,YAAY6pD,EAAW,aACnB,MAAMre,EAAU2Z,GAAQ56C,KAAKs/C,GAC7B,GAAqB,cAAjBre,EAAQtpC,KACR,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAW0mD,GAEvEr8C,MAAM,8BAAgCg+B,ICG9C,MACMsoB,GAAoB,+BACnB,MAAMC,WAAwBzP,GACjCtkD,YAAYg0D,EAASC,GACjBzmD,MAAMsmD,IAENt1D,EAAiBY,KAAM,CAAE40D,QAAAA,EAASC,gBAAAA,IAEtC/rD,QACI,OAAO,IAAI6rD,GAAgB30D,KAAK40D,QAAS50D,KAAK60D,kBAG/C,MAAMC,WAA0BtK,GACnC5pD,YAAY6pD,EAAU2J,GAClBhmD,QACA,MAAMg+B,EAAU2Z,GAAQ56C,KAAKs/C,GAC7B,GAAc,MAAV2J,EAAgB,CAChB,MAAMvpB,EAASuB,EAAQE,UAAUooB,IAE7BN,EADAvpB,EACSA,EAAOgqB,gBAnBV,qCAyBdz1D,EAAiBY,KAAM,CAAEo0D,OAAAA,EAAQhoB,QAAAA,IAEjCpsC,KAAK+0D,aAETA,aACI,MAAMlqB,EAAS7qC,KAAKosC,QAAQE,UAAUooB,IACtC,GAAI7pB,EACA,OAAOA,EAAO+pB,QAElB,OAAQ50D,KAAKosC,QAAQtpC,MACjB,IAAK,YACD,MAAO,2BACX,IAAK,UACD,MAAO,mCACX,IAAK,UACD,MAAO,mCACX,IAAK,QACD,MAAO,iCACX,IAAK,SACD,MAAO,kCAGf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAW/D,KAAKosC,SAE5EvG,OAAOlsB,EAAQrL,GACX,MAAM0mD,EAAQ/2D,OAAOD,KAAKsQ,GAAQ/P,QAAO,CAACC,EAAOgB,KAC7C,MAAMzB,EAAQuQ,EAAO9O,GAIrB,OAHa,MAATzB,IACAS,GAAS,IAAIgB,KAAOzB,KAEjBS,IACR,IACG41D,EAAWp0D,KAAW,OAAI,WAAWA,KAAKo0D,SAAW,GAC3D,MAAO,GAAGp0D,KAAK+0D,2BAA2Bp7C,IAASq7C,IAAQZ,IAE/Da,aACI,MAAO,GAAGj1D,KAAK+0D,mBAEnBG,YAAYv7C,EAAQrL,GAGhB,OAFAA,EAAOqL,OAASA,EAChBrL,EAAO6mD,OAASn1D,KAAKo0D,OACd9lD,EAEXzQ,sBACI,OAAOmC,KAAKosC,QAEhBvuC,YAAY8b,EAAQrL,EAAQ8mD,GACxB,MAAMnvB,EAAOmvB,EAAOp1D,KAAKi1D,aAAej1D,KAAK6lC,OAAOlsB,EAAQrL,GACtD8kB,EAAWgiC,EAAOp1D,KAAKk1D,YAAYv7C,EAAQrL,GAAU,KAQrDw2B,EAAU,IAAI8B,GAAaX,GAC3B2B,EAAa,CACf9C,QAAAA,EACAmD,qBAAsB,IACtBI,gBAAiBxqC,MAAOinC,EAASE,KAC7B,MAAMt+B,EAASs+B,EAASU,UAAY/hC,KAAK4I,MAAMktB,GAAauL,EAASH,OAAS,GACxEW,GAAwC,iBAAnB9+B,EAAa,OAAkBA,EAAOA,OAAS,IAAIN,cAAcvB,QAAQ,eAAiB,EAYrH,MAXe,UAAX8U,EAEIjT,GAA2B,GAAjBA,EAAO+/B,QAAiC,SAAlB//B,EAAOjD,SAAsB+hC,GAC7DR,EAASM,mBAAmB5+B,EAAOA,QAInC8+B,GACAR,EAASM,mBAAmB5+B,EAAOA,QAGpCs+B,IAGX5R,IACA0R,EAAQmC,UAAU,eAAgB,oDAClCnC,EAAQD,KAAO5mC,OAAOD,KAAKo1B,GAASh1B,KAAKC,GAAM,GAAGA,KAAK+0B,EAAQ/0B,OAAMwF,KAAK,MAE9E,MAAMmhC,QAAiB2C,GAAUC,GAEjC,GADA5C,EAASY,YACJZ,EAASU,UACV,MAAM,IAAIvmC,MAUd,MAAMuH,EAAS/C,KAAK4I,MAAMktB,GAAauL,EAASH,OAChD,GAAe,UAAXlrB,EAAoB,CACpB,GAAsB,OAAlBjT,EAAO0sD,QAAkB,CAEzB,MAAM9xD,EAAQ,IAAInC,MAAM,oBAExB,MADAmC,EAAMoF,OAAS/C,KAAKC,UAAU8C,GACxBpF,EAEV,GAAIoF,EAAOpF,MAAO,CAEd,MAAMA,EAAQ,IAAInC,MAAMuH,EAAOpF,MAAMmC,SAAW,iBAOhD,MANIiD,EAAOpF,MAAMC,OACbD,EAAMC,KAAOmF,EAAOpF,MAAMC,MAE1BmF,EAAOpF,MAAMqT,OACbrT,EAAMqT,KAAOjO,EAAOpF,MAAMqT,MAExBrT,EAEV,OAAOoF,EAAOA,OAId,GAAqB,GAAjBA,EAAO+/B,SAAmC,qBAAnB//B,EAAOjD,SAAqD,0BAAnBiD,EAAOjD,SACvE,OAAOiD,EAAOA,OAElB,GAAqB,GAAjBA,EAAO+/B,QAAiC,MAAlB//B,EAAOjD,QAAiB,CAC9C,MAAMnC,EAAQ,IAAInC,MAAM,oBAKxB,MAJAmC,EAAMoF,OAAS/C,KAAKC,UAAU8C,GAIxBpF,EAEV,OAAOoF,EAAOA,OAItB2uD,wBAAwB3yB,GACpB,MAAMh8B,EAAS,GACf,IAAK,IAAIlH,KAAOkjC,EAAa,CACzB,GAAwB,MAApBA,EAAYljC,GACZ,SAEJ,IAAIzB,EAAQ2kC,EAAYljC,GACZ,SAARA,GAA4B,IAAVzB,IAQlBA,EAJA,CAAEa,MAAM,EAAMkgD,UAAU,EAAMD,UAAU,EAAMyW,aAAa,EAAMlW,sBAAsB,EAAMjrB,OAAO,EAAMp2B,OAAO,GAAOyB,GAChH4V,GAASF,GAAQnX,IAEZ,eAARyB,EACG,IAAMQ,KAAKosC,QAAQ1B,UAAU4U,WAAWvhD,GAAOK,KAAKoC,GACjD,aAAaA,EAAI2xB,0BAA0B3xB,EAAIo9C,YAAY/5C,KAAK,cACxEA,KAAK,KAAO,IAGPqR,GAAQnX,GAEpB2I,EAAOlH,GAAOzB,GAElB,OAAO2I,EAEX6uD,YAAYzvB,EAAKxkC,EAAOohC,GAoEpB,MAAMphC,EAEVzD,uBACI,OAAOmC,KAAKosC,QAEhBvuC,eAAeioC,GACX,OAAQA,EAAI5gC,QACR,IAAK,UACD,OAAOlF,KAAKosC,QAAQ/O,QACxB,IAAK,iBACD,OAAOr9B,KAAKumC,MAAM,QAAS,CAAEivB,OAAQ,oBACzC,IAAK,cACD,OAAOx1D,KAAKumC,MAAM,QAAS,CAAEivB,OAAQ,iBACzC,IAAK,aAED,OAAOx1D,KAAKumC,MAAM,UAAW,CACzBivB,OAAQ,UACRrjC,QAAS2T,EAAI3T,QACbk4B,IAAKvkB,EAAIud,WAEjB,IAAK,sBACD,OAAOrjD,KAAKumC,MAAM,QAAS,CACvBivB,OAAQ,0BACRrjC,QAAS2T,EAAI3T,QACbk4B,IAAKvkB,EAAIud,WAEjB,IAAK,UACD,OAAOrjD,KAAKumC,MAAM,QAAS,CACvBivB,OAAQ,cACRrjC,QAAS2T,EAAI3T,QACbk4B,IAAKvkB,EAAIud,WAEjB,IAAK,eACD,OAAOrjD,KAAKumC,MAAM,QAAS,CACvBivB,OAAQ,mBACRrjC,QAAS2T,EAAI3T,QACbmxB,SAAUxd,EAAIwd,SACd+G,IAAKvkB,EAAIud,WAEjB,IAAK,kBACD,OAAOrjD,KAAKumC,MAAM,QAAS,CACvBivB,OAAQ,yBACR1lD,IAAKg2B,EAAI2tB,oBACV,GAAMtpB,OAAO7oC,GACLtB,KAAKu1D,YAAYzvB,EAAKxkC,EAAOwkC,EAAI2tB,qBAEhD,IAAK,WACD,MAAI,aAAc3tB,EACP9lC,KAAKumC,MAAM,QAAS,CACvBivB,OAAQ,uBACRnL,IAAKvkB,EAAIud,SACTgB,QAAUve,EAAIyoB,oBAAsB,OAAS,UAG9CtnD,GAAOnD,WAAW,mDAAoD,wBAAyB,CAClGY,UAAW,wBAEnB,IAAK,iBACD,OAAO1E,KAAKumC,MAAM,QAAS,CACvBivB,OAAQ,2BACRC,OAAQ3vB,EAAI7qB,OAEpB,IAAK,wBACD,OAAOjb,KAAKumC,MAAM,QAAS,CACvBivB,OAAQ,4BACRC,OAAQ3vB,EAAI7qB,OAEpB,IAAK,OAAQ,CACT,GAAqB,WAAjB6qB,EAAIud,SACJ,MAAM,IAAIlkD,MAAM,wDAEpB,MAAMu2D,EAAW11D,KAAKq1D,wBAAwBvvB,EAAIpD,aAClDgzB,EAAS/7C,OAAS,QAClB+7C,EAASF,OAAS,WAClB,IACI,aAAax1D,KAAKumC,MAAM,QAASmvB,GAAU,GAE/C,MAAOp0D,GACH,OAAOtB,KAAKu1D,YAAYzvB,EAAKxkC,EAAOwkC,EAAIpD,cAGhD,IAAK,cAAe,CAChB,MAAMgzB,EAAW11D,KAAKq1D,wBAAwBvvB,EAAIpD,aAClDgzB,EAAS/7C,OAAS,QAClB+7C,EAASF,OAAS,kBAClB,IACI,aAAax1D,KAAKumC,MAAM,QAASmvB,GAAU,GAE/C,MAAOp0D,GACH,OAAOtB,KAAKu1D,YAAYzvB,EAAKxkC,EAAOwkC,EAAIpD,eA2DpD,OAAOt0B,MAAMy/C,SAAS/nB,GAE1BjoC,mBACI,OAAOmC,KAAKosC,QAEhBvuC,sBACI,MAA0B,cAAtBmC,KAAKosC,QAAQtpC,KACN,EAEJqQ,kBAAkBnT,KAAKumC,MAAM,QAAS,CAAEivB,OAAQ,cAAeG,QAE1EpB,sBACI,MAAM1pB,EAAS7qC,KAAKosC,QAAQE,UAAUooB,IACtC,OAAI7pB,EACQA,EAAOgqB,kBAAoB70D,KAAKo0D,OA7Z9B,uCA+ZYp0D,KAAKo0D,QCravC,MAAMwB,GAAmB,mCA4BlB,MAAMC,WAAuB5B,GAChCrzD,YAAY6pD,EAAW,YAAaqL,EAAWC,GAC3C,MAAM3pB,EAAU2Z,GAAQ56C,KAAKs/C,GACZ,MAAbqL,IACAA,EAAYF,IAEK,MAAjBG,IACAA,EAAgB,MAGpB3nD,MADmBynD,GAAexB,cAAcjoB,EAAS0pB,EAAWC,GAClD3pB,GAClBhtC,EAAiBY,KAAM,CAAE81D,UAAAA,EAAWC,cAAAA,IAExC5J,aAAa9uB,GACT,IACI,OAAO,IAAIw4B,GAAex4B,EAASr9B,KAAK81D,UAAW91D,KAAK+1D,eAE5D,MAAOz0D,IACP,OAAO8M,MAAM+9C,aAAa9uB,GAE9Bp3B,qBAAqBmmC,EAAS0pB,EAAWC,GACpB,MAAbD,IACAA,EAAYF,IAEK,MAAjBG,IACAA,EAAgB,MAEpB,MAAMjxB,EAAU,IAAI8B,GAAa,WAtDzC,SAAiB9jC,GACb,OAAQA,GACJ,IAAK,YACD,MAAO,oBACX,IAAK,UACD,MAAO,oBACX,IAAK,UACD,MAAO,oBACX,IAAK,QACD,MAAO,kBACX,IAAK,SACD,MAAO,mBACX,IAAK,QACD,MAAO,4BACX,IAAK,WACD,MAAO,2BACX,IAAK,WACD,MAAO,6BACX,IAAK,iBACD,MAAO,2BACX,IAAK,WACD,MAAO,6BACX,IAAK,mBACD,MAAO,6BAEf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAWjB,GA6BlBwxD,CAAQloB,EAAQtpC,YAAYgzD,KACzEhxB,EAAQkC,WAAY,EAChB+uB,GACAjxB,EAAQqC,eAAe,GAAI4uB,GAQ/B,MAAO,CAAEjxB,QAAAA,EAASqD,cANItqC,MAAOinC,EAASE,EAAU8oB,KACxCgI,IAAcF,IACdvF,GAAoB,mBAEjB,IAIfkE,sBACI,OAAQv0D,KAAK81D,YAAcF,ICpEnC,MAAMI,GAAgB,CAClBC,UAAW,2BACXC,QAAS,2BACTC,QAAS,2BACTC,OAAQ,4BAeZ,SAASC,GAAgBjqB,EAASkqB,EAAQC,EAAsBC,GAC5DA,IAAiBA,EACjB,IAAIC,GAAY,EACZC,EAAgBJ,EAgBpB,OAfqB,MAAjBI,GACAA,EAAgBV,GAAc5pB,EAAQtpC,MACjB,MAAjB4zD,GACAzvD,GAAOlD,mBAAmB,iDAAkD,gBAAiBuyD,GAEjGE,GAAe,EACfC,GAAY,GAEPC,IAAkBV,GAAc5pB,EAAQtpC,QAC7C0zD,GAAe,EACfC,GAAY,GAEY,MAAxBF,IACAA,EAAuB,MAEpB,CAAEG,cAAAA,EAAeH,qBAAAA,EAAsBE,UAAAA,EAAWD,aAAAA,GAEtD,MAAMG,WAAuB1C,GAChCrzD,YAAY6pD,EAAW,YAAa6L,EAAQM,EAAYC,GACpD,MAAMzqB,EAAU2Z,GAAQ56C,KAAKs/C,IACvBiM,cAAEA,EAAaH,qBAAEA,EAAoBC,aAAEA,GAAiBH,GAAgBjqB,EAASkqB,EAAQM,EAAYC,GAE3GzoD,MADmBuoD,GAAetC,cAAcjoB,EAASsqB,EAAeH,EAAsBC,GAC5EpqB,GAClBhtC,EAAiBY,KAAM,CAAE02D,cAAAA,EAAeH,qBAAAA,EAAsBC,aAAAA,IAElEvwD,qBAAqBmmC,EAASkqB,EAAQM,EAAYC,GAC9C,MAAMH,cAAEA,EAAaH,qBAAEA,EAAoBE,UAAEA,EAASD,aAAEA,GAAiBH,GAAgBjqB,EAASkqB,EAAQM,EAAYC,GACtH,IAAI5wB,EAAM,WA5ClB,SAAiBnjC,GACb,OAAQA,GACJ,IAAK,YACD,MAAO,mCACX,IAAK,UACD,MAAO,mCACX,IAAK,UACD,MAAO,mCACX,IAAK,SACD,MAAO,kCAEf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAWjB,GAiCzCwxD,CAAQloB,EAAQtpC,YAClC0zD,IACAvwB,GAAO,OAEXA,GAAOywB,EACP,MAAM5xB,EAAU,IAAI8B,GAAaX,GACjCnB,EAAQkC,WAAY,EAChBuvB,GACAzxB,EAAQqC,eAAe,GAAIovB,GAQ/B,MAAO,CAAEzxB,QAAAA,EAASqD,cANItqC,MAAOinC,EAASE,EAAU8oB,KACxC2I,GACApG,GAAoB,mBAEjB,IAIfkE,sBACI,OAAQv0D,KAAK02D,gBAAkBV,GAAch2D,KAAKosC,QAAQtpC,OC5ElE,IAWIg0D,GAA6BC,GAA2BC,GAA0BC,GAAsCC,GAAiCC,GAA6BC,GAA+BC,GAA+BC,GAXpPv3D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IASxF,MAAM8P,GAAOtK,OAAO,KACd+mC,GAAO/mC,OAAO,KAIpB,SAASgiC,KAAY,OAAO,IAAKptB,MAAQotB,UAEzC,MAAM8vB,GAAgB,CAAEC,aAAc,IAAKC,SAAU,EAAGC,OAAQ,GAC1DC,GAAe,CACjB7V,aAAc,EAAG8V,SAAU,EAAGC,cAAe,EAAGC,eAAgB,EAChEC,WAAY,EAAGC,kBAAmB,EAAGC,gBAAiB,EAAGC,MAAO,EAChEzN,SAAU,KAAM0N,cAAe,KAAMC,WAAY,GAmBrD,SAAS71D,GAAU6pC,EAASruC,EAAO+nC,GAC/B,OAAQA,EAAI5gC,QACR,IAAK,UAIL,IAAK,cAEL,IAAK,aAmBL,IAAK,cACD,OAAO+B,GAAOtB,UAAU5H,GAAO+L,WAxBnC,IAAK,iBAML,IAAK,sBACD,OAAO7C,GAAOzB,UAAUzH,GAAO+L,WACnC,IAAK,UAEL,IAAK,eAWL,IAAK,OACD,OAAOoL,GAAQnX,GAVnB,IAAK,WACD,OAAI+nC,EAAIyoB,oBACG5qD,KAAKC,UAAUwoC,EAAQ1B,UAAU0Z,sBAAsBrmD,IAE3D4F,KAAKC,UAAUwoC,EAAQ1B,UAAU/X,MAAM50B,IAClD,IAAK,iBACD,OAAO4F,KAAKC,UAAUwoC,EAAQ1B,UAAUyZ,oBAAoBpmD,IAChE,IAAK,wBACD,OAAO4F,KAAKC,UAAUwoC,EAAQ1B,UAAU4Z,QAAQvmD,IAKpD,IAAK,UACD,OAAO4F,KAAKC,UAAU7F,EAAMK,KAAKK,GAAM2tC,EAAQ1B,UAAU3jC,IAAItI,MAErE,OAAOwI,GAAOnD,WAAW,qBAAsB,wBAAyB,CACpEY,UAAW,YAAYf,KAAKC,UAAUkiC,EAAI5gC,aAKlD,SAASmzD,GAAYC,EAAQ/G,GACzB,MAAMgH,EAAQ,IAAIthD,IAClB,IAAK,MAAMvQ,OAAEA,EAAM8xD,OAAEA,EAAMd,OAAEA,KAAYnG,EAAS,CAC9C,MAAMxyD,EAAIw5D,EAAM73D,IAAI83D,IAAW,CAAE9xD,OAAAA,EAAQgxD,OAAQ,GACjD34D,EAAE24D,QAAUA,EACZa,EAAM/3D,IAAIg4D,EAAQz5D,GAEtB,IACI05D,EADAC,EAAa,EAEjB,IAAK,MAAMhB,OAAEA,EAAMhxD,OAAEA,KAAY6xD,EAAMj5D,SAC/Bo4D,GAAUY,GAAUZ,EAASgB,IAC7BA,EAAahB,EACbe,EAAa/xD,GAGrB,OAAO+xD,EAQX,SAASE,GAAUpH,GAEf,MAAMjyD,EAASiyD,EAAQnzD,KAAKwxB,GAAMnqB,OAAOmqB,EAAElpB,UAC3CpH,EAAOs/B,MAAK,CAAC5sB,EAAGC,IAAQD,EAAIC,GAAM,EAAKA,EAAID,EAAK,EAAI,IACpD,MAAM4mD,EAAMt5D,EAAOJ,OAAS,EAE5B,OAAII,EAAOJ,OAAS,EACTI,EAAOs5D,IAGVt5D,EAAOs5D,EAAM,GAAKt5D,EAAOs5D,GAAO7oD,IAAQy8B,GA+B7C,MAAMqsB,WAAyBrO,GAClC5pD,YAAYk4D,EAAW1sB,GACnBh+B,MAAMg+B,GACN0qB,GAA4BvzD,IAAIvD,MAChC+2D,GAA0Bv2D,IAAIR,UAAM,GACpCg3D,GAAyBx2D,IAAIR,UAAM,GACnCi3D,GAAqCz2D,IAAIR,UAAM,GAC/CD,GAAuBC,KAAM+2D,GAA2B+B,EAAU16D,KAAKmQ,GAC/DA,aAAai8C,GACNvsD,OAAOoN,OAAO,CAAE6+B,SAAU37B,GAAKgpD,GAAeI,IAG9C15D,OAAOoN,OAAO,GAAIksD,GAAehpD,EAAGopD,MAE/C,KACJ53D,GAAuBC,KAAMg3D,IAA2B,EAAG,KAC3Dj3D,GAAuBC,KAAMi3D,GAAsC,KAAM,KACzEj3D,KAAKs4D,OAAS,EACdt4D,KAAK+4D,YAAc,EACnB/4D,KAAKg5D,aAAe,EAChBh5D,KAAKs4D,OAAS73D,GAAuBT,KAAM+2D,GAA2B,KAAKx4D,QAAO,CAACyT,EAAG1F,IAAO0F,EAAI1F,EAAEorD,QAAS,IAC5GzwD,GAAOlD,mBAAmB,gCAAiC,SAAU/D,KAAKs4D,QAI9EW,sBACA,OAAOx4D,GAAuBT,KAAM+2D,GAA2B,KAAKluD,QAExEhL,uBACI,OAAOkoD,GAAQ56C,KAAKlE,GAAOtB,gBAAgB3F,KAAK6tD,SAAS,CAAE3oD,OAAQ,cAAe2C,SAEtFhK,eAAeioC,SACLrlC,GAAuBT,KAAM82D,GAA6B,IAAKM,IAA+B72D,KAAKP,MAEzG,MAAMk5D,EAAU,IAAIvxD,IACpB,IAAK,IAAI1I,EAAI,EAAGA,EAAIe,KAAKs4D,OAAQr5D,IAC7BwB,GAAuBT,KAAM82D,GAA6B,IAAKK,IAA6B52D,KAAKP,KAAMk5D,EAASpzB,GAEpH,MAAMp/B,EAASjG,GAAuBT,KAAM82D,GAA6B,IAAKQ,IAAiC/2D,KAAKP,KAAMk5D,EAASpzB,GACnI,IAAK,MAAMqzB,KAAUD,EACjBC,EAAO/zB,MAAO,EAElB,OAAO1+B,GAGfqwD,GAA4B,IAAIt1D,QAAWu1D,GAA2B,IAAIv1D,QAAWw1D,GAAuC,IAAIx1D,QAAWq1D,GAA8B,IAAIxwD,QAAW4wD,GAAkC,SAAyCkC,GAE/P,MAAMC,EAAa54D,GAAuBT,KAAM+2D,GAA2B,KAAKluD,SCrM7E,SAAiB0vC,GACpB,IAAK,IAAIt5C,EAAIs5C,EAAMr5C,OAAS,EAAGD,EAAI,EAAGA,IAAK,CACvC,MAAMyoB,EAAI9O,KAAKtG,MAAMsG,KAAK6vB,UAAYxpC,EAAI,IACpC+c,EAAMu8B,EAAMt5C,GAClBs5C,EAAMt5C,GAAKs5C,EAAM7wB,GACjB6wB,EAAM7wB,GAAK1L,GDiMfs9C,CAAQD,GACRA,EAAWz6B,MAAK,CAAC5sB,EAAGC,IAAOA,EAAEwlD,SAAWzlD,EAAEylD,WAC1C,IAAK,MAAM8B,KAAUF,EACjB,IAAiC,IAA7BD,EAAQv0D,QAAQ00D,GAChB,OAAOA,EAGf,OAAO,MACRpC,GAA8B,SAAqC+B,EAASpzB,GAC3E,MAAMyzB,EAAS94D,GAAuBT,KAAM82D,GAA6B,IAAKI,IAAiC32D,KAAKP,KAAM8M,MAAM3B,KAAK+tD,GAAS96D,KAAKwxB,GAAMA,EAAE2pC,UAC3J,GAAc,MAAVA,EACA,OAAO,KAEX,MAAM7yD,EAAS,GACTyyD,EAAS,CACXI,OAAAA,EAAQ7yD,OAAAA,EAAQ8yD,SAAS,EAAOp0B,MAAM,EACtCwoB,QAAS,KAAM6L,QAAS,MAEtBn/C,EAAMmtB,KAuBZ,OAtBA0xB,EAAOvL,QAAU,WACb,IACI2L,EAAO3B,WACPlxD,EAAOA,aAAe6yD,EAAOrvB,SAAS2jB,SAAS/nB,GAEnD,MAAOxkC,GACHi4D,EAAOzB,iBACPpxD,EAAOpF,MAAQA,EAEf63D,EAAO/zB,MACPm0B,EAAO1B,gBAEX,MAAM6B,EAAMjyB,KAAYntB,EACxBi/C,EAAOnB,YAAcsB,EACrBH,EAAOtB,gBAAkB,IAAOsB,EAAOtB,gBAAkB,IAAOyB,EAChEP,EAAOvL,QAAU,MAfJ,GAiBjBuL,EAAOM,QAAU,WAtNrB,IAAejyB,QAAAA,EAuNK+xB,EAAO/B,aAtNhB,IAAIt5D,SAASI,IAAcyb,WAAWzb,EAASkpC,OAuNlD2xB,EAAOM,QAAU,MAFJ,GAIjBP,EAAQ31D,IAAI41D,GACLA,GACR/B,GAGHv5D,iBACI,IAAI87D,EAAcl5D,GAAuBT,KAAMi3D,GAAsC,KACrF,IAAK0C,EAAa,CACd,MAAM5sD,EAAW,GACjBtM,GAAuBT,KAAM+2D,GAA2B,KAAKnvD,SAAS2xD,IAClExsD,EAASpK,KAzNrB9E,eAA2B07D,EAAQzX,GAC/B,KAAOyX,EAAOzX,YAAc,GAAKyX,EAAOzX,YAAcA,GAC7CyX,EAAOpB,gBACRoB,EAAOpB,cAAgB,WACnB,MAAMrW,QAAoByX,EAAOrvB,SAAS2Y,iBACtCf,EAAcyX,EAAOzX,cACrByX,EAAOzX,YAAcA,GAEzByX,EAAOpB,cAAgB,MALJ,UAQrBoB,EAAOpB,cACboB,EAAOxB,YA6MW6B,CAAYL,EAAQ,IAClCxsD,EAASpK,KAAK,WACV42D,EAAO9O,eAAiB8O,EAAOrvB,SAASO,cAD9B,OAIlB1qC,GAAuBC,KAAMi3D,GAAsC0C,EAAc,iBAEvEz7D,QAAQC,IAAI4O,GAElB,IAAIswB,EAAU,KACd,IAAK,MAAMk8B,KAAU94D,GAAuBT,KAAM+2D,GAA2B,KAAM,CAC/E,MAAM3qB,EAAWmtB,EAAe,SACjB,MAAXl8B,EACAA,EAAU+O,EAAQ/O,QAEb+O,EAAQ/O,UAAYA,GACzBp2B,GAAOnD,WAAW,6CAA8C,wBAAyB,CACrFY,UAAW,2BAZsD,GAgB3E,WAEJi1D,GACPtC,GAAgCx5D,eAA6Cq7D,EAASpzB,GAErF,MAAMyrB,EAAU,GAChB,IAAK,MAAM4H,KAAUD,EACjB,GAAI,WAAYC,EAAOzyD,OAAQ,CAC3B,MAAMA,EAASyyD,EAAOzyD,OAAOA,OAC7B6qD,EAAQ5uD,KAAK,CACT+D,OAAAA,EACA8xD,OAAQj2D,GAAW42D,EAAOI,OAAe,SAAG7yD,EAAQo/B,GACpD4xB,OAAQyB,EAAOI,OAAO7B,SAKlC,KAAInG,EAAQhzD,QAAO,CAACyT,EAAG4d,IAAO5d,EAAI4d,EAAE8nC,QAAS,GAAK13D,KAAKs4D,QAAvD,CAGA,OAAQxyB,EAAI5gC,QACR,IAAK,iBAAkB,CAEnB,IAAqE,IAAjEzE,GAAuBT,KAAMg3D,GAA0B,KAAa,CACpE,MAAM6C,EAASjhD,KAAKC,KAAK5R,GAAOzB,UAAUmzD,GAAUl4D,GAAuBT,KAAM+2D,GAA2B,KAAK34D,KAAKkO,IAAO,CACzH5F,OAAQ4F,EAAEw1C,YACV0W,OAAQvxD,GAAOzB,UAAU8G,EAAEw1C,aAAah4C,WACxC4tD,OAAQprD,EAAEorD,YACR,cACN33D,GAAuBC,KAAMg3D,GAA0B6C,EAAQ,KAEnE,MAAMC,EAnLlB,SAAsBxB,EAAQ/G,GAC1B,GAAe,IAAX+G,EACA,OAAOrxD,GAAOzB,UAAUmzD,GAAUpH,GAAU,aAEhD,MAAMgH,EAAQ,IAAIthD,IACZ1T,EAAM,CAACmD,EAAQgxD,KACjB,MAAM34D,EAAIw5D,EAAM73D,IAAIgG,IAAW,CAAEA,OAAAA,EAAQgxD,OAAQ,GACjD34D,EAAE24D,QAAUA,EACZa,EAAM/3D,IAAIkG,EAAQ3H,IAEtB,IAAK,MAAM24D,OAAEA,EAAMhxD,OAAEA,KAAY6qD,EAAS,CACtC,MAAM3hC,EAAI3oB,GAAOzB,UAAUkB,GAC3BnD,EAAIqsB,EAAI,EAAG8nC,GACXn0D,EAAIqsB,EAAG8nC,GACPn0D,EAAIqsB,EAAI,EAAG8nC,GAEf,IACIe,EADAC,EAAa,EAEjB,IAAK,MAAMhB,OAAEA,EAAMhxD,OAAEA,KAAY6xD,EAAMj5D,SAI/Bo4D,GAAUY,IAAWZ,EAASgB,GAA6B,MAAdD,GAAsBf,IAAWgB,GAAchyD,EAAS+xD,KACrGC,EAAahB,EACbe,EAAa/xD,GAGrB,OAAO+xD,EAwJcsB,CAAa/5D,KAAKs4D,OAAQ/G,GACvC,QAAa7xD,IAATo6D,EACA,OAKJ,OAHIA,EAAOr5D,GAAuBT,KAAMg3D,GAA0B,MAC9Dj3D,GAAuBC,KAAMg3D,GAA0B8C,EAAM,KAE1Dr5D,GAAuBT,KAAMg3D,GAA0B,KAElE,IAAK,cACL,IAAK,cACD,OAAO2B,GAAUpH,GACrB,IAAK,WAGD,MAAI,aAAczrB,GAAwB,YAAjBA,EAAIud,SAClBkO,EAAQ,GAAG7qD,OAEf2xD,GAAYr4D,KAAKs4D,OAAQ/G,GACpC,IAAK,UACL,IAAK,aACL,IAAK,sBACL,IAAK,UACL,IAAK,eACL,IAAK,iBACL,IAAK,wBACL,IAAK,UAEL,IAAK,OAED,OAAO8G,GAAYr4D,KAAKs4D,OAAQ/G,GACpC,IAAK,kBACD,MAAM,IAAIpyD,MAAM,QAExB,OAAO8H,GAAOnD,WAAW,qBAAsB,wBAAyB,CACpEY,UAAW,YAAYf,KAAKC,UAAUkiC,EAAI5gC,eAE/CoyD,GAAkCz5D,eAAey5D,EAAgC4B,EAASpzB,GACzF,GAAqB,IAAjBozB,EAAQ1tD,KACR,MAAM,IAAIrM,MAAM,gBAIpB,MAAM66D,EAAc,GAGpB,IAAIC,EAAa,EACjB,IAAK,MAAMd,KAAUD,EAUbC,EAAOvL,SACPoM,EAAYr3D,KAAKw2D,EAAOvL,SAGxBuL,EAAOM,QACPO,EAAYr3D,KAAKw2D,EAAOM,SAIxBN,EAAOK,UAIXL,EAAOK,SAAU,EACjBS,KAaJ,MAAMl8D,QAAc0C,GAAuBT,KAAM82D,GAA6B,IAAKO,IAA+B92D,KAAKP,KAAMk5D,EAASpzB,GACtI,QAAcpmC,IAAV3B,EAAqB,CACrB,GAAIA,aAAiBoB,MACjB,MAAMpB,EAEV,OAAOA,EAIX,IAAK,IAAIkB,EAAI,EAAGA,EAAIg7D,EAAYh7D,IAC5BwB,GAAuBT,KAAM82D,GAA6B,IAAKK,IAA6B52D,KAAKP,KAAMk5D,EAASpzB,GAEpH,GAA2B,IAAvBk0B,EAAY96D,OACZ,MAAM,IAAIC,MAAM,kBAMpB,aADMjB,QAAQg8D,KAAKF,SACNv5D,GAAuBT,KAAM82D,GAA6B,IAAKQ,GAAiC/2D,KAAKP,KAAMk5D,EAASpzB,IEtYrI,MAAMq0B,GAbN,WACI,GAAoB,oBAATz0C,KACP,OAAOA,KAEX,GAAsB,oBAAXC,OACP,OAAOA,OAEX,GAAsB,oBAAXC,OACP,OAAOA,OAEX,MAAM,IAAIzmB,MAAM,kCAGD0mB,GAAYu0C,UCH/B,IAWIC,GAA4BC,GAA0BC,GAA4BC,GAA0BC,GAA+BC,GAAkCC,GAAkCC,GAA2BC,GAAuBC,GAAsBC,GAXvRh7D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAMjF,MAAM+6D,GACTp6D,YAAYspC,EAAUnpC,GAClBs5D,GAA2B75D,IAAIR,UAAM,GACrCs6D,GAAyB95D,IAAIR,UAAM,GACnCu6D,GAA2B/5D,IAAIR,UAAM,GACrCw6D,GAAyBh6D,IAAIR,UAAM,GACnCy6D,GAA8Bj6D,IAAIR,UAAM,GACxCD,GAAuBC,KAAMq6D,GAA4BnwB,EAAU,KACnEnqC,GAAuBC,KAAMs6D,GAA0B32D,KAAKC,UAAU7C,GAAS,KAC/EhB,GAAuBC,KAAMu6D,GAA4B,KAAM,KAC/Dx6D,GAAuBC,KAAMw6D,GAA0B,KAAM,KAC7Dz6D,GAAuBC,KAAMy6D,GAA+B,KAAM,KAElE15D,aAAW,OAAO4C,KAAK4I,MAAM9L,GAAuBT,KAAMs6D,GAA0B,MACxF5kD,QACI3V,GAAuBC,KAAMu6D,GAA4B95D,GAAuBT,KAAMq6D,GAA4B,KAAKjJ,KAAK,gBAAiBpxD,KAAKe,QAAQ0M,MAAM0jD,IAE5J1wD,GAAuBT,KAAMq6D,GAA4B,KAAKY,UAAU9J,EAAUnxD,MAC3EmxD,KACP,KAER/I,OACK3nD,GAAuBT,KAAMu6D,GAA4B,KAAM9sD,MAAM0jD,IAClE1wD,GAAuBT,KAAMq6D,GAA4B,KAAKjJ,KAAK,kBAAmB,CAACD,OAE3FpxD,GAAuBC,KAAMu6D,GAA4B,KAAM,KAInEjS,MAAMC,GACGA,GACDthD,GAAOnD,WAAW,mEAAoE,wBAAyB,CAC3GY,UAAW,iBAGnB3E,GAAuBC,KAAMw6D,KAA4BjS,EAAiB,KAE9EC,SACIzoD,GAAuBC,KAAMw6D,GAA0B,KAAM,KAEjEU,eAAez3D,GACX,GAAqE,MAAjEhD,GAAuBT,KAAMu6D,GAA4B,MAGO,OAAhE95D,GAAuBT,KAAMw6D,GAA0B,KAAe,CACtE,IAAIW,EAAc16D,GAAuBT,KAAMy6D,GAA+B,KAE1EU,EADe,MAAfA,EACcn7D,KAAKo7D,MAAM36D,GAAuBT,KAAMq6D,GAA4B,KAAM52D,GAG1E03D,EAAY1tD,MAAK5P,gBACrBmC,KAAKo7D,MAAM36D,GAAuBT,KAAMq6D,GAA4B,KAAM52D,MAGxF1D,GAAuBC,KAAMy6D,GAA+BU,EAAY1tD,MAAK,KACrEhN,GAAuBT,KAAMy6D,GAA+B,OAASU,GACrEp7D,GAAuBC,KAAMy6D,GAA+B,KAAM,QAEtE,MAGZ58D,YAAYqsC,EAAUzmC,GAClB,MAAM,IAAItE,MAAM,4CAGxBk7D,GAA6B,IAAI54D,QAAW64D,GAA2B,IAAI74D,QAAW84D,GAA6B,IAAI94D,QAAW+4D,GAA2B,IAAI/4D,QAAWg5D,GAAgC,IAAIh5D,QACzM,MAAM45D,WAA8BL,GACvCp6D,YAAYspC,GACR97B,MAAM87B,EAAU,CAAC,aAErBrsC,YAAYqsC,EAAUzmC,GAClBymC,EAASue,KAAK,QAAS7hD,SAASnD,EAAQm1C,UAGzC,MAAM0iB,WAAgCN,GACzCp6D,YAAYspC,GACR97B,MAAM87B,EAAU,CAAC,2BAErBrsC,YAAYqsC,EAAUzmC,GAClBymC,EAASue,KAAK,UAAWhlD,IAG1B,MAAM83D,WAA8BP,GACvCp6D,YAAYspC,EAAUnpC,GAClBqN,MAAM87B,EAAU,CAAC,OAAQnpC,IACzB25D,GAAiCl6D,IAAIR,UAAM,GAC3C26D,GAAiCn6D,IAAIR,UAAM,GAC3CD,GAAuBC,KAAM06D,GAAkC/2D,KAAKC,UAAU7C,GAAS,KACvFhB,GAAuBC,KAAM26D,GAAkCzwB,EAASO,aAAah9B,MAAM2+B,GAAYA,EAAQ1B,YAAY,KAE3H8wB,gBAAc,OAAO73D,KAAK4I,MAAM9L,GAAuBT,KAAM06D,GAAkC,MACnG78D,YAAYqsC,EAAUzmC,GAClB,MAAMinC,QAAkBjqC,GAAuBT,KAAM26D,GAAkC,KACvFzwB,EAASue,KAAKhoD,GAAuBT,KAAM06D,GAAkC,KAAMhwB,EAAU3jC,IAAItD,EAASymC,KAGlHwwB,GAAmC,IAAIj5D,QAAWk5D,GAAmC,IAAIl5D,QAClF,MAAMg6D,WAAuBzI,GAChCpyD,YAAYwrC,GACRh+B,MAAMg+B,GACNwuB,GAA0Bp6D,IAAIR,UAAM,GACpC66D,GAAsBr6D,IAAIR,UAAM,GAEhC86D,GAAqBt6D,IAAIR,UAAM,GAG/B+6D,GAAwBv6D,IAAIR,UAAM,GAClCD,GAAuBC,KAAM46D,GAA2B,IAAI3jD,IAAO,KACnElX,GAAuBC,KAAM66D,IAAuB,EAAO,KAC3D96D,GAAuBC,KAAM86D,GAAsB,IAAI7jD,IAAO,KAC9DlX,GAAuBC,KAAM+6D,GAAyB,IAAI9jD,IAAO,KAErEi2C,eAAeF,GACX,OAAQA,EAAIpuD,MACR,IAAK,QACD,OAAO,IAAIqrD,GAAoB,SACnC,IAAK,QACD,OAAO,IAAIoR,GAAsBr7D,MACrC,IAAK,UACD,OAAO,IAAIs7D,GAAwBt7D,MACvC,IAAK,QACD,OAAO,IAAIu7D,GAAsBv7D,KAAMgtD,EAAIjsD,QAC/C,IAAK,SAGD,GAA0B,aAAtBisD,EAAIjsD,OAAO2gD,OACX,OAAO,IAAIuI,GAAoB,YAG3C,OAAO77C,MAAM8+C,eAAeF,GAEhCiO,UAAU9J,EAAUlE,GAChBxsD,GAAuBT,KAAM86D,GAAsB,KAAKt6D,IAAI2wD,EAAUlE,GACtE,MAAMyO,EAAUj7D,GAAuBT,KAAM+6D,GAAyB,KAAKr6D,IAAIywD,GAC/E,GAAIuK,EAAS,CACT,IAAK,MAAMj4D,KAAWi4D,EAClBzO,EAAWiO,eAAez3D,GAE9BhD,GAAuBT,KAAM+6D,GAAyB,KAAKr8B,OAAOyyB,IAG1EtzD,WAAWqH,EAAQoJ,GACf,MAAM8kB,EAAUpzB,KAAKmzD,eAAejuD,EAAQoJ,GACtCqtD,EAAU,IAAIz9D,SAAQ,CAACI,EAASiuD,KAClC9rD,GAAuBT,KAAM46D,GAA2B,KAAKp6D,IAAI4yB,EAAQuI,GAAI,CAAEvI,QAAAA,EAAS90B,QAAAA,EAASiuD,OAAAA,OAKrG,OAHI9rD,GAAuBT,KAAM66D,GAAuB,YAC9C76D,KAAK47D,OAAOj4D,KAAKC,UAAUwvB,UAExBuoC,EAGjB99D,eACI,IAAI4C,GAAuBT,KAAM66D,GAAuB,KAAxD,CAGA96D,GAAuBC,KAAM66D,IAAuB,EAAM,KAC1D,IAAK,MAAMznC,QAAEA,KAAa3yB,GAAuBT,KAAM46D,GAA2B,KAAKt7D,eAC7EU,KAAK47D,OAAOj4D,KAAKC,UAAUwvB,KAIzCv1B,sBAAsB4F,GAClB,MAAMiD,EAAS/C,KAAK4I,MAAM9I,GAC1B,GAAI,OAAQiD,EAAQ,CAChB,MAAMi1D,EAAUl7D,GAAuBT,KAAM46D,GAA2B,KAAKl6D,IAAIgG,EAAOi1B,IACxF,IAAKggC,EAED,YADA70D,QAAQC,IAAI,6CAIhB,GADAtG,GAAuBT,KAAM46D,GAA2B,KAAKl8B,OAAOh4B,EAAOi1B,IACvE,UAAWj1B,EAAQ,CACnB,MAAMjD,QAAEA,EAAOlC,KAAEA,EAAIoT,KAAEA,GAASjO,EAAOpF,MACjCA,EAAQ2F,GAAOzD,UAAUC,GAAW,gBAAiB,eAAgB,CACvEqhC,QAAS,MAAMnhC,KAAKC,UAAU+3D,EAAQvoC,WACtCnxB,KAAM,CAAEV,KAAAA,EAAMoT,KAAAA,KAElBgnD,EAAQpP,OAAOjrD,QAGfq6D,EAAQr9D,QAAQoI,EAAOA,aAG1B,GAAsB,qBAAlBA,EAAOxB,OAA+B,CAC3C,MAAMisD,EAAWzqD,EAAO4H,OAAOmgD,aACzBxB,EAAaxsD,GAAuBT,KAAM86D,GAAsB,KAAKp6D,IAAIywD,GAC/E,GAAIlE,EACAA,EAAWiO,eAAex0D,EAAO4H,OAAO5H,YAEvC,CACD,IAAIg1D,EAAUj7D,GAAuBT,KAAM+6D,GAAyB,KAAKr6D,IAAIywD,GAC9D,MAAXuK,IACAA,EAAU,GACVj7D,GAAuBT,KAAM+6D,GAAyB,KAAKv6D,IAAI2wD,EAAUuK,IAE7EA,EAAQ/4D,KAAK+D,EAAO4H,OAAO5H,UAIvC7I,aAAa4F,GACT,MAAM,IAAItE,MAAM,mCAGxBy7D,GAA4B,IAAIn5D,QAAWo5D,GAAwB,IAAIp5D,QAAWq5D,GAAuB,IAAIr5D,QAAWs5D,GAA0B,IAAIt5D,QCpOtJ,IAWIo6D,GAXA97D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAKjF,MAAM67D,WAA0BL,GACnC76D,YAAYqlC,EAAKmG,GACbh+B,MAAMg+B,GACNyvB,GAA6Br7D,IAAIR,UAAM,GAEnCD,GAAuBC,KAAM67D,GADZ,iBAAT,EACmD,IAAIzB,GAAUn0B,GAGdA,EAHoB,KAKnFjmC,KAAK+7D,UAAUC,OAAS,KACpBh8D,KAAKi8D,UAETj8D,KAAK+7D,UAAUG,UAAaz4D,IACxBzD,KAAKm8D,gBAAgB14D,EAAQkR,OAGjConD,gBAAc,OAAOt7D,GAAuBT,KAAM67D,GAA8B,KACpFh+D,aAAa4F,GACTzD,KAAK+7D,UAAU3K,KAAK3tD,ICpBrB,SAAS24D,GAAmBhwB,EAASlX,GAIxC,GAHe,MAAXA,IACAA,EAAU,IAEW,iBAArB,GAAiCkX,EAAQ3lC,MAAM,YAC/C,OAAO,IAAIstD,GAAgB3nB,GAE/B,GAAyB,iBAAb,GAAyBA,EAAQ3lC,MAAM,YAX9B1I,EAW2DquC,IAVvC,mBAAhBruC,EAAU,MACN,mBAAjBA,EAAW,MAUnB,OAAO,IAAI+9D,GAAkB1vB,GAZrC,IAAyBruC,EAcrB,MAAM+6D,EAAY,GAClB,GAAwB,MAApB5jC,EAAQmnC,QACR,IACIvD,EAAUn2D,KAAK,IAAI6xD,GAAgBpoB,EAASlX,EAAQmnC,UAExD,MAAO/6D,GACHwF,QAAQC,IAAIzF,GAGpB,GAAqB,MAAjB4zB,EAAQonC,KACR,IACIxD,EAAUn2D,KAAK,IAAIwxD,GAAa/nB,EAASlX,EAAQonC,OAErD,MAAOh7D,GACHwF,QAAQC,IAAIzF,GAGpB,GAA2B,MAAvB4zB,EAAQqnC,WACR,IACIzD,EAAUn2D,KAAK,IAAI8xD,GAAmBroB,IAE1C,MAAO9qC,GACHwF,QAAQC,IAAIzF,GAGpB,GAA0B,MAAtB4zB,EAAQsnC,UACR,IACI1D,EAAUn2D,KAAK,IAAImyD,GAAkB1oB,EAASlX,EAAQsnC,YAE1D,MAAOl7D,GACHwF,QAAQC,IAAIzF,GAGpB,GAAuB,MAAnB4zB,EAAQunC,OACR,IACI,IACI1G,EADAD,EAAY5gC,EAAQunC,OAEG,iBAAf,IACR1G,EAAgBD,EAAUC,cAC1BD,EAAYA,EAAUA,WAE1BgD,EAAUn2D,KAAK,IAAIkzD,GAAezpB,EAAS0pB,EAAWC,IAE1D,MAAOz0D,GACHwF,QAAQC,IAAIzF,GAGpB,GAAuB,MAAnB4zB,EAAQwnC,OACR,IACI,IACIC,EACAnG,EAFAoG,EAAQ1nC,EAAQwnC,OAGG,iBAAX,IACRlG,IAAiBoG,EAAMpG,aACvBmG,EAAYC,EAAMD,UAClBC,EAAQA,EAAMA,OAElB9D,EAAUn2D,KAAK,IAAIg0D,GAAevqB,EAASwwB,EAAOD,EAAWnG,IAEjE,MAAOl1D,GACHwF,QAAQC,IAAIzF,GAGpB,GAAyB,IAArBw3D,EAAU55D,OACV,MAAM,IAAIC,MAAM,QAEpB,OAAyB,IAArB25D,EAAU55D,OACH45D,EAAU,GAEd,IAAID,GAAiBC,GDxDhC+C,GAA+B,IAAIp6D,QEmC9B,MAACskD,GAnEN,SAA8BA,GAE1B,SAAS8W,EAAY/5D,EAAMu6B,EAASnI,GAChC,MAAMrO,EAAO,WACT,MAAMulB,EAAU,IAAI2Z,EAAQjjD,EAAMu6B,GAQlC,GAN0B,MAAtBnI,EAAQ4xB,YACR1a,EAAQ6Z,aAAa,IAAIT,GAAU,KAAMtwB,EAAQ4xB,aAEjD5xB,EAAQywB,aACRvZ,EAAQ6Z,aAAa,IAAIP,GAAqBxwB,EAAQywB,cAEtDzwB,EAAQsnC,UAAW,CACnB,MAAMv2B,IAAEA,EAAGmuB,OAAEA,GAAWl/B,EAAQsnC,UAChCpwB,EAAQ6Z,aAAa,IAAI0O,GAAgB1uB,EAAKmuB,IAGlD,OADAhoB,EAAQ6Z,aAAa,IAAId,IAClB/Y,GAGX2Z,EAAQn/B,SAAS9jB,EAAM+jB,GACvBk/B,EAAQn/B,SAASyW,EAASxW,GACtBqO,EAAQ2vB,UACR3vB,EAAQ2vB,SAASj9C,SAAS9E,IACtBijD,EAAQn/B,SAAS9jB,EAAM+jB,MAyCnC,OArCAg2C,EAAY,YAAa,EAAG,CAAE/V,WAAY,EAAGjC,SAAU,CAAC,aACxDgY,EAAY,UAAW,EAAG,CAAE/V,WAAY,IACxC+V,EAAY,UAAW,EAAG,CAAE/V,WAAY,IACxC+V,EAAY,SAAU,EAAG,CAAE/V,WAAY,IACvC+V,EAAY,QAAS,GAAI,CAAE/V,WAAY,KACvC+V,EAAY,UAAW,GAAI,IAC3BA,EAAY,eAAgB,EAAG,IAC/BA,EAAY,OAAQ,IAAK,CAAE/V,WAAY,IAEvC+V,EAAY,QAAS,IAAK,CACtB/V,WAAY,EACZnB,YAAa,KACb6W,UAAW,CACPpI,OAAQ,qCACRnuB,IAAK,kCAGb42B,EAAY,cAAe,MAAO,CAC9BlX,YAAa,KACb6W,UAAW,CACPpI,OAAQ,qCACRnuB,IAAK,0CAGb42B,EAAY,MAAO,GAAI,CACnB/V,WAAY,EACZ0V,UAAW,CACPpI,OAAQ,qCACRnuB,IAAK,4BAGb42B,EAAY,OAAQ,GAAI,CACpBL,UAAW,CACPpI,OAAQ,qCACRnuB,IAAK,oCAGN8f,EAEK+W,CAAqBC,ICvE/BC,QAAoBt9D,ECA1B,IAWIu9D,GAAuCC,GAXvCn9D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAKjF,MAAMk9D,WAAiBxb,GAC1B/gD,YAAYmG,EAAKq2D,EAAO98B,GACpBlyB,MAAMrH,EAAKA,EAAImjC,UAEf9qC,EAAiBY,KAAM,CAAE4F,KADZw3D,EAAMh6B,eAAe9C,EAAUv5B,EAAI4N,KAAM5N,EAAIg8B,QAC3BzC,SAAAA,EAAU+8B,UAAWD,IAEpDE,gBAAc,OAAOt9D,KAAKsgC,SAASx9B,KACnCy6D,qBAAmB,OAAOv9D,KAAKsgC,SAASp0B,UAEzC,MAAMsxD,WAAmCpb,GAC5CxhD,YAAYw8D,EAAOlzB,EAAUjW,GACzB7lB,MAAM6lB,EAAIiW,GACV+yB,GAAsCz8D,IAAIR,UAAM,GAChDD,GAAuBC,KAAMi9D,GAAuCG,EAAO,KAE3E/a,WACA,OAAOj0C,MAAMi0C,KAAKjkD,KAAK2I,IACnB,MAAMu5B,EAAWv5B,EAAIg8B,OAAO7jC,OAASuB,GAAuBT,KAAMi9D,GAAuC,KAAKx7B,SAAS16B,EAAIg8B,OAAO,IAAM,KACxI,OAAIzC,EACO,IAAI68B,GAASp2D,EAAKtG,GAAuBT,KAAMi9D,GAAuC,KAAM38B,GAG5Fv5B,MAKvBk2D,GAAwC,IAAIx7D,QACrC,MAAMg8D,WAAoCxa,GAC7CriD,YAAYw8D,EAAOlzB,EAAUjW,GACzB7lB,MAAM6lB,EAAIiW,GACVgzB,GAAuC18D,IAAIR,UAAM,GACjDD,GAAuBC,KAAMk9D,GAAwCE,EAAO,KAEhFv/D,WAAWqlD,GACP,MAAMoB,QAAgBl2C,MAAMsvD,OAC5B,OAAe,MAAXpZ,EACO,KAEJ,IAAIkZ,GAA2B/8D,GAAuBT,KAAMk9D,GAAwC,KAAMl9D,KAAKkqC,SAAUoa,IAGxI4Y,GAAyC,IAAIz7D,QACtC,MAAMk8D,WAA6Bh9D,EACtCC,YAAYg9D,EAAU98D,EAAUC,EAAQu/B,EAAUu9B,GAC9CzvD,MAAMwvD,EAAU98D,EAAUC,GAC1B,MAAMgG,EAAM,IAAIo2D,GAASU,EAAMD,EAASP,UAAW/8B,GAEnDlhC,EAAiBY,KAAM,CAAE4F,KADZg4D,EAASP,UAAUj6B,eAAe9C,EAAUv5B,EAAI4N,KAAM5N,EAAIg8B,QACxCzC,SAAAA,EAAUv5B,IAAAA,IAEzCu2D,gBACA,OAAOt9D,KAAKsgC,SAASx9B,KAErBy6D,qBACA,OAAOv9D,KAAKsgC,SAASp0B,SAEzBrO,iBACI,aAAamC,KAAK+G,IAAIk7C,WAE1BpkD,uBACI,aAAamC,KAAK+G,IAAIw6C,iBAE1B1jD,8BACI,aAAamC,KAAK+G,IAAIm7C,yBC7EvB,MCEMj7C,GAAS,IAAI5D,EDFH,wCEAvB,IAWIy6D,GAXA/9D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAiBxF,SAAS89D,GAAWhgE,GAChB,OAAQA,GAAwC,mBAAvBA,EAAiB,YAU9C,MAAMigE,GACFp9D,YAAYg9D,EAAUt9B,EAAU16B,GAG5B,GAFAk4D,GAA4Bt9D,IAAIR,UAAM,GACtCZ,EAAiBY,KAAM,CAAEsgC,SAAAA,IACrBA,EAAS3yB,OAAOzO,OAAS0G,EAAK1G,OAC9B,MAAM,IAAIC,MAAM,sBAGpB,MAAMg6D,EAAS8E,GAAUL,EAASzE,OAAQ,eACpCxkC,EAAWopC,GAAW5E,GAAUA,EAAS,KAC/Cp5D,GAAuBC,KAAM89D,GAA6B,iBACtD,MAAMI,QAAqBhgE,QAAQC,IAAImiC,EAAS3yB,OAAOvP,KAAI,CAACoP,EAAO9O,IACxD8O,EAAM2wD,UAAUv4D,EAAKlH,IAAQ,CAACE,EAAMb,IAC1B,YAATa,EACO81B,GAAe32B,EAAO42B,GAE1B52B,OAGf,OAAO6/D,EAASP,UAAUx6B,mBAAmBvC,EAAU49B,GATD,GAUpD,KAEVE,iBACI,OAAO39D,GAAuBT,KAAM89D,GAA6B,MAazE,SAASG,GAAUlgE,EAAOsgE,GACtB,OAAa,MAATtgE,EACO,KAEqB,mBAApBA,EAAMsgE,GACPtgE,EAEPA,EAAMmsC,UAAiD,mBAA7BnsC,EAAMmsC,SAASm0B,GAClCtgE,EAAMmsC,SAEV,KAEX,SAASo0B,GAAYvgE,GACjB,OAAa,MAATA,EACO,KAEJA,EAAMmsC,UAAY,KAEtBrsC,eAAe0gE,GAAcC,GAEhC,MAAMC,E3B3CH,SAAqB34B,GACxB,MAAMp/B,EAAS,GAEXo/B,EAAI16B,KACJ1E,EAAO0E,GAAK06B,EAAI16B,IAEhB06B,EAAI36B,OACJzE,EAAOyE,KAAO26B,EAAI36B,MAElB26B,EAAInxB,OACJjO,EAAOiO,KAAOO,GAAQ4wB,EAAInxB,OAE9B,MAAM+pD,EAAa,qEAAqE5/D,MAAM,KAC9F,IAAK,MAAMU,KAAOk/D,EACRl/D,KAAOsmC,GAAoB,MAAZA,EAAItmC,KAGzBkH,EAAOlH,GAAOyH,GAAOtB,UAAUmgC,EAAItmC,GAAM,WAAWA,MAExD,MAAMm/D,EAAa,aAAa7/D,MAAM,KACtC,IAAK,MAAMU,KAAOm/D,EACRn/D,KAAOsmC,GAAoB,MAAZA,EAAItmC,KAGzBkH,EAAOlH,GAAOyH,GAAOzB,UAAUsgC,EAAItmC,GAAM,WAAWA,MAcxD,OAZIsmC,EAAIwZ,aACJ54C,EAAO44C,WAAaxB,GAAchY,EAAIwZ,aAEtC,aAAcxZ,IACdp/B,EAAO28C,SAAWvd,EAAIud,UAEtB,mBAAoBvd,IACpBp/B,EAAOk4D,wBAA0B94B,EAAIwE,gBAErC,eAAgBxE,IAChBp/B,EAAOm4D,WAAa/4B,EAAI+4B,YAErBn4D,E2BKWo4D,CAAY/pC,GAAMW,YAAY8oC,EAAK,cAarD,OAVIC,EAAUrzD,GACVnE,GAAOlD,mBAAmB,qBAAsB,eAAgB06D,EAAUrzD,IAErEqzD,EAAU9pD,MACf1N,GAAOlD,mBAAmB,uBAAwB,iBAAkB06D,EAAU9pD,MAG9E8pD,EAAUtzD,OACVszD,EAAUtzD,WAAaupB,GAAe+pC,EAAUtzD,OAE7CszD,EA3CXX,GAA8B,IAAIr8D,QA0DlC,MAAMs9D,WAnDN,WACI,OAAOC,SAkDiBC,IACxBr+D,YAAYg9D,EAAUp+D,GAClB4O,QACAhP,EAAiBY,KAAM,CACnB8C,KAAM86D,EAASP,UAAU/7B,gBAAgB9hC,GACzC0/D,UAAWtB,EAAU1hD,KAAM1c,IAY/B,OAVc,IAAI0X,MAAMlX,KAAM,CAE1BgH,MAAOnJ,MAAOwB,EAAQ8/D,EAASv5D,IACVvG,EAAO+/D,eAAex5D,GAC1BoJ,eACI3P,EAAOggE,cAAcz5D,SAEzBvG,EAAO+xD,QAAQxrD,KAMpC06B,eACA,OAAOtgC,KAAKk/D,UAAU7B,UAAU97B,YAAYvhC,KAAKkc,MAErDkjD,eAAex5D,GACX,OAAO5F,KAAKk/D,UAAU7B,UAAU97B,YAAYvhC,KAAKkc,KAAMtW,GAE3D/H,6BAA6B+H,GACzB,MAAM06B,EAAWtgC,KAAKo/D,eAAex5D,GAErC,IAAI64D,EAAY,GAIhB,GAHIn+B,EAAS3yB,OAAOzO,OAAS,IAAM0G,EAAK1G,SACpCu/D,QAAkBF,GAAc34D,EAAKyD,QAErCi3B,EAAS3yB,OAAOzO,SAAW0G,EAAK1G,OAChC,MAAM,IAAIC,MAAM,8EAEpB,MAAM++D,QAjDPrgE,eAA2ByhE,EAAS3xD,EAAQ/H,GAE/C,MAAMuzD,EAAS8E,GAAUqB,EAAS,eAC5B3qC,EAAWopC,GAAW5E,GAAUA,EAAS,KAC/C,aAAaj7D,QAAQC,IAAIwP,EAAOvP,KAAI,CAACoP,EAAO9O,IACjC8O,EAAM2wD,UAAUv4D,EAAKlH,IAAQ,CAACE,EAAMb,IAC1B,YAATa,EACO81B,GAAe32B,EAAO42B,GAE1B52B,OAwCgBwhE,CAAYv/D,KAAKk/D,UAAU/F,OAAQ74B,EAAS3yB,OAAQ/H,GAC/E,OAAO3H,OAAOoN,OAAO,GAAIozD,QAAiB3gE,EAAkB,CACxDsN,GAAIpL,KAAKk/D,UAAUpsC,aACnBne,KAAM3U,KAAKk/D,UAAU7B,UAAUj7B,mBAAmB9B,EAAU49B,MAGpErgE,oBAAoB+H,GAChB,MAAMc,QAAe1G,KAAKw/D,oBAAoB55D,GAC9C,OAAsB,IAAlBc,EAAOxH,OACAwH,EAAO,GAEXA,EAEX7I,cAAc+H,GACV,MAAMuzD,EAASn5D,KAAKk/D,UAAU/F,OAC9B,KA/ISp7D,EA+IIo7D,IA9ImC,mBAA3Bp7D,EAAqB,gBA+ItC,OAAOkJ,GAAOnD,WAAW,wDAAyD,wBAAyB,CACvGY,UAAW,oBAjJ3B,IAAiB3G,EAoJT,MAAMk2B,QAAWklC,EAAOlJ,sBAAsBjwD,KAAKyvD,uBAAuB7pD,IACpEskC,EAAWo0B,GAAYt+D,KAAKk/D,UAAU/F,QAC5C,OAAO,IAAIsE,GAA4Bz9D,KAAKk/D,UAAU7B,UAAWnzB,EAAUjW,GAE/Ep2B,qBAAqB+H,GACjB,MAAMuzD,EAAS8E,GAAUj+D,KAAKk/D,UAAU/F,OAAQ,eAChD,OAhKap7D,EAgKIo7D,IA/J2B,mBAAvBp7D,EAAiB,kBAoKzBo7D,EAAO7J,kBAAkBtvD,KAAKyvD,uBAAuB7pD,IAJvDqB,GAAOnD,WAAW,kDAAmD,wBAAyB,CACjGY,UAAW,gBAlK3B,IAAqB3G,EAuKjBF,0BAA0B+H,GACtB,MAAMuzD,EAAS8E,GAAUj+D,KAAKk/D,UAAU/F,OAAQ,QAChD,KA5KSp7D,EA4KIo7D,IA3KwB,mBAAhBp7D,EAAU,KA4K3B,OAAOkJ,GAAOnD,WAAW,2CAA4C,wBAAyB,CAC1FY,UAAW,SA9K3B,IAAiB3G,EAiLT,MAAMuiC,EAAWtgC,KAAKo/D,eAAex5D,GAC/BquB,QAAWj0B,KAAKyvD,uBAAuB7pD,GAC7C,IAAIc,EAAS,KACb,IACIA,QAAeyyD,EAAO54D,KAAK0zB,GAE/B,MAAO3yB,GACH,GAAIE,EAAgBF,GAChB,MAAMtB,KAAKk/D,UAAU7B,UAAU75D,UAAU88B,EAAUh/B,EAAMqT,KAAMsf,GAEnE,MAAM3yB,EAEV,OAAOtB,KAAKk/D,UAAU7B,UAAUh7B,qBAAqB/B,EAAU55B,IAMvE,MAAM+4D,WAHN,WACI,OAAOT,SAEgBU,IACvB9+D,YAAYg9D,EAAUp+D,GAMlB,OALA4O,QACAhP,EAAiBY,KAAM,CACnB8C,KAAM86D,EAASP,UAAU77B,aAAahiC,GACtC0/D,UAAWtB,EAAU1hD,KAAM1c,IAExB,IAAI0X,MAAMlX,KAAM,CAEnBgH,MAAOnJ,MAAOwB,EAAQ8/D,EAASv5D,IACpB,IAAIo4D,GAAoBJ,EAAUv+D,EAAO+/D,eAAex5D,GAAOA,KAK9E06B,eACA,OAAOtgC,KAAKk/D,UAAU7B,UAAU57B,SAASzhC,KAAKkc,MAElDkjD,eAAex5D,GACX,OAAO5F,KAAKk/D,UAAU7B,UAAU57B,SAASzhC,KAAKkc,KAAMtW,IAQ5D,MAAM8F,GAAWC,OAAOC,IAAI,4BACtB+zD,GAAiB,IAAIl+D,QAI3B,SAASm+D,GAAYhC,GACjB,OAAO+B,GAAej/D,IAAIk9D,EAASlyD,KAMvC7N,eAAegiE,GAAUjC,EAAUlvD,GAC/B,IAAI4xB,EACAyC,EACJ,GAAIj2B,MAAMN,QAAQkC,GAEd4xB,EAAWs9B,EAASP,UAAU57B,SAAS/yB,EAAM,IAC7Cq0B,EAASr0B,OAER,GAAuB,iBAAX,EAEb4xB,EAAWs9B,EAASP,UAAU57B,SAAS/yB,GACvCq0B,EAAS,CAAC66B,EAASP,UAAUx7B,cAAcvB,SAE1C,IAjBWviC,EAiBI2Q,IAhBgB,iBAAnB,GAAgC,mBAAoB3Q,GAC9B,mBAA1BA,EAAoB,gBAAqBA,EAAMuiC,SAiBxDA,EAAW5xB,EAAM4xB,SACjByC,QAAer0B,EAAM0vD,qBAEpB,CAAA,KAAI,aAAc1vD,GAOnB,MADA5H,QAAQC,IAAI2H,GACN,IAAIvP,MAAM,QALhBmhC,EAAW5xB,EAAM4xB,SACjByC,EAAS,CAAC66B,EAASP,UAAUx7B,cAAcvB,IAzBnD,IAAoBviC,EAgChBglC,EAASA,EAAO3kC,KAAKW,IACjB,OAAS,MAALA,EACO,KAEP+N,MAAMN,QAAQzN,IA9PP2I,EA+PU3I,EAAEX,KAAKW,GAAMA,EAAEqH,iBA9PxCsB,EAAQoF,MAAM3B,KAAK,IAAKxD,IAAID,GAAQpI,WAC9Bs/B,OACCl3B,GA8PI3I,EAAEqH,cAjQjB,IAAmBsB,KA4Qf,MAAO,CAAE44B,SAAAA,EAAU+pB,IATPtnB,EAAO3kC,KAAKW,GACX,MAALA,EACO,OAEP+N,MAAMN,QAAQzN,GACPA,EAAE8E,KAAK,KAEX9E,IACR8E,KAAK,KACgBk/B,OAAAA,GAE5BllC,eAAeiiE,GAAOlC,EAAUlvD,GAC5B,MAAMqxD,KAAEA,GAASH,GAAYhC,GAC7B,OAAOmC,EAAKr/D,WAAWm/D,GAAUjC,EAAUlvD,IAAQ27C,MAAQ,KAE/DxsD,eAAemiE,GAAOpC,EAAUlvD,GAE5B,MAAMw7B,EAAWo0B,GAAYV,EAASzE,QACtC,IAAKjvB,EACD,OAAOjjC,GAAOnD,WAAW,+CAAgD,wBAAyB,CAC9FY,UAAW,OAGnB,MAAM47B,SAAEA,EAAQ+pB,IAAEA,EAAGtnB,OAAEA,SAAiB88B,GAAUjC,EAAUlvD,IACtDi9B,KAAEA,EAAIo0B,KAAEA,GAASH,GAAYhC,GACnC,IAAI5Q,EAAM+S,EAAKr/D,IAAI2pD,GACnB,IAAK2C,EAAK,CACN,MACMjsD,EAAS,CAAEoxB,QADAwZ,GAAciyB,EACL76B,OAAAA,GACpBjiC,EAAYiG,IACd,MAAMqsB,EAAU,IAAIuqC,GAAqBC,EAAU,KAAMlvD,EAAO4xB,EAAUv5B,GAC1E0hD,GAAKmV,EAAUlvD,EAAO0kB,EAAQxtB,KAAMwtB,IAExC,IAAIk6B,GAAU,EAedN,EAAM,CAAE3C,IAAAA,EAAKkD,UAAW,GAAI73C,MAdd,KACN43C,IAGJpjB,EAAS0e,GAAG7nD,EAAQD,GACpBwsD,GAAU,IASqBlF,KAPtB,KACJkF,IAGLpjB,EAASlpC,IAAID,EAAQD,GACrBwsD,GAAU,KAGdyS,EAAKv/D,IAAI6pD,EAAK2C,GAElB,OAAOA,EAyBX,IAAIiT,GAAW/hE,QAAQI,UACvBT,eAAe4qD,GAAKmV,EAAUlvD,EAAO9I,EAAMwtB,GACvC,UACU6sC,GAEV,MAAO3+D,IACP,MAAM4+D,EA7BVriE,eAAqB+/D,EAAUlvD,EAAO9I,EAAMwtB,SAClC6sC,GACN,MAAMjT,QAAY8S,GAAOlC,EAAUlvD,GACnC,IAAKs+C,EACD,OAAO,EAEX,MAAM5nD,EAAQ4nD,EAAIO,UAAUruD,OAY5B,OAXA8tD,EAAIO,UAAYP,EAAIO,UAAUxsD,QAAO,EAAGD,SAAAA,EAAU4rD,KAAAA,MAC9C,MAAMyT,EAAWv6D,EAAKiD,QAClBuqB,GACA+sC,EAASx9D,KAAK,IAAIg7D,GAAqBC,EAAWlR,EAAO,KAAO5rD,EAAW4N,EAAO0kB,EAAQkN,SAAUlN,EAAQrsB,MAEhH,IACIjG,EAASP,KAAKq9D,KAAauC,GAE/B,MAAO7+D,IACP,OAAQorD,KAEJtnD,EAAQ,EAWMg2D,CAAMwC,EAAUlvD,EAAO9I,EAAMwtB,GAEnD,OADA6sC,GAAWC,QACEA,EAEjB,MAAMnpD,GAAiB,CAAC,QACjB,MAAMqpD,GACTx/D,YAAYvB,EAAQ6hC,EAAKi4B,EAAS,KAAMkH,GAIpC,IAAIC,EAFJlhE,EAAiBY,KAAM,CAAEX,OAAAA,EAAQ85D,OAAAA,EAAQkE,UAD3Br8B,GAAU71B,KAAK+1B,KAE7BjjC,OAAO0B,eAAeK,KAAM0L,GAAU,CAAE3N,MAAO,KAE/C,IAAI4tC,EAAO,KACP40B,EAAW,KACf,GAAIF,EAAW,CACX,MAAMn2B,EAAWo0B,GAAYnF,GAC7BoH,EAAW,IAAI9C,GAA4Bz9D,KAAKq9D,UAAWnzB,EAAUm2B,GAEzE,IAAIN,EAAO,IAAI9oD,IAEf,GAAwB,iBAAZ,EACR,GAAI3C,GAAYjV,GACZssC,EAAOtsC,EACPihE,EAAcpiE,QAAQI,QAAQe,OAE7B,CACD,MAAMs1B,EAAWspC,GAAU9E,EAAQ,eACnC,IAAK4E,GAAWppC,GACZ,MAAM1tB,GAAOzD,UAAU,mDAAoD,wBAAyB,CAChGkB,UAAW,gBAGnB47D,EAAc3rC,EAASC,YAAYv1B,GAAQoO,MAAMk+B,IAC7C,GAAY,MAARA,EACA,MAAM,IAAIxsC,MAAM,QAGpB,OADAygE,GAAY5/D,MAAM2rC,KAAOA,EAClBA,UAKf20B,EAAcjhE,EAAOyzB,aAAarlB,MAAMk+B,IACpC,GAAY,MAARA,EACA,MAAM,IAAIxsC,MAAM,QAGpB,OADAygE,GAAY5/D,MAAM2rC,KAAOA,EAClBA,KA/KvB,IAAqBiyB,EAAUt+D,EAAVs+D,EAmLD59D,KAnLWV,EAmLL,CAAEghE,YAAAA,EAAa30B,KAAAA,EAAM40B,SAAAA,EAAUR,KAAAA,GAlLrDJ,GAAen/D,IAAIo9D,EAASlyD,IAAWpM,GAoLnC,MAAMkhE,EAAU,IAAItpD,MAAM,GAAI,CAC1BxW,IAAK,CAACrB,EAAQohE,EAAOxgE,KAEjB,GAAI8W,GAAelS,QAAQ47D,IAAU,EACjC,OAAOppD,QAAQ3W,IAAIrB,EAAQohE,EAAOxgE,GAEtC,MAAMkX,EAAO1U,OAAOg+D,GACd/5D,EAAS1G,KAAKyhC,SAAStqB,GAC7B,GAAIzQ,EACA,OAAOA,EAEX,MAAM,IAAIvH,MAAM,2BAA2BgY,QAKnD,OAFA/X,EAAiBY,KAAM,CAAEwgE,QAAAA,IAElB,IAAItpD,MAAMlX,KAAM,CACnBU,IAAK,CAACrB,EAAQohE,EAAOxgE,KACjB,GAAIwgE,KAASphE,GAAU0X,GAAelS,QAAQ47D,IAAU,EACpD,OAAOppD,QAAQ3W,IAAIrB,EAAQohE,EAAOxgE,GAEtC,MAAMkX,EAAO1U,OAAOg+D,GACd/5D,EAASrH,EAAOkiC,YAAYpqB,GAClC,GAAIzQ,EACA,OAAOA,EAEX,MAAM,IAAIvH,MAAM,4BAA4BgY,QAIxDtZ,mBAAqB,aAAa+hE,GAAY5/D,MAAMsgE,YACpDziE,wBACI,MAAMqsC,EAAWo0B,GAAYt+D,KAAKm5D,QAClC,IAAKjvB,EACD,OAAOjjC,GAAOnD,WAAW,oCAAqC,wBAAyB,CACnFY,UAAW,oBAGnB,MAAMnD,QAAa2oC,EAASw2B,cAAc1gE,KAAK8yB,cAC/C,MAAa,OAATvxB,EACO,KAEJA,EAEX1D,0BAEI,MAAM0iE,EAAWvgE,KAAK2gE,wBACtB,GAAIJ,EAEA,aADMA,EAAS7C,OACR19D,KAIX,GAAY,YADOA,KAAK4gE,kBAEpB,OAAO5gE,KAGX,MAAMkqC,EAAWo0B,GAAYt+D,KAAKm5D,QAClC,OAAgB,MAAZjvB,EACOjjC,GAAOnD,WAAW,6CAA8C,wBAAyB,CAC5FY,UAAW,sBAGZ,IAAIxG,SAAQ,CAACI,EAASiuD,KACzB,MAAMsU,EAAYhjE,UACd,IAEI,GAAY,YADOmC,KAAK4gE,kBAEpB,OAAOtiE,EAAQ0B,MAEnBkqC,EAASwiB,KAAK,QAASmU,GAE3B,MAAOv/D,GACHirD,EAAOjrD,KAGfu/D,OAGRF,wBACI,OAAOf,GAAY5/D,MAAMugE,SAE7Bh/B,YAAY/hC,GAIR,MAHqB,iBAAT,IACRA,EAAMA,EAAI0M,UAEd,IAAY6yD,GAAc/+D,KAAMR,GAEpCiiC,SAASjiC,GAIL,MAHqB,iBAAT,IACRA,EAAMA,EAAI0M,UAEd,IAAYuzD,GAAaz/D,KAAMR,GAEnC3B,uBAAuBod,GAEnB,MAAM,IAAI9b,MAAM,SAEpBtB,kBAAkB6Q,EAAOq1C,EAAY,EAAGE,EAAU,UAC9C,MAAMtY,KAAEA,EAAI20B,YAAEA,GAAgBV,GAAY5/D,MACpCmyB,EAAWwZ,SAAqB20B,GAChChgC,SAAEA,EAAQyC,OAAEA,SAAiB88B,GAAU7/D,KAAM0O,GAC7C3N,EAAS,CAAEoxB,QAAAA,EAAS4Q,OAAAA,EAAQghB,UAAAA,EAAWE,QAAAA,GACvC/Z,EAAWo0B,GAAYt+D,KAAKm5D,QAClC,OAAKjvB,SAKSA,EAAS8e,QAAQjoD,IAAS3C,KAAK2I,GAClC,IAAIo2D,GAASp2D,EAAK/G,KAAKq9D,UAAW/8B,KALlCr5B,GAAOnD,WAAW,2CAA4C,wBAAyB,CAC1FY,UAAW,gBAOvB7G,SAAS6Q,EAAO5N,GACZ,MAAMksD,QAAYgT,GAAOhgE,KAAM0O,GAG/B,OAFAs+C,EAAIO,UAAU5qD,KAAK,CAAE7B,SAAAA,EAAU4rD,MAAM,IACrCM,EAAIt3C,QACG1V,KAEXnC,WAAW6Q,EAAO5N,GACd,MAAMksD,QAAYgT,GAAOhgE,KAAM0O,GAG/B,OAFAs+C,EAAIO,UAAU5qD,KAAK,CAAE7B,SAAAA,EAAU4rD,MAAM,IACrCM,EAAIt3C,QACG1V,KAEXnC,WAAW6Q,KAAU9I,GACjB,aAAa6iD,GAAKzoD,KAAM0O,EAAO9I,EAAM,MAEzC/H,oBAAoB6Q,GAChB,GAAIA,EAAO,CACP,MAAMs+C,QAAY8S,GAAO9/D,KAAM0O,GAC/B,OAAKs+C,EAGEA,EAAIO,UAAUruD,OAFV,EAIf,MAAM6gE,KAAEA,GAASH,GAAY5/D,MAC7B,IAAIwtD,EAAQ,EACZ,IAAK,MAAMD,UAAEA,KAAewS,EAAKzgE,SAC7BkuD,GAASD,EAAUruD,OAEvB,OAAOsuD,EAEX3vD,gBAAgB6Q,GACZ,GAAIA,EAAO,CACP,MAAMs+C,QAAY8S,GAAO9/D,KAAM0O,GAC/B,OAAKs+C,EAGEA,EAAIO,UAAUnvD,KAAI,EAAG0C,SAAAA,KAAeA,IAFhC,GAIf,MAAMi/D,KAAEA,GAASH,GAAY5/D,MAC7B,IAAI0G,EAAS,GACb,IAAK,MAAM6mD,UAAEA,KAAewS,EAAKzgE,SAC7BoH,EAASA,EAAO2O,OAAOk4C,EAAUnvD,KAAI,EAAG0C,SAAAA,KAAeA,KAE3D,OAAO4F,EAEX7I,UAAU6Q,EAAO5N,GACb,MAAMksD,QAAY8S,GAAO9/D,KAAM0O,GAC/B,IAAKs+C,EACD,OAAOhtD,KAEX,GAAIc,EAAU,CACV,MAAMpC,EAAQsuD,EAAIO,UAAUnvD,KAAI,EAAG0C,SAAAA,KAAeA,IAAU+D,QAAQ/D,GAChEpC,GAAS,GACTsuD,EAAIO,UAAUppB,OAAOzlC,EAAO,GAOpC,OAJgB,MAAZoC,GAA6C,IAAzBksD,EAAIO,UAAUruD,SAClC8tD,EAAI5E,OACJwX,GAAY5/D,MAAM+/D,KAAKrhC,OAAOsuB,EAAI3C,MAE/BrqD,KAEXnC,yBAAyB6Q,GACrB,GAAIA,EAAO,CACP,MAAMs+C,QAAY8S,GAAO9/D,KAAM0O,GAC/B,IAAKs+C,EACD,OAAOhtD,KAEXgtD,EAAI5E,OACJwX,GAAY5/D,MAAM+/D,KAAKrhC,OAAOsuB,EAAI3C,SAEjC,CACD,MAAM0V,KAAEA,GAASH,GAAY5/D,MAC7B,IAAK,MAAMqqD,IAAEA,EAAGjC,KAAEA,KAAU2X,EAAKzgE,SAC7B8oD,IACA2X,EAAKrhC,OAAO2rB,GAGpB,OAAOrqD,KAGXnC,kBAAkB6Q,EAAO5N,GACrB,aAAad,KAAK4oD,GAAGl6C,EAAO5N,GAGhCjD,qBAAqB6Q,EAAO5N,GACxB,aAAad,KAAKgB,IAAI0N,EAAO5N,GAEjCmF,kBAAkBi7B,GAMd,OALA,cAA6Bk/B,GACzBx/D,YAAYuxB,EAASgnC,EAAS,MAC1B/qD,MAAM+jB,EAAS+O,EAAKi4B,KAMhClzD,YAAY5G,EAAQ6hC,EAAKi4B,EAAS,MAE9B,OADiB,IAAIn5D,KAAKX,EAAQ6hC,EAAKi4B,IAOxC,MAAM2H,WAHb,WACI,OAAOV,GAEmBW,KCnoB9B,MAAMC,GAAW,gCACXC,GAAO,YACb,SAASC,GAAOC,EAAOC,GACnB,IAAIC,EAAU,GACd,OAAOF,EAAM5iE,QAAO,CAACC,EAAO8a,KACpBA,IAAS8nD,EACTC,IAEK/nD,EAAK7S,MAAMw6D,IAChBziE,EAAMmE,KAAKF,OAAOC,aAAa2+D,GAAW/nD,IAG1C+nD,EAAU,GACV7iE,EAAMmE,KAAK2W,IAER9a,IACR,IAyBA,SAAS8iE,GAAU3sD,GACtB,GAAgB,MAAZA,EAAK,GACL,MAAMtU,UAAU,yBAEpB,OA3BG,SAAgBsU,EAAMorD,GAEzB,IAAK,IAAI9gE,EAAI+hE,GAAS9hE,OAAS,EAAGD,GAAK,EAAGA,IACtC0V,EAAOA,EAAK7V,MAAMkiE,GAAS/hE,IAAI4E,KAAKk8D,EAAKl5D,UAAU,EAAI5H,EAAG,EAAIA,EAAI,IAGtE,MAAMsiE,EAAS,GACTC,EAAW7sD,EAAK0jB,QAAQ,8BAA8B,CAACl6B,EAAKiZ,EAAMqqD,EAAMnoD,KAC1E,GAAImoD,EACA,IAAK,IAAIxiE,EAAI2H,SAAS66D,GAAOxiE,GAAK,EAAGA,IACjCsiE,EAAO5+D,KAAK,UAIhB4+D,EAAO5+D,KAAKyU,EAAKhR,eAErB,MAAO,MAEX,GAAIo7D,EACA,MAAM,IAAIriE,MAAM,cAAcwE,KAAKC,UAAU49D,MAEjD,OAAON,GAAOA,GAAOK,EAAQ,KAAM,KAM5B5rC,CAAOhhB,EAAK9N,UAAU,EAAI,EAAIm6D,GAAS9hE,QAASyV,EAAK9N,UAAU,EAAG,EAAI,EAAIm6D,GAAS9hE,SC7CvF,MCEM+H,GAAS,IAAI5D,EDFH,yCEChB,MAAMq+D,GACT9gE,YAAY+gE,GACRviE,EAAiBY,KAAM,CAAE2hE,OAAAA,IAG7B7iE,MAAM8iE,GACF,OAAOA,EAASx7D,cAActH,MAAM,OAGxC+E,KAAKs9D,GACD,OAAOA,EAAMt9D,KAAK,MCT1B,IAWIg+D,GAAwBC,GAAmBC,GAAuBC,GAAoBC,GAXtFliE,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAOjF,MAAMiiE,WAAoBR,GAC7B9gE,YAAY+gE,EAAQhtD,EAAMie,GACtBxkB,MAAMuzD,GACNE,GAAuBt+D,IAAIvD,MAC3B8hE,GAAkBthE,IAAIR,UAAM,GAC5B+hE,GAAsBvhE,IAAIR,UAAM,GAChCgiE,GAAmBxhE,IAAIR,UAAM,GAC7BD,GAAuBC,KAAM8hE,GAAmBntD,EAAM,KACtD5U,GAAuBC,KAAM+hE,GAAuBnvC,EAAU,KAC9D7yB,GAAuBC,KAAMgiE,GAAoB,KAAM,KAEvDv7C,YAAU,OAAOhmB,GAAuBT,KAAM8hE,GAAmB,KACrEK,eACI,OAAOb,GAAU7gE,GAAuBT,KAAM8hE,GAAmB,MAErEM,QAAQ1jE,GACJ,MAAMyiE,EAAQ1gE,GAAuBT,KAAM6hE,GAAwB,IAAKI,IAAwB1hE,KAAKP,MAIrG,OAHItB,EAAQ,GAAKA,GAASyiE,EAAMjiE,SAC5B+H,GAAOlD,mBAAmB,uBAAuBrF,IAAS,QAASA,GAEhEyiE,EAAMziE,GAEjB2jE,aAAa/oD,GACT,OAAO7Y,GAAuBT,KAAM6hE,GAAwB,IAAKI,IAAwB1hE,KAAKP,MAAM6E,QAAQyU,IAGpHwoD,GAAoB,IAAIrgE,QAAWsgE,GAAwB,IAAItgE,QAAWugE,GAAqB,IAAIvgE,QAAWogE,GAAyB,IAAIv7D,QAAW27D,GAAyB,WAC3K,GAA6D,MAAzDxhE,GAAuBT,KAAMgiE,GAAoB,KAAc,CAC/D,MAAMb,EAAQnhE,KAAKmiE,eAInB,GAFiBxmC,GAAGwlC,EAAMt9D,KAAK,MAAQ,QAEtBpD,GAAuBT,KAAM+hE,GAAuB,KACjE,MAAM,IAAI5iE,MAAM,sBAAsBa,KAAK2hE,iBAG/C5hE,GAAuBC,KAAMgiE,GAAoBb,EAAO,KAE5D,OAAO1gE,GAAuBT,KAAMgiE,GAAoB,MClDrD,MAAMM,GAAS,IAHf,cAAqBJ,GACxBthE,cAAgBwN,MAAM,KAHZ,w3LACG,wECAJnH,GAAS,IAAI5D,ECFH,sCCCVk/D,GAAYtkE,OAAO4J,OAAO,CACvC26D,GAAIA,KCFJ,IAWIC,GAXA1iE,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAKjF,MAAMyiE,WAAqBR,GAC9BthE,YAAY+gE,EAAQhtD,EAAMguD,EAAQ/vC,GAC9BxkB,MAAMuzD,EAAQhtD,EAAMie,GACpB6vC,GAAqBjiE,IAAIR,UAAM,GAC/BD,GAAuBC,KAAMyiE,GAAsBE,EAAQ,KAE3DC,cAAY,OAAOniE,GAAuBT,KAAMyiE,GAAsB,KAC1EN,eACI,OCpBD,SAAoBxtD,EAAMkuD,GAC7B,IAAI1B,EAAQG,GAAU3sD,GAAM9Q,KAAK,KAoBjC,OAlBAg/D,EAAQ/jE,MAAM,MAAM8I,SAAS+6D,IACzB,MAAMl8D,EAAQk8D,EAAOl8D,MAAM,iCAC3B,IAAKA,EACD,MAAM,IAAItH,MAAM,kCAEpB,IAAI2jE,EAAY,EAChB,MAAMC,ECVP,SAAoBnzD,EAAO+E,GAC9B,MAAM5R,GAAY,GAAK6M,GAAS,EAC1BlJ,EAAS,GACf,IAAIlI,EAAQ,EAAG4R,EAAO,EAAG4yD,EAAQ,EACjC,IAAK,IAAI/jE,EAAI,EAAGA,EAAI0V,EAAKzV,OAAQD,IAK7B,IAHAT,EAAUA,GAAS,EAPZ,mEAOwBqG,QAAQ8P,EAAK1V,IAC5CmR,GAAQ,EAEDA,GAAQR,GAAO,CAElB,MAAM7R,EAASS,GAAU4R,EAAOR,EAChCpR,IAAU,GAAM4R,EAAOR,GAAU,EACjCQ,GAAQR,EAGM,IAAV7R,EACAilE,GAASjgE,GAGT2D,EAAO/D,KAAK5E,EAAQilE,GACpBA,EAAQ,GAIpB,OAAOt8D,EDfeu8D,CAAWr8D,SAASH,EAAM,IAAKA,EAAM,IACjDy8D,EAAWt8D,SAASH,EAAM,IAC1B08D,EAAQ,IAAI56D,OAAO,KAAK9B,EAAM,OAAQ,KAC5C06D,EAAQA,EAAM9oC,QAAQ8qC,GAAO,CAAChlE,EAAKwV,KAEnB,KADEovD,EAAUD,KAEpBnvD,EAASlR,OAAOC,aAAaiR,EAAO2e,WAAW,GAAI4wC,GACnDJ,KAEGnvD,QAGRwtD,EAAMriE,MAAM,KDDRskE,CAAWpjE,KAAKymB,MAAOzmB,KAAK4iE,UGf3C,SAASS,GAAajzD,GAClB,OAAS,GAAKA,GAAQ,GAAO,EAAIA,EAAQ,IAM7C,SAASkzD,GAAkB1B,EAAU2B,EAAWjB,IAC5Cr7D,GAAOrC,gBAAgB,QACP,MAAZ2+D,IACAA,EAAWjB,IAEf,MAAMnB,EAAQoC,EAASzkE,MAAM8iE,IACxBT,EAAMjiE,OAAS,GAAO,GAAKiiE,EAAMjiE,OAAS,IAAMiiE,EAAMjiE,OAAS,KAChE+H,GAAOlD,mBAAmB,0BAA2B,WAAY,gBAErE,MAAMy/D,EAAU9uD,GAAS,IAAIlO,WAAWoS,KAAKC,KAAK,GAAKsoD,EAAMjiE,OAAS,KACtE,IAAIyH,EAAS,EACb,IAAK,IAAI1H,EAAI,EAAGA,EAAIkiE,EAAMjiE,OAAQD,IAAK,CACnC,IAAIP,EAAQ6kE,EAASlB,aAAalB,EAAMliE,GAAGsD,UAAU,UACtC,IAAX7D,GACAuI,GAAOlD,mBAAmB,kCAAkC9E,IAAK,WAAY,gBAEjF,IAAK,IAAIwkE,EAAM,EAAGA,EAAM,GAAIA,IACpB/kE,EAAS,GAAM,GAAK+kE,IACpBD,EAAQ78D,GAAU,IAAO,GAAM,EAAKA,EAAS,GAEjDA,IAGR,MAAM+8D,EAAc,GAAKvC,EAAMjiE,OAAS,EAElCykE,EAAeN,GADAlC,EAAMjiE,OAAS,GAMpC,OAJiBwV,GAASiM,GAAO6iD,EAAQ36D,MAAM,EAAG66D,EAAc,KAAK,GAAKC,MACxDH,EAAQA,EAAQtkE,OAAS,GAAKykE,IAC5C18D,GAAOlD,mBAAmB,4BAA6B,WAAY,gBAEhEmR,GAAQsuD,EAAQ36D,MAAM,EAAG66D,EAAc,IAElD,SAASE,GAAkBJ,EAASD,EAAWjB,KACtCkB,EAAQtkE,OAAS,GAAMskE,EAAQtkE,OAAS,IAAMskE,EAAQtkE,OAAS,KAChE+H,GAAOlD,mBAAmB,uBAAwB,UAAW,gBAEjD,MAAZw/D,IACAA,EAAWjB,IAEf,MAAMuB,EAAU,CAAC,GACjB,IAAIC,EAAgB,GACpB,IAAK,IAAI7kE,EAAI,EAAGA,EAAIukE,EAAQtkE,OAAQD,IAE5B6kE,EAAgB,GAChBD,EAAQA,EAAQ3kE,OAAS,KAAO,EAChC2kE,EAAQA,EAAQ3kE,OAAS,IAAMskE,EAAQvkE,GACvC6kE,GAAiB,IAIjBD,EAAQA,EAAQ3kE,OAAS,KAAO4kE,EAChCD,EAAQA,EAAQ3kE,OAAS,IAAMskE,EAAQvkE,IAAO,EAAI6kE,EAElDD,EAAQlhE,KAAK6gE,EAAQvkE,KAvDpB,GAuDsC,EAAI6kE,GAvD7B,EAAK,MAwDnBA,GAAiB,GAIzB,MAAMC,EAAeP,EAAQtkE,OAAS,EAChC0zB,EAAWhsB,SAAS+Z,GAAO6iD,GAAS38D,UAAU,EAAG,GAAI,IAAMw8D,GAAaU,GAI9E,OAFAF,EAAQA,EAAQ3kE,OAAS,KAAO6kE,EAChCF,EAAQA,EAAQ3kE,OAAS,IAAO0zB,GAAa,EAAImxC,EAC1CR,EAAS1/D,KAAKggE,EAAQzlE,KAAKM,GAAU6kE,EAASnB,QAAQ1jE,MHpDjE+jE,GAAuB,IAAIhhE,QGsD3B,MAAMgK,GAAS,GACR,MAAMu4D,GACTpjE,YAAYoE,EAAOw+D,EAASS,EAAQlnD,EAAUwmD,GAC1B,MAAZxmD,IACAA,EAAW,IAEC,MAAZwmD,IACAA,EAAWjB,IAEfr7D,GAAOnC,cAAcE,EAAOyG,GAAQ,YACpCrM,EAAiBY,KAAM,CAAEikE,OAAAA,EAAQlnD,SAAAA,EAAUwmD,SAAAA,EAAUC,QAAAA,IAEzDU,cACI,MAAMlnD,EAAOgc,GAAY,WAAah5B,KAAK+c,SAAU2a,GAAyBysC,MAC9E,OAAOrnD,GAAOkc,GAAYh5B,KAAKikE,OAAQvsC,GAAyBysC,MAAOnnD,EAAM,KAAM,GAAI,UAE3F/W,kBAAkBg+D,EAAQlnD,EAAUwmD,GAEhC,MAAMC,EAAUF,GAAkBW,EAAQV,GAE1C,OADAU,EAASL,GAAkB38D,GAAO3B,SAASk+D,GAAUD,GAC9C,IAAIS,GAASv4D,GAAQ+3D,EAASS,EAAQlnD,EAAUwmD,GAE3Dt9D,mBAAmBm+D,EAAUrnD,EAAUwmD,GACnC,MAAMC,EAAUv8D,GAAO3B,SAAS8+D,EAAU,WACpCH,EAASL,GAAkBJ,EAASD,GAC1C,OAAO,IAAIS,GAASv4D,GAAQyJ,GAAQsuD,GAAUS,EAAQlnD,EAAUwmD,GAEpEt9D,uBAAuBm+D,EAAUb,GAE7B,OAAOK,GADS38D,GAAO3B,SAAS8+D,EAAU,WACRb,GAEtCt9D,uBAAuBg+D,EAAQV,GAC3B,OAAOD,GAAkBW,EAAQV,GAErCt9D,uBAAuBg+D,EAAQV,GAC3B,IAEI,OADAD,GAAkBW,EAAQV,IACnB,EAEX,MAAOjiE,IACP,OAAO,GCvHf,IAWI+iE,GAXAtkE,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IASjF,MAAMqkE,WAAmBnV,GAC5BvuD,YAAYw0C,EAAYlL,GACpB97B,MAAM87B,GACNm6B,GAAuB7jE,IAAIR,UAAM,GACjCD,GAAuBC,KAAMqkE,GAAwBjvB,EAAY,KAEjEh2C,EAAiBY,KAAM,CAAEmyB,QADT6rB,GAAeh+C,KAAKukE,WAAWlqB,aAI/CkqB,iBAAe,OAAO9jE,GAAuBT,KAAMqkE,GAAwB,KAC3EjvB,iBAAe,OAAOp1C,KAAKukE,WAAWnvB,WAC1Cv3C,mBAAqB,OAAOmC,KAAKmyB,QACjC29B,QAAQ5lB,GACJ,OAAO,IAAIo6B,GAAW7jE,GAAuBT,KAAMqkE,GAAwB,KAAMn6B,GAErFrsC,sBAAsB4tD,GAElB,MAAMx3B,EAAKh2B,OAAOoN,OAAO,GAAIogD,QAAW3tD,EAAkB,CACtDsN,GAAKqgD,EAAIrgD,GAAKspB,GAAe+2B,EAAIrgD,GAAIpL,KAAKkqC,eAAYxqC,EACtDyL,KAAOsgD,EAAItgD,KAAOupB,GAAe+2B,EAAItgD,KAAMnL,KAAKkqC,eAAYxqC,KAEjD,MAAXu0B,EAAG9oB,OACC2nB,GAAWmB,EAAG9oB,QAAUnL,KAAKmyB,SAC7BlrB,GAAOlD,mBAAmB,oCAAqC,UAAW0nD,EAAItgD,aAE3E8oB,EAAG9oB,MAGd,MAAMq5D,EAAMhlB,GAAYr0C,KAAK8oB,GAE7B,OADAuwC,EAAIhkC,UAAYxgC,KAAKukE,WAAWtoB,KAAKuoB,EAAI9kB,cAClC8kB,EAAIp3B,WAEfvvC,kBAAkB4F,GACd,OAAOzD,KAAKukE,WAAWtoB,KAAK9f,GAAY14B,IAAU2pC,WAEtDvvC,oBAAoBuhC,EAAQvgC,EAAOd,GAE/B,MAAM80D,QAAkB70B,GAAiB80B,aAAa1zB,EAAQvgC,EAAOd,GAAOF,MAAOiF,IAC/E,GAAqB,MAAjB9C,KAAKkqC,SACL,OAAOjjC,GAAOnD,WAAW,8CAA+C,wBAAyB,CAC7FY,UAAW,cACXzC,KAAM,CAAEa,KAAAA,KAGhB,MAAMqvB,QAAgBnyB,KAAKkqC,SAAStV,YAAY9xB,GAChD,OAAe,MAAXqvB,EACOlrB,GAAOnD,WAAW,wBAAyB,oBAAqB,CACnE/F,MAAO+E,IAGRqvB,KAEX,OAAOnyB,KAAKukE,WAAWtoB,KAAKje,GAAiB/iB,KAAK43C,EAAUzzB,OAAQvgC,EAAOg0D,EAAU90D,QAAQqvC,YAGrGi3B,GAAyB,IAAI5iE,QCzE7B,IAWIoI,GAAI46D,GAAwBC,GAX5BjkE,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAEpFF,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAc5F,MAAC4mE,GAAc,mBAErBC,GAAe,IAAIp+D,WAAW,CAAC,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,MAEnFypB,GAAIxqB,OAAO,sEAEjB,SAASo/D,GAAK9mE,EAAOmB,GACjB,IAAIwH,EAAS,GACb,KAAO3I,GACH2I,EAJQ,mBAIS3I,EAAQ,IAAM2I,EAC/B3I,EAAQ6a,KAAK4vB,MAAMzqC,EAAQ,IAE/B,KAAO2I,EAAOxH,OAAkB,EAATA,GACnBwH,EAAS,IAAMA,EAEnB,MAAO,KAAOA,EAElB,SAASo+D,GAAkBt1D,GACvB,MAAMzR,EAAQkJ,GAAO3B,SAASkK,GAG9B,OAAOqE,GADOwB,GAAO,CAACtX,EADR0X,GAAUkL,GAAOA,GAAO5iB,IAAS,EAAG,MAItD,MAAM0N,GAAS,GACf,SAASs5D,GAAMrmE,EAAOsmE,EAAW3qB,EAAWjF,GACxC,MAAMzgC,EAAO,IAAInO,WAAW,IAC5B,GAvBgB,WAuBZ9H,EAAqB,CACrB,GAAkB,MAAd02C,EACA,OAAOnuC,GAAOnD,WAAW,uCAAwC,wBAAyB,CACtFY,UAAW,gBAInBiQ,EAAKnU,IAAIkU,GAAS0gC,GAAa,QAI/BzgC,EAAKnU,IAAIkU,GAAS2lC,IAGtB,IAAK,IAAIp7C,EAAI,GAAIA,GAAK,EAAGA,GAAK,EAC1B0V,EAAK,IAAM1V,GAAK,IAAQP,GAAU,GAAKO,EAAM,IAEjD,MAAMgmE,EAAIvwD,GAAS8R,GAAY,SAAUw+C,EAAWrwD,IACpD,MAAO,CAAEuwD,GAAID,EAAEp8D,MAAM,EAAG,IAAKs8D,GAAIF,EAAEp8D,MAAM,KAE7C,SAASu8D,GAAW9pB,EAAM+pB,GACtB,MAAMt5D,EAAas5D,EAAKvmE,MAAM,KAC9B,GAA0B,IAAtBiN,EAAW7M,QAAmC,MAAlB6M,EAAW,IAA6B,IAAfuvC,EAAKlxC,MAC1D,MAAM,IAAIjL,MAAM,kBAAoBkmE,GAElB,MAAlBt5D,EAAW,IACXA,EAAWwN,QAEf,IAAI7S,EAAS40C,EACb,IAAK,IAAIr8C,EAAI,EAAGA,EAAI8M,EAAW7M,OAAQD,IAAK,CACxC,MAAMqmE,EAAYv5D,EAAW9M,GAC7B,GAAIqmE,EAAU7+D,MAAM,aAAc,CAC9B,MAAM/H,EAAQkI,SAAS0+D,EAAUz+D,UAAU,EAAGy+D,EAAUpmE,OAAS,IACjE,GAAIR,GAxDI,WAyDJ,MAAM,IAAIS,MAAM,wBAA0BmmE,GAE9C5+D,EAASA,EAAO6+D,YA3DR,WA2DkC7mE,OAEzC,CAAA,IAAI4mE,EAAU7+D,MAAM,YAQrB,MAAM,IAAItH,MAAM,4BAA8BmmE,GARZ,CAClC,MAAM5mE,EAAQkI,SAAS0+D,GACvB,GAAI5mE,GA/DI,WAgEJ,MAAM,IAAIS,MAAM,wBAA0BmmE,GAE9C5+D,EAASA,EAAO6+D,YAAY7mE,KAMpC,OAAOgI,EAEJ,MAAM8+D,WAAqBlB,GAC9B1jE,YAAYoE,EAAOu/D,EAAYkB,EAAmBT,EAAWK,EAAM3mE,EAAO0L,EAAOw3D,EAAU13B,GACvF97B,MAAMm2D,EAAYr6B,GAClBjjC,GAAOnC,cAAcE,EAAOyG,GAAQ,gBACpCrM,EAAiBY,KAAM,CAAEq6C,UAAWkqB,EAAW/nB,sBAE/Cp9C,EAAiBY,KAAM,CACnBylE,kBAAAA,EAAmBC,YAFHjwD,GAAU+W,GAAU7L,GAAO3gB,KAAKq6C,YAAa,EAAG,GAGhE2qB,UAAAA,EAAWK,KAAAA,EAAM3mE,MAAAA,EAAO0L,MAAAA,IAE5BhL,EAAiBY,KAAM,CAAE4hE,SAAAA,IAE7B9R,QAAQ5lB,GACJ,OAAO,IAAIs7B,GAAa/5D,GAAQzL,KAAKukE,WAAYvkE,KAAKylE,kBAAmBzlE,KAAKglE,UAAWhlE,KAAKqlE,KAAMrlE,KAAKtB,MAAOsB,KAAKoK,MAAOpK,KAAK4hE,SAAU13B,GAE3Iy7B,kBAMA,GAAI3lE,KAAKoK,OAAS,IACd,MAAM,IAAIjL,MAAM,oBAEpB,OAAO2lE,GAAkBzvD,GAAO,CAC5B,aAAcwvD,GAAK7kE,KAAKoK,MAAO,GAAIpK,KAAKylE,kBACxCZ,GAAK7kE,KAAKtB,MAAO,GAAIsB,KAAKglE,UAC1B3vD,GAAO,CAAC,OAAQrV,KAAKo1C,gBAG7BwwB,UAAY,OAAqB,MAAb5lE,KAAKqlE,KACzBQ,SACI,OAAO,IAAIC,GAAiBr6D,GAAQzL,KAAKmyB,QAASnyB,KAAKq6C,UAAWr6C,KAAKylE,kBAAmBzlE,KAAKglE,UAAWhlE,KAAKqlE,KAAMrlE,KAAKtB,MAAOsB,KAAKoK,MAAOpK,KAAKkqC,UAEtJq7B,YAAYQ,GACR,MAAMrnE,EAAQuI,GAAOzB,UAAUugE,EAAQ,SACvC,GAAIrnE,EAAQ,WACR,MAAM,IAAIS,MAAM,mBAAqBsD,OAAO/D,IAGhD,IAAI2mE,EAAOrlE,KAAKqlE,KACZA,IACAA,GAAQ,KAAe,WAAR3mE,GApHP,WAqHJA,IACA2mE,GAAQ,MAGhB,MAAMF,GAAEA,EAAED,GAAEA,GAAOH,GAAMrmE,EAAOsB,KAAKglE,UAAWhlE,KAAKq6C,UAAWr6C,KAAKo1C,YAC/D4wB,EAAK,IAAI1pB,GAAW5sC,IAAOH,GAAS21D,GAAMz/D,OAAOzF,KAAKo1C,aAAenlB,GAAG,KAC9E,OAAO,IAAIu1C,GAAa/5D,GAAQu6D,EAAIhmE,KAAK0lE,YAAaxwD,GAAQiwD,GAAKE,EAAM3mE,EAAOsB,KAAKoK,MAAQ,EAAGpK,KAAK4hE,SAAU5hE,KAAKkqC,UAExHk7B,WAAWC,GACP,OAAOD,GAAWplE,KAAMqlE,GAE5Bp/D,gBAAgB0zC,GACZ,OAAOl5C,GAAuB+kE,GAAc37D,GAAI,IAAK46D,IAAwBlkE,KAAKilE,GAAc7rB,EAAM,MAE1G1zC,kBAAkBg+D,EAAQlnD,EAAW,GAAIsoD,EAAOV,GAAapB,EAAWjB,IAC/D+C,IACDA,EAAOV,IAEX,MAAM/C,EAAWoC,GAASiC,WAAWhC,EAAQlnD,EAAUwmD,GACvD,OAAO9iE,GAAuB+kE,GAAc37D,GAAI,IAAK46D,IAAwBlkE,KAAKilE,GAAc5D,EAASsC,cAAetC,GAAUwD,WAAWC,GAEjJp/D,oBAAoB27D,EAAUyD,EAAOV,IAIjC,OAHKU,IACDA,EAAOV,IAEJlkE,GAAuB+kE,GAAc37D,GAAI,IAAK46D,IAAwBlkE,KAAKilE,GAAc5D,EAASsC,cAAetC,GAAUwD,WAAWC,GAEjJp/D,uBAAuB0/D,GACnB,MAAMxwD,EAAQT,GAASZ,GAAa6xD,IACf,KAAjBxwD,EAAMjW,QAAiB4lE,GAAkB3vD,EAAMtM,MAAM,EAAG,OAAS88D,GACjE1+D,GAAOlD,mBAAmB,uBAAwB,cAAe,gBAErE,MAAMqG,EAAQ+K,EAAM,GACdswD,EAAoBvwD,GAAQC,EAAMtM,MAAM,EAAG,IAC3CnK,EAAQkI,SAASsO,GAAQC,EAAMtM,MAAM,EAAG,KAAKhC,UAAU,GAAI,IAC3Dm+D,EAAY9vD,GAAQC,EAAMtM,MAAM,GAAI,KACpCrJ,EAAM2V,EAAMtM,MAAM,GAAI,IAC5B,OAAQqM,GAAQC,EAAMtM,MAAM,EAAG,KAE3B,IAAK,aACL,IAAK,aAAc,CACf,MAAMwxC,EAAYnlC,GAAQ1V,GAC1B,OAAO,IAAIsmE,GAAiBr6D,GAAQuyC,GAAe3D,GAAYA,EAAWorB,EAAmBT,EAAW,KAAMtmE,EAAO0L,EAAO,MAGhI,IAAK,aACL,IAAK,cACD,GAAe,IAAX5K,EAAI,GACJ,MAEJ,OAAO,IAAIgmE,GAAa/5D,GAAQ,IAAI6wC,GAAW98C,EAAIqJ,MAAM,IAAK48D,EAAmBT,EAAW,KAAMtmE,EAAO0L,EAAO,KAAM,MAE9H,OAAOnD,GAAOlD,mBAAmB,8BAA+B,cAAe,gBAEnFkC,oBAAoB8W,EAAW,GAAIsoD,EAAOV,GAAapB,EAAWjB,IACzD+C,IACDA,EAAOV,IAEX,MAAM/C,EAAWoC,GAASkC,YAAY74C,GAAY,IAAKtQ,EAAUwmD,GACjE,OAAO9iE,GAAuB+kE,GAAc37D,GAAI,IAAK46D,IAAwBlkE,KAAKilE,GAAc5D,EAASsC,cAAetC,GAAUwD,WAAWC,IAGrJx7D,GAAK27D,GAAcf,GAAyB,SAAgC0B,EAAOvE,GAC/E,MAAMjoB,EAAO1yC,GAAO3B,SAAS6gE,EAAO,QACpC,GAAIxsB,EAAKz6C,OAAS,IAAMy6C,EAAKz6C,OAAS,GAClC,MAAM,IAAIC,MAAM,gBAEpB,MAAM8lE,EAAIvwD,GAAS8R,GAAY,SAAUo+C,GAAcjrB,IACjD4qB,EAAa,IAAIjoB,GAAWpnC,GAAQ+vD,EAAEp8D,MAAM,EAAG,MACrD,OAAO,IAAI28D,GAAa/5D,GAAQ84D,EAAY,aAAcrvD,GAAQ+vD,EAAEp8D,MAAM,KAAM,IAAK,EAAG,EAAG+4D,EAAU,OAElG,MAAMkE,WAAyBjW,GAClCjvD,YAAYoE,EAAOmtB,EAASkoB,EAAWorB,EAAmBT,EAAWK,EAAM3mE,EAAO0L,EAAO8/B,GACrF97B,MAAM+jB,EAAS+X,GACfjjC,GAAOnC,cAAcE,EAAOyG,GAAQ,oBACpCrM,EAAiBY,KAAM,CAAEq6C,UAAAA,IAEzBj7C,EAAiBY,KAAM,CACnBq6C,UAAAA,EAAWqrB,YAFKjwD,GAAU+W,GAAU7L,GAAO05B,IAAa,EAAG,GAEnCorB,kBAAAA,EAAmBT,UAAAA,EAAWK,KAAAA,EAAM3mE,MAAAA,EAAO0L,MAAAA,IAG3E0lD,QAAQ5lB,GACJ,OAAO,IAAI47B,GAAiBr6D,GAAQzL,KAAKmyB,QAASnyB,KAAKq6C,UAAWr6C,KAAKylE,kBAAmBzlE,KAAKglE,UAAWhlE,KAAKqlE,KAAMrlE,KAAKtB,MAAOsB,KAAKoK,MAAO8/B,GAE7Iy7B,kBAMA,GAAI3lE,KAAKoK,OAAS,IACd,MAAM,IAAIjL,MAAM,oBAEpB,OAAO2lE,GAAkBzvD,GAAO,CAC5B,aACAwvD,GAAK7kE,KAAKoK,MAAO,GACjBpK,KAAKylE,kBACLZ,GAAK7kE,KAAKtB,MAAO,GACjBsB,KAAKglE,UACLhlE,KAAKq6C,aAGburB,UAAY,OAAqB,MAAb5lE,KAAKqlE,KACzBE,YAAYQ,GACR,MAAMrnE,EAAQuI,GAAOzB,UAAUugE,EAAQ,SACvC,GAAIrnE,EAAQ,WACR,MAAM,IAAIS,MAAM,mBAAqBsD,OAAO/D,IAGhD,IAAI2mE,EAAOrlE,KAAKqlE,KACZA,IACAA,GAAQ,KAAe,WAAR3mE,GApOP,WAqOJA,IACA2mE,GAAQ,MAGhB,MAAMF,GAAEA,EAAED,GAAEA,GAAOH,GAAMrmE,EAAOsB,KAAKglE,UAAWhlE,KAAKq6C,UAAW,MAC1D+rB,EAAK9pB,GAAW+pB,WAAWnB,EAAIllE,KAAKq6C,WAAW,GAC/CloB,EAAU6rB,GAAeooB,GAC/B,OAAO,IAAIN,GAAiBr6D,GAAQ0mB,EAASi0C,EAAIpmE,KAAK0lE,YAAaxwD,GAAQiwD,GAAKE,EAAM3mE,EAAOsB,KAAKoK,MAAQ,EAAGpK,KAAKkqC,UAEtHk7B,WAAWC,GACP,OAAOD,GAAWplE,KAAMqlE,IAGzB,MAAMiB,GACT1lE,YAAYqjE,EAAQlnD,EAAW,GAAIsoD,EAAO,iBAAkB1D,EAASW,IACjEoC,GAA0BlkE,IAAIR,UAAM,GACpCD,GAAuBC,KAAM0kE,GAA2Bc,GAAaS,WAAWhC,EAAQlnD,EAAUsoD,EAAM1D,GAAS,KAErH4E,UAAU7nE,EAAQ,GACd,OAAO+B,GAAuBT,KAAM0kE,GAA2B,KAAKa,YAAY7mE,IAIjF,SAAS8nE,GAAeT,GAC3B,MAAMrnE,EAAQuI,GAAOzB,UAAUugE,EAAQ,SAIvC,OAHIrnE,EAAQ,GAAKA,GA9PD,aA+PZuI,GAAOlD,mBAAmB,wBAAyB,QAASrF,GAEzD,aAAaA;uFANxBgmE,GAA4B,IAAIjjE,QCpRhC,IAWIglE,GAAUC,GAASC,GAXnB5mE,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAIxF,MAAM2mE,GAAiB,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,IAEvCC,GAAO,CAAC,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,KAEtLC,GAAI,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CC,GAAK,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAEhgDtmD,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FsmD,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAE1/FC,GAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAE1/Fr3B,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/Fq3B,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY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"} \ No newline at end of file +{"version":3,"file":"ethers.min.js","sources":["../../properties/lib/properties.js","../../properties/lib/events.js","../../properties/lib/storage.js","../../logger/lib/errors.js","../../logger/lib/logger.js","../../logger/lib/_version.js","../../abi/lib/_version.js","../../abi/lib/logger.js","../../abi/lib/fragments.js","../../math/lib/_version.js","../../math/lib/logger.js","../../math/lib/convert.js","../../math/lib/maths.js","../../math/lib/fixednumber.js","../../math/lib/base58.js","../../math/lib/units.js","../../bytes/lib/check.js","../../bytes/lib/_version.js","../../bytes/lib/logger.js","../../bytes/lib/array.js","../../bytes/lib/base64.js","../../bytes/lib/hex.js","../../bytes/lib/data.js","../../bytes/lib/pad.js","../../abi/lib/coders/abstract-coder.js","../../../node_modules/@noble/hashes/esm/utils.js","../../../node_modules/@noble/hashes/esm/hmac.js","../../../node_modules/@noble/hashes/esm/pbkdf2.js","../../../node_modules/@noble/hashes/esm/_sha2.js","../../../node_modules/@noble/hashes/esm/sha256.js","../../../node_modules/@noble/hashes/esm/_u64.js","../../../node_modules/@noble/hashes/esm/sha512.js","../../crypto/lib/_version.js","../../crypto/lib/logger.js","../../crypto/lib/crypto-browser.js","../../crypto/lib/hmac.js","../../../node_modules/@noble/hashes/esm/sha3.js","../../crypto/lib/keccak.js","../../../node_modules/@noble/hashes/esm/ripemd160.js","../../crypto/lib/ripemd160.js","../../crypto/lib/pbkdf2.js","../../crypto/lib/random.js","../../../node_modules/@noble/hashes/esm/scrypt.js","../../crypto/lib/scrypt.js","../../crypto/lib/sha2.js","../../crypto/lib/index.js","../../address/lib/_version.js","../../address/lib/logger.js","../../address/lib/address.js","../../rlp/lib/_version.js","../../rlp/lib/logger.js","../../rlp/lib/encode.js","../../rlp/lib/decode.js","../../address/lib/contract-address.js","../../address/lib/checks.js","../../abi/lib/typed.js","../../abi/lib/coders/address.js","../../abi/lib/coders/anonymous.js","../../abi/lib/coders/array.js","../../abi/lib/coders/boolean.js","../../abi/lib/coders/bytes.js","../../abi/lib/coders/fixed-bytes.js","../../abi/lib/coders/null.js","../../abi/lib/coders/number.js","../../strings/lib/_version.js","../../strings/lib/logger.js","../../strings/lib/utf8.js","../../strings/lib/bytes32.js","../../strings/lib/idna.js","../../abi/lib/coders/string.js","../../abi/lib/coders/tuple.js","../../abi/lib/abi-coder.js","../../hash/lib/id.js","../../hash/lib/_version.js","../../hash/lib/logger.js","../../hash/lib/namehash.js","../../hash/lib/message.js","../../hash/lib/solidity.js","../../hash/lib/typed-data.js","../../abi/lib/interface.js","../../web/lib/_version.js","../../web/lib/logger.js","../../web/lib/response.js","../../web/lib/get-url-browser.js","../../web/lib/request.js","../../web/lib/fetch-data.js","../../providers/lib/_version.js","../../providers/lib/logger.js","../../providers/lib/ens-resolver.js","../../signing-key/lib/_version.js","../../signing-key/lib/logger.js","../../signing-key/lib/signature.js","../../../node_modules/@noble/secp256k1/lib/esm/index.js","../../signing-key/lib/signing-key.js","../../transaction/lib/accesslist.js","../../transaction/lib/address.js","../../transaction/lib/_version.js","../../transaction/lib/logger.js","../../transaction/lib/transaction.js","../../providers/lib/provider.js","../../providers/lib/formatter.js","../../providers/lib/plugins-network.js","../../providers/lib/network.js","../../providers/lib/subscriber-polling.js","../../providers/lib/abstract-provider.js","../../providers/lib/abstract-signer.js","../../providers/lib/community.js","../../providers/lib/subscriber-filterid.js","../../providers/lib/provider-jsonrpc.js","../../providers/lib/provider-ankr.js","../../providers/lib/provider-alchemy.js","../../providers/lib/provider-cloudflare.js","../../providers/lib/provider-etherscan.js","../../providers/lib/provider-infura.js","../../providers/lib/provider-pocket.js","../../providers/lib/provider-fallback.js","../../providers/lib/shuffle.js","../../providers/lib/ws-browser.js","../../providers/lib/provider-socket.js","../../providers/lib/provider-websocket.js","../../providers/lib/default-provider.js","../../providers/lib/provider-ipcsocket-browser.js","../../contract/lib/wrappers.js","../../contract/lib/_version.js","../../contract/lib/logger.js","../../contract/lib/contract.js","../../wordlists/lib/decode-owl.js","../../wordlists/lib/_version.js","../../wordlists/lib/logger.js","../../wordlists/lib/wordlist.js","../../wordlists/lib/wordlist-owl.js","../../wordlists/lib/lang-en.js","../../wallet/lib/logger.js","../../wallet/lib/_version.js","../../wordlists/lib/wordlists-en.js","../../wordlists/lib/wordlist-owla.js","../../wordlists/lib/decode-owla.js","../../wordlists/lib/bit-reader.js","../../wallet/lib/mnemonic.js","../../wallet/lib/base-wallet.js","../../wallet/lib/hdwallet.js","../../../node_modules/aes-js/lib/aes.js","../../../node_modules/aes-js/lib/mode.js","../../../node_modules/aes-js/lib/mode-cbc.js","../../../node_modules/aes-js/lib/mode-cfb.js","../../../node_modules/aes-js/lib/mode-ctr.js","../../wallet/lib/utils.js","../../wallet/lib/json-crowdsale.js","../../../node_modules/aes-js/lib/padding.js","../../../node_modules/aes-js/lib/mode-ofb.js","../../wallet/lib/json-keystore.js","../../wallet/lib/wallet.js","../lib/_version.js"],"sourcesContent":["//import type { BigNumber, BigNumberish } from \"./big-number\";\n//import type { Bytes, BytesLike } from \"./bytes\";\n//import type { Signature, SignatureLike } from \"./signature\";\n/*\nexport type Loose = T extends BigNumber ? BigNumberish:\n T extends number ? BigNumberish:\n T extends Bytes ? BytesLike:\n T extends Signature ? SignatureLike:\n T;\nexport type LooseObject = { [P in keyof T]?: Loose; };\n*/\n//export type Deferrable = T | Promise;\n/*\nexport type DeferrableObject = {\n [ P in keyof T ]: Deferrable\n};\n*/\n/*\nexport type Frozen = Readonly<{\n [ P in keyof T ]: T[P] extends Freezable ? Frozen: T[P];\n}>;\n\nexport interface Freezable {\n clone(): T;\n freeze(): Frozen;\n isFrozen(): boolean;\n}\n*/\n/*\nconst _data: WeakMap = new WeakMap();\n\nexport class Data implements Freezable {\n #props: {\n data: Uint8Array\n };\n\n [ index: number ]: number;\n\n constructor(lengthOrData: number | Uint8Array) {\n if (typeof(lengthOrData) === \"number\") {\n _data[this] = new Uint8Array(lengthOrData);\n } else {\n _data[this] = lengthOrData;\n }\n\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return Reflect.get(target, prop, receiver); }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n throw new Error(\"\");\n }\n return data[index];\n },\n\n set: (target, prop, value, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return false; }\n\n if (value < 0 || value > 255 || value % 1) { return false; }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n return false;\n }\n\n data[index] = value;\n\n return true;\n },\n });\n }\n\n toString(): string {\n return this.slice().toString();\n }\n\n slice(): Uint8Array {\n return _data.get(this).slice();\n }\n\n clone(): Data {\n return new Data(this.slice());\n }\n\n freeze(): Frozen {\n //Object.freeze(this.#props);\n return this;\n }\n\n isFrozen(): boolean {\n return Object.isFrozen(this.#props);\n }\n}\nconst d = new Data(4);\nconsole.log(d.toString());\nd[0] = 45;\nconsole.log(d.toString());\n*/\n/*\nexport type DeferrableObject = {\n [ P in keyof T ]: Deferrable\n};\n*/\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n/*\nexport type IsCancelled = () => Promise;\n\nexport function createPromise(resolve: (isCancelled: IsCancelled, (result: T) => void) => void, reject: (error: Error) => void, isCancelled: IsCancelled): CancellablePromise {\n let cancelled = false;\n\n const promise = new Promise((resolve, reject) => {\n \n });\n\n (>promise).cancel = function() {\n cancelled = true;\n };\n\n return (>promise);\n}\n*/\n/*\nexport class A implements Freezable {\n foo: number;\n constructor(foo: number) {\n this.foo = foo;\n }\n freeze(): Frozen {\n Object.freeze(this);\n return this;\n }\n clone(): A {\n return new A(this.foo);\n }\n}\n\nexport class B implements Freezable {\n a: A;\n constructor(a: A) {\n this.a = a;\n }\n freeze(): Frozen {\n this.a.freeze();\n Object.freeze(this);\n return this;\n }\n clone(): B {\n return new B(this.a);\n }\n}\n\nexport function test() {\n const a = new A(123);\n const b = new B(a);\n b.a = new A(234);\n const b2 = b.freeze();\n b2.a.foo = 123; // = a;\n}\n*/\nfunction checkType(value, type) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n throw new Error(\"invalid value for type\");\n}\nexport function defineProperties(target, values, types, defaults) {\n for (let key in values) {\n let value = values[key];\n const fallback = (defaults ? defaults[key] : undefined);\n if (fallback !== undefined) {\n value = fallback;\n }\n else {\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type);\n }\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _EventPayload_listener;\nimport { defineProperties } from \"./properties.js\";\nexport class EventPayload {\n constructor(emitter, listener, filter) {\n _EventPayload_listener.set(this, void 0);\n __classPrivateFieldSet(this, _EventPayload_listener, listener, \"f\");\n defineProperties(this, { emitter, filter });\n }\n async removeListener() {\n if (__classPrivateFieldGet(this, _EventPayload_listener, \"f\") == null) {\n return;\n }\n await this.emitter.off(this.filter, __classPrivateFieldGet(this, _EventPayload_listener, \"f\"));\n }\n}\n_EventPayload_listener = new WeakMap();\n//# sourceMappingURL=events.js.map","export function getStore(store, key) {\n return store[key];\n}\nexport function setStore(store, key, value) {\n if (Object.isFrozen(store)) {\n throw new Error(\"frozen object is immuatable; cannot set \" + key);\n }\n store[key] = value;\n}\n//# sourceMappingURL=storage.js.map","//export type TransactionReceipt {\n//}\n/**\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, errors.CALL_EXCEPTION)) {\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n//# sourceMappingURL=errors.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Logger_instances, _Logger_getBytes, _Logger_log;\nimport { version } from \"./_version.js\";\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\n;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nlet _globalLogger = null;\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\nfunction defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true, writable: false, value,\n });\n}\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\n// The type of error to use for various error codes\nconst ErrorConstructors = {};\nErrorConstructors.INVALID_ARGUMENT = TypeError;\nErrorConstructors.NUMERIC_FAULT = RangeError;\nErrorConstructors.BUFFER_OVERRUN = RangeError;\nexport class Logger {\n constructor(version) {\n _Logger_instances.add(this);\n defineReadOnly(this, \"version\", version || \"_\");\n }\n makeError(message, code, info) {\n {\n const details = [];\n if (info) {\n for (const key in info) {\n const value = (info[key]);\n try {\n details.push(key + \"=\" + JSON.stringify(value));\n }\n catch (error) {\n details.push(key + \"=[could not serialize object]\");\n }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${this.version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n const create = ErrorConstructors[code] || Error;\n const error = (new create(message));\n defineReadOnly(error, \"code\", code);\n if (info) {\n for (const key in info) {\n defineReadOnly(error, key, (info[key]));\n }\n }\n return error;\n }\n throwError(message, code, info) {\n throw this.makeError(message, code, info);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, \"INVALID_ARGUMENT\", {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, info) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code || \"UNKNOWN_ERROR\", info);\n }\n assertArgument(condition, message, name, value) {\n return this.assert(condition, message, \"INVALID_ARGUMENT\", {\n argument: name,\n value\n });\n }\n assertIntegerArgument(name, value, lower, upper) {\n let message = null;\n if (typeof (value) !== \"number\") {\n message = \"expected a number\";\n }\n else if (!Number.isInteger(value)) {\n message = \"invalid integer\";\n }\n else if ((lower != null && value < lower) || (upper != null && value > upper)) {\n message = \"value is out of range\";\n }\n if (message) {\n this.throwArgumentError(message, name, value);\n }\n }\n assertSafeUint53(value, message) {\n this.assertArgument((typeof (value) === \"number\"), \"invalid number\", \"value\", value);\n if (message == null) {\n message = \"value not safe\";\n }\n const operation = \"assertSafeInteger\";\n this.assert((value >= 0 && value < 0x1fffffffffffff), message, \"NUMERIC_FAULT\", {\n operation, fault: \"out-of-safe-range\", value\n });\n this.assert((value % 1) === 0, message, \"NUMERIC_FAULT\", {\n operation, fault: \"non-integer\", value\n });\n }\n assertNormalize(form) {\n if (_normalizeForms.indexOf(form) === -1) {\n this.throwError(\"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n }\n }\n assertPrivate(givenGuard, guard, className = \"\") {\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n this.throwError(`private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n }\n assertArgumentCount(count, expectedCount, message = \"\") {\n if (message) {\n message = \": \" + message;\n }\n this.assert((count >= expectedCount), \"missing arguemnt\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n this.assert((count >= expectedCount), \"too many arguemnts\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n }\n getBytes(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, false);\n }\n getBytesCopy(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, true);\n }\n getNumber(value, name) {\n switch (typeof (value)) {\n case \"bigint\":\n if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return Number(value);\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return value;\n case \"string\":\n try {\n return this.getNumber(BigInt(value), name);\n }\n catch (e) {\n this.throwArgumentError(`invalid numeric string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid numeric value\", name || \"value\", value);\n }\n getBigInt(value, name) {\n switch (typeof (value)) {\n case \"bigint\": return value;\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return BigInt(value);\n case \"string\":\n try {\n return BigInt(value);\n }\n catch (e) {\n this.throwArgumentError(`invalid BigNumberish string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid BigNumberish value\", name || \"value\", value);\n }\n debug(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.DEBUG, args);\n }\n info(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.INFO, args);\n }\n warn(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.WARNING, args);\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setLogLevel(logLevel) {\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_Logger_instances = new WeakSet(), _Logger_getBytes = function _Logger_getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x([0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n return this.throwArgumentError(\"invalid BytesLike value\", name || \"value\", value);\n}, _Logger_log = function _Logger_log(logLevel, args) {\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]) {\n return;\n }\n console.log.apply(console, args);\n};\nLogger.LogLevels = LogLevel;\n//# sourceMappingURL=logger.js.map","export const version = \"@ethersproject/logger@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","export const version = \"@ethersproject/abi@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TokenString_instances, _TokenString_offset, _TokenString_tokens, _TokenString_subTokenString, _ParamType_instances, _ParamType_walkAsync;\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n;\nexport var FormatType;\n(function (FormatType) {\n // Bare formatting, as is needed for computing a sighash of an event or function\n FormatType[\"sighash\"] = \"sighash\";\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n FormatType[\"minimal\"] = \"minimal\";\n // Human-Readable with nice spacing, including all names\n FormatType[\"full\"] = \"full\";\n // JSON-format a la Solidity\n FormatType[\"json\"] = \"json\";\n})(FormatType || (FormatType = {}));\n;\n// [ \"a\", \"b\" ] => { \"a\": 1, \"b\": 1 }\nfunction setify(items) {\n const result = new Set();\n items.forEach((k) => result.add(k));\n return Object.freeze(result);\n}\n// Visibility Keywords\nconst _kwVisib = \"constant external internal payable private public pure view\";\nconst KwVisib = setify(_kwVisib.split(\" \"));\nconst _kwTypes = \"constructor error event function struct\";\nconst KwTypes = setify(_kwTypes.split(\" \"));\nconst _kwModifiers = \"calldata memory storage payable indexed\";\nconst KwModifiers = setify(_kwModifiers.split(\" \"));\nconst _kwOther = \"tuple returns\";\n// All Keywords\nconst _keywords = [_kwTypes, _kwModifiers, _kwOther, _kwVisib].join(\" \");\nconst Keywords = setify(_keywords.split(\" \"));\n// Single character tokens\nconst SimpleTokens = {\n \"(\": \"OPEN_PAREN\", \")\": \"CLOSE_PAREN\",\n \"[\": \"OPEN_BRACKET\", \"]\": \"CLOSE_BRACKET\",\n \",\": \"COMMA\", \"@\": \"AT\"\n};\n// Parser regexes to consume the next token\nconst regexWhitespace = new RegExp(\"^(\\\\s*)\");\nconst regexNumber = new RegExp(\"^([0-9]+)\");\nconst regexIdentifier = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)\");\nconst regexType = new RegExp(\"^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))\");\nexport class TokenString {\n constructor(tokens) {\n _TokenString_instances.add(this);\n _TokenString_offset.set(this, void 0);\n _TokenString_tokens.set(this, void 0);\n __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\");\n __classPrivateFieldSet(this, _TokenString_tokens, tokens.slice(), \"f\");\n }\n get offset() { return __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n get length() { return __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length - __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n clone() { return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\")); }\n reset() { __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\"); }\n // Pops and returns the value of the next token, if it is a keyword in allowed; throws if out of tokens\n popKeyword(allowed) {\n const top = this.peek();\n if (top.type !== \"KEYWORD\" || !allowed.has(top.text)) {\n throw new Error(`expected keyword ${top.text}`);\n }\n return this.pop().text;\n }\n // Pops and returns the value of the next token if it is `type`; throws if out of tokens\n popType(type) {\n if (this.peek().type !== type) {\n throw new Error(`expected ${type}; got ${JSON.stringify(this.peek())}`);\n }\n return this.pop().text;\n }\n // Pops and returns a \"(\" TOKENS \")\"\n popParen() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = __classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, top.match + 1);\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Pops and returns the items within \"(\" ITEM1 \",\" ITEM2 \",\" ... \")\"\n popParams() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = [];\n while (__classPrivateFieldGet(this, _TokenString_offset, \"f\") < top.match - 1) {\n const link = this.peek().linkNext;\n result.push(__classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, link));\n __classPrivateFieldSet(this, _TokenString_offset, link, \"f\");\n }\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Returns the top Token, throwing if out of tokens\n peek() {\n if (__classPrivateFieldGet(this, _TokenString_offset, \"f\") >= __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length) {\n throw new Error(\"out-of-bounds\");\n }\n return __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[__classPrivateFieldGet(this, _TokenString_offset, \"f\")];\n }\n // Returns the next value, if it is a keyword in `allowed`\n peekKeyword(allowed) {\n const top = this.peekType(\"KEYWORD\");\n return (top != null && allowed.has(top)) ? top : null;\n }\n // Returns the value of the next token if it is `type`\n peekType(type) {\n if (this.length === 0) {\n return null;\n }\n const top = this.peek();\n return (top.type === type) ? top.text : null;\n }\n // Returns the next token; throws if out of tokens\n pop() {\n var _a;\n const result = this.peek();\n __classPrivateFieldSet(this, _TokenString_offset, (_a = __classPrivateFieldGet(this, _TokenString_offset, \"f\"), _a++, _a), \"f\");\n return result;\n }\n toString() {\n const tokens = [];\n for (let i = __classPrivateFieldGet(this, _TokenString_offset, \"f\"); i < __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length; i++) {\n const token = __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[i];\n tokens.push(`${token.type}:${token.text}`);\n }\n return ``;\n }\n}\n_TokenString_offset = new WeakMap(), _TokenString_tokens = new WeakMap(), _TokenString_instances = new WeakSet(), _TokenString_subTokenString = function _TokenString_subTokenString(from = 0, to = 0) {\n return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\").slice(from, to).map((t) => {\n return Object.freeze(Object.assign({}, t, {\n match: (t.match - from),\n linkBack: (t.linkBack - from),\n linkNext: (t.linkNext - from),\n }));\n return t;\n }));\n};\nexport function lex(text) {\n const tokens = [];\n const throwError = (message) => {\n const token = (offset < text.length) ? JSON.stringify(text[offset]) : \"$EOI\";\n throw new Error(`invalid token ${token} at ${offset}: ${message}`);\n };\n let brackets = [];\n let commas = [];\n let offset = 0;\n while (offset < text.length) {\n // Strip off any leading whitespace\n let cur = text.substring(offset);\n let match = cur.match(regexWhitespace);\n if (match) {\n offset += match[1].length;\n cur = text.substring(offset);\n }\n const token = { depth: brackets.length, linkBack: -1, linkNext: -1, match: -1, type: \"\", text: \"\", offset, value: -1 };\n tokens.push(token);\n let type = (SimpleTokens[cur[0]] || \"\");\n if (type) {\n token.type = type;\n token.text = cur[0];\n offset++;\n if (type === \"OPEN_PAREN\") {\n brackets.push(tokens.length - 1);\n commas.push(tokens.length - 1);\n }\n else if (type == \"CLOSE_PAREN\") {\n if (brackets.length === 0) {\n throwError(\"no matching open bracket\");\n }\n token.match = brackets.pop();\n (tokens[token.match]).match = tokens.length - 1;\n token.depth--;\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n }\n else if (type === \"COMMA\") {\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n commas.push(tokens.length - 1);\n }\n else if (type === \"OPEN_BRACKET\") {\n token.type = \"BRACKET\";\n }\n else if (type === \"CLOSE_BRACKET\") {\n // Remove the CLOSE_BRACKET\n let suffix = tokens.pop().text;\n if (tokens.length > 0 && tokens[tokens.length - 1].type === \"NUMBER\") {\n const value = tokens.pop().text;\n suffix = value + suffix;\n (tokens[tokens.length - 1]).value = logger.getNumber(value);\n }\n if (tokens.length === 0 || tokens[tokens.length - 1].type !== \"BRACKET\") {\n throw new Error(\"missing opening bracket\");\n }\n (tokens[tokens.length - 1]).text += suffix;\n }\n continue;\n }\n match = cur.match(regexIdentifier);\n if (match) {\n token.text = match[1];\n offset += token.text.length;\n if (Keywords.has(token.text)) {\n token.type = \"KEYWORD\";\n continue;\n }\n if (token.text.match(regexType)) {\n token.type = \"TYPE\";\n continue;\n }\n token.type = \"ID\";\n continue;\n }\n match = cur.match(regexNumber);\n if (match) {\n token.text = match[1];\n token.type = \"NUMBER\";\n offset += token.text.length;\n continue;\n }\n throw new Error(`unexpected token ${JSON.stringify(cur[0])} at position ${offset}`);\n }\n return new TokenString(tokens.map((t) => Object.freeze(t)));\n}\n// Check only one of `allowed` is in `set`\nfunction allowSingle(set, allowed) {\n let included = [];\n for (const key in allowed.keys()) {\n if (set.has(key)) {\n included.push(key);\n }\n }\n if (included.length > 1) {\n throw new Error(`conflicting types: ${included.join(\", \")}`);\n }\n}\n// Functions to process a Solidity Signature TokenString from left-to-right for...\n// ...the name with an optional type, returning the name\nfunction consumeName(type, tokens) {\n if (tokens.peekKeyword(KwTypes)) {\n const keyword = tokens.pop().text;\n if (keyword !== type) {\n throw new Error(`expected ${type}, got ${keyword}`);\n }\n }\n return tokens.popType(\"ID\");\n}\n// ...all keywords matching allowed, returning the keywords\nfunction consumeKeywords(tokens, allowed) {\n const keywords = new Set();\n while (true) {\n const keyword = tokens.peekType(\"KEYWORD\");\n if (keyword == null || (allowed && !allowed.has(keyword))) {\n break;\n }\n tokens.pop();\n if (keywords.has(keyword)) {\n throw new Error(`duplicate keywords: ${JSON.stringify(keyword)}`);\n }\n keywords.add(keyword);\n }\n return Object.freeze(keywords);\n}\n// ...all visibility keywords, returning the coalesced mutability\nfunction consumeMutability(tokens) {\n let modifiers = consumeKeywords(tokens, KwVisib);\n // Detect conflicting modifiers\n allowSingle(modifiers, setify(\"constant payable nonpayable\".split(\" \")));\n allowSingle(modifiers, setify(\"pure view payable nonpayable\".split(\" \")));\n // Process mutability states\n if (modifiers.has(\"view\")) {\n return \"view\";\n }\n if (modifiers.has(\"pure\")) {\n return \"pure\";\n }\n if (modifiers.has(\"payable\")) {\n return \"payable\";\n }\n if (modifiers.has(\"nonpayable\")) {\n return \"nonpayable\";\n }\n // Process legacy `constant` last\n if (modifiers.has(\"constant\")) {\n return \"view\";\n }\n return \"nonpayable\";\n}\n// ...a parameter list, returning the ParamType list\nfunction consumeParams(tokens, allowIndexed) {\n return tokens.popParams().map((t) => ParamType.fromTokens(t, allowIndexed));\n}\n// ...a gas limit, returning a BigNumber or null if none\nfunction consumeGas(tokens) {\n if (tokens.peekType(\"AT\")) {\n tokens.pop();\n if (tokens.peekType(\"NUMBER\")) {\n return logger.getBigInt(tokens.pop().text);\n }\n throw new Error(\"invalid gas\");\n }\n return null;\n}\nfunction consumeEoi(tokens) {\n if (tokens.length) {\n throw new Error(`unexpected tokens: ${tokens.toString()}`);\n }\n}\nconst regexArrayType = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nfunction verifyBasicType(type) {\n const match = type.match(regexType);\n if (!match) {\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n }\n if (type === \"uint\") {\n return \"uint256\";\n }\n if (type === \"int\") {\n return \"int256\";\n }\n if (match[2]) {\n // bytesXX\n const length = parseInt(match[2]);\n if (length === 0 || length > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"type\", type);\n }\n }\n else if (match[3]) {\n // intXX or uintXX\n const size = parseInt(match[3]);\n if (size === 0 || size > 256 || size % 8) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n }\n return type;\n}\n// Make the Fragment constructors effectively private\nconst _guard = {};\nconst internal = Symbol.for(\"_ethers_internal\");\nconst ParamTypeInternal = \"_ParamTypeInternal\";\nexport class ParamType {\n constructor(guard, name, type, baseType, indexed, components, arrayLength, arrayChildren) {\n _ParamType_instances.add(this);\n logger.assertPrivate(guard, _guard, \"ParamType\");\n Object.defineProperty(this, internal, { value: ParamTypeInternal });\n if (components) {\n components = Object.freeze(components.slice());\n }\n if (baseType === \"array\") {\n if (arrayLength == null || arrayChildren == null) {\n throw new Error(\"\");\n }\n }\n else if (arrayLength != null || arrayChildren != null) {\n throw new Error(\"\");\n }\n if (baseType === \"tuple\") {\n if (components == null) {\n throw new Error(\"\");\n }\n }\n else if (components != null) {\n throw new Error(\"\");\n }\n defineProperties(this, {\n name, type, baseType, indexed, components, arrayLength, arrayChildren\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 = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n let result = {\n type: ((this.baseType === \"tuple\") ? \"tuple\" : this.type),\n name: (this.name || undefined)\n };\n if (typeof (this.indexed) === \"boolean\") {\n result.indexed = this.indexed;\n }\n if (this.isTuple()) {\n result.components = this.components.map((c) => JSON.parse(c.format(format)));\n }\n return JSON.stringify(result);\n }\n let result = \"\";\n // Array\n if (this.isArray()) {\n result += this.arrayChildren.format(format);\n result += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n }\n else {\n if (this.isTuple()) {\n if (format !== FormatType.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map((comp) => comp.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n }\n else {\n result += this.type;\n }\n }\n if (format !== FormatType.sighash) {\n if (this.indexed === true) {\n result += \" indexed\";\n }\n if (format === FormatType.full && this.name) {\n result += \" \" + this.name;\n }\n }\n return result;\n }\n static isArray(value) {\n return value && (value.baseType === \"array\");\n }\n isArray() {\n return (this.baseType === \"array\");\n }\n isTuple() {\n return (this.baseType === \"tuple\");\n }\n isIndexable() {\n return (this.indexed != null);\n }\n walk(value, process) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v) => (this.arrayChildren.walk(v, process)));\n }\n if (this.isTuple()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid tuple value\");\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v, i) => (this.components[i].walk(v, process)));\n }\n return process(this.type, value);\n }\n async walkAsync(value, process) {\n const promises = [];\n const result = [value];\n __classPrivateFieldGet(this, _ParamType_instances, \"m\", _ParamType_walkAsync).call(this, promises, value, process, (value) => {\n result[0] = value;\n });\n if (promises.length) {\n await Promise.all(promises);\n }\n return result[0];\n }\n static from(obj, allowIndexed) {\n if (ParamType.isParamType(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n return ParamType.fromTokens(lex(obj), allowIndexed);\n }\n if (obj instanceof TokenString) {\n return ParamType.fromTokens(obj, allowIndexed);\n }\n const name = obj.name;\n if (name && (typeof (name) !== \"string\" || !name.match(regexIdentifier))) {\n logger.throwArgumentError(\"invalid name\", \"obj.name\", name);\n }\n let indexed = obj.indexed;\n if (indexed != null) {\n if (!allowIndexed) {\n logger.throwArgumentError(\"parameter cannot be indexed\", \"obj.indexed\", obj.indexed);\n }\n indexed = !!indexed;\n }\n let type = obj.type;\n let arrayMatch = type.match(regexArrayType);\n if (arrayMatch) {\n const arrayLength = arrayMatch[2];\n const arrayChildren = ParamType.from({\n type: arrayMatch[1],\n components: obj.components\n });\n return new ParamType(_guard, name, type, \"array\", indexed, null, arrayLength, arrayChildren);\n }\n if (type.substring(0, 5) === \"tuple(\" || type[0] === \"(\") {\n const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;\n const tuple = new ParamType(_guard, name, type, \"tuple\", indexed, comps, null, null);\n // @TODO: use lexer to validate and normalize type\n return tuple;\n }\n type = verifyBasicType(obj.type);\n return new ParamType(_guard, name, type, type, indexed, null, null, null);\n }\n static fromObject(obj, allowIndexed) {\n throw new Error(\"@TODO\");\n }\n static fromTokens(tokens, allowIndexed) {\n let type = \"\", baseType = \"\";\n let comps = null;\n if (consumeKeywords(tokens, setify([\"tuple\"])).has(\"tuple\") || tokens.peekType(\"OPEN_PAREN\")) {\n // Tuple\n baseType = \"tuple\";\n comps = tokens.popParams().map((t) => ParamType.from(t));\n type = `tuple(${comps.map((c) => c.format()).join(\",\")})`;\n }\n else {\n // Normal\n type = verifyBasicType(tokens.popType(\"TYPE\"));\n baseType = type;\n }\n // Check for Array\n let arrayChildren = null;\n let arrayLength = null;\n while (tokens.length && tokens.peekType(\"BRACKET\")) {\n const bracket = tokens.pop(); //arrays[i];\n arrayChildren = new ParamType(_guard, \"\", type, baseType, null, comps, arrayLength, arrayChildren);\n arrayLength = bracket.value;\n type += bracket.text;\n baseType = \"array\";\n comps = null;\n }\n let indexed = null;\n const keywords = consumeKeywords(tokens, KwModifiers);\n if (keywords.has(\"indexed\")) {\n if (!allowIndexed) {\n throw new Error(\"\");\n }\n indexed = true;\n }\n const name = (tokens.peekType(\"ID\") ? tokens.pop().text : \"\");\n if (tokens.length) {\n throw new Error(\"leftover tokens\");\n }\n return new ParamType(_guard, name, type, baseType, indexed, comps, arrayLength, arrayChildren);\n }\n static isParamType(value) {\n return (value && value[internal] === ParamTypeInternal);\n }\n}\n_ParamType_instances = new WeakSet(), _ParamType_walkAsync = function _ParamType_walkAsync(promises, value, process, setValue) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const childType = this.arrayChildren;\n const result = value.slice();\n result.forEach((value, index) => {\n __classPrivateFieldGet(childType, _ParamType_instances, \"m\", _ParamType_walkAsync).call(childType, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n if (this.isTuple()) {\n const components = this.components;\n // Convert the object into an array\n let result;\n if (Array.isArray(value)) {\n result = value.slice();\n }\n else {\n if (value == null || typeof (value) !== \"object\") {\n throw new Error(\"invlaid tuple value\");\n }\n result = components.map((param) => {\n if (!param.name) {\n throw new Error(\"cannot use object value with unnamed components\");\n }\n if (!(param.name in value)) {\n throw new Error(`missing value for component ${param.name}`);\n }\n return value[param.name];\n });\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n result.forEach((value, index) => {\n var _a;\n __classPrivateFieldGet((_a = components[index]), _ParamType_instances, \"m\", _ParamType_walkAsync).call(_a, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n const result = process(this.type, value);\n if (result.then) {\n promises.push((async function () { setValue(await result); })());\n }\n else {\n setValue(result);\n }\n};\nexport var FragmentType;\n(function (FragmentType) {\n FragmentType[\"constructor\"] = \"constructor\";\n FragmentType[\"error\"] = \"error\";\n FragmentType[\"event\"] = \"event\";\n FragmentType[\"function\"] = \"function\";\n FragmentType[\"struct\"] = \"struct\";\n})(FragmentType || (FragmentType = {}));\n;\nexport class Fragment {\n constructor(guard, type, inputs) {\n logger.assertPrivate(guard, _guard, \"Fragment\");\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { type, inputs });\n }\n static from(obj) {\n if (typeof (obj) === \"string\") {\n return this.fromString(obj);\n }\n if (obj instanceof TokenString) {\n return this.fromTokens(obj);\n }\n if (typeof (obj) === \"object\") {\n return this.fromObject(obj);\n }\n throw new Error(`unsupported type: ${obj}`);\n }\n static fromObject(obj) {\n switch (obj.type) {\n case \"constructor\": return ConstructorFragment.fromObject(obj);\n case \"error\": return ErrorFragment.fromObject(obj);\n case \"event\": return EventFragment.fromObject(obj);\n case \"function\": return FunctionFragment.fromObject(obj);\n case \"struct\": return StructFragment.fromObject(obj);\n }\n throw new Error(\"not implemented yet\");\n }\n static fromString(text) {\n try {\n Fragment.from(JSON.parse(text));\n }\n catch (e) { }\n return Fragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const type = tokens.popKeyword(KwTypes);\n switch (type) {\n case \"constructor\": return ConstructorFragment.fromTokens(tokens);\n case \"error\": return ErrorFragment.fromTokens(tokens);\n case \"event\": return EventFragment.fromTokens(tokens);\n case \"function\": return FunctionFragment.fromTokens(tokens);\n case \"struct\": return StructFragment.fromTokens(tokens);\n }\n throw new Error(`unsupported type: ${type}`);\n }\n /*\n static fromTokens(tokens: TokenString): Fragment {\n const assertDone = () => {\n if (tokens.length) { throw new Error(`unexpected tokens: ${ tokens.toString() }`); }\n });\n\n const type = (tokens.length && tokens.peek().type === \"KEYWORD\") ? tokens.peek().text: \"unknown\";\n\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens, type === \"event\");\n\n switch (type) {\n case \"event\": case \"struct\":\n assertDone();\n }\n\n }\n */\n static isConstructor(value) {\n return (value && value.type === \"constructor\");\n }\n static isError(value) {\n return (value && value.type === \"error\");\n }\n static isEvent(value) {\n return (value && value.type === \"event\");\n }\n static isFunction(value) {\n return (value && value.type === \"function\");\n }\n static isStruct(value) {\n return (value && value.type === \"struct\");\n }\n}\nexport class NamedFragment extends Fragment {\n constructor(guard, type, name, inputs) {\n super(guard, type, inputs);\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { name });\n }\n}\nfunction joinParams(format, params) {\n return \"(\" + params.map((p) => p.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n}\nexport class ErrorFragment extends NamedFragment {\n constructor(guard, name, inputs) {\n super(guard, FragmentType.error, name, inputs);\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"error\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n return result.join(\" \");\n }\n static fromString(text) {\n return ErrorFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new ErrorFragment(_guard, name, inputs);\n }\n}\nexport class EventFragment extends NamedFragment {\n constructor(guard, name, inputs, anonymous) {\n super(guard, FragmentType.event, name, inputs);\n defineProperties(this, { anonymous });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"event\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash && this.anonymous) {\n result.push(\"anonymous\");\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return EventFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"event\", tokens);\n const inputs = consumeParams(tokens, true);\n const anonymous = !!consumeKeywords(tokens, setify([\"anonymous\"])).has(\"anonymous\");\n consumeEoi(tokens);\n return new EventFragment(_guard, name, inputs, anonymous);\n }\n}\nexport class ConstructorFragment extends Fragment {\n constructor(guard, type, inputs, payable, gas) {\n super(guard, type, inputs);\n defineProperties(this, { payable, gas });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", \"UNSUPPORTED_OPERATION\", {\n operation: \"format(sighash)\"\n });\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: (this.payable ? \"payable\" : \"undefined\"),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [`constructor${joinParams(format, this.inputs)}`];\n result.push((this.payable) ? \"payable\" : \"nonpayable\");\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return ConstructorFragment.fromTokens(lex(text));\n }\n static fromObject(obj) {\n throw new Error(\"TODO\");\n }\n static fromTokens(tokens) {\n consumeKeywords(tokens, setify([\"constructor\"]));\n const inputs = consumeParams(tokens);\n const payable = !!consumeKeywords(tokens, setify([\"payable\"])).has(\"payable\");\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new ConstructorFragment(_guard, FragmentType.constructor, inputs, payable, gas);\n }\n}\nexport class FunctionFragment extends NamedFragment {\n constructor(guard, name, stateMutability, inputs, outputs, gas) {\n super(guard, FragmentType.function, name, inputs);\n outputs = Object.freeze(outputs.slice());\n const constant = (stateMutability === \"view\" || stateMutability === \"pure\");\n const payable = (stateMutability === \"payable\");\n defineProperties(this, { constant, gas, outputs, payable, stateMutability });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format))),\n outputs: this.outputs.map((o) => JSON.parse(o.format(format))),\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"function\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash) {\n if (this.stateMutability !== \"nonpayable\") {\n result.push(this.stateMutability);\n }\n if (this.outputs && this.outputs.length) {\n result.push(\"returns\");\n result.push(joinParams(format, this.outputs));\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return FunctionFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"function\", tokens);\n const inputs = consumeParams(tokens);\n const mutability = consumeMutability(tokens);\n let outputs = [];\n if (consumeKeywords(tokens, setify([\"returns\"])).has(\"returns\")) {\n outputs = consumeParams(tokens);\n }\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new FunctionFragment(_guard, name, mutability, inputs, outputs, gas);\n }\n}\nexport class StructFragment extends NamedFragment {\n format() {\n throw new Error(\"@TODO\");\n }\n static fromString(text) {\n return StructFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"struct\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new StructFragment(_guard, FragmentType.struct, name, inputs);\n }\n}\n//# sourceMappingURL=fragments.js.map","export const version = \"@ethersproject/math@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\nconst nibbles = \"0123456789abcdef\";\nconst BN_0 = BigInt(0);\n// Converts a value to a BigInt, including big endian data\nexport function toBigInt(_value) {\n if (_value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of _value) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return logger.getBigInt(_value, \"value\");\n}\nexport function toNumber(_value) {\n const value = toBigInt(_value);\n if (value < -maxValue || value > maxValue) {\n logger.throwArgumentError(\"overflow\", \"value\", _value);\n }\n return Number(value);\n}\n// Converts value to hex, optionally padding on the left to width bytes\nexport function toHex(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n let result = value.toString(16);\n if (_width == null) {\n // Ensure the value is of even length\n if (result.length % 2) {\n result = \"0\" + result;\n }\n }\n else {\n const width = logger.getNumber(_width, \"width\");\n if (width * 2 < result.length) {\n throw new Error(`value ${value} exceeds width ${width}`);\n }\n // Pad the value to the required width\n while (result.length < (width * 2)) {\n result = \"0\" + result;\n }\n }\n return \"0x\" + result;\n}\nexport function toArray(_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n//# sourceMappingURL=convert.js.map","import { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\n// Convert a value from a twos-compliment value\nexport function fromTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n // Top bit set; treat as a negative value\n if (value >> (width - BN_1)) {\n const mask = (BN_1 << width) - BN_1;\n return -(((~value) & mask) + BN_1);\n }\n return value;\n}\n// Convert value to a twos-compliment value\nexport function toTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n if (value < BN_0) {\n const mask = (BN_1 << width) - BN_1;\n return ((~(-value)) & mask) + BN_1;\n }\n return value;\n}\nexport function mask(_value, _bits) {\n const value = logger.getBigInt(_value, \"value\");\n const bits = logger.getBigInt(_bits, \"bits\");\n return value & ((BN_1 << bits) - BN_1);\n}\n//# sourceMappingURL=maths.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FixedNumber_instances, _FixedNumber_value, _FixedNumber_checkFormat;\nimport { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nimport { fromTwos, toTwos } from \"./maths.js\";\nconst _constructorGuard = {};\n//const Zero = BigInt(0);\nconst NegativeOne = BigInt(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, \"NUMERIC_FAULT\", params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\" || decimals < 0 || decimals > 256 || decimals % 1) {\n logger.throwArgumentError(\"invalid decimal length\", \"decimals\", decimals);\n }\n return BigInt(\"1\" + zeros.substring(0, decimals));\n}\nexport function formatFixed(_value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n let value = logger.getBigInt(_value, \"value\");\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n const multiplierStr = String(multiplier);\n const negative = (value < 0);\n if (negative) {\n value *= NegativeOne;\n }\n let fraction = String(value % multiplier);\n // Make sure there are enough place-holders\n while (fraction.length < multiplierStr.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n while (fraction.length > 1 && fraction.substring(fraction.length - 1) === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n let result = String(value / multiplier);\n if (multiplierStr.length !== 1) {\n result += \".\" + fraction;\n }\n if (negative) {\n result = \"-\" + result;\n }\n return result;\n}\nexport function parseFixed(value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\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 let whole = (comps[0] || \"0\"), fraction = (comps[1] || \"0\");\n // Trim trialing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > String(multiplier).length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < String(multiplier).length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigInt(whole);\n const fractionValue = BigInt(fraction);\n let wei = (wholeValue * multiplier) + fractionValue;\n if (negative) {\n wei *= NegativeOne;\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n return logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\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 if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n _FixedNumber_instances.add(this);\n //#hex: string;\n _FixedNumber_value.set(this, void 0);\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.format = FixedFormat.from(format);\n //this.#hex = hex;\n __classPrivateFieldSet(this, _FixedNumber_value, value, \"f\");\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n addUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a + b, this.format.decimals, this.format);\n }\n subUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a - b, this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * b) / this.format._multiplier, this.format.decimals, this.format);\n }\n divUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * this.format._multiplier) / b, this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0.0\" || __classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0\");\n }\n isNegative() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\")[0] === \"-\");\n }\n toString() { return __classPrivateFieldGet(this, _FixedNumber_value, \"f\"); }\n toHexString(_width) {\n throw new Error(\"TODO\");\n /*\n return toHex();\n if (width == null) { return this.#hex; }\n\n const width = logger.getNumeric(_width);\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n\n const hex = BigNumber.from(this.#hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return zeroPadLeft(hex, width / 8);\n */\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), format);\n }\n static fromValue(value, decimals = 0, format = \"fixed\") {\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format = \"fixed\") {\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric < 0) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n const hex = (function () {\n if (fixedFormat.signed) {\n return toHex(toTwos(numeric, fixedFormat.width));\n }\n return toHex(numeric, fixedFormat.width / 8);\n })();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(_value, format = \"fixed\") {\n const value = logger.getBytes(_value, \"value\");\n const fixedFormat = FixedFormat.from(format);\n if (value.length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = toBigInt(value);\n if (fixedFormat.signed) {\n numeric = fromTwos(numeric, fixedFormat.width);\n }\n const hex = toHex(toTwos(numeric, (fixedFormat.signed ? 0 : 1) + fixedFormat.width));\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (value instanceof Uint8Array) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== \"INVALID_ARGUMENT\") {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\n_FixedNumber_value = new WeakMap(), _FixedNumber_instances = new WeakSet(), _FixedNumber_checkFormat = function _FixedNumber_checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n};\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","import { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nconst Alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nlet Lookup = null;\nfunction getAlpha(letter) {\n if (Lookup == null) {\n Lookup = {};\n for (let i = 0; i < Alphabet.length; i++) {\n Lookup[Alphabet[i]] = BigInt(i);\n }\n }\n const result = Lookup[letter];\n if (result == null) {\n logger.throwArgumentError(`invalid base58 value`, \"letter\", letter);\n }\n return result;\n}\nconst BN_0 = BigInt(0);\nconst BN_58 = BigInt(58);\nexport function encodeBase58(_value) {\n let value = toBigInt(logger.getBytes(_value));\n let result = \"\";\n while (value) {\n result = Alphabet[Number(value % BN_58)] + result;\n value /= BN_58;\n }\n return result;\n}\nexport function decodeBase58(value) {\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result *= BN_58;\n result += getAlpha(value[i]);\n }\n return toHex(result);\n}\n//# sourceMappingURL=base58.js.map","import { formatFixed, parseFixed } from \"./fixednumber.js\";\nimport { logger } from \"./logger.js\";\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\nexport function formatUnits(value, unit) {\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return formatFixed(value, (unit != null) ? unit : 18);\n}\nexport function parseUnits(value, unit) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return parseFixed(value, (unit != null) ? unit : 18);\n}\nexport function formatEther(wei) {\n return formatUnits(wei, 18);\n}\nexport function parseEther(ether) {\n return parseUnits(ether, 18);\n}\n//# sourceMappingURL=units.js.map","export function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\n//# sourceMappingURL=check.js.map","export const version = \"@ethersproject/bytes@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { isBytesLike } from \"./check.js\";\nimport { logger } from \"./logger.js\";\nlet BN_8 = null;\nlet BN_255 = null;\ntry {\n BN_8 = BigInt(\"8\");\n BN_255 = BigInt(\"255\");\n}\ncatch (error) {\n console.log(\"Unsupported bigint\", error);\n}\nfunction isHexable(value) {\n return (value && typeof (value.toHexString) === \"function\");\n}\nexport function arrayify(data) {\n if (data == null) {\n logger.throwArgumentError(\"cannot arrayify nullish\", \"data\", data);\n }\n if (typeof (data) === \"number\") {\n let v = logger.getNumber(data, \"data\");\n const result = [];\n while (v) {\n result.unshift(v & 0xff);\n v = parseInt(String(v / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (BN_8 && typeof (data) === \"bigint\") {\n const result = [];\n while (data) {\n result.unshift(Number(data & BN_255));\n data >>= BN_8;\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (isHexable(data)) {\n return arrayify(data.toHexString());\n }\n if (typeof (data) === \"string\") {\n let hex = data;\n //if (options.allowMissingPrefix && hex.substring(0, 2) !== \"0x\") {\n // hex = \"0x\" + hex;\n //}\n if (!hex.match(/^0x[0-9a-f]*$/i)) {\n throw new RangeError(`invalid hex data string (${JSON.stringify(data)})`);\n }\n const result = [];\n for (let i = 2; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return new Uint8Array(result);\n }\n if (data instanceof Uint8Array) {\n return new Uint8Array(data);\n }\n throw new TypeError(`cannot arrayify ${JSON.stringify(data)}`);\n}\nexport function _noCopyArrayify(data) {\n if (!isBytesLike(data)) {\n logger.throwArgumentError(\"invalid BytesLike value\", \"data\", data);\n } // @TODO: ArgumentE>\n if (data instanceof Uint8Array) {\n return data;\n }\n return arrayify(data);\n}\n//# sourceMappingURL=array.js.map","import { logger } from \"./logger.js\";\nexport function decodeBase64(textData) {\n return new Uint8Array(Buffer.from(textData, \"base64\"));\n}\n;\nexport function encodeBase64(data) {\n return Buffer.from(logger.getBytes(data, \"data\")).toString(\"base64\");\n}\n//# sourceMappingURL=base64.js.map","import { arrayify, _noCopyArrayify } from \"./array.js\";\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(data) {\n const bytes = _noCopyArrayify(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\nexport function quantity(value) {\n let result = hexlify(arrayify(value)).substring(2);\n while (result.substring(0, 1) === \"0\") {\n result = result.substring(1);\n }\n if (result === \"\") {\n result = \"0\";\n }\n return \"0x\" + result;\n}\n//# sourceMappingURL=hex.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { isHexString } from \"./check.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return _noCopyArrayify(data).length;\n}\nexport function dataSlice(data, start, end) {\n const bytes = _noCopyArrayify(data);\n if (end != null && end > bytes.length) {\n logger.throwError(\"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.substring(0, 2) == \"00\") {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\n//# sourceMappingURL=data.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nfunction zeroPad(data, length, left) {\n const bytes = _noCopyArrayify(data);\n if (length < bytes.length) {\n logger.throwError(\"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n }\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=pad.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Result_instances, _Result_indices, _Result_throwError, _Writer_instances, _Writer_data, _Writer_dataLength, _Writer_writeData, _Reader_instances, _Reader_data, _Reader_offset, _Reader_peekBytes;\nimport { toArray, toBigInt, toNumber } from \"@ethersproject/math\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nexport const WordSize = 32;\nconst Padding = new Uint8Array(WordSize);\n// Properties used to immediate pass through to the underlying object\n// - `then` is used to detect if an object is a Promise for await\nconst passProperties = [\"then\"];\nconst _guard = {};\nexport class Result extends Array {\n constructor(guard, items, keys) {\n logger.assertPrivate(guard, _guard, \"Result\");\n super(...items);\n _Result_instances.add(this);\n _Result_indices.set(this, void 0);\n // Name lookup table\n __classPrivateFieldSet(this, _Result_indices, new Map(), \"f\");\n if (keys) {\n keys.forEach((key, index) => {\n if (key == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _Result_indices, \"f\").has(key)) {\n (__classPrivateFieldGet(this, _Result_indices, \"f\").get(key)).push(index);\n }\n else {\n __classPrivateFieldGet(this, _Result_indices, \"f\").set(key, [index]);\n }\n });\n }\n Object.freeze(this);\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"string\") {\n if (prop.match(/^[0-9]+$/)) {\n const index = logger.getNumber(prop, \"%index\");\n if (index < 0 || index >= this.length) {\n throw new RangeError(\"out of result range\");\n }\n const item = target[index];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `index ${index}`, item);\n }\n return item;\n }\n // Pass important checks (like `then` for Promise) through\n if (prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n // Something that could be a result keyword value\n if (!(prop in target)) {\n return target.getValue(prop);\n }\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n }\n slice(start, end) {\n if (start == null) {\n start = 0;\n }\n if (end == null) {\n end = this.length;\n }\n const result = [];\n for (let i = start; i < end; i++) {\n let value;\n try {\n value = this[i];\n }\n catch (error) {\n value = error.error;\n }\n result.push(value);\n }\n return result;\n }\n getValue(name) {\n const index = __classPrivateFieldGet(this, _Result_indices, \"f\").get(name);\n if (index != null && index.length === 1) {\n const item = this[index[0]];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `property ${JSON.stringify(name)}`, item);\n }\n return item;\n }\n throw new Error(`no named parameter: ${JSON.stringify(name)}`);\n }\n static fromItems(items, keys) {\n return new Result(_guard, items, keys);\n }\n}\n_Result_indices = new WeakMap(), _Result_instances = new WeakSet(), _Result_throwError = function _Result_throwError(name, error) {\n const wrapped = new Error(`deferred error during ABI decoding triggered accessing ${name}`);\n wrapped.error = error;\n throw wrapped;\n};\nexport function checkResultErrors(result) {\n // Find the first error (if any)\n const errors = [];\n const checkErrors = function (path, object) {\n if (!Array.isArray(object)) {\n return;\n }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n try {\n checkErrors(childPath, object[key]);\n }\n catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n };\n checkErrors([], result);\n return errors;\n}\nfunction getValue(value) {\n let bytes = toArray(value);\n if (bytes.length > WordSize) {\n logger.throwError(\"value out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes,\n length: WordSize,\n offset: bytes.length\n });\n }\n if (bytes.length !== WordSize) {\n bytes = arrayify(concat([Padding.slice(bytes.length % WordSize), bytes]));\n }\n return bytes;\n}\nexport class Coder {\n constructor(name, type, localName, dynamic) {\n defineProperties(this, { name, type, localName, dynamic }, {\n name: \"string\", type: \"string\", localName: \"string\", dynamic: \"boolean\"\n });\n }\n _throwError(message, value) {\n return logger.throwArgumentError(message, this.localName, value);\n }\n}\nexport class Writer {\n constructor() {\n _Writer_instances.add(this);\n // An array of WordSize lengthed objects to concatenation\n _Writer_data.set(this, void 0);\n _Writer_dataLength.set(this, void 0);\n __classPrivateFieldSet(this, _Writer_data, [], \"f\");\n __classPrivateFieldSet(this, _Writer_dataLength, 0, \"f\");\n }\n get data() {\n return concat(__classPrivateFieldGet(this, _Writer_data, \"f\"));\n }\n get length() { return __classPrivateFieldGet(this, _Writer_dataLength, \"f\"); }\n appendWriter(writer) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, arrayify(writer.data));\n }\n // Arrayish item; pad on the right to *nearest* WordSize\n writeBytes(value) {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % WordSize;\n if (paddingOffset) {\n bytes = arrayify(concat([bytes, Padding.slice(paddingOffset)]));\n }\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, bytes);\n }\n // Numeric item; pad on the left *to* WordSize\n writeValue(value) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, getValue(value));\n }\n // Inserts a numeric place-holder, returning a callback that can\n // be used to asjust the value later\n writeUpdatableValue() {\n const offset = __classPrivateFieldGet(this, _Writer_data, \"f\").length;\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(Padding);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + WordSize, \"f\");\n return (value) => {\n __classPrivateFieldGet(this, _Writer_data, \"f\")[offset] = getValue(value);\n };\n }\n}\n_Writer_data = new WeakMap(), _Writer_dataLength = new WeakMap(), _Writer_instances = new WeakSet(), _Writer_writeData = function _Writer_writeData(data) {\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(data);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + data.length, \"f\");\n return data.length;\n};\nexport class Reader {\n constructor(data, allowLoose) {\n _Reader_instances.add(this);\n _Reader_data.set(this, void 0);\n _Reader_offset.set(this, void 0);\n defineProperties(this, { allowLoose: !!allowLoose });\n __classPrivateFieldSet(this, _Reader_data, arrayify(data), \"f\");\n __classPrivateFieldSet(this, _Reader_offset, 0, \"f\");\n }\n get data() { return hexlify(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n get dataLength() { return __classPrivateFieldGet(this, _Reader_data, \"f\").length; }\n get consumed() { return __classPrivateFieldGet(this, _Reader_offset, \"f\"); }\n get bytes() { return new Uint8Array(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n // Create a sub-reader with the same underlying data, but offset\n subReader(offset) {\n return new Reader(__classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\") + offset), this.allowLoose);\n }\n // Read bytes\n readBytes(length, loose) {\n let bytes = __classPrivateFieldGet(this, _Reader_instances, \"m\", _Reader_peekBytes).call(this, 0, length, !!loose);\n __classPrivateFieldSet(this, _Reader_offset, __classPrivateFieldGet(this, _Reader_offset, \"f\") + bytes.length, \"f\");\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n // Read a numeric values\n readValue() {\n return toBigInt(this.readBytes(WordSize));\n }\n readIndex() {\n return toNumber(this.readBytes(WordSize));\n }\n}\n_Reader_data = new WeakMap(), _Reader_offset = new WeakMap(), _Reader_instances = new WeakSet(), _Reader_peekBytes = function _Reader_peekBytes(offset, length, loose) {\n let alignedLength = Math.ceil(length / WordSize) * WordSize;\n if (__classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength > __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n if (this.allowLoose && loose && __classPrivateFieldGet(this, _Reader_offset, \"f\") + length <= __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n alignedLength = length;\n }\n else {\n logger.throwError(\"data out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: arrayify(__classPrivateFieldGet(this, _Reader_data, \"f\")),\n length: __classPrivateFieldGet(this, _Reader_data, \"f\").length,\n offset: __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength\n });\n }\n }\n return __classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\"), __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength);\n};\n//# sourceMappingURL=abstract-coder.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianess.\n// So, just to be sure not to corrupt anything.\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nexport function bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('deadbeef')\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte))\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// Currently avoid insertion of polyfills with packers (browserify/webpack/etc)\n// But setTimeout is pretty slow, maybe worth to investigate howto do minimal polyfill here\nexport const nextTick = (() => {\n const nodeRequire = typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n try {\n if (nodeRequire) {\n const { setImmediate } = nodeRequire('timers');\n return () => new Promise((resolve) => setImmediate(resolve));\n }\n }\n catch (e) { }\n return () => new Promise((resolve) => setTimeout(resolve, 0));\n})();\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\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)\n continue;\n await nextTick();\n ts += diff;\n }\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nexport function assertNumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexport function assertBool(b) {\n if (typeof b !== 'boolean') {\n throw new Error(`Expected boolean, not ${b}`);\n }\n}\nexport function assertBytes(bytes, ...lengths) {\n if (bytes instanceof Uint8Array && (!lengths.length || lengths.includes(bytes.length))) {\n return;\n }\n throw new TypeError(`Expected ${lengths} bytes, not ${typeof bytes} with length=${bytes.length}`);\n}\nexport function assertHash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n assertNumber(hash.outputLen);\n assertNumber(hash.blockLen);\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(def, _opts) {\n if (_opts !== undefined && (typeof _opts !== 'object' || !isPlainObject(_opts)))\n throw new TypeError('Options should be object or undefined');\n const opts = Object.assign(def, _opts);\n return opts;\n}\nexport function wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n return new Uint8Array(crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\n","import { assertHash, Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nclass HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (!(this.iHash instanceof Hash))\n throw new TypeError('Expected instance of class which extends utils.Hash');\n const blockLen = (this.blockLen = this.iHash.blockLen);\n this.outputLen = this.iHash.outputLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > this.iHash.blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length !== this.outputLen)\n throw new Error('HMAC: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n","import { hmac } from './hmac.js';\n// prettier-ignore\nimport { createView, toBytes, assertNumber, assertHash, checkOpts, asyncLoop } from './utils.js';\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n assertHash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n assertNumber(c);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n if (c < 1)\n throw new Error('PBKDF2: iterations (c) should be >= 1');\n const password = toBytes(_password);\n const salt = toBytes(_salt);\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n u.fill(0);\n return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n */\nexport function pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexport async function pbkdf2Async(hash, password, salt, opts) {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await asyncLoop(c - 1, asyncTick, (i) => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n","import { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n const { view, buffer, blockLen, finished } = this;\n if (finished)\n throw new Error('digest() was already called');\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 // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length < this.outputLen)\n throw new Error('_Sha2: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // NOTE: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64bit of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n this.get().forEach((v, i) => oview.setUint32(4 * i, v, isLE));\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = wrapConstructor(() => new SHA256());\n","const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\nexport function fromBig(n, le = false) {\n if (le)\n 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}\nexport function split(lst, 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}\nexport const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nexport const shrSH = (h, l, s) => h >>> s;\nexport const shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nexport const rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexport const rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexport const rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nexport const rotr32H = (h, l) => l;\nexport const rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nexport const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexport const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexport const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\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.\nexport function add(Ah, Al, Bh, Bl) {\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\nexport const add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexport const add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexport const add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexport const add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexport const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexport const add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n","import { SHA2 } from './_sha2.js';\nimport * as u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = wrapConstructor(() => new SHA512());\nexport const sha512_256 = wrapConstructor(() => new SHA512_256());\nexport const sha384 = wrapConstructor(() => new SHA384());\n","export const version = \"@ethersproject/crypto@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","/* Browser Crypto Shims */\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { pbkdf2 } from \"@noble/hashes/pbkdf2\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nimport { logger } from \"./logger.js\";\nfunction getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst anyGlobal = getGlobal();\nlet crypto = anyGlobal.crypto || anyGlobal.msCrypto;\nexport function createHash(algo) {\n switch (algo) {\n case \"sha256\": return sha256.create();\n case \"sha512\": return sha512.create();\n }\n return logger.throwArgumentError(\"invalid hashing algorithm name\", \"algorithm\", algo);\n}\nexport function createHmac(_algo, key) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid hmac algorithm\", \"algorithm\", _algo);\n }\n return hmac.create(algo, key);\n}\nexport function pbkdf2Sync(password, salt, iterations, keylen, _algo) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid pbkdf2 algorithm\", \"algorithm\", _algo);\n }\n return pbkdf2(algo, password, salt, { c: iterations, dkLen: keylen });\n}\nexport function randomBytes(length) {\n if (crypto == null) {\n return logger.throwError(\"platform does not support secure random numbers\", \"UNSUPPORTED_OPERATION\", {\n operation: \"randomBytes\"\n });\n }\n if (length <= 0 || length > 1024 || (length % 1) || length != length) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return result;\n}\n//# sourceMappingURL=crypto-browser.js.map","import { createHmac } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _computeHmac = function (algorithm, key, data) {\n return \"0x\" + createHmac(algorithm, key).update(data).digest(\"hex\");\n};\nlet __computeHmac = _computeHmac;\nexport function computeHmac(algorithm, _key, _data) {\n const key = logger.getBytes(_key, \"key\");\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__computeHmac(algorithm, key, data));\n}\ncomputeHmac._ = _computeHmac;\ncomputeHmac.lock = function () { locked = true; };\ncomputeHmac.register = function (func) {\n if (locked) {\n throw new Error(\"computeHmac is locked\");\n }\n __computeHmac = func;\n};\nObject.freeze(computeHmac);\n//# sourceMappingURL=hmac.js.map","import * as u64 from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapConstructorWithOpts, assertNumber, } from './utils.js';\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = 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)\n t ^= _1n << ((_1n << BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = u64.split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => s > 32 ? u64.rotlBH(h, l, s) : u64.rotlSH(h, l, s);\nconst rotlL = (h, l, s) => s > 32 ? u64.rotlBL(h, l, s) : u64.rotlSL(h, l, s);\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 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++)\n 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++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n 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}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n assertNumber(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 keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (this.finished)\n throw new Error('digest() was already called');\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++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n 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)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array))\n throw new Error('Keccak: invalid output buffer');\n this.finish();\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= this.blockLen)\n this.keccak();\n const take = Math.min(this.blockLen - this.posOut, len - pos);\n out.set(this.state.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n assertNumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n if (out.length < this.outputLen)\n throw new Error('Keccak: invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finish();\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) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (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}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = gen(0x06, 136, 256 / 8);\nexport const sha3_384 = gen(0x06, 104, 384 / 8);\nexport const sha3_512 = gen(0x06, 72, 512 / 8);\nexport const keccak_224 = 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 = gen(0x01, 136, 256 / 8);\nexport const keccak_384 = gen(0x01, 104, 384 / 8);\nexport const keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen !== undefined ? opts.dkLen : outputLen, true));\nexport const shake128 = genShake(0x1f, 168, 128 / 8);\nexport const shake256 = genShake(0x1f, 136, 256 / 8);\n","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\nexport function keccak256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","import { SHA2 } from './_sha2.js';\nimport { wrapConstructor } from './utils.js';\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\nconst Rho = new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = Uint8Array.from({ length: 16 }, (_, i) => i);\nconst Pi = Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n for (let j of [idxL, idxR])\n j.push(j[i].map((k) => Rho[k]));\nconst shifts = [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = new Uint32Array([0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]);\nconst Kr = new Uint32Array([0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]);\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | (word >>> (32 - shift));\n// It's called f() in spec.\nfunction f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n else if (group === 1)\n return (x & y) | (~x & z);\n else if (group === 2)\n return (x | ~y) ^ z;\n else if (group === 3)\n return (x & z) | (y & ~z);\n else\n return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst BUF = new Uint32Array(16);\nexport class RIPEMD160 extends SHA2 {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + f(group, bl, cl, dl) + BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + f(rGroup, br, cr, dr) + BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n BUF.fill(0);\n }\n destroy() {\n this.destroyed = true;\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a hash function from 1990s.\n * @param message - msg that would be hashed\n */\nexport const ripemd160 = wrapConstructor(() => new RIPEMD160());\n","import { ripemd160 as noble_ripemd160 } from \"@noble/hashes/ripemd160\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _ripemd160 = function (data) {\n return noble_ripemd160(data);\n};\nlet __ripemd160 = _ripemd160;\nexport function ripemd160(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__ripemd160(data));\n}\nripemd160._ = _ripemd160;\nripemd160.lock = function () { locked = true; };\nripemd160.register = function (func) {\n if (locked) {\n throw new TypeError(\"ripemd160 is locked\");\n }\n __ripemd160 = func;\n};\nObject.freeze(ripemd160);\n//# sourceMappingURL=ripemd160.js.map","import { pbkdf2Sync } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _pbkdf2 = function (password, salt, iterations, keylen, algo) {\n return pbkdf2Sync(password, salt, iterations, keylen, algo);\n};\nlet __pbkdf2 = _pbkdf2;\nexport function pbkdf2(_password, _salt, iterations, keylen, algo) {\n const password = logger.getBytes(_password, \"password\");\n const salt = logger.getBytes(_salt, \"salt\");\n return hexlify(__pbkdf2(password, salt, iterations, keylen, algo));\n}\npbkdf2._ = _pbkdf2;\npbkdf2.lock = function () { locked = true; };\npbkdf2.register = function (func) {\n if (locked) {\n throw new Error(\"pbkdf2 is locked\");\n }\n __pbkdf2 = func;\n};\nObject.freeze(pbkdf2);\n//# sourceMappingURL=pbkdf2.js.map","import { randomBytes as crypto_random } from \"crypto\"; /*-browser*/\nlet locked = false;\nconst _randomBytes = function (length) {\n return new Uint8Array(crypto_random(length));\n};\nlet __randomBytes = _randomBytes;\nexport function randomBytes(length) {\n return __randomBytes(length);\n}\nrandomBytes._ = _randomBytes;\nrandomBytes.lock = function () { locked = true; };\nrandomBytes.register = function (func) {\n if (locked) {\n throw new Error(\"random is locked\");\n }\n __randomBytes = func;\n};\nObject.freeze(randomBytes);\n//# sourceMappingURL=random.js.map","import { sha256 } from './sha256.js';\nimport { pbkdf2 } from './pbkdf2.js';\nimport { assertNumber, asyncLoop, checkOpts, u32 } from './utils.js';\n// RFC 7914 Scrypt KDF\n// Left rotate for uint32\nconst rotl = (a, b) => (a << b) | (a >>> (32 - b));\n// The main Scrypt loop: uses Salsa extensively.\n// Six versions of the function were tried, this is the fastest one.\n// prettier-ignore\nfunction XorAndSalsa(prev, pi, input, ii, out, oi) {\n // Based on https://cr.yp.to/salsa20.html\n // Xor blocks\n let y00 = prev[pi++] ^ input[ii++], y01 = prev[pi++] ^ input[ii++];\n let y02 = prev[pi++] ^ input[ii++], y03 = prev[pi++] ^ input[ii++];\n let y04 = prev[pi++] ^ input[ii++], y05 = prev[pi++] ^ input[ii++];\n let y06 = prev[pi++] ^ input[ii++], y07 = prev[pi++] ^ input[ii++];\n let y08 = prev[pi++] ^ input[ii++], y09 = prev[pi++] ^ input[ii++];\n let y10 = prev[pi++] ^ input[ii++], y11 = prev[pi++] ^ input[ii++];\n let y12 = prev[pi++] ^ input[ii++], y13 = prev[pi++] ^ input[ii++];\n let y14 = prev[pi++] ^ input[ii++], y15 = prev[pi++] ^ input[ii++];\n // Save state to temporary variables (salsa)\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n // Main loop (salsa)\n for (let i = 0; i < 8; i += 2) {\n x04 ^= rotl(x00 + x12 | 0, 7);\n x08 ^= rotl(x04 + x00 | 0, 9);\n x12 ^= rotl(x08 + x04 | 0, 13);\n x00 ^= rotl(x12 + x08 | 0, 18);\n x09 ^= rotl(x05 + x01 | 0, 7);\n x13 ^= rotl(x09 + x05 | 0, 9);\n x01 ^= rotl(x13 + x09 | 0, 13);\n x05 ^= rotl(x01 + x13 | 0, 18);\n x14 ^= rotl(x10 + x06 | 0, 7);\n x02 ^= rotl(x14 + x10 | 0, 9);\n x06 ^= rotl(x02 + x14 | 0, 13);\n x10 ^= rotl(x06 + x02 | 0, 18);\n x03 ^= rotl(x15 + x11 | 0, 7);\n x07 ^= rotl(x03 + x15 | 0, 9);\n x11 ^= rotl(x07 + x03 | 0, 13);\n x15 ^= rotl(x11 + x07 | 0, 18);\n x01 ^= rotl(x00 + x03 | 0, 7);\n x02 ^= rotl(x01 + x00 | 0, 9);\n x03 ^= rotl(x02 + x01 | 0, 13);\n x00 ^= rotl(x03 + x02 | 0, 18);\n x06 ^= rotl(x05 + x04 | 0, 7);\n x07 ^= rotl(x06 + x05 | 0, 9);\n x04 ^= rotl(x07 + x06 | 0, 13);\n x05 ^= rotl(x04 + x07 | 0, 18);\n x11 ^= rotl(x10 + x09 | 0, 7);\n x08 ^= rotl(x11 + x10 | 0, 9);\n x09 ^= rotl(x08 + x11 | 0, 13);\n x10 ^= rotl(x09 + x08 | 0, 18);\n x12 ^= rotl(x15 + x14 | 0, 7);\n x13 ^= rotl(x12 + x15 | 0, 9);\n x14 ^= rotl(x13 + x12 | 0, 13);\n x15 ^= rotl(x14 + x13 | 0, 18);\n }\n // Write output (salsa)\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\nfunction BlockMix(input, ii, out, oi, r) {\n // The block B is r 128-byte chunks (which is equivalent of 2r 64-byte chunks)\n let head = oi + 0;\n let tail = oi + 16 * r;\n for (let i = 0; i < 16; i++)\n out[tail + i] = input[ii + (2 * r - 1) * 16 + i]; // X ← B[2r−1]\n for (let i = 0; i < r; i++, head += 16, ii += 16) {\n // We write odd & even Yi at same time. Even: 0bXXXXX0 Odd: 0bXXXXX1\n XorAndSalsa(out, tail, input, ii, out, head); // head[i] = Salsa(blockIn[2*i] ^ tail[i-1])\n if (i > 0)\n tail += 16; // First iteration overwrites tmp value in tail\n XorAndSalsa(out, head, input, (ii += 16), out, tail); // tail[i] = Salsa(blockIn[2*i+1] ^ head[i])\n }\n}\n// Common prologue and epilogue for sync/async functions\nfunction scryptInit(password, salt, _opts) {\n // Maxmem - 1GB+1KB by default\n const opts = checkOpts({\n dkLen: 32,\n asyncTick: 10,\n maxmem: 1024 ** 3 + 1024,\n }, _opts);\n const { N, r, p, dkLen, asyncTick, maxmem, onProgress } = opts;\n assertNumber(N);\n assertNumber(r);\n assertNumber(p);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n assertNumber(maxmem);\n if (onProgress !== undefined && typeof onProgress !== 'function')\n throw new Error('progressCb should be function');\n const blockSize = 128 * r;\n const blockSize32 = blockSize / 4;\n if (N <= 1 || (N & (N - 1)) !== 0 || N >= 2 ** (blockSize / 8) || N > 2 ** 32) {\n // NOTE: we limit N to be less than 2**32 because of 32 bit variant of Integrify function\n // There is no JS engines that allows alocate more than 4GB per single Uint8Array for now, but can change in future.\n throw new Error('Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32');\n }\n if (p < 0 || p > ((2 ** 32 - 1) * 32) / blockSize) {\n throw new Error('Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)');\n }\n if (dkLen < 0 || dkLen > (2 ** 32 - 1) * 32) {\n throw new Error('Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32');\n }\n const memUsed = blockSize * (N + p);\n if (memUsed > maxmem) {\n throw new Error(`Scrypt: parameters too large, ${memUsed} (128 * r * (N + p)) > ${maxmem} (maxmem)`);\n }\n // [B0...Bp−1] ← PBKDF2HMAC-SHA256(Passphrase, Salt, 1, blockSize*ParallelizationFactor)\n // Since it has only one iteration there is no reason to use async variant\n const B = pbkdf2(sha256, password, salt, { c: 1, dkLen: blockSize * p });\n const B32 = u32(B);\n // Re-used between parallel iterations. Array(iterations) of B\n const V = u32(new Uint8Array(blockSize * N));\n const tmp = u32(new Uint8Array(blockSize));\n let blockMixCb = () => { };\n if (onProgress) {\n const totalBlockMix = 2 * N * p;\n // Invoke callback if progress changes from 10.01 to 10.02\n // Allows to draw smooth progress bar on up to 8K screen\n const callbackPer = Math.max(Math.floor(totalBlockMix / 10000), 1);\n let blockMixCnt = 0;\n blockMixCb = () => {\n blockMixCnt++;\n if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix))\n onProgress(blockMixCnt / totalBlockMix);\n };\n }\n return { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick };\n}\nfunction scryptOutput(password, dkLen, B, V, tmp) {\n const res = pbkdf2(sha256, password, B, { c: 1, dkLen });\n B.fill(0);\n V.fill(0);\n tmp.fill(0);\n return res;\n}\n/**\n * Scrypt KDF from RFC 7914.\n * @param password - pass\n * @param salt - salt\n * @param opts - parameters\n * - `N` is cpu/mem work factor (power of 2 e.g. 2**18)\n * - `r` is block size (8 is common), fine-tunes sequential memory read size and performance\n * - `p` is parallelization factor (1 is common)\n * - `dkLen` is output key length in bytes e.g. 32.\n * - `asyncTick` - (default: 10) max time in ms for which async function can block execution\n * - `maxmem` - (default: `1024 ** 3 + 1024` aka 1GB+1KB). A limit that the app could use for scrypt\n * - `onProgress` - callback function that would be executed for progress report\n * @returns Derived key\n */\nexport function scrypt(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n for (let i = 0, pos = 0; i < N - 1; i++) {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n }\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n for (let i = 0; i < N; i++) {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n }\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n/**\n * Scrypt KDF from RFC 7914.\n */\nexport async function scryptAsync(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n let pos = 0;\n await asyncLoop(N - 1, asyncTick, (i) => {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n });\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n await asyncLoop(N, asyncTick, (i) => {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n });\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n","import { scrypt as _nobleSync, scryptAsync as _nobleAsync } from \"@noble/hashes/scrypt\";\nimport { hexlify as H } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet lockedSync = false, lockedAsync = false;\nconst _scryptAsync = async function (passwd, salt, N, r, p, dkLen, onProgress) {\n return await _nobleAsync(passwd, salt, { N, r, p, dkLen, onProgress });\n};\nconst _scryptSync = function (passwd, salt, N, r, p, dkLen) {\n return _nobleSync(passwd, salt, { N, r, p, dkLen });\n};\nlet __scryptAsync = _scryptAsync;\nlet __scryptSync = _scryptSync;\nexport async function scrypt(_passwd, _salt, N, r, p, dkLen, progress) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(await __scryptAsync(passwd, salt, N, r, p, dkLen, progress));\n}\nscrypt._ = _scryptAsync;\nscrypt.lock = function () { lockedAsync = true; };\nscrypt.register = function (func) {\n if (lockedAsync) {\n throw new Error(\"scrypt is locked\");\n }\n __scryptAsync = func;\n};\nObject.freeze(scrypt);\nexport function scryptSync(_passwd, _salt, N, r, p, dkLen) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(__scryptSync(passwd, salt, N, r, p, dkLen));\n}\nscryptSync._ = _scryptSync;\nscryptSync.lock = function () { lockedSync = true; };\nscryptSync.register = function (func) {\n if (lockedSync) {\n throw new Error(\"scryptSync is locked\");\n }\n __scryptSync = func;\n};\nObject.freeze(scryptSync);\n//# sourceMappingURL=scrypt.js.map","import { createHash } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nconst _sha256 = function (data) {\n return createHash(\"sha256\").update(data).digest();\n};\nconst _sha512 = function (data) {\n return createHash(\"sha512\").update(data).digest();\n};\nlet __sha256 = _sha256;\nlet __sha512 = _sha512;\nlet locked256 = false, locked512 = false;\nexport function sha256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha256(data));\n}\nsha256._ = _sha256;\nsha256.lock = function () { locked256 = true; };\nsha256.register = function (func) {\n if (locked256) {\n throw new Error(\"sha256 is locked\");\n }\n __sha256 = func;\n};\nObject.freeze(sha256);\nexport function sha512(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha512(data));\n}\nsha512._ = _sha512;\nsha512.lock = function () { locked512 = true; };\nsha512.register = function (func) {\n if (locked512) {\n throw new Error(\"sha512 is locked\");\n }\n __sha512 = func;\n};\nObject.freeze(sha256);\n//# sourceMappingURL=sha2.js.map","// We import all these so we can export lock()\nimport { computeHmac } from \"./hmac.js\";\nimport { keccak256 } from \"./keccak.js\";\nimport { ripemd160 } from \"./ripemd160.js\";\nimport { pbkdf2 } from \"./pbkdf2.js\";\nimport { randomBytes } from \"./random.js\";\nimport { scrypt, scryptSync } from \"./scrypt.js\";\nimport { sha256, sha512 } from \"./sha2.js\";\nexport { computeHmac, randomBytes, keccak256, ripemd160, sha256, sha512, pbkdf2, scrypt, scryptSync };\nexport function lock() {\n computeHmac.lock();\n keccak256.lock();\n pbkdf2.lock();\n randomBytes.lock();\n ripemd160.lock();\n scrypt.lock();\n scryptSync.lock();\n sha256.lock();\n sha512.lock();\n}\n//# sourceMappingURL=index.js.map","export const version = \"@ethersproject/address@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { arrayify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\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 return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\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 let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\nexport function getAddress(address) {\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\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 return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\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 let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n return logger.throwArgumentError(\"invalid address\", \"address\", address);\n}\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/rlp@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { logger } from \"./logger.js\";\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n const data = Array.prototype.slice.call(logger.getBytes(object, \"object\"));\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 const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nconst nibbles = \"0123456789abcdef\";\nexport function encodeRlp(object) {\n let result = \"0x\";\n for (const v of _encode(object)) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0xf];\n }\n return result;\n}\n//# sourceMappingURL=encode.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction hexlifyByte(value) {\n let result = value.toString(16);\n while (result.length < 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length, offset\n });\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: 0, offset: 1\n });\n }\n const checkOffset = (offset) => {\n if (offset > data.length) {\n logger.throwError(\"data short segment too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: data.length, offset\n });\n }\n };\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n checkOffset(offset + 1 + length);\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\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 checkOffset(offset + 1 + length);\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlifyByte(data[offset]) };\n}\nexport function decodeRlp(_data) {\n const data = logger.getBytes(_data, \"data\");\n const decoded = _decode(data, 0);\n if (decoded.consumed !== data.length) {\n logger.throwArgumentError(\"unexpected junk after rlp payload\", \"data\", _data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=decode.js.map","import { concat, dataSlice } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { encodeRlp } from \"@ethersproject/rlp\";\nimport { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getCreateAddress(tx) {\n const from = getAddress(tx.from);\n const nonce = logger.getBigInt(tx.nonce, \"tx.nonce\");\n let nonceHex = nonce.toString(16);\n if (nonceHex === \"0\") {\n nonceHex = \"0x\";\n }\n else if (nonceHex.length % 2) {\n nonceHex = \"0x0\" + nonceHex;\n }\n else {\n nonceHex = \"0x\" + nonceHex;\n }\n return getAddress(dataSlice(keccak256(encodeRlp([from, nonceHex])), 12));\n}\nexport function getCreate2Address(_from, _salt, _initCodeHash) {\n const from = getAddress(_from);\n const salt = logger.getBytes(_salt, \"salt\");\n const initCodeHash = logger.getBytes(_initCodeHash, \"initCodeHash\");\n if (salt.length !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", _salt);\n }\n if (initCodeHash.length !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", _initCodeHash);\n }\n return getAddress(dataSlice(keccak256(concat([\"0xff\", from, salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=contract-address.js.map","import { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\n// Resolves an Ethereum address, ENS name or Addressable object,\n// throwing if the result is null; an explicit null returns null\n//export async function resolveAddress(target?: null, resolver?: null | NameResolver): Promise;\n//export async function resolveAddress(target: string | Addressable, resolver?: null | NameResolver): Promise;\n//export async function resolveAddress(target: null | undefined | string | Addressable, resolver?: null | NameResolver) {\nexport async function resolveAddress(target, resolver) {\n //if (target == null) { return null; }\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n if (resolver == null) {\n return logger.throwError(\"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n });\n }\n const result = await resolver.resolveName(target);\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n return logger.throwError(\"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n }\n return getAddress(result);\n }\n else if (isAddressable(target)) {\n const result = await target.getAddress();\n if (result == null) {\n logger.throwArgumentError(\"addressable resolved to null\", \"target\", target);\n }\n return getAddress(result);\n }\n return logger.throwArgumentError(\"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Typed_options;\nimport { defineProperties } from \"@ethersproject/properties\";\nconst _gaurd = {};\nfunction n(value, width) {\n let signed = false;\n if (width < 0) {\n signed = true;\n width *= -1;\n }\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `${signed ? \"\" : \"u\"}int${width}`, value, { signed, width });\n}\nfunction b(value, size) {\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `bytes${(size) ? size : \"\"}`, value, { size });\n}\nconst _typedSymbol = Symbol.for(\"_ethers_typed\");\nexport class Typed {\n constructor(gaurd, type, value, options = null) {\n _Typed_options.set(this, void 0);\n if (gaurd !== _gaurd) {\n throw new Error(\"private constructor\");\n }\n defineProperties(this, { _typedSymbol, type, value });\n __classPrivateFieldSet(this, _Typed_options, options, \"f\");\n // Check the value is valid\n this.format();\n }\n format() {\n if (this.type === \"array\") {\n throw new Error(\"\");\n }\n else if (this.type === \"dynamicArray\") {\n throw new Error(\"\");\n }\n else if (this.type === \"tuple\") {\n return `tuple(${this.value.map((v) => v.format()).join(\",\")})`;\n }\n return this.type;\n }\n defaultValue() {\n return 0;\n }\n minValue() {\n return 0;\n }\n maxValue() {\n return 0;\n }\n isBigInt() {\n return !!(this.type.match(/^u?int[0-9]+$/));\n }\n isData() {\n return (this.type.substring(0, 5) === \"bytes\");\n }\n isString() {\n return (this.type === \"string\");\n }\n get tupleName() {\n if (this.type !== \"tuple\") {\n throw TypeError(\"not a tuple\");\n }\n return __classPrivateFieldGet(this, _Typed_options, \"f\");\n }\n // Returns the length of this type as an array\n // - `null` indicates the length is unforced, it could be dynamic\n // - `-1` indicates the length is dynamic\n // - any other value indicates it is a static array and is its length\n get arrayLength() {\n if (this.type !== \"array\") {\n throw TypeError(\"not an array\");\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === true) {\n return -1;\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === false) {\n return (this.value).length;\n }\n return null;\n }\n static from(type, value) {\n return new Typed(_gaurd, type, value);\n }\n static uint8(v) { return n(v, 8); }\n static uint16(v) { return n(v, 16); }\n static uint24(v) { return n(v, 24); }\n static uint32(v) { return n(v, 32); }\n static uint40(v) { return n(v, 40); }\n static uint48(v) { return n(v, 46); }\n static uint56(v) { return n(v, 56); }\n static uint64(v) { return n(v, 64); }\n static uint72(v) { return n(v, 72); }\n static uint80(v) { return n(v, 80); }\n static uint88(v) { return n(v, 88); }\n static uint96(v) { return n(v, 96); }\n static uint104(v) { return n(v, 104); }\n static uint112(v) { return n(v, 112); }\n static uint120(v) { return n(v, 120); }\n static uint128(v) { return n(v, 128); }\n static uint136(v) { return n(v, 136); }\n static uint144(v) { return n(v, 144); }\n static uint152(v) { return n(v, 152); }\n static uint160(v) { return n(v, 160); }\n static uint168(v) { return n(v, 168); }\n static uint176(v) { return n(v, 176); }\n static uint184(v) { return n(v, 184); }\n static uint192(v) { return n(v, 192); }\n static uint200(v) { return n(v, 200); }\n static uint208(v) { return n(v, 208); }\n static uint216(v) { return n(v, 216); }\n static uint224(v) { return n(v, 224); }\n static uint232(v) { return n(v, 232); }\n static uint240(v) { return n(v, 240); }\n static uint248(v) { return n(v, 248); }\n static uint256(v) { return n(v, 256); }\n static uint(v) { return n(v, 256); }\n static int8(v) { return n(v, -8); }\n static int16(v) { return n(v, -16); }\n static int24(v) { return n(v, -24); }\n static int32(v) { return n(v, -32); }\n static int40(v) { return n(v, -40); }\n static int48(v) { return n(v, -46); }\n static int56(v) { return n(v, -56); }\n static int64(v) { return n(v, -64); }\n static int72(v) { return n(v, -72); }\n static int80(v) { return n(v, -80); }\n static int88(v) { return n(v, -88); }\n static int96(v) { return n(v, -96); }\n static int104(v) { return n(v, -104); }\n static int112(v) { return n(v, -112); }\n static int120(v) { return n(v, -120); }\n static int128(v) { return n(v, -128); }\n static int136(v) { return n(v, -136); }\n static int144(v) { return n(v, -144); }\n static int152(v) { return n(v, -152); }\n static int160(v) { return n(v, -160); }\n static int168(v) { return n(v, -168); }\n static int176(v) { return n(v, -176); }\n static int184(v) { return n(v, -184); }\n static int192(v) { return n(v, -192); }\n static int200(v) { return n(v, -200); }\n static int208(v) { return n(v, -208); }\n static int216(v) { return n(v, -216); }\n static int224(v) { return n(v, -224); }\n static int232(v) { return n(v, -232); }\n static int240(v) { return n(v, -240); }\n static int248(v) { return n(v, -248); }\n static int256(v) { return n(v, -256); }\n static int(v) { return n(v, -256); }\n static bytes(v) { return b(v); }\n static bytes1(v) { return b(v, 1); }\n static bytes2(v) { return b(v, 2); }\n static bytes3(v) { return b(v, 3); }\n static bytes4(v) { return b(v, 4); }\n static bytes5(v) { return b(v, 5); }\n static bytes6(v) { return b(v, 6); }\n static bytes7(v) { return b(v, 7); }\n static bytes8(v) { return b(v, 8); }\n static bytes9(v) { return b(v, 9); }\n static bytes10(v) { return b(v, 10); }\n static bytes11(v) { return b(v, 11); }\n static bytes12(v) { return b(v, 12); }\n static bytes13(v) { return b(v, 13); }\n static bytes14(v) { return b(v, 14); }\n static bytes15(v) { return b(v, 15); }\n static bytes16(v) { return b(v, 16); }\n static bytes17(v) { return b(v, 17); }\n static bytes18(v) { return b(v, 18); }\n static bytes19(v) { return b(v, 19); }\n static bytes20(v) { return b(v, 20); }\n static bytes21(v) { return b(v, 21); }\n static bytes22(v) { return b(v, 22); }\n static bytes23(v) { return b(v, 23); }\n static bytes24(v) { return b(v, 24); }\n static bytes25(v) { return b(v, 25); }\n static bytes26(v) { return b(v, 26); }\n static bytes27(v) { return b(v, 27); }\n static bytes28(v) { return b(v, 28); }\n static bytes29(v) { return b(v, 29); }\n static bytes30(v) { return b(v, 30); }\n static bytes31(v) { return b(v, 31); }\n static bytes32(v) { return b(v, 32); }\n static address(v) { return new Typed(_gaurd, \"address\", v); }\n static bool(v) { return new Typed(_gaurd, \"bool\", !!v); }\n static string(v) { return new Typed(_gaurd, \"string\", v); }\n static array(v, dynamic) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"array\", v, dynamic);\n }\n static tuple(v, name) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"tuple\", v, name);\n }\n static overrides(v) {\n return new Typed(_gaurd, \"overrides\", Object.assign({}, v));\n }\n static isTyped(value) {\n return (value && value._typedSymbol === _typedSymbol);\n }\n static dereference(value, type) {\n if (Typed.isTyped(value)) {\n if (value.type !== type) {\n throw new Error(`invalid type: expecetd ${type}, got ${value.type}`);\n }\n return value.value;\n }\n return value;\n }\n}\n_Typed_options = new WeakMap();\n//# sourceMappingURL=typed.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class AddressCoder extends Coder {\n constructor(localName) {\n super(\"address\", \"address\", localName, false);\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000\";\n }\n encode(writer, _value) {\n let value = Typed.dereference(_value, \"string\");\n try {\n value = getAddress(value);\n }\n catch (error) {\n return this._throwError(error.message, _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n return getAddress(toHex(reader.readValue(), 20));\n }\n}\n//# sourceMappingURL=address.js.map","import { Coder } from \"./abstract-coder.js\";\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n constructor(coder) {\n super(coder.name, coder.type, \"_\", coder.dynamic);\n this.coder = coder;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(writer, value) {\n return this.coder.encode(writer, value);\n }\n decode(reader) {\n return this.coder.decode(reader);\n }\n}\n//# sourceMappingURL=anonymous.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { isError } from \"@ethersproject/logger\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, Result, WordSize, Writer } from \"./abstract-coder.js\";\nimport { AnonymousCoder } from \"./anonymous.js\";\nexport function pack(writer, coders, values) {\n let arrayValues = [];\n if (Array.isArray(values)) {\n arrayValues = values;\n }\n else if (values && typeof (values) === \"object\") {\n let unique = {};\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n unique[name] = true;\n return values[name];\n });\n }\n else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n let staticWriter = new Writer();\n let dynamicWriter = new Writer();\n let updateFuncs = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n }\n else {\n coder.encode(staticWriter, value);\n }\n });\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\nexport function unpack(reader, coders) {\n let values = [];\n let keys = [];\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n coders.forEach((coder) => {\n let value = null;\n if (coder.dynamic) {\n let offset = reader.readIndex();\n let offsetReader = baseReader.subReader(offset);\n try {\n value = coder.decode(offsetReader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\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 }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n if (value == undefined) {\n throw new Error(\"investigate\");\n }\n values.push(value);\n keys.push(coder.localName || null);\n });\n return Result.fromItems(values, keys);\n}\nexport class ArrayCoder extends Coder {\n constructor(coder, length, localName) {\n const type = (coder.type + \"[\" + (length >= 0 ? length : \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n defineProperties(this, { coder, length });\n }\n defaultValue() {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n const result = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"array\");\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n let count = this.length;\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n logger.assertArgumentCount(value.length, count, \"coder array\" + (this.localName ? (\" \" + this.localName) : \"\"));\n let coders = [];\n for (let i = 0; i < value.length; i++) {\n coders.push(this.coder);\n }\n return pack(writer, coders, value);\n }\n decode(reader) {\n let count = this.length;\n if (count === -1) {\n count = reader.readIndex();\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 * WordSize > reader.dataLength) {\n logger.throwError(\"insufficient data length\", \"BUFFER_OVERRUN\", {\n buffer: reader.bytes,\n offset: count * WordSize,\n length: reader.dataLength\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) {\n coders.push(new AnonymousCoder(this.coder));\n }\n return unpack(reader, coders);\n }\n}\n//# sourceMappingURL=array.js.map","import { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class BooleanCoder extends Coder {\n constructor(localName) {\n super(\"bool\", \"bool\", localName, false);\n }\n defaultValue() {\n return false;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"bool\");\n return writer.writeValue(value ? 1 : 0);\n }\n decode(reader) {\n return !!reader.readValue();\n }\n}\n//# sourceMappingURL=boolean.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class DynamicBytesCoder extends Coder {\n constructor(type, localName) {\n super(type, type, localName, true);\n }\n defaultValue() {\n return \"0x\";\n }\n encode(writer, value) {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n decode(reader) {\n return reader.readBytes(reader.readIndex(), true);\n }\n}\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"bytes\", localName);\n }\n decode(reader) {\n return hexlify(super.decode(reader));\n }\n}\n//# sourceMappingURL=bytes.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class FixedBytesCoder extends Coder {\n constructor(size, localName) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n defineProperties(this, { size }, { size: \"number\" });\n }\n defaultValue() {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n encode(writer, _value) {\n let data = arrayify(Typed.dereference(_value, this.type));\n if (data.length !== this.size) {\n this._throwError(\"incorrect data length\", _value);\n }\n return writer.writeBytes(data);\n }\n decode(reader) {\n return hexlify(reader.readBytes(this.size));\n }\n}\n//# sourceMappingURL=fixed-bytes.js.map","import { Coder } from \"./abstract-coder.js\";\nconst Empty = new Uint8Array([]);\nexport class NullCoder extends Coder {\n constructor(localName) {\n super(\"null\", \"\", localName, false);\n }\n defaultValue() {\n return null;\n }\n encode(writer, value) {\n if (value != null) {\n this._throwError(\"not null\", value);\n }\n return writer.writeBytes(Empty);\n }\n decode(reader) {\n reader.readBytes(0);\n return null;\n }\n}\n//# sourceMappingURL=null.js.map","import { fromTwos, mask, toTwos } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, WordSize } from \"./abstract-coder.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nexport class NumberCoder extends Coder {\n constructor(size, signed, localName) {\n const name = ((signed ? \"int\" : \"uint\") + (size * 8));\n super(name, name, localName, false);\n defineProperties(this, { size, signed }, { size: \"number\", signed: \"boolean\" });\n }\n defaultValue() {\n return 0;\n }\n encode(writer, _value) {\n let value = logger.getBigInt(Typed.dereference(_value, this.type));\n // Check bounds are safe for encoding\n let maxUintValue = mask(BN_MAX_UINT256, WordSize * 8);\n if (this.signed) {\n let bounds = mask(maxUintValue, (this.size * 8) - 1);\n if (value > bounds || value < -(bounds + BN_1)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n }\n else if (value < BN_0 || value > mask(maxUintValue, this.size * 8)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n value = mask(toTwos(value, this.size * 8), this.size * 8);\n if (this.signed) {\n value = toTwos(fromTwos(value, this.size * 8), 8 * WordSize);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n let value = mask(reader.readValue(), this.size * 8);\n if (this.signed) {\n value = fromTwos(value, this.size * 8);\n }\n return value;\n }\n}\n//# sourceMappingURL=number.js.map","export const version = \"@ethersproject/strings@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\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 Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\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 Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\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) {\n break;\n }\n i++;\n }\n return i;\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 // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push((badCodepoint != null) ? badCodepoint : -1);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = logger.getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\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 }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\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 // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\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 // See above loop for invalid continuation byte\n if (res === null) {\n 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 // 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 // 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 result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\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 if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\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 return new Uint8Array(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\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 if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","import { zeroPadBytes } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nimport { toUtf8Bytes, toUtf8String } from \"./utf8.js\";\nexport function formatBytes32String(text) {\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n // Check we have room for null-termination\n if (bytes.length > 31) {\n throw new Error(\"bytes32 string must be less than 32 bytes\");\n }\n // Zero-pad (implicitly null-terminates)\n return zeroPadBytes(bytes, 32);\n}\nexport function parseBytes32String(_bytes) {\n const data = logger.getBytes(_bytes, \"bytes\");\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) {\n throw new Error(\"invalid bytes32 - not 32 bytes long\");\n }\n if (data[31] !== 0) {\n throw new Error(\"invalid bytes32 string - no null terminator\");\n }\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) {\n length--;\n }\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n//# sourceMappingURL=bytes32.js.map","import { logger } from \"./logger.js\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8.js\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"should not happen; bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, _func) {\n const func = _func || function (value) { return [parseInt(value, 16)]; };\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n const range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n if (range.s == null) {\n throw new Error(\"should not happenl bad range\");\n }\n return [codepoint + range.s];\n }\n const codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n const shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n const complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_PROHIBITED\", \"value\", value);\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_UNASSIGNED\", \"value\", value);\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n logger.throwArgumentError(\"invalid hyphen\", \"value\", value);\n }\n // IDNA: 4.2.4\n if (name.length > 63) {\n logger.throwArgumentError(\"too long\", \"value\", value);\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","import { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { Typed } from \"../typed.js\";\nimport { DynamicBytesCoder } from \"./bytes.js\";\nexport class StringCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"string\", localName);\n }\n defaultValue() {\n return \"\";\n }\n encode(writer, _value) {\n return super.encode(writer, toUtf8Bytes(Typed.dereference(_value, \"string\")));\n }\n decode(reader) {\n return toUtf8String(super.decode(reader));\n }\n}\n//# sourceMappingURL=string.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nimport { pack, unpack } from \"./array.js\";\nexport class TupleCoder extends Coder {\n constructor(coders, localName) {\n let dynamic = false;\n const types = [];\n coders.forEach((coder) => {\n if (coder.dynamic) {\n dynamic = true;\n }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n super(\"tuple\", type, localName, dynamic);\n defineProperties(this, { coders: Object.freeze(coders.slice()) });\n }\n defaultValue() {\n const values = [];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\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]) {\n accum[name] = 0;\n }\n accum[name]++;\n }\n return accum;\n }, {});\n // Add named values\n this.coders.forEach((coder, index) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) {\n return;\n }\n if (name === \"length\") {\n name = \"_length\";\n }\n if (values[name] != null) {\n return;\n }\n values[name] = values[index];\n });\n return Object.freeze(values);\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"tuple\");\n return pack(writer, this.coders, value);\n }\n decode(reader) {\n return unpack(reader, this.coders);\n }\n}\n//# sourceMappingURL=tuple.js.map","// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbiCoder_instances, _AbiCoder_getCoder;\nimport { logger } from \"./logger.js\";\nimport { Reader, Writer } from \"./coders/abstract-coder.js\";\nimport { AddressCoder } from \"./coders/address.js\";\nimport { ArrayCoder } from \"./coders/array.js\";\nimport { BooleanCoder } from \"./coders/boolean.js\";\nimport { BytesCoder } from \"./coders/bytes.js\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes.js\";\nimport { NullCoder } from \"./coders/null.js\";\nimport { NumberCoder } from \"./coders/number.js\";\nimport { StringCoder } from \"./coders/string.js\";\nimport { TupleCoder } from \"./coders/tuple.js\";\nimport { ParamType } from \"./fragments.js\";\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\nexport class AbiCoder {\n constructor() {\n _AbiCoder_instances.add(this);\n }\n getDefaultValue(types) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n encode(types, values) {\n logger.assertArgumentCount(values.length, types.length, \"types/values length mismatch\");\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n const writer = new Writer();\n coder.encode(writer, values);\n return writer.data;\n }\n decode(types, data, loose) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(new Reader(data, loose));\n }\n}\n_AbiCoder_instances = new WeakSet(), _AbiCoder_getCoder = function _AbiCoder_getCoder(param) {\n if (param.isArray()) {\n return new ArrayCoder(__classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, param.arrayChildren), param.arrayLength, param.name);\n }\n if (param.isTuple()) {\n return new TupleCoder(param.components.map((c) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, c)), param.name);\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 \"\":\n return new NullCoder(param.name);\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 // 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 return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n};\nexport const defaultAbiCoder = new AbiCoder();\n//# sourceMappingURL=abi-coder.js.map","import { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","export const version = \"@ethersproject/hash@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { nameprep, toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nconst Partition = new RegExp(\"^((.*)\\\\.)?([^.]+)$\");\nexport function isValidName(name) {\n try {\n const comps = name.split(\".\");\n for (let i = 0; i < comps.length; i++) {\n if (nameprep(comps[i]).length === 0) {\n throw new Error(\"empty\");\n }\n }\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let current = name;\n let result = Zeros;\n while (current.length) {\n const partition = current.match(Partition);\n if (partition == null || partition[2] === \"\") {\n return logger.throwArgumentError(\"invalid ENS name; missing component\", \"name\", name);\n }\n const label = toUtf8Bytes(nameprep(partition[3]));\n result = keccak256(concat([result, keccak256(label)]));\n current = partition[2] || \"\";\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid DNS name; not a string\", \"name\", name);\n }\n if (name === \"\") {\n return \"0x00\";\n }\n // @TODO: should we enforce the 255 octet limit?\n return concat(name.split(\".\").map((comp) => {\n if (comp === \"\") {\n logger.throwArgumentError(\"invalid DNS name; missing component\", \"name\", name);\n }\n // We jam in an _ prefix to fill in with the length later\n // Note: Nameprep throws if the component is over 63 bytes\n const bytes = toUtf8Bytes(\"_\" + nameprep(comp));\n bytes[0] = bytes.length - 1;\n return bytes;\n })) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","import { concat, dataLength, hexlify, zeroPadBytes, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 as _keccak256, sha256 as _sha256 } from \"@ethersproject/crypto\";\nimport { toTwos } from \"@ethersproject/math\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\nfunction _pack(type, value, isArray) {\n switch (type) {\n case \"address\":\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return logger.getBytes(value);\n case \"bool\":\n value = (!!value ? \"0x01\" : \"0x00\");\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n }\n let match = type.match(regexNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n return logger.throwArgumentError(\"invalid number type\", \"type\", type);\n }\n if (isArray) {\n size = 256;\n }\n value = toTwos(value, size);\n return logger.getBytes(zeroPadValue(value, size / 8));\n }\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n if (String(size) !== match[1] || size === 0 || size > 32) {\n return logger.throwArgumentError(\"invalid bytes type\", \"type\", type);\n }\n if (dataLength(value) !== size) {\n return logger.throwArgumentError(`invalid value for ${type}`, \"value\", value);\n }\n if (isArray) {\n return logger.getBytes(zeroPadBytes(value, 32));\n }\n return value;\n }\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(`invalid array length for ${type}`, \"value\", value);\n }\n const result = [];\n value.forEach(function (value) {\n result.push(_pack(baseType, value, true));\n });\n return logger.getBytes(concat(result));\n }\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n}\n// @TODO: Array Enum\nexport function solidityPacked(types, values) {\n if (types.length != values.length) {\n logger.throwArgumentError(\"wrong number of values; expected ${ types.length }\", \"values\", values);\n }\n const tight = [];\n types.forEach(function (type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\nexport function solidityPackedKeccak256(types, values) {\n return _keccak256(solidityPacked(types, values));\n}\nexport function solidityPackedSha256(types, values) {\n return _sha256(solidityPacked(types, values));\n}\n//# sourceMappingURL=solidity.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TypedDataEncoder_instances, _TypedDataEncoder_types, _TypedDataEncoder_fullTypes, _TypedDataEncoder_encoderCache, _TypedDataEncoder_getEncoder;\n//import { TypedDataDomain, TypedDataField } from \"@ethersproject/providerabstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { mask, toHex, toTwos } from \"@ethersproject/math\";\nimport { id } from \"./id.js\";\nimport { logger } from \"./logger.js\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst BN__1 = BigInt(-1);\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n;\n;\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return concat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = toHex(BN_1, 32);\nconst hexFalse = toHex(BN_0, 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n return logger.getBigInt(value, \"domain.chainId\");\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n const bytes = logger.getBytes(value, \"domain.salt\");\n if (bytes.length !== 32) {\n logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n return hexlify(bytes);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\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 const boundsUpper = mask(BN_MAX_UINT256, signed ? (width - 1) : width);\n const boundsLower = signed ? ((boundsUpper + BN_1) * BN__1) : BN_0;\n return function (_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < boundsLower || value > boundsUpper) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return toHex(toTwos(value, 256), 32);\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 return function (value) {\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 switch (type) {\n case \"address\": return function (value) {\n return zeroPadValue(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n _TypedDataEncoder_instances.add(this);\n _TypedDataEncoder_types.set(this, void 0);\n _TypedDataEncoder_fullTypes.set(this, void 0);\n _TypedDataEncoder_encoderCache.set(this, void 0);\n __classPrivateFieldSet(this, _TypedDataEncoder_types, JSON.stringify(types), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_fullTypes, new Map(), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_encoderCache, new Map(), \"f\");\n // Link struct types to their direct child structs\n const links = new Map();\n // Link structs to structs which contain them as a child\n const parents = new Map();\n // Link all subtypes within a given struct\n const subtypes = new Map();\n Object.keys(types).forEach((type) => {\n links.set(type, new Set());\n parents.set(type, []);\n subtypes.set(type, new Set());\n });\n for (const name in types) {\n const uniqueNames = new Set();\n for (const field of types[name]) {\n // Check each field has a unique name\n if (uniqueNames.has(field.name)) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames.add(field.name);\n // Get the base type (drop any array specifiers)\n const baseType = (field.type.match(/^([^\\x5b]*)(\\x5b|$)/))[1] || null;\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n continue;\n }\n if (!parents.has(baseType)) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents.get(baseType).push(name);\n links.get(name).add(baseType);\n }\n }\n // Deduce the primary type\n const primaryTypes = Array.from(parents.keys()).filter((n) => (parents.get(n).length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\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 defineProperties(this, { primaryType: primaryTypes[0] });\n // Check for circular type references\n function checkCircular(type, found) {\n if (found.has(type)) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found.add(type);\n for (const child of links.get(type)) {\n if (!parents.has(child)) {\n continue;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n for (const subtype of found) {\n subtypes.get(subtype).add(child);\n }\n }\n found.delete(type);\n }\n checkCircular(this.primaryType, new Set());\n // Compute each fully describe type\n for (const [name, set] of subtypes) {\n const st = Array.from(set);\n st.sort();\n __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").set(name, encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\"));\n }\n }\n get types() {\n return JSON.parse(__classPrivateFieldGet(this, _TypedDataEncoder_types, \"f\"));\n }\n getEncoder(type) {\n let encoder = __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").get(type);\n if (!encoder) {\n encoder = __classPrivateFieldGet(this, _TypedDataEncoder_instances, \"m\", _TypedDataEncoder_getEncoder).call(this, type);\n __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").set(type, encoder);\n }\n return encoder;\n }\n encodeType(name) {\n const result = __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(name);\n if (!result) {\n return logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => this._visit(subtype, v, callback));\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 return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\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 domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return concat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain, types, value, resolveName) {\n // Make a copy to isolate it from the object passed in\n domain = Object.assign({}, domain);\n // Look up all ENS names\n const ensCache = {};\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 // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = Object.assign({}, types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(logger.getBytes(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return logger.getBigInt(value).toString();\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 return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n_TypedDataEncoder_types = new WeakMap(), _TypedDataEncoder_fullTypes = new WeakMap(), _TypedDataEncoder_encoderCache = new WeakMap(), _TypedDataEncoder_instances = new WeakSet(), _TypedDataEncoder_getEncoder = function _TypedDataEncoder_getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(subtype)) {\n result = result.map(keccak256);\n }\n return keccak256(concat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(type));\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(type)) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return concat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n};\n//# sourceMappingURL=typed-data.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Interface_instances, _Interface_errors, _Interface_events, _Interface_functions, _Interface_abiCoder, _Interface_getFunction, _Interface_getEvent;\nimport { arrayify, concat, dataSlice, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { defaultAbiCoder } from \"./abi-coder.js\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder.js\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatType, Fragment, FunctionFragment, ParamType } from \"./fragments.js\";\nimport { logger } from \"./logger.js\";\nimport { Typed } from \"./typed.js\";\nexport { checkResultErrors, Result };\nexport class LogDescription {\n constructor(fragment, topic, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, signature, topic, args\n });\n }\n}\nexport class TransactionDescription {\n constructor(fragment, selector, args, value) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector, value\n });\n }\n}\nexport class ErrorDescription {\n constructor(fragment, selector, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector\n });\n }\n}\nexport class Indexed {\n constructor(hash) {\n defineProperties(this, { hash, _isIndexed: true });\n }\n static isIndexed(value) {\n return !!(value && value._isIndexed);\n }\n}\n// https://docs.soliditylang.org/en/v0.8.13/control-structures.html?highlight=panic#panic-via-assert-and-error-via-require\nconst PanicReasons = {\n \"0\": \"generic panic\",\n \"1\": \"assert(false)\",\n \"17\": \"arithmetic overflow\",\n \"18\": \"division or modulo by zero\",\n \"33\": \"enum overflow\",\n \"34\": \"invalid encoded storage byte array accessed\",\n \"49\": \"out-of-bounds array access; popping on an empty array\",\n \"50\": \"out-of-bounds access of an array or bytesN\",\n \"65\": \"out of memory\",\n \"81\": \"uninitialized function\",\n};\nconst BuiltinErrors = {\n \"0x08c379a0\": {\n signature: \"Error(string)\",\n name: \"Error\",\n inputs: [\"string\"],\n reason: (message) => {\n return `reverted with reason string ${JSON.stringify(message)}`;\n }\n },\n \"0x4e487b71\": {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n inputs: [\"uint256\"],\n reason: (code) => {\n let reason = \"unknown panic code\";\n if (code >= 0 && code <= 0xff && PanicReasons[code.toString()]) {\n reason = PanicReasons[code.toString()];\n }\n return `reverted with panic code 0x${code.toString(16)} (${reason})`;\n }\n }\n};\nexport class Interface {\n constructor(fragments) {\n _Interface_instances.add(this);\n _Interface_errors.set(this, void 0);\n _Interface_events.set(this, void 0);\n _Interface_functions.set(this, void 0);\n // #structs: Map;\n _Interface_abiCoder.set(this, void 0);\n let abi = [];\n if (typeof (fragments) === \"string\") {\n abi = JSON.parse(fragments);\n }\n else {\n abi = fragments;\n }\n __classPrivateFieldSet(this, _Interface_functions, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_errors, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_events, new Map(), \"f\");\n // this.#structs = new Map();\n defineProperties(this, {\n fragments: Object.freeze(abi.map((f) => Fragment.from(f)).filter((f) => (f != null))),\n });\n __classPrivateFieldSet(this, _Interface_abiCoder, this.getAbiCoder(), \"f\");\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket;\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 defineProperties(this, { deploy: fragment });\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = __classPrivateFieldGet(this, _Interface_functions, \"f\");\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = __classPrivateFieldGet(this, _Interface_events, \"f\");\n break;\n case \"error\":\n bucket = __classPrivateFieldGet(this, _Interface_errors, \"f\");\n break;\n default:\n return;\n }\n const signature = fragment.format();\n if (bucket.has(signature)) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n bucket.set(signature, fragment);\n });\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineProperties(this, {\n deploy: ConstructorFragment.fromString(\"constructor()\")\n });\n }\n }\n // @TODO: multi sig?\n format(format) {\n if (!format) {\n format = FormatType.full;\n }\n if (format === FormatType.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n const abi = this.fragments.map((f) => f.format(format));\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatType.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n return abi;\n }\n getAbiCoder() {\n return defaultAbiCoder;\n }\n getFunctionName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, null, false)).name;\n }\n getFunction(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, values || null, true);\n }\n getEventName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, null, false)).name;\n }\n getEvent(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, values || null, true);\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(key, values) {\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_errors, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching error\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_errors, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", key);\n }\n else if (matching.length > 1) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching errors\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_errors, \"f\").get(ErrorFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching error\", \"signature\", key);\n }\n // Get the 4-byte selector used by Solidity to identify a function\n getSelector(fragment) {\n /*\n if (typeof(fragment) === \"string\") {\n const matches: Array = [ ];\n\n try { matches.push(this.getFunction(fragment)); } catch (error) { }\n try { matches.push(this.getError(fragment)); } catch (_) { }\n\n if (matches.length === 0) {\n logger.throwArgumentError(\"unknown fragment\", \"key\", fragment);\n } else if (matches.length > 1) {\n logger.throwArgumentError(\"ambiguous fragment matches function and error\", \"key\", fragment);\n }\n\n fragment = matches[0];\n }\n */\n return dataSlice(id(fragment.format()), 0, 4);\n }\n // Get the 32-byte topic hash used by Solidity to identify an event\n getEventTopic(fragment) {\n //if (typeof(fragment) === \"string\") { fragment = this.getEvent(eventFragment); }\n return id(fragment.format());\n }\n _decodeParams(params, data) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(params, data);\n }\n _encodeParams(params, values) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(params, values);\n }\n encodeDeploy(values) {\n return this._encodeParams(this.deploy.inputs, values || []);\n }\n decodeErrorResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n encodeErrorResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match function ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n let message = \"invalid length for result data\";\n const bytes = arrayify(data);\n if ((bytes.length % 32) === 0) {\n try {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.outputs, bytes);\n }\n catch (error) {\n message = \"could not decode result data\";\n }\n }\n // Call returned data with no error, but the data is junk\n return logger.throwError(message, \"BAD_DATA\", {\n value: hexlify(bytes),\n info: { method: fragment.name, signature: fragment.format() }\n });\n }\n makeError(fragment, _data, tx) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n const data = logger.getBytes(_data);\n let args = undefined;\n if (tx) {\n try {\n args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, tx.data || \"0x\");\n }\n catch (error) {\n console.log(error);\n }\n }\n let errorArgs = undefined;\n let errorName = undefined;\n let errorSignature = undefined;\n let reason = \"unknown reason\";\n if (data.length === 0) {\n reason = \"missing error reason\";\n }\n else if ((data.length % 32) === 4) {\n const selector = hexlify(data.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n try {\n errorName = builtin.name;\n errorSignature = builtin.signature;\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(builtin.inputs, data.slice(4));\n reason = builtin.reason(...errorArgs);\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n else {\n reason = \"unknown custom error\";\n try {\n const error = this.getError(selector);\n errorName = error.name;\n errorSignature = error.format();\n reason = `custom error: ${errorSignature}`;\n try {\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(error.inputs, data.slice(4));\n }\n catch (error) {\n reason = `custom error: ${errorSignature} (coult not decode error data)`;\n }\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n }\n return logger.makeError(\"call revert exception\", \"CALL_EXCEPTION\", {\n data: hexlify(data), transaction: null,\n method: fragment.name, signature: fragment.format(), args,\n errorArgs, errorName, errorSignature, reason\n });\n }\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment, values) {\n if (typeof (functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n return hexlify(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(functionFragment.outputs, values || []));\n }\n /*\n spelunk(inputs: Array, values: ReadonlyArray, processfunc: (type: string, value: any) => Promise): Promise> {\n const promises: Array> = [ ];\n const process = function(type: ParamType, value: any): any {\n if (type.baseType === \"array\") {\n return descend(type.child\n }\n if (type. === \"address\") {\n }\n };\n \n const descend = function (inputs: Array, values: ReadonlyArray) {\n if (inputs.length !== values.length) { throw new Error(\"length mismatch\"); }\n \n };\n \n const result: Array = [ ];\n values.forEach((value, index) => {\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 */\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), \"UNEXPECTED_ARGUMENT\", {\n count: values.length,\n expectedCount: eventFragment.inputs.length\n });\n }\n const topics = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n const encodeTopic = (param, value) => {\n if (param.type === \"string\") {\n return id(value);\n }\n else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n // Check addresses are valid\n if (param.type === \"address\") {\n __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([\"address\"], [value]);\n }\n return zeroPadValue(hexlify(value), 32);\n //@TOOD should probably be return toHex(value, 32)\n };\n values.forEach((value, index) => {\n const param = eventFragment.inputs[index];\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 if (value == null) {\n topics.push(null);\n }\n else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n }\n else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n }\n else {\n topics.push(encodeTopic(param, value));\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n }\n encodeEventLog(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n const topics = [];\n const dataTypes = [];\n const dataValues = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\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 }\n else if (param.type === \"bytes\") {\n topics.push(keccak256(value));\n }\n else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n }\n else {\n topics.push(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([param.type], [value]));\n }\n }\n else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n return {\n data: __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(dataTypes, dataValues),\n topics: topics\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment, data, topics) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (topics != null && !eventFragment.anonymous) {\n const eventTopic = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== eventTopic) {\n logger.throwArgumentError(\"fragment/topic mismatch\", \"topics[0]\", topics[0]);\n }\n topics = topics.slice(1);\n }\n const indexed = [];\n const nonIndexed = [];\n const dynamic = [];\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 }\n else {\n indexed.push(param);\n dynamic.push(false);\n }\n }\n else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n const resultIndexed = (topics != null) ? __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(indexed, concat(topics)) : null;\n const resultNonIndexed = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(nonIndexed, data, true);\n //const result: (Array & { [ key: string ]: any }) = [ ];\n const values = [];\n const keys = [];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n let value = null;\n if (param.indexed) {\n if (resultIndexed == null) {\n value = new Indexed(null);\n }\n else if (dynamic[index]) {\n value = new Indexed(resultIndexed[indexedIndex++]);\n }\n else {\n try {\n value = resultIndexed[indexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n }\n else {\n try {\n value = resultNonIndexed[nonIndexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n values.push(value);\n keys.push(param.name || null);\n });\n return Result.fromItems(values, keys);\n }\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx) {\n const data = logger.getBytes(tx.data, \"tx.data\");\n const value = logger.getBigInt((tx.value != null) ? tx.value : 0, \"tx.value\");\n const fragment = this.getFunction(hexlify(data.slice(0, 4)));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, data.slice(4));\n return new TransactionDescription(fragment, this.getSelector(fragment), args, value);\n }\n // @TODO\n //parseCallResult(data: BytesLike): ??\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log) {\n const fragment = this.getEvent(log.topics[0]);\n if (!fragment || fragment.anonymous) {\n 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 return new LogDescription(fragment, this.getEventTopic(fragment), this.decodeEventLog(fragment, log.data, log.topics));\n }\n parseError(data) {\n const hexData = hexlify(data);\n const fragment = this.getError(dataSlice(hexData, 0, 4));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, dataSlice(hexData, 4));\n return new ErrorDescription(fragment, this.getSelector(fragment), args);\n }\n static from(value) {\n // Already an Interface, which is immutable\n if (value instanceof Interface) {\n return value;\n }\n // JSON\n if (typeof (value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n // Maybe an interface from an older version, or from a symlinked copy\n if (typeof (value.format) === \"function\") {\n return new Interface(value.format(FormatType.json));\n }\n // Array of fragments\n return new Interface(value);\n }\n}\n_Interface_errors = new WeakMap(), _Interface_events = new WeakMap(), _Interface_functions = new WeakMap(), _Interface_abiCoder = new WeakMap(), _Interface_instances = new WeakSet(), _Interface_getFunction = function _Interface_getFunction(key, values, forceUnique) {\n // Selector\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_functions, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching function\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_functions, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n const lastValue = (values.length > 0) ? values[values.length - 1] : null;\n let valueLength = values.length;\n let allowOptions = true;\n if (Typed.isTyped(lastValue) && lastValue.type === \"overrides\") {\n allowOptions = false;\n valueLength--;\n }\n // Remove all matches that don't have a compatible length. The args\n // may contain an overrides, so the match may have n or n - 1 parameters\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs.length;\n if (inputs !== valueLength && (!allowOptions || inputs !== valueLength - 1)) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // We are past the inputs\n if (j >= inputs.length) {\n if (values[j].type === \"overrides\") {\n continue;\n }\n matching.splice(i, 1);\n break;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n // We found a single matching signature with an overrides, but the\n // last value is something that cannot possibly be an options\n if (matching.length === 1 && values && values.length !== matching[0].inputs.length) {\n const lastArg = values[values.length - 1];\n if (lastArg == null || Array.isArray(lastArg) || typeof (lastArg) !== \"object\") {\n matching.splice(0, 1);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n logger.throwArgumentError(`multiple matching functions (i.e. ${matchStr})`, \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_functions, \"f\").get(FunctionFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching function\", \"signature\", key);\n}, _Interface_getEvent = function _Interface_getEvent(key, values, forceUnique) {\n // EventTopic\n if (isHexString(key)) {\n const eventTopic = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_events, \"f\").values()) {\n if (eventTopic === this.getEventTopic(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching event\", \"eventTopic\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_events, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n // Remove all matches that don't have a compatible length.\n for (let i = matching.length - 1; i >= 0; i--) {\n if (matching[i].inputs.length < values.length) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching events\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_events, \"f\").get(EventFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching event\", \"signature\", key);\n};\n//# sourceMappingURL=interface.js.map","export const version = \"@ethersproject/web@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchResponse_props, _FetchResponse_error;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties, getStore } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\n;\nexport class FetchResponse {\n constructor(statusCode, statusMessage, headers, body, request) {\n _FetchResponse_props.set(this, void 0);\n _FetchResponse_error.set(this, void 0);\n __classPrivateFieldSet(this, _FetchResponse_props, {\n statusCode,\n statusMessage,\n headers: Object.freeze(Object.assign({}, Object.keys(headers).reduce((accum, k) => {\n accum[k.toLowerCase()] = headers[k];\n return accum;\n }, {}))),\n body: ((body == null) ? null : new Uint8Array(body)),\n request: (request || null),\n }, \"f\");\n __classPrivateFieldSet(this, _FetchResponse_error, { message: \"\" }, \"f\");\n }\n toString() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return ``;\n }\n get statusCode() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusCode\"); }\n get statusMessage() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusMessage\"); }\n get headers() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"headers\"); }\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? null : new Uint8Array(body);\n }\n get bodyText() {\n try {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? \"\" : toUtf8String(body);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid UTF-8 data\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyText\", info: { response: this }\n });\n }\n }\n get bodyJson() {\n try {\n return JSON.parse(this.bodyText);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid JSON\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyJson\", info: { response: this }\n });\n }\n }\n [(_FetchResponse_props = new WeakMap(), _FetchResponse_error = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n makeServerError(message, error) {\n let statusMessage;\n if (!message) {\n message = `${this.statusCode} ${this.statusMessage}`;\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${message})`;\n }\n else {\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${message})`;\n }\n const response = new FetchResponse(599, statusMessage, this.headers, this.body, getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\") || undefined);\n __classPrivateFieldSet(response, _FetchResponse_error, { message, error }, \"f\");\n return response;\n }\n throwThrottleError(message, stall) {\n if (stall == null) {\n stall = 1000;\n }\n if (typeof (stall) !== \"number\" || !Number.isInteger(stall) || stall < 0) {\n logger.throwArgumentError(\"invalid stall timeout\", \"stall\", stall);\n }\n const error = new Error(message || \"throttling requests\");\n defineProperties(error, { stall, throttle: true });\n throw error;\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n hasBody() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body != null);\n }\n get request() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\"); }\n ok() {\n return (__classPrivateFieldGet(this, _FetchResponse_error, \"f\").message === \"\" && this.statusCode >= 200 && this.statusCode < 300);\n }\n assertOk() {\n if (this.ok()) {\n return;\n }\n let { message, error } = __classPrivateFieldGet(this, _FetchResponse_error, \"f\");\n if (message === \"\") {\n message = `server response ${this.statusCode} ${this.statusMessage}`;\n }\n logger.throwError(message, \"SERVER_ERROR\", {\n request: (this.request || \"unknown request\"), response: this, error\n });\n }\n}\n//# sourceMappingURL=response.js.map","import { logger } from \"./logger.js\";\nimport { FetchResponse } from \"./response.js\";\nexport async function getUrl(req, timeout) {\n const protocol = req.url.split(\":\")[0].toLowerCase();\n if (protocol !== \"http\" && protocol !== \"https\") {\n logger.throwError(`unsupported protocol ${protocol}`, \"UNSUPPORTED_OPERATION\", {\n info: { protocol },\n operation: \"request\"\n });\n }\n if (req.credentials && !req.allowInsecureAuthentication) {\n logger.throwError(\"insecure authorized connections unsupported\", \"UNSUPPORTED_OPERATION\", {\n operation: \"request\"\n });\n }\n const init = {\n method: req.method,\n headers: new Headers(Array.from(req)),\n body: req.body || undefined,\n };\n const resp = await fetch(req.url, init);\n const headers = {};\n resp.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n const body = new Uint8Array(await resp.arrayBuffer());\n return new FetchResponse(resp.status, resp.statusText, headers, body, req);\n}\n//# sourceMappingURL=get-url-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchRequest_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nfunction check(value, type, name) {\n if (typeof (value) !== type) {\n throw new Error(`invalid ${name}`);\n }\n return value;\n}\nexport class FetchRequest {\n constructor(url) {\n _FetchRequest_props.set(this, void 0);\n __classPrivateFieldSet(this, _FetchRequest_props, {\n allowInsecure: false,\n gzip: false,\n headers: {},\n method: \"\",\n timeout: 300,\n url: check(url, \"string\", \"url\")\n }, \"f\");\n }\n // URL\n get url() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\"); }\n set url(url) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\", check(url, \"string\", \"url\"));\n }\n // Body\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body == null) {\n return null;\n }\n if (this.isFrozen()) {\n return new Uint8Array(body);\n }\n return body;\n }\n set body(body) {\n if (body == null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", undefined);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", undefined);\n }\n else if (typeof (body) === \"string\") {\n // @TODO: utf8-check\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(body));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"text/plain\");\n }\n else if (body instanceof Uint8Array) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", body);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/octet-stream\");\n }\n else if (typeof (body) === \"object\") {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(JSON.stringify(body)));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/json\");\n }\n else {\n throw new Error(\"invalid body\");\n }\n }\n hasBody() {\n return (getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\") != null);\n }\n // Method (default: GET with no body, POST with a body)\n get method() {\n const method = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\");\n if (method) {\n return method.toUpperCase();\n }\n if (this.body) {\n return \"POST\";\n }\n return \"GET\";\n }\n set method(method) {\n if (method == null) {\n method = \"\";\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\", check(method, \"string\", \"method\"));\n }\n // Headers (automatically fills content-type if not explicitly set)\n get headers() {\n const headers = Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\"));\n const bodyType = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\");\n if (this.credentials) { /* TODO */ }\n ;\n if (this.allowGzip) {\n headers[\"accept-encoding\"] = \"gzip\";\n }\n if (headers[\"content-type\"] == null && bodyType) {\n headers[\"content-type\"] = bodyType;\n }\n if (this.body) {\n headers[\"content-length\"] = String(this.body.length);\n }\n return Object.freeze(headers);\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n setHeader(key, value) {\n const headers = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\");\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", headers);\n headers[check(key, \"string\", \"key\").toLowerCase()] = String(value);\n }\n clearHeaders() {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", {});\n }\n [(_FetchRequest_props = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n // Configure an Authorization header\n get credentials() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\") || null;\n }\n setCredentials(username, password) {\n if (username.match(/:/)) {\n logger.throwArgumentError(\"invalid basic authentication username\", \"username\", \"[REDACTED]\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\", `${username}:${password}`);\n // @TODO:\n //const auth = username + \":\" + password;\n //this.setHeader(\"authorization\", \"Basic \" + base64Encode(toUtf8Bytes(auth)))\n //this.setHeader(\"authorization\", \"Basic TODO:\" + auth);\n }\n // Configure the request to allow gzipped responses\n get allowGzip() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\");\n }\n set allowGzip(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\", !!value);\n }\n // Allow credentials to be sent over an insecure (non-HTTPS) channel\n get allowInsecureAuthentication() {\n return !!getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\");\n }\n set allowInsecureAuthentication(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\", check(value, \"boolean\", \"allowInsecureAuthentication\"));\n }\n // Timeout (seconds)\n get timeout() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\"); }\n set timeout(timeout) {\n timeout = check(timeout, \"number\", \"timeout\");\n if (timeout <= 0) {\n throw new Error(\"invalid timerout\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\", timeout);\n }\n redirect(location) {\n // Redirection; for now we only support absolute locataions\n const current = this.url.split(\":\")[0].toLowerCase();\n const target = location.split(\":\")[0].toLowerCase();\n if (this.method !== \"GET\" || (current === \"https\" && target === \"http\") ||\n !location.match(/^https?:/)) {\n return logger.throwError(`unsupported redirect`, \"UNSUPPORTED_OPERATION\", {\n operation: `redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(location)})`\n });\n }\n // Create a copy of this request, with a new URL\n const req = new FetchRequest(location);\n req.method = \"GET\";\n req.allowGzip = this.allowGzip;\n req.timeout = this.timeout;\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"body\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\"));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Do not forward credentials unless on the same domain; only absolute\n //req.allowInsecure = false;\n // paths are currently supported; may want a way to specify to forward?\n //setStore(req.#props, \"creds\", getStore(this.#pros, \"creds\"));\n return req;\n }\n clone() {\n const clone = new FetchRequest(this.url);\n // Preserve \"default method\" (i.e. null)\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"method\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\"));\n // Preserve \"default body\" with type, copying the Uint8Array is present\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"body\", (body == null) ? undefined : new Uint8Array(body));\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Preserve \"default headers\"\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n // Credentials is readonly, so we copy internally\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"creds\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\"));\n if (this.allowGzip) {\n clone.allowGzip = true;\n }\n clone.timeout = this.timeout;\n if (this.allowInsecureAuthentication) {\n clone.allowInsecureAuthentication = true;\n }\n return clone;\n }\n freeze() {\n // Copy the body so any changes to previous access do not modify it\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body != null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", new Uint8Array(body));\n }\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\").headers);\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n }\n}\n//# sourceMappingURL=request.js.map","import { decodeBase64 } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { getUrl } from \"./get-url.js\"; /*-browser*/\nimport { logger } from \"./logger.js\";\nimport { FetchRequest } from \"./request.js\";\nimport { FetchResponse } from \"./response.js\";\nasync function delay(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\n// @TODO: Add option for global preflightRequest?\nfunction getTime() { return (new Date()).getTime(); }\nfunction unpercent(value) {\n value = value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n });\n return toUtf8Bytes(value);\n}\nlet lockGateways = false;\nlet ipfsGateway = \"https:/\\/gateway.ipfs.io/\";\nlet arGateway = \"https:/\\/gateway.ar.io/\";\nexport async function fetchData(connection) {\n const conn = (typeof (connection) === \"string\") ? {\n request: new FetchRequest(connection)\n } : (connection instanceof FetchRequest) ? {\n request: connection\n } : Object.assign({}, connection);\n if (conn.request == null) {\n return logger.throwArgumentError(\"missing request\", \"connection\", connection);\n }\n let req = conn.request.clone().freeze();\n switch (conn.request.url.split(\":\")[0]) {\n case \"data\": {\n const match = req.url.match(/^data:([^;:]*)?(;base64)?,(.*)$/i);\n if (match) {\n try {\n const headers = {\n \"content-type\": (match[1] ? match[1] : \"text/plain\")\n };\n const body = (match[2] ? decodeBase64(match[3]) : unpercent(match[3]));\n return new FetchResponse(200, \"OK\", headers, body, req.clone());\n }\n catch (error) {\n return new FetchResponse(400, \"BAD REQUEST (invalid base64 encoded data)\", {}, null, req.clone());\n }\n }\n return new FetchResponse(500, \"INTERNAL SERVER ERROR (unsupported dara URI)\", {}, null, req.clone());\n }\n case \"ipfs\":\n case \"ipns\":\n case \"ar\":\n throw new Error(\"not implemented yet\");\n console.log(\"FF\", arGateway, ipfsGateway);\n case \"http\":\n case \"https\":\n break;\n default:\n throw new Error(\"unsupported scheme\");\n }\n const attempts = (conn.throttleLimit != null) ? conn.throttleLimit : 12;\n if (!Number.isInteger(attempts) || attempts < 1) {\n return logger.throwArgumentError(\"invalid throttleLimit\", \"connection\", connection);\n }\n const slotInterval = (conn.throttleSlotInterval != null) ? conn.throttleSlotInterval : 100;\n //logger.assertInteger(slotInterval, \"connection.throttleSlotInterval\", connection.throttleSlotInterval);\n if (!Number.isInteger(slotInterval) || attempts < 0) {\n return logger.throwArgumentError(\"invalid throttleSlotInterval\", \"connection\", connection);\n }\n const retryFunc = (conn.throttleRetry != null) ? conn.throttleRetry : null;\n if (retryFunc && typeof (retryFunc) !== \"function\") {\n return logger.throwArgumentError(\"invalid throttleRetry callback\", \"connection\", connection);\n }\n const preflightRequest = conn.preflightRequest || null;\n if (preflightRequest && typeof (preflightRequest) !== \"function\") {\n return logger.throwArgumentError(\"invalid preflightRequest callback\", \"connection\", connection);\n }\n const processResponse = conn.processResponse || null;\n if (processResponse && typeof (processResponse) !== \"function\") {\n return logger.throwArgumentError(\"invalid processResponse callback\", \"connection\", connection);\n }\n // Start time of this fetch (for timeouts)\n const t0 = getTime();\n let response = null;\n for (let a = 0; a < attempts; a++) {\n let request = req.clone();\n if (preflightRequest) {\n request = (await preflightRequest(request.freeze())).clone();\n }\n const remainingTime = getTime() - t0;\n if (remainingTime < 0) {\n return logger.throwError(\"timeout\", \"TIMEOUT\", { operation: \"request\", reason: \"timeout\", request });\n }\n response = await getUrl(request, remainingTime);\n // Retry logic (server forced)\n if (a < attempts) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Try following the redirect; the request will through if the\n // type of redirect is not supported\n try {\n req = request.redirect(response.headers.location || \"\");\n continue;\n }\n catch (error) { }\n ;\n // Things won't get any better on another attempt; abort\n return response;\n }\n else if (response.statusCode === 429) {\n if (retryFunc == null || (await retryFunc(request.freeze(), response, a))) {\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof (retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n await delay(parseInt(retryAfter));\n }\n else {\n await delay(slotInterval * Math.trunc(Math.random() * Math.pow(2, a)));\n }\n continue;\n }\n }\n }\n // Optional post-processing response; also allows trapping\n // HTTP status errors and doing \"something different\",\n // including any further throttling.\n if (processResponse) {\n try {\n return await processResponse(request, response);\n }\n catch (error) {\n // response.throwThrottleError\n if (error.throttle && typeof (error.stall) === \"number\") {\n if (a < attempts) {\n await delay(error.stall);\n continue;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\", error);\n }\n // Something went wrong during processing; throw a 5xx server error\n response.makeServerError(\"error in post-processing function\", error).assertOk();\n }\n }\n return response;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\");\n}\nfetchData.lock = function () {\n lockGateways = true;\n};\n// @TODO: Allow a master Gateway function\nfetchData.setGateway = function (gateway) {\n};\nfetchData.setIpfsGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setIpfsGateway\"\n });\n }\n ipfsGateway = gateway;\n};\nfetchData.setArGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setArGateway\"\n });\n }\n arGateway = gateway;\n};\n//# sourceMappingURL=fetch-data.js.map","export const version = \"@ethersproject/providers@6.0.0-beta.5\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _a, _EnsResolver_supports2544, _EnsResolver_getResolver;\nimport { concat, dataSlice, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { encodeBase58, toArray, toNumber } from \"@ethersproject/math\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData } from \"@ethersproject/web\";\nimport { logger } from \"./logger.js\";\nconst BN_1 = BigInt(1);\nconst Empty = new Uint8Array([]);\nconst HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n const offset = toNumber(dataSlice(result, start, start + 32));\n const length = toNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n}\nfunction parseString(result, start) {\n try {\n const bytes = parseBytes(result, start);\n if (bytes != null) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(Empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\n// @TODO: This should use the fetch-data:ipfs gateway\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link) {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n }\n else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n }\n else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n return `https:/\\/gateway.ipfs.io/ipfs/${link}`;\n}\n;\n;\nexport class MulticoinProviderPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n validate(proivder) {\n return this;\n }\n supportsCoinType(coinType) {\n return false;\n }\n async encodeAddress(coinType, address) {\n throw new Error(\"unsupported coin\");\n }\n async decodeAddress(coinType, data) {\n throw new Error(\"unsupported coin\");\n }\n}\nconst BasicMulticoinPluginId = \"org.ethers.provider-prugins.basicmulticoin\";\nexport class BasicMulticoinProviderPlugin extends MulticoinProviderPlugin {\n constructor() {\n super(BasicMulticoinPluginId);\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];\nexport class EnsResolver {\n constructor(provider, address, name) {\n // For EIP-2544 names, the ancestor that provided the resolver\n _EnsResolver_supports2544.set(this, void 0);\n defineProperties(this, { provider, address, name });\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n }\n async supportsWildcard() {\n if (!__classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\")) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n __classPrivateFieldSet(this, _EnsResolver_supports2544, this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return (logger.getBigInt(result) === BN_1);\n }).catch((error) => {\n if (error.code === \"CALL_EXCEPTION\") {\n return false;\n }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n throw error;\n }), \"f\");\n }\n return await __classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\");\n }\n async _fetch(selector, parameters = \"0x\") {\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const addrData = concat([selector, namehash(this.name), parameters]);\n const tx = {\n to: this.address,\n enableCcipRead: true,\n data: addrData\n };\n // Wildcard support; use EIP-2544 to resolve the request\n let wrapped = false;\n if (await this.supportsWildcard()) {\n wrapped = true;\n // selector(\"resolve(bytes,bytes)\")\n tx.data = concat([\"0x9061b923\", encodeBytes([dnsEncode(this.name), addrData])]);\n }\n try {\n let data = await this.provider.call(tx);\n if ((logger.getBytes(data).length % 32) === 4) {\n return logger.throwError(\"resolver threw error\", \"CALL_EXCEPTION\", {\n transaction: tx, data\n });\n }\n if (wrapped) {\n return parseBytes(data, 0);\n }\n return data;\n }\n catch (error) {\n if (error.code !== \"CALL_EXCEPTION\") {\n throw error;\n }\n }\n return null;\n }\n async getAddress(coinType = 60) {\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n // No address\n if (result === \"0x\" || result === HashZero) {\n return null;\n }\n const network = await this.provider.getNetwork();\n return network.formatter.callAddress(result);\n }\n catch (error) {\n if (error.code === \"CALL_EXCEPTION\") {\n return null;\n }\n throw error;\n }\n }\n let coinPlugin = null;\n for (const plugin of this.provider.plugins) {\n if (!(plugin instanceof MulticoinProviderPlugin)) {\n continue;\n }\n if (plugin.supportsCoinType(coinType)) {\n coinPlugin = plugin;\n break;\n }\n }\n if (coinPlugin == null) {\n return null;\n }\n // keccak256(\"addr(bytes32,uint256\")\n const data = parseBytes((await this._fetch(\"0xf1cb7e06\", numPad(coinType))) || \"0x\", 0);\n // No address\n if (data == null || data === \"0x\") {\n return null;\n }\n // Compute the address\n const address = await coinPlugin.encodeAddress(coinType, data);\n if (address != null) {\n return address;\n }\n return logger.throwError(`invalid coin data`, \"UNSUPPORTED_OPERATION\", {\n operation: `getAddress(${coinType})`,\n info: { coinType, data }\n });\n }\n async getText(key) {\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\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 const calldata = logger.getBytes(concat([numPad(64), numPad(keyBytes.length), keyBytes]));\n const hexBytes = parseBytes((await this._fetch(\"0x59d1d43c\", bytesPad(calldata))) || \"0x\", 0);\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n return toUtf8String(hexBytes);\n }\n async getContentHash() {\n // keccak256(\"contenthash()\")\n const hexBytes = parseBytes((await this._fetch(\"0xbc1c58d1\")) || \"0x\", 0);\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n // IPFS (CID: 1, Type: 70=DAG-PB, 72=libp2p-key)\n const ipfs = hexBytes.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const scheme = (ipfs[1] === \"e3010170\") ? \"ipfs\" : \"ipns\";\n const length = parseInt(ipfs[4], 16);\n if (ipfs[5].length === length * 2) {\n return `${scheme}:/\\/${encodeBase58(\"0x\" + ipfs[2])}`;\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 && swarm[1].length === 64) {\n return `bzz:/\\/${swarm[1]}`;\n }\n return logger.throwError(`invalid or unsupported content hash data`, \"UNSUPPORTED_OPERATION\", {\n operation: \"getContentHash()\",\n info: { data: hexBytes }\n });\n }\n async getAvatar() {\n return (await this._getAvatar()).url;\n }\n async _getAvatar() {\n const linkage = [{ type: \"name\", value: 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) {\n linkage.push({ type: \"!avatar\", value: \"\" });\n throw new Error(\"!avatar\");\n }\n linkage.push({ type: \"avatar\", value: avatar });\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) {\n continue;\n }\n const scheme = match[1].toLowerCase();\n switch (scheme) {\n case \"https\":\n case \"data\":\n linkage.push({ type: \"url\", value: avatar });\n return { linkage, url: avatar };\n case \"ipfs\": {\n const url = getIpfsLink(avatar);\n linkage.push({ type: \"ipfs\", value: avatar });\n linkage.push({ type: \"url\", value: url });\n return { linkage, url };\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, value: avatar });\n // The owner of this name\n const owner = await this.getAddress();\n if (owner == null) {\n linkage.push({ type: \"!owner\", value: \"\" });\n throw new Error(\"!owner\");\n }\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) {\n linkage.push({ type: `!${scheme}caip`, value: (match[2] || \"\") });\n throw new Error(\"!caip\");\n }\n const formatter = (await this.provider.getNetwork()).formatter;\n const addr = formatter.address(comps[0]);\n const tokenId = numPad(comps[1]);\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = formatter.callAddress(await this.provider.call({\n to: addr, data: concat([\"0x6352211e\", tokenId])\n }));\n if (owner !== tokenOwner) {\n linkage.push({ type: \"!owner\", value: tokenOwner });\n throw new Error(\"!owner\");\n }\n linkage.push({ type: \"owner\", value: tokenOwner });\n }\n else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = logger.getBigInt(await this.provider.call({\n to: addr, data: concat([\"0x00fdd58e\", zeroPadValue(owner, 32), tokenId])\n }));\n if (!balance) {\n linkage.push({ type: \"!balance\", value: \"0\" });\n throw new Error(\"!balance\");\n }\n linkage.push({ type: \"balance\", value: balance.toString() });\n }\n // Call the token contract for the metadata URL\n const tx = {\n to: comps[0],\n data: concat([selector, tokenId])\n };\n let metadataUrl = parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) {\n linkage.push({ type: \"!metadata-url\", value: \"\" });\n throw new Error(\"!metadata-url\");\n }\n linkage.push({ type: \"metadata-url-base\", value: metadataUrl });\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", hexlify(tokenId).substring(2));\n linkage.push({ type: \"metadata-url-expanded\", value: metadataUrl });\n }\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n linkage.push({ type: \"metadata-url\", value: metadataUrl });\n // Get the token metadata\n let metadata = {};\n const response = await fetchData(metadataUrl);\n response.assertOk();\n try {\n metadata = response.bodyJson;\n }\n catch (error) {\n try {\n linkage.push({ type: \"!metadata\", value: response.bodyText });\n }\n catch (error) {\n const bytes = response.body;\n if (bytes) {\n linkage.push({ type: \"!metadata\", value: hexlify(bytes) });\n }\n throw error;\n }\n throw error;\n }\n if (!metadata) {\n linkage.push({ type: \"!metadata\", value: \"\" });\n throw new Error(\"!metadata\");\n }\n linkage.push({ type: \"metadata\", value: JSON.stringify(metadata) });\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof (imageUrl) !== \"string\") {\n linkage.push({ type: \"!imageUrl\", value: \"\" });\n throw new Error(\"!imageUrl\");\n }\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n }\n else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) {\n linkage.push({ type: \"!imageUrl-ipfs\", value: imageUrl });\n throw new Error(\"!imageUrl-ipfs\");\n }\n linkage.push({ type: \"imageUrl-ipfs\", value: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n linkage.push({ type: \"url\", value: imageUrl });\n return { linkage, url: imageUrl };\n }\n }\n }\n }\n catch (error) {\n console.log(\"EE\", error);\n }\n return { linkage, url: null };\n }\n static async fromName(provider, name) {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") {\n return null;\n }\n // Optimization since the eth node cannot change and does\n // not have a wildcar resolver\n if (name !== \"eth\" && currentName === \"eth\") {\n return null;\n }\n // Check the current node for a resolver\n const addr = await __classPrivateFieldGet(EnsResolver, _a, \"m\", _EnsResolver_getResolver).call(EnsResolver, provider, currentName);\n // Found a resolver!\n if (addr != null) {\n const resolver = new EnsResolver(provider, addr, name);\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) {\n return null;\n }\n return resolver;\n }\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n }\n}\n_a = EnsResolver, _EnsResolver_supports2544 = new WeakMap(), _EnsResolver_getResolver = async function _EnsResolver_getResolver(provider, name) {\n const network = await provider.getNetwork();\n const ensPlugin = network.getPlugin(\"org.ethers.plugins.ens\");\n // No ENS...\n if (!ensPlugin) {\n return logger.throwError(\"network does not support ENS\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getResolver\", info: { network: network.name }\n });\n }\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await provider.call({\n to: ensPlugin.address,\n data: concat([\"0x0178b8bf\", namehash(name)]),\n enableCcipRead: true\n });\n const addr = network.formatter.callAddress(addrData);\n if (addr === dataSlice(HashZero, 0, 20)) {\n return null;\n }\n return addr;\n }\n catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32),\n // so probably a link error\n throw error;\n }\n return null;\n};\n//# sourceMappingURL=ens-resolver.js.map","export const version = \"@ethersproject/signing-key@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Signature_props;\nimport { concat, dataLength, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n// Constants\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst _guard = {};\nconst Zero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nexport class Signature {\n constructor(guard, r, s, v) {\n _Signature_props.set(this, void 0);\n logger.assertPrivate(guard, _guard, \"Signature\");\n __classPrivateFieldSet(this, _Signature_props, { r, s, v, networkV: null }, \"f\");\n }\n get r() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\"); }\n set r(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\", hexlify(value));\n }\n get s() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\"); }\n set s(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n else if (logger.getBytes(value)[0] & 0x80) {\n logger.throwArgumentError(\"non-canonical s\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\", hexlify(value));\n }\n get v() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\"); }\n set v(value) {\n const v = logger.getNumber(value, \"value\");\n if (v !== 27 && v !== 28) {\n throw new Error(\"@TODO\");\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\", v);\n }\n get networkV() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"networkV\"); }\n get legacyChainId() {\n const v = this.networkV;\n if (v == null) {\n return null;\n }\n return Signature.getChainId(v);\n }\n get yParity() {\n if (this.v === 27) {\n return 0;\n }\n return 1;\n /*\n // When v is 0 or 1 it is the recid directly\n if (this.v.isZero()) { return 0; }\n if (this.v.eq(1)) { return 1; }\n\n // Otherwise, odd (e.g. 27) is 0 and even (e.g. 28) is 1\n return this.v.and(1).isZero() ? 1: 0;\n */\n }\n get yParityAndS() {\n // The EIP-2098 compact representation\n const yParityAndS = logger.getBytes(this.s);\n if (this.yParity) {\n yParityAndS[0] |= 0x80;\n }\n return hexlify(yParityAndS);\n }\n get compactSerialized() {\n return concat([this.r, this.yParityAndS]);\n }\n get serialized() {\n return concat([this.r, this.s, (this.yParity ? \"0x1c\" : \"0x1b\")]);\n }\n [(_Signature_props = new WeakMap(), Symbol.for('nodejs.util.inspect.custom'))]() {\n return `Signature { r: \"${this.r}\", s: \"${this.s}\", yParity: ${this.yParity}, networkV: ${this.networkV} }`;\n }\n clone() {\n const clone = new Signature(_guard, this.r, this.s, this.v);\n if (this.networkV) {\n setStore(__classPrivateFieldGet(clone, _Signature_props, \"f\"), \"networkV\", this.networkV);\n }\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n }\n toJSON() {\n const networkV = this.networkV;\n return {\n _type: \"signature\",\n networkV: ((networkV != null) ? networkV.toString() : null),\n r: this.r, s: this.s, v: this.v,\n };\n }\n static create() {\n return new Signature(_guard, Zero, Zero, 27);\n }\n // Get the chain ID from an EIP-155 v\n static getChainId(v) {\n const bv = logger.getBigInt(v, \"v\");\n // The v is not an EIP-155 v, so it is the unspecified chain ID\n if ((bv == BN_27) || (bv == BN_28)) {\n return BN_0;\n }\n // Bad value for an EIP-155 v\n if (bv < BN_35) {\n logger.throwArgumentError(\"invalid EIP-155 v\", \"v\", v);\n }\n return (bv - BN_35) / BN_2;\n }\n // Get the EIP-155 v transformed for a given chainId\n static getChainIdV(chainId, v) {\n return (logger.getBigInt(chainId) * BN_2) + BigInt(35 + v - 27);\n }\n // Convert an EIP-155 v into a normalized v\n static getNormalizedV(v) {\n const bv = logger.getBigInt(v);\n if (bv == BN_0) {\n return 27;\n }\n if (bv == BN_1) {\n return 28;\n }\n // Otherwise, EIP-155 v means odd is 27 and even is 28\n return (bv & BN_1) ? 27 : 28;\n }\n static from(sig) {\n const throwError = (message) => {\n return logger.throwArgumentError(message, \"signature\", sig);\n };\n if (typeof (sig) === \"string\") {\n const bytes = logger.getBytes(sig, \"signature\");\n if (bytes.length === 64) {\n const r = hexlify(bytes.slice(0, 32));\n const s = bytes.slice(32, 64);\n const v = (s[0] & 0x80) ? 28 : 27;\n s[0] &= 0x7f;\n return new Signature(_guard, r, hexlify(s), v);\n }\n if (dataLength(sig) !== 65) {\n const r = hexlify(sig.slice(0, 32));\n const s = bytes.slice(32, 64);\n if (s[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n const v = Signature.getNormalizedV(bytes[64]);\n return new Signature(_guard, r, hexlify(s), v);\n }\n return throwError(\"invlaid raw signature length\");\n }\n if (sig instanceof Signature) {\n return sig.clone();\n }\n // Get r\n const r = sig.r;\n if (r == null) {\n throwError(\"missing r\");\n }\n if (!isHexString(r, 32)) {\n throwError(\"invalid r\");\n }\n // Get s; by any means necessary (we check consistency below)\n const s = (function (s, yParityAndS) {\n if (s != null) {\n if (!isHexString(s, 32)) {\n throwError(\"invalid s\");\n }\n return s;\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n const bytes = logger.getBytes(yParityAndS);\n bytes[0] &= 0x7f;\n return hexlify(bytes);\n }\n return throwError(\"missing s\");\n })(sig.s, sig.yParityAndS);\n if (logger.getBytes(s)[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n // Get v; by any means necessary (we check consistency below)\n const { networkV, v } = (function (_v, yParityAndS, yParity) {\n if (_v != null) {\n const v = logger.getBigInt(_v);\n return {\n networkV: ((v >= BN_35) ? v : undefined),\n v: Signature.getNormalizedV(v)\n };\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n return { v: ((logger.getBytes(yParityAndS)[0] & 0x80) ? 28 : 27) };\n }\n if (yParity != null) {\n switch (yParity) {\n case 0: return { v: 27 };\n case 1: return { v: 28 };\n }\n return throwError(\"invalid yParity\");\n }\n return throwError(\"missing v\");\n })(sig.v, sig.yParityAndS, sig.yParity);\n const result = new Signature(_guard, r, s, v);\n if (networkV) {\n setStore(__classPrivateFieldGet(result, _Signature_props, \"f\"), \"networkV\", networkV);\n }\n // If multiple of v, yParity, yParityAndS we given, check they match\n if (\"yParity\" in sig && sig.yParity !== result.yParity) {\n throwError(\"yParity mismatch\");\n }\n else if (\"yParityAndS\" in sig && sig.yParityAndS !== result.yParityAndS) {\n throwError(\"yParityAndS mismatch\");\n }\n return result;\n }\n}\n//# sourceMappingURL=signature.js.map","/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst POW_2_256 = _2n ** BigInt(256);\nconst CURVE = {\n a: _0n,\n b: BigInt(7),\n P: POW_2_256 - _2n ** BigInt(32) - BigInt(977),\n n: POW_2_256 - BigInt('432420386565659656852420866394968145599'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n};\nexport { CURVE };\nfunction weistrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 ** _2n);\n const B = mod(Y1 ** _2n);\n const C = mod(B ** _2n);\n const D = mod(_2n * (mod((X1 + B) ** _2n) - A - C));\n const E = mod(_3n * A);\n const F = mod(E ** _2n);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H ** _2n);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r ** _2n - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n let n = normalizeScalar(scalar);\n const G = JacobianPoint.BASE;\n const P0 = JacobianPoint.ZERO;\n if (n === _0n)\n return P0;\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.ZERO;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) {\n let pr = precomputes[offset];\n if (window % 2)\n pr = pr.negate();\n f = f.add(pr);\n }\n else {\n let cached = precomputes[offset + Math.abs(wbits) - 1];\n if (wbits < 0)\n cached = cached.negate();\n p = p.add(cached);\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ = invert(this.z)) {\n const { x, y, z } = this;\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weistrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, 33));\n const y = bytesToNumber(bytes.subarray(33, 65));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n return this.fromCompressedHex(bytes);\n }\n if (len === 65 && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n msgHash = ensureBytes(msgHash);\n const h = truncateHash(msgHash);\n const { r, s } = normalizeSignature(signature);\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Cannot recover signature: invalid recovery bit');\n }\n if (h === _0n)\n throw new Error('Cannot recover signature: msgHash cannot be 0');\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(r));\n const { n } = CURVE;\n const rinv = invert(r, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.y & _1n ? '03' : '02';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weistrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nexport class Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = isUint8a(hex);\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = isUint8a(hex);\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n }\n toDERRawBytes(isCompressed = false) {\n return hexToBytes(this.toDERHex(isCompressed));\n }\n toDERHex(isCompressed = false) {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n if (isCompressed)\n return sHex;\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const rLen = numberToHexUnpadded(rHex.length / 2);\n const sLen = numberToHexUnpadded(sHex.length / 2);\n const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nfunction concatBytes(...arrays) {\n if (!arrays.every(isUint8a))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nfunction isUint8a(bytes) {\n return bytes instanceof Uint8Array;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nfunction numTo32bStr(num) {\n if (num > POW_2_256)\n throw new Error('Expected number < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n return hexToBytes(numTo32bStr(num));\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst POW_2_128 = _2n ** BigInt(128);\nfunction splitScalarEndo(k) {\n const { n } = CURVE;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n const { n } = CURVE;\n const byteLength = hash.length;\n const delta = byteLength * 8 - 256;\n let h = bytesToNumber(hash);\n if (delta > 0)\n h = h >> BigInt(delta);\n if (h >= n)\n h -= n;\n return h;\n}\nclass HmacDrbg {\n constructor() {\n this.v = new Uint8Array(32).fill(1);\n this.k = new Uint8Array(32).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n if (typeof utils.hmacSha256Sync !== 'function')\n throw new Error('utils.hmacSha256Sync is undefined, you need to set it');\n const res = utils.hmacSha256Sync(this.k, ...values);\n if (res instanceof Promise)\n throw new Error('To use sync sign(), ensure utils.hmacSha256 is sync');\n return res;\n }\n incr() {\n if (this.counter >= 1000) {\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n }\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n this.v = await this.hmac(this.v);\n return this.v;\n }\n generateSync() {\n this.incr();\n this.v = this.hmacSync(this.v);\n return this.v;\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n const k = bytesToNumber(kBytes);\n if (!isWithinCurveOrder(k))\n return;\n const { n } = CURVE;\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(invert(k, n) * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n const sig = new Signature(r, s);\n const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 64)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (isUint8a(key)) {\n if (key.length !== 32)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isPub(item) {\n const arr = isUint8a(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === 33 || len === 65;\n if (str)\n return len === 66 || len === 130;\n if (item instanceof Point)\n return true;\n return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n const hex = numTo32bStr(num);\n return hexToBytes(hex);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = utils.randomBytes(32);\n const e = ensureBytes(extraEntropy);\n if (e.length !== 32)\n throw new Error('sign: Expected 32 bytes of extra data');\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n let { sig, recovery } = recSig;\n const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n if (canonical && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n await drbg.reseed(seed);\n while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n drbg.reseedSync(seed);\n while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n if (h === _0n)\n return false;\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nasync function taggedHash(tag, ...messages) {\n const tagB = new Uint8Array(tag.split('').map((c) => c.charCodeAt(0)));\n const tagH = await utils.sha256(tagB);\n const h = await utils.sha256(concatBytes(tagH, tagH, ...messages));\n return bytesToNumber(h);\n}\nasync function createChallenge(x, P, message) {\n const rx = numTo32b(x);\n const t = await taggedHash('BIP0340/challenge', rx, P.toRawX(), message);\n return mod(t, CURVE.n);\n}\nfunction hasEvenY(point) {\n return (point.y & _1n) === _0n;\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nasync function schnorrSign(message, privateKey, auxRand = utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n const { n } = CURVE;\n const m = ensureBytes(message);\n const d0 = normalizePrivateKey(privateKey);\n const rand = ensureBytes(auxRand);\n if (rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n const P = Point.fromPrivateKey(d0);\n const d = hasEvenY(P) ? d0 : n - d0;\n const t0h = await taggedHash('BIP0340/aux', rand);\n const t = d ^ t0h;\n const k0h = await taggedHash('BIP0340/nonce', numTo32b(t), P.toRawX(), m);\n const k0 = mod(k0h, n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const R = Point.fromPrivateKey(k0);\n const k = hasEvenY(R) ? k0 : n - k0;\n const e = await createChallenge(R.x, P, m);\n const sig = new SchnorrSignature(R.x, mod(k + e * d, n)).toRawBytes();\n const isValid = await schnorrVerify(sig, m, P.toRawX());\n if (!isValid)\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n let sig;\n try {\n sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n const m = ensureBytes(message);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const e = await createChallenge(r, P, m);\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !hasEvenY(R) || R.x !== r)\n return false;\n return true;\n}\nexport const schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n if (hash.length < 40 || hash.length > 1024)\n throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n const num = mod(bytesToNumber(hash), CURVE.n);\n if (num === _0n || num === _1n)\n throw new Error('Invalid private key');\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => {\n return utils.hashToPrivateKey(utils.randomBytes(40));\n },\n bytesToHex,\n mod,\n sha256: async (message) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', message.buffer);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n return Uint8Array.from(createHash('sha256').update(message).digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n};\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SigningKey_privateKey;\nimport * as secp256k1 from \"@noble/secp256k1\";\nimport { arrayify, concat, dataLength, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac } from \"@ethersproject/crypto\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"./signature.js\";\nimport { logger } from \"./logger.js\";\n// Make noble-secp256k1 sync\nsecp256k1.utils.hmacSha256Sync = function (key, ...messages) {\n return arrayify(computeHmac(\"sha256\", key, concat(messages)));\n};\nexport class SigningKey {\n constructor(privateKey) {\n _SigningKey_privateKey.set(this, void 0);\n logger.assertArgument((dataLength(privateKey) === 32), \"invalid private key length\", \"privateKey\", \"[REDACTED]\");\n __classPrivateFieldSet(this, _SigningKey_privateKey, hexlify(privateKey), \"f\");\n }\n get privateKey() { return __classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"); }\n get publicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")); }\n get compressedPublicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"), true); }\n sign(digest) {\n logger.assertArgument((dataLength(digest) === 32), \"invalid digest length\", \"digest\", digest);\n const [sigDer, recid] = secp256k1.signSync(arrayify(digest), arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), {\n recovered: true,\n canonical: true\n });\n const sig = secp256k1.Signature.fromHex(sigDer);\n return Signature.from({\n r: toHex(\"0x\" + sig.r.toString(16), 32),\n s: toHex(\"0x\" + sig.s.toString(16), 32),\n v: (recid ? 0x1c : 0x1b)\n }).freeze();\n }\n computeShardSecret(other) {\n const pubKey = SigningKey.computePublicKey(other);\n return hexlify(secp256k1.getSharedSecret(arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), pubKey));\n }\n static computePublicKey(key, compressed) {\n let bytes = logger.getBytes(key, \"key\");\n if (bytes.length === 32) {\n const pubKey = secp256k1.getPublicKey(bytes, !!compressed);\n return hexlify(pubKey);\n }\n if (bytes.length === 64) {\n const pub = new Uint8Array(65);\n pub[0] = 0x04;\n pub.set(bytes, 1);\n bytes = pub;\n }\n const point = secp256k1.Point.fromHex(bytes);\n return hexlify(point.toRawBytes(compressed));\n }\n static recoverPublicKey(digest, signature) {\n const sig = Signature.from(signature);\n const der = secp256k1.Signature.fromCompact(arrayify(concat([sig.r, sig.s]))).toDERRawBytes();\n const pubKey = secp256k1.recoverPublicKey(arrayify(digest), der, sig.yParity);\n if (pubKey != null) {\n return hexlify(pubKey);\n }\n return logger.throwArgumentError(\"invalid signautre for digest\", \"signature\", signature);\n }\n static _addPoints(p0, p1, compressed) {\n const pub0 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p0).substring(2));\n const pub1 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p1).substring(2));\n return \"0x\" + pub0.add(pub1).toHex(!!compressed);\n }\n}\n_SigningKey_privateKey = new WeakMap();\n/*\nconst key = new SigningKey(\"0x1234567890123456789012345678901234567890123456789012345678901234\");\nconsole.log(key);\nconsole.log(key.sign(\"0x1234567890123456789012345678901234567890123456789012345678901234\"));\n{\n const privKey = \"0x1234567812345678123456781234567812345678123456781234567812345678\";\n const signingKey = new SigningKey(privKey);\n console.log(\"0\", signingKey, signingKey.publicKey, signingKey.publicKeyCompressed);\n\n let pubKey = SigningKey.computePublicKey(privKey);\n let pubKeyComp = SigningKey.computePublicKey(privKey, true);\n let pubKeyRaw = \"0x\" + SigningKey.computePublicKey(privKey).substring(4);\n console.log(\"A\", pubKey, pubKeyComp);\n\n let a = SigningKey.computePublicKey(pubKey);\n let b = SigningKey.computePublicKey(pubKey, true);\n console.log(\"B\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyComp);\n b = SigningKey.computePublicKey(pubKeyComp, true);\n console.log(\"C\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyRaw);\n b = SigningKey.computePublicKey(pubKeyRaw, true);\n console.log(\"D\", a, b);\n\n const digest = \"0x1122334411223344112233441122334411223344112233441122334411223344\";\n const sig = signingKey.sign(digest);\n console.log(\"SS\", sig, sig.r, sig.s, sig.yParity);\n\n console.log(\"R\", SigningKey.recoverPublicKey(digest, sig));\n}\n*/\n//# sourceMappingURL=signing-key.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { dataLength } from \"@ethersproject/bytes\";\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (dataLength(storageKey) !== 32) {\n //logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }>\n throw new Error(\"\");\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n //logger.throwArgumentError(\"access list expected to be [ address, storageKeys[>\n throw new Error(\"\");\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = 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//# sourceMappingURL=accesslist.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nexport function computeAddress(key) {\n const publicKey = SigningKey.computePublicKey(key, false);\n return getAddress(keccak256(\"0x\" + publicKey.substring(4)).substring(26));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(SigningKey.recoverPublicKey(digest, signature));\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/transaction@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Transaction_props;\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toArray } from \"@ethersproject/math\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { decodeRlp, encodeRlp } from \"@ethersproject/rlp\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"./accesslist.js\";\nimport { recoverAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst BN_MAX_UINT = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleData(value, param) {\n try {\n return hexlify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid data\", param, value);\n }\n}\nfunction handleAccessList(value, param) {\n try {\n return accessListify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid accessList\", param, value);\n }\n}\nfunction handleNumber(_value, param) {\n if (_value === \"0x\") {\n return 0;\n }\n return logger.getNumber(_value, param);\n}\nfunction handleUint(_value, param) {\n if (_value === \"0x\") {\n return BN_0;\n }\n const value = logger.getBigInt(_value, param);\n if (value > BN_MAX_UINT) {\n logger.throwArgumentError(\"value exceeds uint size\", param, value);\n }\n return value;\n}\nfunction formatNumber(_value, name) {\n const value = logger.getBigInt(_value, \"value\");\n const result = toArray(value);\n if (result.length > 32) {\n logger.throwArgumentError(`value too large`, `tx.${name}`, value);\n }\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _parseLegacy(data) {\n const fields = decodeRlp(data);\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 6)) {\n return logger.throwArgumentError(\"invalid field count for legacy transaction\", \"data\", data);\n }\n const tx = {\n type: 0,\n nonce: handleNumber(fields[0], \"nonce\"),\n gasPrice: handleUint(fields[1], \"gasPrice\"),\n gasLimit: handleUint(fields[2], \"gasLimit\"),\n to: handleAddress(fields[3]),\n value: handleUint(fields[4], \"value\"),\n data: handleData(fields[5], \"dta\"),\n chainId: BN_0\n };\n // Legacy unsigned transaction\n if (fields.length === 6) {\n return tx;\n }\n const v = handleUint(fields[6], \"v\");\n const r = handleUint(fields[7], \"r\");\n const s = handleUint(fields[8], \"s\");\n if (r === BN_0 && s === BN_0) {\n // EIP-155 unsigned transaction\n tx.chainId = v;\n }\n else {\n // Compute the EIP-155 chain ID (or 0 for legacy)\n let chainId = (v - BN_35) / BN_2;\n if (chainId < BN_0) {\n chainId = BN_0;\n }\n tx.chainId = chainId;\n // Signed Legacy Transaction\n if (chainId === BN_0 && (v < BN_27 || v > BN_28)) {\n logger.throwArgumentError(\"non-canonical legacy v\", \"v\", fields[6]);\n }\n tx.signature = Signature.from({\n r: zeroPadValue(fields[7], 32),\n s: zeroPadValue(fields[8], 32),\n v\n });\n tx.hash = keccak256(data);\n }\n return tx;\n}\nfunction _serializeLegacy(tx, sig) {\n const fields = [\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n ];\n let chainId = BN_0;\n if (tx.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = logger.getBigInt(tx.chainId, \"tx.chainId\");\n // We have a chainId in the tx and an EIP-155 v in the signature,\n // make sure they agree with each other\n if (sig && sig.networkV != null && sig.legacyChainId !== chainId) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n }\n else if (sig) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n const legacy = sig.legacyChainId;\n if (legacy != null) {\n chainId = legacy;\n }\n }\n // Requesting an unsigned transaction\n if (!sig) {\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== BN_0) {\n fields.push(toArray(chainId));\n fields.push(\"0x\");\n fields.push(\"0x\");\n }\n return encodeRlp(fields);\n }\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = BigInt(27 + sig.yParity);\n if (chainId !== BN_0) {\n v = Signature.getChainIdV(chainId, sig.v);\n }\n else if (BigInt(sig.v) !== v) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n fields.push(toArray(v));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n return encodeRlp(fields);\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n let yParity;\n try {\n yParity = handleNumber(fields[0], \"yParity\");\n if (yParity !== 0 && yParity !== 1) {\n throw new Error(\"bad yParity\");\n }\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid yParity\", \"yParity\", fields[0]);\n }\n const r = zeroPadValue(fields[1], 32);\n const s = zeroPadValue(fields[2], 32);\n const signature = Signature.from({ r, s, yParity });\n tx.signature = signature;\n}\nfunction _parseEip1559(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 12)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 2\", \"data\", hexlify(data));\n }\n const maxPriorityFeePerGas = handleUint(fields[2], \"maxPriorityFeePerGas\");\n const maxFeePerGas = handleUint(fields[3], \"maxFeePerGas\");\n const tx = {\n type: 2,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleUint(fields[4], \"gasLimit\"),\n to: handleAddress(fields[5]),\n value: handleUint(fields[6], \"value\"),\n data: handleData(fields[7], \"data\"),\n accessList: handleAccessList(fields[8], \"accessList\"),\n };\n // Unsigned EIP-1559 Transaction\n if (fields.length === 9) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _serializeEip1559(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(tx.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"yParity\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x02\", encodeRlp(fields)]);\n}\nfunction _parseEip2930(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 8 && fields.length !== 11)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 1\", \"data\", hexlify(data));\n }\n const tx = {\n type: 1,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n gasPrice: handleUint(fields[2], \"gasPrice\"),\n gasLimit: handleUint(fields[3], \"gasLimit\"),\n to: handleAddress(fields[4]),\n value: handleUint(fields[5], \"value\"),\n data: handleData(fields[6], \"data\"),\n accessList: handleAccessList(fields[7], \"accessList\")\n };\n // Unsigned EIP-2930 Transaction\n if (fields.length === 8) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(8), _serializeEip2930);\n return tx;\n}\nfunction _serializeEip2930(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"recoveryParam\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x01\", encodeRlp(fields)]);\n}\nexport class Transaction {\n constructor() {\n _Transaction_props.set(this, void 0);\n __classPrivateFieldSet(this, _Transaction_props, {\n type: null,\n to: null,\n nonce: 0,\n gasLimit: BigInt(0),\n gasPrice: null,\n maxPriorityFeePerGas: null,\n maxFeePerGas: null,\n data: \"0x\",\n value: BigInt(0),\n chainId: BigInt(0),\n sig: null,\n accessList: null\n }, \"f\");\n }\n // A type of null indicates the type will be populated automatically\n get type() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\"); }\n get typeName() {\n switch (this.type) {\n case 0: return \"legacy\";\n case 1: return \"eip-2930\";\n case 2: return \"eip-1559\";\n }\n return null;\n }\n set type(value) {\n switch (value) {\n case null:\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", null);\n break;\n case 0:\n case \"legacy\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 0);\n break;\n case 1:\n case \"berlin\":\n case \"eip-2930\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 1);\n break;\n case 2:\n case \"london\":\n case \"eip-1559\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 2);\n break;\n default:\n throw new Error(`unsupported transaction type`);\n }\n }\n get to() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\"); }\n set to(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\", (value == null) ? null : getAddress(value));\n }\n get nonce() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\"); }\n set nonce(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\", logger.getNumber(value, \"value\")); }\n get gasLimit() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\"); }\n set gasLimit(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\", logger.getBigInt(value)); }\n get gasPrice() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\");\n if (value == null && (this.type === 0 || this.type === 1)) {\n return BN_0;\n }\n return value;\n }\n set gasPrice(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\", (value == null) ? null : logger.getBigInt(value, \"gasPrice\"));\n }\n get maxPriorityFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxPriorityFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxPriorityFeePerGas\"));\n }\n get maxFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxFeePerGas\"));\n }\n get data() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\"); }\n set data(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\", hexlify(value)); }\n get value() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\"); }\n set value(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\", logger.getBigInt(value, \"value\"));\n }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\", logger.getBigInt(value)); }\n get signature() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\") || null; }\n set signature(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\", (value == null) ? null : Signature.from(value));\n }\n get accessList() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\") || null;\n if (value == null && (this.type === 1 || this.type === 2)) {\n return [];\n }\n return value;\n }\n set accessList(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\", (value == null) ? null : accessListify(value));\n }\n get hash() {\n if (this.signature == null) {\n throw new Error(\"cannot hash unsigned transaction; maybe you meant .unsignedHash\");\n }\n return keccak256(this.serialized);\n }\n get unsignedHash() {\n return keccak256(this.unsignedSerialized);\n }\n get from() {\n if (this.signature == null) {\n return null;\n }\n return recoverAddress(this.unsignedSerialized, this.signature);\n }\n get fromPublicKey() {\n if (this.signature == null) {\n return null;\n }\n // use ecrecover\n return \"\";\n }\n isSigned() {\n return this.signature != null;\n }\n get serialized() {\n if (this.signature == null) {\n throw new Error(\"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized\");\n }\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this, this.signature);\n case 1:\n return _serializeEip2930(this, this.signature);\n case 2:\n return _serializeEip1559(this, this.signature);\n }\n throw new Error(\"unsupported type\");\n }\n get unsignedSerialized() {\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this);\n case 1:\n return _serializeEip2930(this);\n case 2:\n return _serializeEip1559(this);\n }\n throw new Error(\"unsupported type\");\n }\n // Validates properties and lists possible types this transaction adheres to\n inferTypes() {\n // Checks that there are no conflicting properties set\n const hasGasPrice = this.gasPrice != null;\n const hasFee = (this.maxFeePerGas != null || this.maxPriorityFeePerGas != null);\n const hasAccessList = (this.accessList != null);\n //if (hasGasPrice && hasFee) {\n // throw new Error(\"transaction cannot have gasPrice and maxFeePerGas\");\n //}\n if (this.maxFeePerGas != null && this.maxPriorityFeePerGas != null) {\n if (this.maxFeePerGas < this.maxPriorityFeePerGas) {\n throw new Error(\"priorityFee cannot be more than maxFee\");\n }\n }\n //if (this.type === 2 && hasGasPrice) {\n // throw new Error(\"eip-1559 transaction cannot have gasPrice\");\n //}\n if ((this.type === 0 || this.type === 1) && hasFee) {\n throw new Error(\"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas\");\n }\n if (this.type === 0 && hasAccessList) {\n throw new Error(\"legacy transaction cannot have accessList\");\n }\n const types = [];\n // Explicit type\n if (this.type != null) {\n types.push(this.type);\n }\n else {\n if (hasFee) {\n types.push(2);\n }\n else if (hasGasPrice) {\n types.push(1);\n if (!hasAccessList) {\n types.push(0);\n }\n }\n else if (hasAccessList) {\n types.push(1);\n types.push(2);\n }\n else {\n types.push(0);\n types.push(1);\n types.push(2);\n }\n }\n types.sort();\n return types;\n }\n isLegacy() { return (this.type === 0); }\n isBerlin() { return (this.type === 1); }\n isLondon() { return (this.type === 2); }\n clone() {\n return Transaction.from(this);\n }\n freeze() {\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").sig = (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig.clone().freeze());\n }\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").accessList = Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList.map((set) => {\n Object.freeze(set.storageKeys);\n return Object.freeze(set);\n }));\n }\n Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n }\n static from(tx) {\n if (typeof (tx) === \"string\") {\n const payload = arrayify(tx);\n if (payload[0] >= 0x7f) { // @TODO: > vs >= ??\n return Transaction.from(_parseLegacy(payload));\n }\n switch (payload[0]) {\n case 1: return Transaction.from(_parseEip2930(payload));\n case 2: return Transaction.from(_parseEip1559(payload));\n }\n throw new Error(\"unsupported transaction type\");\n }\n const result = new Transaction();\n if (tx.type != null) {\n result.type = tx.type;\n }\n if (tx.to != null) {\n result.to = tx.to;\n }\n if (tx.nonce != null) {\n result.nonce = tx.nonce;\n }\n if (tx.gasLimit != null) {\n result.gasLimit = tx.gasLimit;\n }\n if (tx.gasPrice != null) {\n result.gasPrice = tx.gasPrice;\n }\n if (tx.maxPriorityFeePerGas != null) {\n result.maxPriorityFeePerGas = tx.maxPriorityFeePerGas;\n }\n if (tx.maxFeePerGas != null) {\n result.maxFeePerGas = tx.maxFeePerGas;\n }\n if (tx.data != null) {\n result.data = tx.data;\n }\n if (tx.value != null) {\n result.value = tx.value;\n }\n if (tx.chainId != null) {\n result.chainId = tx.chainId;\n }\n if (tx.signature != null) {\n result.signature = Signature.from(tx.signature);\n }\n if (tx.accessList != null) {\n result.accessList = tx.accessList;\n }\n if (tx.hash != null) {\n if (result.isSigned()) {\n if (result.hash !== tx.hash) {\n throw new Error(\"hash mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a hashs\");\n }\n }\n if (tx.from != null) {\n if (result.isSigned()) {\n if (result.from.toLowerCase() !== (tx.from || \"\").toLowerCase()) {\n throw new Error(\"from mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a from\");\n }\n }\n return result;\n }\n}\n_Transaction_props = new WeakMap();\n//# sourceMappingURL=transaction.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Block_transactions, _TransactionReceipt_logs;\n//import { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\n// -----------------------\nfunction getValue(value) {\n if (value == null) {\n return null;\n }\n return value;\n}\nfunction toJson(value) {\n if (value == null) {\n return null;\n }\n return value.toString();\n}\n// @TODO? implements Required\nexport class FeeData {\n constructor(gasPrice, maxFeePerGas, maxPriorityFeePerGas) {\n defineProperties(this, {\n gasPrice: getValue(gasPrice),\n maxFeePerGas: getValue(maxFeePerGas),\n maxPriorityFeePerGas: getValue(maxPriorityFeePerGas)\n });\n }\n toJSON() {\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = this;\n return {\n _type: \"FeeData\",\n gasPrice: toJson(gasPrice),\n maxFeePerGas: toJson(maxFeePerGas),\n maxPriorityFeePerGas: toJson(maxPriorityFeePerGas),\n };\n }\n}\n;\nexport function copyRequest(req) {\n const result = {};\n // These could be addresses, ENS names or Addressables\n if (req.to) {\n result.to = req.to;\n }\n if (req.from) {\n result.from = req.from;\n }\n if (req.data) {\n result.data = hexlify(req.data);\n }\n const bigIntKeys = \"chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value\".split(/,/);\n for (const key in bigIntKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getBigInt(req[key], `request.${key}`);\n }\n const numberKeys = \"type,nonce\".split(/,/);\n for (const key in numberKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getNumber(req[key], `request.${key}`);\n }\n if (req.accessList) {\n result.accessList = accessListify(req.accessList);\n }\n if (\"blockTag\" in req) {\n result.blockTag = req.blockTag;\n }\n if (\"enableCcipRead\" in req) {\n result.enableCcipReadEnabled = !!req.enableCcipRead;\n }\n if (\"customData\" in req) {\n result.customData = req.customData;\n }\n return result;\n}\n;\nexport class Block {\n constructor(block, provider) {\n _Block_transactions.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _Block_transactions, Object.freeze(block.transactions.map((tx) => {\n if (typeof (tx) !== \"string\" && tx.provider !== provider) {\n throw new Error(\"provider mismatch\");\n }\n return tx;\n })), \"f\");\n ;\n defineProperties(this, {\n provider,\n hash: getValue(block.hash),\n number: block.number,\n timestamp: block.timestamp,\n parentHash: block.parentHash,\n nonce: block.nonce,\n difficulty: block.difficulty,\n gasLimit: block.gasLimit,\n gasUsed: block.gasUsed,\n miner: block.miner,\n extraData: block.extraData,\n baseFeePerGas: getValue(block.baseFeePerGas)\n });\n }\n get transactions() { return __classPrivateFieldGet(this, _Block_transactions, \"f\"); }\n //connect(provider: Provider): Block {\n // return new Block(this, provider);\n //}\n toJSON() {\n const { baseFeePerGas, difficulty, extraData, gasLimit, gasUsed, hash, miner, nonce, number, parentHash, timestamp, transactions } = this;\n return {\n _type: \"Block\",\n baseFeePerGas: toJson(baseFeePerGas),\n difficulty: toJson(difficulty),\n extraData,\n gasLimit: toJson(gasLimit),\n gasUsed: toJson(gasUsed),\n hash, miner, nonce, number, parentHash, timestamp,\n transactions,\n };\n }\n [(_Block_transactions = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return {\n value: this.transactions[index++], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get length() { return this.transactions.length; }\n get date() {\n if (this.timestamp == null) {\n return null;\n }\n return new Date(this.timestamp * 1000);\n }\n async getTransaction(index) {\n const tx = this.transactions[index];\n if (tx == null) {\n throw new Error(\"no such tx\");\n }\n if (typeof (tx) === \"string\") {\n return (await this.provider.getTransaction(tx));\n }\n else {\n return tx;\n }\n }\n isMined() { return !!this.hash; }\n isLondon() { return !!this.baseFeePerGas; }\n orphanedEvent() {\n if (!this.isMined()) {\n throw new Error(\"\");\n }\n return createOrphanedBlockFilter(this);\n }\n}\nexport class Log {\n constructor(log, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n const topics = Object.freeze(log.topics.slice());\n defineProperties(this, {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n removed: log.removed,\n address: log.address,\n data: log.data,\n topics,\n index: log.index,\n transactionIndex: log.transactionIndex,\n });\n }\n //connect(provider: Provider): Log {\n // return new Log(this, provider);\n //}\n toJSON() {\n const { address, blockHash, blockNumber, data, index, removed, topics, transactionHash, transactionIndex } = this;\n return {\n _type: \"log\",\n address, blockHash, blockNumber, data, index,\n removed, topics, transactionHash, transactionIndex\n };\n }\n async getBlock() {\n return (await this.provider.getBlock(this.blockHash));\n }\n async getTransaction() {\n return (await this.provider.getTransaction(this.transactionHash));\n }\n async getTransactionReceipt() {\n return (await this.provider.getTransactionReceipt(this.transactionHash));\n }\n removedEvent() {\n return createRemovedLogFilter(this);\n }\n}\nexport class TransactionReceipt {\n constructor(tx, provider) {\n _TransactionReceipt_logs.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _TransactionReceipt_logs, Object.freeze(tx.logs.map((log) => {\n if (provider !== log.provider) {\n //return log.connect(provider);\n throw new Error(\"provider mismatch\");\n }\n return log;\n })), \"f\");\n defineProperties(this, {\n provider,\n to: tx.to,\n from: tx.from,\n contractAddress: tx.contractAddress,\n hash: tx.hash,\n index: tx.index,\n blockHash: tx.blockHash,\n blockNumber: tx.blockNumber,\n logsBloom: tx.logsBloom,\n gasUsed: tx.gasUsed,\n cumulativeGasUsed: tx.cumulativeGasUsed,\n gasPrice: (tx.effectiveGasPrice || tx.gasPrice),\n byzantium: tx.byzantium,\n status: tx.status,\n root: tx.root\n });\n }\n get logs() { return __classPrivateFieldGet(this, _TransactionReceipt_logs, \"f\"); }\n //connect(provider: Provider): TransactionReceipt {\n // return new TransactionReceipt(this, provider);\n //}\n toJSON() {\n const { to, from, contractAddress, hash, index, blockHash, blockNumber, logsBloom, logs, byzantium, status, root } = this;\n return {\n _type: \"TransactionReceipt\",\n blockHash, blockNumber, byzantium, contractAddress,\n cumulativeGasUsed: toJson(this.cumulativeGasUsed),\n from,\n gasPrice: toJson(this.gasPrice),\n gasUsed: toJson(this.gasUsed),\n hash, index, logs, logsBloom, root, status, to\n };\n }\n get length() { return this.logs.length; }\n [(_TransactionReceipt_logs = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return { value: this.logs[index++], done: false };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get fee() {\n return this.gasUsed * this.gasPrice;\n }\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.hash);\n if (tx == null) {\n throw new Error(\"TODO\");\n }\n return tx;\n }\n async confirmations() {\n return (await this.provider.getBlockNumber()) - this.blockNumber + 1;\n }\n removedEvent() {\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transction cannot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"reorderedEvent(other)\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\n;\nexport class TransactionResponse {\n constructor(tx, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n this.blockNumber = (tx.blockNumber != null) ? tx.blockNumber : null;\n this.blockHash = (tx.blockHash != null) ? tx.blockHash : null;\n this.hash = tx.hash;\n this.index = tx.index;\n this.type = tx.type;\n this.from = tx.from;\n this.to = tx.to || null;\n this.gasLimit = tx.gasLimit;\n this.nonce = tx.nonce;\n this.data = tx.data;\n this.value = tx.value;\n this.gasPrice = tx.gasPrice;\n this.maxPriorityFeePerGas = (tx.maxPriorityFeePerGas != null) ? tx.maxPriorityFeePerGas : null;\n this.maxFeePerGas = (tx.maxFeePerGas != null) ? tx.maxFeePerGas : null;\n this.chainId = tx.chainId;\n this.signature = tx.signature;\n this.accessList = (tx.accessList != null) ? tx.accessList : null;\n }\n //connect(provider: Provider): TransactionResponse {\n // return new TransactionResponse(this, provider);\n //}\n toJSON() {\n const { blockNumber, blockHash, index, hash, type, to, from, nonce, data, signature, accessList } = this;\n return {\n _type: \"TransactionReceipt\",\n accessList, blockNumber, blockHash,\n chainId: toJson(this.chainId),\n data, from,\n gasLimit: toJson(this.gasLimit),\n gasPrice: toJson(this.gasPrice),\n hash,\n maxFeePerGas: toJson(this.maxFeePerGas),\n maxPriorityFeePerGas: toJson(this.maxPriorityFeePerGas),\n nonce, signature, to, index, type,\n value: toJson(this.value),\n };\n }\n async getBlock() {\n let blockNumber = this.blockNumber;\n if (blockNumber == null) {\n const tx = await this.getTransaction();\n if (tx) {\n blockNumber = tx.blockNumber;\n }\n }\n if (blockNumber == null) {\n return null;\n }\n const block = this.provider.getBlock(blockNumber);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n return this.provider.getTransaction(this.hash);\n }\n async wait(confirms) {\n return this.provider.waitForTransaction(this.hash, confirms);\n }\n isMined() {\n return (this.blockHash != null);\n }\n isLegacy() {\n return (this.type === 0);\n }\n isBerlin() {\n return (this.type === 1);\n }\n isLondon() {\n return (this.type === 2);\n }\n removedEvent() {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\nfunction createOrphanedBlockFilter(block) {\n return { orphan: \"drop-block\", hash: block.hash, number: block.number };\n}\nfunction createReorderedTransactionFilter(tx, other) {\n return { orphan: \"reorder-transaction\", tx, other };\n}\nfunction createRemovedTransactionFilter(tx) {\n return { orphan: \"drop-transaction\", tx };\n}\nfunction createRemovedLogFilter(log) {\n return { orphan: \"drop-log\", log: {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n address: log.address,\n data: log.data,\n topics: Object.freeze(log.topics.slice()),\n index: log.index\n } };\n}\nfunction fail() {\n throw new Error(\"this provider should not be used\");\n}\nclass DummyProvider {\n get provider() { return this; }\n async getNetwork() { return fail(); }\n async getFeeData() { return fail(); }\n async estimateGas(tx) { return fail(); }\n async call(tx) { return fail(); }\n async resolveName(name) { return fail(); }\n // State\n async getBlockNumber() { return fail(); }\n // Account\n async getBalanceOf(address, blockTag) {\n return fail();\n }\n async getTransactionCountOf(address, blockTag) {\n return fail();\n }\n async getCode(address, blockTag) {\n return fail();\n }\n async getStorageAt(address, position, blockTag) {\n return fail();\n }\n // Write\n async broadcastTransaction(signedTx) { return fail(); }\n // Queries\n async getBlock(blockHashOrBlockTag) {\n return fail();\n }\n async getBlockWithTransactions(blockHashOrBlockTag) {\n return fail();\n }\n async getTransaction(hash) {\n return fail();\n }\n async getTransactionReceipt(hash) {\n return fail();\n }\n // Bloom-filter Queries\n async getLogs(filter) {\n return fail();\n }\n // ENS\n async lookupAddress(address) {\n return fail();\n }\n async waitForTransaction(hash, confirms, timeout) {\n return fail();\n }\n async waitForBlock(blockTag) {\n return fail();\n }\n // EventEmitterable\n async on(event, listener) { return fail(); }\n async once(event, listener) { return fail(); }\n async emit(event, ...args) { return fail(); }\n async listenerCount(event) { return fail(); }\n async listeners(event) { return fail(); }\n async off(event, listener) { return fail(); }\n async removeAllListeners(event) { return fail(); }\n async addListener(event, listener) { return fail(); }\n async removeListener(event, listener) { return fail(); }\n}\n// A singleton provider instance that can be used as a placeholder. This\n// allows API that have a Provider added later to not require a null check.\nexport const dummyProvider = new DummyProvider();\n//# sourceMappingURL=provider.js.map","// Belongs to Networks; requires abstract-provider\n// provider requires abstract-provider and network\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Formatter_format, _Formatter_baseBlock;\n/**\n * Formatter\n *\n * This is responsibile for converting much of the various\n * loose network values into a concrete ethers-ready value.\n *\n * For example, converting addresses to checksum addresses,\n * validating a hash is 32 bytes, and so on.\n *\n * By sub-classing this class and providing it in a custom\n * Network object this allows exotic (non-Ethereum) networks\n * to be fairly simple to adapt to ethers.\n */\nimport { getAddress, getCreateAddress } from \"@ethersproject/address\";\nimport { dataLength, dataSlice, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { Block, Log, TransactionReceipt, TransactionResponse } from \"./provider.js\";\nimport { logger } from \"./logger.js\";\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n//export type AccessListSet = { address: string, storageKeys: Array };\n//export type AccessList = Array;\n//export type AccessListish = AccessList |\n// Array<[ string, Array ]> |\n// Record>;\nfunction stringify(value) {\n if (typeof (value) !== \"string\") {\n throw new Error(\"invalid string\");\n }\n return value;\n}\nexport class Formatter {\n constructor() {\n _Formatter_format.set(this, void 0);\n _Formatter_baseBlock.set(this, void 0);\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 number = this.number.bind(this);\n const uint256 = this.uint256.bind(this);\n const topics = this.arrayOf(hash);\n __classPrivateFieldSet(this, _Formatter_format, {\n address,\n bigNumber,\n blockTag,\n data,\n hash,\n number,\n uint256,\n topics,\n filter: this.object({\n fromBlock: this.allowNull(blockTag, undefined),\n toBlock: this.allowNull(blockTag, undefined),\n blockHash: this.allowNull(hash, undefined),\n address: this.allowNull(address, undefined),\n topics: this.allowNull(topics, undefined)\n }),\n transactionRequest: this.object({\n from: this.allowNull(address),\n type: this.allowNull(number),\n to: this.allowNull(address),\n nonce: this.allowNull(number),\n gasLimit: this.allowNull(uint256),\n gasPrice: this.allowNull(uint256),\n maxFeePerGas: this.allowNull(uint256),\n maxPriorityFeePerGas: this.allowNull(uint256),\n data: this.allowNull(data),\n value: this.allowNull(uint256),\n }),\n transactionResponse: this.object({\n hash: hash,\n index: number,\n type: this.allowNull(number, 0),\n // These can be null for pending blocks\n blockHash: this.allowNull(hash),\n blockNumber: this.allowNull(number),\n // For Legacy transactions, this comes from the v\n chainId: this.allowNull(number),\n from: address,\n to: this.address,\n gasLimit: bigNumber,\n gasPrice: this.allowNull(bigNumber),\n maxFeePerGas: this.allowNull(bigNumber),\n maxPriorityFeePerGas: this.allowNull(bigNumber),\n value: bigNumber,\n data: data,\n nonce: number,\n r: hash,\n s: hash,\n v: number,\n accessList: this.allowNull(this.accessList)\n }, {\n index: [\"transactionIndex\"]\n }),\n }, \"f\");\n __classPrivateFieldSet(this, _Formatter_baseBlock, this.object({\n number: number,\n hash: this.allowNull(hash, null),\n timestamp: number,\n parentHash: hash,\n nonce: this.allowNull(stringify, \"0x0000000000000000\"),\n difficulty: bigNumber,\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n miner: this.allowNull(address, \"0x0000000000000000000000000000000000000000\"),\n extraData: stringify,\n baseFeePerGas: this.allowNull(bigNumber),\n }), \"f\");\n }\n // An address\n address(value) {\n return getAddress(value);\n }\n // An address from a call result; may be zero-padded\n callAddress(value) {\n if (dataLength(value) !== 32 || dataSlice(value, 0, 12) !== \"0x000000000000000000000000\") {\n logger.throwArgumentError(\"invalid call address\", \"value\", value);\n }\n return this.address(dataSlice(value, 12));\n }\n // An address from a transaction (e.g. { from: string, nonce: number })\n contractAddress(value) {\n return getCreateAddress({\n from: this.address(value.from),\n nonce: logger.getNumber(value.nonce, \"value.nonce\")\n });\n }\n // Block Tag\n blockTag(value) {\n if (value == null) {\n return \"latest\";\n }\n switch (value) {\n case \"earliest\":\n return \"0x0\";\n case \"latest\":\n case \"pending\":\n return value;\n }\n if (typeof (value) === \"number\" || (isHexString(value) && dataLength(value) < 32)) {\n return quantity(value);\n }\n return logger.throwArgumentError(\"invalid blockTag\", \"value\", value);\n }\n // Block objects\n block(value, provider) {\n const params = __classPrivateFieldGet(this, _Formatter_baseBlock, \"f\").call(this, value);\n params.transactions = value.transactions.map((t) => this.hash(t));\n return new Block(params, provider);\n }\n blockWithTransactions(value, provider) {\n throw new Error();\n }\n // Transactions\n transactionRequest(value, provider) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionRequest(value);\n }\n transactionResponse(value, provider) {\n value = Object.assign({}, value);\n // @TODO: Use the remap feature\n if (value.data == null && value.input != null) {\n value.data = value.input;\n }\n if (value.gasLimit == null && value.gas) {\n value.gasLimit = value.gas;\n }\n value = __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionResponse(value);\n const sig = Signature.from({ r: value.r, s: value.s, v: value.v });\n value.signature = sig;\n if (value.chainId == null) {\n value.chainId = sig.legacyChainId;\n }\n return new TransactionResponse(value, provider);\n }\n // Receipts\n log(value, provider) {\n const log = this.object({\n address: this.address,\n blockHash: this.hash,\n blockNumber: this.number,\n data: this.data,\n index: this.number,\n removed: this.boolean,\n topics: this.topics,\n transactionHash: this.hash,\n transactionIndex: this.number,\n }, {\n index: [\"logIndex\"]\n })(value);\n return new Log(log, provider);\n }\n receipt(value, provider) {\n const receipt = this.object({\n blockHash: this.hash,\n blockNumber: this.number,\n contractAddress: this.allowNull(this.address),\n cumulativeGasUsed: this.bigNumber,\n from: this.address,\n gasUsed: this.bigNumber,\n logs: this.arrayOf((v) => (this.log(v, provider))),\n logsBloom: this.data,\n root: this.allowNull(this.data),\n status: this.allowNull(this.number),\n to: this.address,\n gasPrice: this.allowNull(this.bigNumber),\n hash: this.hash,\n index: this.number,\n type: this.allowNull(this.number, 0),\n }, {\n hash: [\"transactionHash\"],\n gasPrice: [\"effectiveGasPrice\"],\n index: [\"transactionIndex\"]\n })(value);\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (receipt.root != null) {\n if (receipt.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = parseInt(receipt.root);\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (receipt.status != null && receipt.status !== value) {\n return logger.throwError(\"alt-root-status/status mismatch\", \"BAD_DATA\", {\n value: { root: receipt.root, status: receipt.status }\n });\n }\n receipt.status = value;\n delete receipt.root;\n }\n else {\n return logger.throwError(\"invalid alt-root-status\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n else if (!isHexString(receipt.root, 32)) {\n // Must be a valid bytes32\n return logger.throwError(\"invalid receipt root hash\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n //receipt.byzantium = (receipt.root == null);\n return new TransactionReceipt(receipt, provider);\n }\n // Fitlers\n topics(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").topics(value);\n }\n filter(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").filter(value);\n }\n filterLog(value) {\n console.log(\"ME\", value);\n return null;\n }\n // Converts a serialized transaction to a TransactionResponse\n transaction(value) {\n throw new Error();\n }\n // Useful utility formatters functions, which if need be use the\n // methods within the formatter to ensure internal compatibility\n // Access List; converts an AccessListish to an AccessList\n accessList(value) {\n return accessListify(value);\n }\n // Converts falsish values to a specific value, otherwise use the formatter. Calls preserve `this`.\n allowFalsish(format, ifFalse) {\n return ((value) => {\n if (!value) {\n return ifFalse;\n }\n return format.call(this, value);\n });\n }\n // Allows null, optionally replacing it with a default value. Calls preserve `this`.\n allowNull(format, ifNull) {\n return ((value) => {\n if (value == null) {\n return ifNull;\n }\n return format.call(this, value);\n });\n }\n // Requires an Array satisfying the formatter. Calls preserves `this`.\n arrayOf(format) {\n return ((array) => {\n if (!Array.isArray(array)) {\n throw new Error(\"not an array\");\n }\n return array.map((i) => format.call(this, i));\n });\n }\n // Requires a value which is a value BigNumber\n bigNumber(value) {\n return logger.getBigInt(value, \"value\");\n }\n uint256(value) {\n const result = this.bigNumber(value);\n if (result < 0 || result > BN_MAX_UINT256) {\n logger.throwArgumentError(\"invalid uint256\", \"value\", value);\n }\n return result;\n }\n // Requires a value which is a value boolean or string equivalent\n boolean(value) {\n switch (value) {\n case true:\n case \"true\":\n return true;\n case false:\n case \"false\":\n return false;\n }\n return logger.throwArgumentError(`invalid boolean; ${JSON.stringify(value)}`, \"value\", value);\n }\n // Requires a value which is a valid hexstring. If dataOrLength is true,\n // the length must be even (i.e. a datahexstring) or if it is a number,\n // specifies teh number of bytes value must represent\n _hexstring(dataOrLength) {\n if (dataOrLength == null) {\n dataOrLength = false;\n }\n return (function (value) {\n if (isHexString(value, dataOrLength)) {\n return value.toLowerCase();\n }\n throw new Error(\"bad hexstring\");\n });\n }\n data(value) {\n if (dataLength(value) == null) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return value;\n }\n // Requires a network-native hash\n hash(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").data(value);\n }\n // Requires a valid number, within the IEEE 754 safe range\n number(value) {\n return logger.getNumber(value);\n }\n // Requires an object which matches a fleet of other formatters\n // Any FormatFunc may return `undefined` to have the value omitted\n // from the result object. Calls preserve `this`.\n object(format, altNames) {\n return ((value) => {\n const result = {};\n for (const key in format) {\n let srcKey = key;\n if (altNames && key in altNames && !(srcKey in value)) {\n for (const altKey of altNames[key]) {\n if (altKey in value) {\n srcKey = altKey;\n break;\n }\n }\n }\n try {\n const nv = format[key].call(this, value[srcKey]);\n if (nv !== undefined) {\n result[key] = nv;\n }\n }\n catch (error) {\n const message = (error instanceof Error) ? error.message : \"not-an-error\";\n logger.throwError(`invalid value for value.${key} (${message})`, \"BAD_DATA\", { value });\n }\n }\n return result;\n });\n }\n // Requires a value which matches a network-native storage slot\n storageSlot(value) {\n return toHex(logger.getBigInt(value), 32);\n }\n}\n_Formatter_format = new WeakMap(), _Formatter_baseBlock = new WeakMap();\n//# sourceMappingURL=formatter.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\nconst EnsAddress = \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\";\nexport class NetworkPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n clone() {\n return new NetworkPlugin(this.name);\n }\n validate(network) {\n return this;\n }\n}\nexport class GasCostPlugin extends NetworkPlugin {\n constructor(effectiveBlock = 0, costs) {\n super(`org.ethers.plugins.gas-cost#${(effectiveBlock || 0)}`);\n const props = { effectiveBlock };\n function set(name, nullish) {\n let value = (costs || {})[name];\n if (value == null) {\n value = nullish;\n }\n if (typeof (value) !== \"number\") {\n logger.throwArgumentError(`invalud value for ${name}`, \"costs\", costs);\n }\n props[name] = value;\n }\n set(\"txBase\", 21000);\n set(\"txCreate\", 32000);\n set(\"txDataZero\", 4);\n set(\"txDataNonzero\", 16);\n set(\"txAccessListStorageKey\", 1900);\n set(\"txAccessListAddress\", 2400);\n defineProperties(this, props);\n }\n clone() {\n return new GasCostPlugin(this.effectiveBlock, this);\n }\n}\n// Networks shoudl use this plugin to specify the contract address\n// and network necessary to resolve ENS names.\nexport class EnsPlugin extends NetworkPlugin {\n constructor(address, targetNetwork) {\n super(\"org.ethers.plugins.ens\");\n defineProperties(this, {\n address: (address || EnsAddress),\n targetNetwork: ((targetNetwork == null) ? 1 : targetNetwork)\n });\n }\n clone() {\n return new EnsPlugin(this.address, this.targetNetwork);\n }\n validate(network) {\n network.formatter.address(this.address);\n return this;\n }\n}\nexport class MaxPriorityFeePlugin extends NetworkPlugin {\n constructor(priorityFee) {\n super(\"org.ethers.plugins.max-priority-fee\");\n defineProperties(this, {\n priorityFee: logger.getBigInt(priorityFee)\n });\n }\n async getPriorityFee(provider) {\n return this.priorityFee;\n }\n clone() {\n return new MaxPriorityFeePlugin(this.priorityFee);\n }\n}\n//# sourceMappingURL=plugins-network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Network_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { Formatter } from \"./formatter.js\";\nimport { logger } from \"./logger.js\";\nimport { EnsPlugin, GasCostPlugin } from \"./plugins-network.js\";\n/* * * *\n// Networks which operation against an L2 can use this plugin to\n// specify how to access L1, for the purpose of resolving ENS,\n// for example.\nexport class LayerOneConnectionPlugin extends NetworkPlugin {\n readonly provider!: Provider;\n// @TODO: Rename to ChainAccess and allow for connecting to any chain\n constructor(provider: Provider) {\n super(\"org.ethers.plugins.layer-one-connection\");\n defineProperties(this, { provider });\n }\n\n clone(): LayerOneConnectionPlugin {\n return new LayerOneConnectionPlugin(this.provider);\n }\n}\n*/\n/* * * *\nexport class PriceOraclePlugin extends NetworkPlugin {\n readonly address!: string;\n\n constructor(address: string) {\n super(\"org.ethers.plugins.price-oracle\");\n defineProperties(this, { address });\n }\n\n clone(): PriceOraclePlugin {\n return new PriceOraclePlugin(this.address);\n }\n}\n*/\n// Networks or clients with a higher need for security (such as clients\n// that may automatically make CCIP requests without user interaction)\n// can use this plugin to anonymize requests or intercept CCIP requests\n// to notify and/or receive authorization from the user\n/* * * *\nexport type FetchDataFunc = (req: Frozen) => Promise;\nexport class CcipPreflightPlugin extends NetworkPlugin {\n readonly fetchData!: FetchDataFunc;\n\n constructor(fetchData: FetchDataFunc) {\n super(\"org.ethers.plugins.ccip-preflight\");\n defineProperties(this, { fetchData });\n }\n\n clone(): CcipPreflightPlugin {\n return new CcipPreflightPlugin(this.fetchData);\n }\n}\n*/\nconst Networks = new Map();\nconst defaultFormatter = new Formatter();\nexport class Network {\n constructor(name, _chainId, formatter) {\n _Network_props.set(this, void 0);\n const chainId = logger.getBigInt(_chainId);\n if (formatter == null) {\n formatter = defaultFormatter;\n }\n const plugins = new Map();\n __classPrivateFieldSet(this, _Network_props, { name, chainId, formatter, plugins }, \"f\");\n }\n toJSON() {\n return { name: this.name, chainId: this.chainId };\n }\n get name() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\"); }\n set name(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\", value); }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\", logger.getBigInt(value, \"chainId\")); }\n get formatter() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\"); }\n set formatter(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\", value); }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _Network_props, \"f\").plugins.values());\n }\n attachPlugin(plugin) {\n if (this.isFrozen()) {\n throw new Error(\"frozen\");\n }\n if (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _Network_props, \"f\").plugins.set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(name)) || null;\n }\n // Gets a list of Plugins which match basename, ignoring any fragment\n getPlugins(basename) {\n return (this.plugins.filter((p) => (p.name.split(\"#\")[0] === basename)));\n }\n clone() {\n const clone = new Network(this.name, this.chainId, this.formatter);\n this.plugins.forEach((plugin) => {\n clone.attachPlugin(plugin.clone());\n });\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Network_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Network_props, \"f\"));\n }\n computeIntrinsicGas(tx) {\n const costs = this.getPlugin(\"org.ethers.gas-cost\") || (new GasCostPlugin());\n let gas = costs.txBase;\n if (tx.to == null) {\n gas += costs.txCreate;\n }\n if (tx.data) {\n for (let i = 2; i < tx.data.length; i += 2) {\n if (tx.data.substring(i, i + 2) === \"00\") {\n gas += costs.txDataZero;\n }\n else {\n gas += costs.txDataNonzero;\n }\n }\n }\n if (tx.accessList) {\n const accessList = this.formatter.accessList(tx.accessList);\n for (const addr in accessList) {\n gas += costs.txAccessListAddress + costs.txAccessListStorageKey * accessList[addr].storageKeys.length;\n }\n }\n return gas;\n }\n static from(network) {\n // Default network\n if (network == null) {\n return Network.from(\"homestead\");\n }\n // Canonical name or chain ID\n if (typeof (network) === \"number\") {\n network = BigInt(network);\n }\n if (typeof (network) === \"string\" || typeof (network) === \"bigint\") {\n const networkFunc = Networks.get(network);\n if (networkFunc) {\n return networkFunc();\n }\n if (typeof (network) === \"bigint\") {\n return new Network(\"unknown\", network);\n }\n logger.throwArgumentError(\"unknown network\", \"network\", network);\n }\n // Clonable with network-like abilities\n if (typeof (network.clone) === \"function\") {\n const clone = network.clone();\n //if (typeof(network.name) !== \"string\" || typeof(network.chainId) !== \"number\") {\n //}\n return clone;\n }\n // Networkish\n if (typeof (network) === \"object\") {\n if (typeof (network.name) !== \"string\" || typeof (network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network object name or chainId\", \"network\", network);\n }\n const custom = new Network((network.name), (network.chainId));\n if (network.ensAddress || network.ensNetwork != null) {\n custom.attachPlugin(new EnsPlugin(network.ensAddress, network.ensNetwork));\n }\n //if ((network).layerOneConnection) {\n // custom.attachPlugin(new LayerOneConnectionPlugin((network).layerOneConnection));\n //}\n return custom;\n }\n return logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n static register(nameOrChainId, networkFunc) {\n if (typeof (nameOrChainId) === \"number\") {\n nameOrChainId = BigInt(nameOrChainId);\n }\n const existing = Networks.get(nameOrChainId);\n if (existing) {\n logger.throwArgumentError(`conflicting network for ${JSON.stringify(existing.name)}`, \"nameOrChainId\", nameOrChainId);\n }\n Networks.set(nameOrChainId, networkFunc);\n }\n}\n_Network_props = new WeakMap();\n//# sourceMappingURL=network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PollingBlockSubscriber_instances, _PollingBlockSubscriber_provider, _PollingBlockSubscriber_poller, _PollingBlockSubscriber_interval, _PollingBlockSubscriber_blockNumber, _PollingBlockSubscriber_poll, _OnBlockSubscriber_provider, _OnBlockSubscriber_poll, _PollingOrphanSubscriber_filter, _PollingTransactionSubscriber_hash, _PollingEventSubscriber_instances, _PollingEventSubscriber_provider, _PollingEventSubscriber_filter, _PollingEventSubscriber_poller, _PollingEventSubscriber_blockNumber, _PollingEventSubscriber_poll;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport function getPollingSubscriber(provider, event) {\n if (event === \"block\") {\n return new PollingBlockSubscriber(provider);\n }\n if (isHexString(event, 32)) {\n return new PollingTransactionSubscriber(provider, event);\n }\n return logger.throwError(\"unsupported polling event\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getPollingSubscriber\", info: { event }\n });\n}\n// @TODO: refactor this\nexport class PollingBlockSubscriber {\n constructor(provider) {\n _PollingBlockSubscriber_instances.add(this);\n _PollingBlockSubscriber_provider.set(this, void 0);\n _PollingBlockSubscriber_poller.set(this, void 0);\n _PollingBlockSubscriber_interval.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingBlockSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, 4000, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\"); }\n set pollingInterval(value) { __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, value, \"f\"); }\n start() {\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber already running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).call(this);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n }\n stop() {\n if (!__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber not running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._clearTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\"));\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingBlockSubscriber_provider = new WeakMap(), _PollingBlockSubscriber_poller = new WeakMap(), _PollingBlockSubscriber_interval = new WeakMap(), _PollingBlockSubscriber_blockNumber = new WeakMap(), _PollingBlockSubscriber_instances = new WeakSet(), _PollingBlockSubscriber_poll = async function _PollingBlockSubscriber_poll() {\n const blockNumber = await __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").getBlockNumber();\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n return;\n }\n // @TODO: Put a cap on the maximum number of events per loop?\n if (blockNumber !== __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\")) {\n for (let b = __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") + 1; b <= blockNumber; b++) {\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").emit(\"block\", b);\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n};\nexport class OnBlockSubscriber {\n constructor(provider) {\n _OnBlockSubscriber_provider.set(this, void 0);\n _OnBlockSubscriber_poll.set(this, void 0);\n __classPrivateFieldSet(this, _OnBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _OnBlockSubscriber_poll, (blockNumber) => {\n this._poll(blockNumber, __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\"));\n }, \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"sub-classes must override this\");\n }\n start() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\").call(this, -2);\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n pause(dropWhilePaused) { this.stop(); }\n resume() { this.start(); }\n}\n_OnBlockSubscriber_provider = new WeakMap(), _OnBlockSubscriber_poll = new WeakMap();\nexport class PollingOrphanSubscriber extends OnBlockSubscriber {\n constructor(provider, filter) {\n super(provider);\n _PollingOrphanSubscriber_filter.set(this, void 0);\n __classPrivateFieldSet(this, _PollingOrphanSubscriber_filter, copy(filter), \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"@TODO\");\n console.log(__classPrivateFieldGet(this, _PollingOrphanSubscriber_filter, \"f\"));\n }\n}\n_PollingOrphanSubscriber_filter = new WeakMap();\nexport class PollingTransactionSubscriber extends OnBlockSubscriber {\n constructor(provider, hash) {\n super(provider);\n _PollingTransactionSubscriber_hash.set(this, void 0);\n __classPrivateFieldSet(this, _PollingTransactionSubscriber_hash, hash, \"f\");\n }\n async _poll(blockNumber, provider) {\n const tx = await provider.getTransactionReceipt(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"));\n if (tx) {\n provider.emit(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"), tx);\n }\n }\n}\n_PollingTransactionSubscriber_hash = new WeakMap();\nexport class PollingEventSubscriber {\n constructor(provider, filter) {\n _PollingEventSubscriber_instances.add(this);\n _PollingEventSubscriber_provider.set(this, void 0);\n _PollingEventSubscriber_filter.set(this, void 0);\n _PollingEventSubscriber_poller.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingEventSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingEventSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_filter, copy(filter), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_poller, __classPrivateFieldGet(this, _PollingEventSubscriber_instances, \"m\", _PollingEventSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n start() {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getBlockNumber().then((blockNumber) => {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n });\n }\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingEventSubscriber_provider = new WeakMap(), _PollingEventSubscriber_filter = new WeakMap(), _PollingEventSubscriber_poller = new WeakMap(), _PollingEventSubscriber_blockNumber = new WeakMap(), _PollingEventSubscriber_instances = new WeakSet(), _PollingEventSubscriber_poll = async function _PollingEventSubscriber_poll(blockNumber) {\n // The initial block hasn't been determined yet\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n return;\n }\n const filter = copy(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"));\n filter.fromBlock = __classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") + 1;\n filter.toBlock = blockNumber;\n const logs = await __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getLogs(filter);\n // No logs could just mean the node has not indexed them yet,\n // so we keep a sliding window of 60 blocks to keep scanning\n if (logs.length === 0) {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") < blockNumber - 60) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber - 60, \"f\");\n }\n return;\n }\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n for (const log of logs) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").emit(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"), log);\n }\n};\n//# sourceMappingURL=subscriber-polling.js.map","// @TODO\n// Event coalescence\n// When we register an event with an async value (e.g. address is a Signer\n// or ENS name), we need to add it immeidately for the Event API, but also\n// need time to resolve the address. Upon resolving the address, we need to\n// migrate the listener to the static event. We also need to maintain a map\n// of Signer/ENS name to address so we can sync respond to listenerCount.\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractProvider_instances, _AbstractProvider_subs, _AbstractProvider_plugins, _AbstractProvider_pausedState, _AbstractProvider_networkPromise, _AbstractProvider_anyNetwork, _AbstractProvider_performCache, _AbstractProvider_nextTimer, _AbstractProvider_timers, _AbstractProvider_disableCcipRead, _AbstractProvider_perform, _AbstractProvider_call, _AbstractProvider_getBlock, _AbstractProvider_hasSub, _AbstractProvider_getSub;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { concat, dataLength, dataSlice, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { toArray } from \"@ethersproject/math\";\nimport { defineProperties, EventPayload, resolveProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { EnsResolver } from \"./ens-resolver.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { FeeData } from \"./provider.js\";\nimport { PollingBlockSubscriber, PollingEventSubscriber, PollingOrphanSubscriber, PollingTransactionSubscriber } from \"./subscriber-polling.js\";\n// Constants\nconst BN_2 = BigInt(2);\nconst MAX_CCIP_REDIRECTS = 10;\nfunction getTag(prefix, value) {\n return prefix + \":\" + JSON.stringify(value, (k, v) => {\n if (typeof (v) === \"bigint\") {\n return `bigint:${v.toString()}`;\n }\n if (typeof (v) === \"string\") {\n return v.toLowerCase();\n }\n // Sort object keys\n if (typeof (v) === \"object\" && !Array.isArray(v)) {\n const keys = Object.keys(v);\n keys.sort();\n return keys.reduce((accum, key) => {\n accum[key] = v[key];\n return accum;\n }, {});\n }\n return v;\n });\n}\nexport class UnmanagedSubscriber {\n constructor(name) { defineProperties(this, { name }); }\n start() { }\n stop() { }\n pause(dropWhilePaused) { }\n resume() { }\n}\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\n// Normalize a ProviderEvent into a Subscription\n// @TODO: Make events sync if possible; like block\n//function getSyncSubscription(_event: ProviderEvent): Subscription {\n//}\nasync function getSubscription(_event, provider) {\n if (_event == null) {\n throw new Error(\"invalid event\");\n }\n // Normalize topic array info an EventFilter\n if (Array.isArray(_event)) {\n _event = { topics: _event };\n }\n if (typeof (_event) === \"string\") {\n switch (_event) {\n case \"block\":\n case \"pending\":\n case \"debug\":\n case \"network\": {\n return { type: _event, tag: _event };\n }\n }\n }\n if (isHexString(_event, 32)) {\n const hash = _event.toLowerCase();\n return { type: \"transaction\", tag: getTag(\"tx\", { hash }), hash };\n }\n if (_event.orphan) {\n const event = _event;\n // @TODO: Should lowercase and whatnot things here instead of copy...\n return { type: \"orphan\", tag: getTag(\"orphan\", event), filter: copy(event) };\n }\n if ((_event.address || _event.topics)) {\n const event = _event;\n const filter = {\n topics: ((event.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n }))\n };\n if (event.address) {\n const addresses = [];\n const promises = [];\n const addAddress = (addr) => {\n if (isHexString(addr)) {\n addresses.push(addr);\n }\n else {\n promises.push((async () => {\n addresses.push(await resolveAddress(addr, provider));\n })());\n }\n };\n if (Array.isArray(event.address)) {\n event.address.forEach(addAddress);\n }\n else {\n addAddress(event.address);\n }\n if (promises.length) {\n await Promise.all(promises);\n }\n filter.address = concisify(addresses.map((a) => a.toLowerCase()));\n }\n return { filter, tag: getTag(\"event\", filter), type: \"event\" };\n }\n return logger.throwArgumentError(\"unknown ProviderEvent\", \"event\", _event);\n}\nfunction getTime() { return (new Date()).getTime(); }\nexport function copyRequest(tx) {\n // @TODO: copy the copy from contracts and use it from this\n return tx;\n}\nexport class AbstractProvider {\n // @TODO: This should be a () => Promise so network can be\n // done when needed; or rely entirely on _detectNetwork?\n constructor(_network) {\n _AbstractProvider_instances.add(this);\n _AbstractProvider_subs.set(this, void 0);\n _AbstractProvider_plugins.set(this, void 0);\n // null=unpaused, true=paused+dropWhilePaused, false=paused\n _AbstractProvider_pausedState.set(this, void 0);\n _AbstractProvider_networkPromise.set(this, void 0);\n _AbstractProvider_anyNetwork.set(this, void 0);\n _AbstractProvider_performCache.set(this, void 0);\n _AbstractProvider_nextTimer.set(this, void 0);\n _AbstractProvider_timers.set(this, void 0);\n _AbstractProvider_disableCcipRead.set(this, void 0);\n if (_network === \"any\") {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, true, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n else if (_network) {\n const network = Network.from(_network);\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(network), \"f\");\n setTimeout(() => { this.emit(\"network\", network, null); }, 0);\n }\n else {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n __classPrivateFieldSet(this, _AbstractProvider_performCache, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_plugins, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_nextTimer, 0, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_timers, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, false, \"f\");\n }\n get provider() { return this; }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").values());\n }\n attachPlugin(plugin) {\n if (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(name)) || null;\n }\n set disableCcipRead(value) { __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, !!value, \"f\"); }\n get disableCcipRead() { return __classPrivateFieldGet(this, _AbstractProvider_disableCcipRead, \"f\"); }\n async ccipReadFetch(tx, calldata, urls) {\n if (this.disableCcipRead || urls.length === 0 || tx.to == null) {\n return null;\n }\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n const errorMessages = [];\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\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 //const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n // value.status = response.statusCode;\n // return value;\n //});\n const request = new FetchRequest(href);\n if (url.indexOf(\"{data}\") === -1) {\n request.body = { data, sender };\n }\n let errorMessage = \"unknown error\";\n const resp = await fetchData(request);\n try {\n const result = resp.bodyJson;\n if (result.data) {\n return result.data;\n }\n if (result.message) {\n errorMessage = result.message;\n }\n }\n catch (error) { }\n // 4xx indicates the result is not present; stop\n if (resp.statusCode >= 400 && resp.statusCode < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${errorMessage}`, \"OFFCHAIN_FAULT\", {\n reason: \"404_MISSING_RESOURCE\",\n transaction: tx, info: { url, errorMessage }\n });\n }\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n return logger.throwError(`error encountered during CCIP fetch: ${errorMessages.map((m) => JSON.stringify(m)).join(\", \")}`, \"OFFCHAIN_FAULT\", {\n reason: \"500_SERVER_ERROR\",\n transaction: tx, info: { urls, errorMessages }\n });\n }\n _wrapTransaction(tx, hash, blockNumber) {\n return tx;\n }\n _detectNetwork() {\n return logger.throwError(\"sub-classes must implement this\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_detectNetwork\"\n });\n }\n async _perform(req) {\n return logger.throwError(`unsupported method: ${req.method}`, \"UNSUPPORTED_OPERATION\", {\n operation: req.method,\n info: req\n });\n }\n // State\n async getBlockNumber() {\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getBlockNumber\" }), \"%response\");\n }\n async _getAddress(address) {\n if (typeof (address) === \"string\") {\n return address;\n }\n return await address.getAddress();\n }\n async _getBlockTag(blockTag) {\n const network = await this.getNetwork();\n if (typeof (blockTag) === \"number\" && Number.isSafeInteger(blockTag) && blockTag < 0) {\n //let blockNumber = await this._getApproxBlockNumber(500);\n let blockNumber = await this.getBlockNumber();\n blockNumber += blockTag;\n if (blockNumber < 0) {\n blockNumber = 0;\n }\n return network.formatter.blockTag(blockNumber);\n }\n return network.formatter.blockTag(blockTag);\n }\n async getNetwork() {\n // No explicit network was set and this is our first time\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") == null) {\n // Detect the current network (shared with all calls)\n const detectNetwork = this._detectNetwork().then((network) => {\n this.emit(\"network\", network, null);\n return network;\n }, (error) => {\n // Reset the networkPromise on failure, so we will try again\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === detectNetwork) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n throw error;\n });\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, detectNetwork, \"f\");\n return await detectNetwork;\n }\n const networkPromise = __classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\");\n const [expected, actual] = await Promise.all([\n networkPromise,\n this._detectNetwork() // The actual connected network\n ]);\n if (expected.chainId !== actual.chainId) {\n if (__classPrivateFieldGet(this, _AbstractProvider_anyNetwork, \"f\")) {\n // The \"any\" network can change, so notify listeners\n this.emit(\"network\", actual, expected);\n // Update the network if something else hasn't already changed it\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === networkPromise) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(actual), \"f\");\n }\n }\n else {\n // Otherwise, we do not allow changes to the underlying network\n logger.throwError(`network changed: ${expected.chainId} => ${actual.chainId} `, \"NETWORK_ERROR\", {\n event: \"changed\"\n });\n }\n }\n return expected.clone().freeze();\n }\n async getFeeData() {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: ((async () => {\n try {\n const gasPrice = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getGasPrice\" });\n return logger.getBigInt(gasPrice, \"%response\");\n }\n catch (error) { }\n return null;\n })())\n });\n let maxFeePerGas = null, maxPriorityFeePerGas = null;\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 maxPriorityFeePerGas = BigInt(\"1500000000\");\n // Allow a network to override their maximum priority fee per gas\n const priorityFeePlugin = (await this.getNetwork()).getPlugin(\"org.ethers.plugins.max-priority-fee\");\n if (priorityFeePlugin) {\n maxPriorityFeePerGas = await priorityFeePlugin.getPriorityFee(this);\n }\n maxFeePerGas = (block.baseFeePerGas * BN_2) + maxPriorityFeePerGas;\n }\n return new FeeData(gasPrice, maxFeePerGas, maxPriorityFeePerGas);\n }\n async _getTransaction(_request) {\n const network = await this.getNetwork();\n // Fill in any addresses\n const request = Object.assign({}, _request, await resolveProperties({\n to: (_request.to ? resolveAddress(_request.to, this) : undefined),\n from: (_request.from ? resolveAddress(_request.from, this) : undefined),\n }));\n return network.formatter.transactionRequest(request);\n }\n async estimateGas(_tx) {\n const transaction = await this._getTransaction(_tx);\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"estimateGas\", transaction\n }), \"%response\");\n }\n async call(_tx) {\n const { tx, blockTag } = await resolveProperties({\n tx: this._getTransaction(_tx),\n blockTag: this._getBlockTag(_tx.blockTag)\n });\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, tx, blockTag, _tx.enableCcipRead ? 0 : -1);\n }\n // Account\n async getBalanceOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBalance\", address, blockTag\n }), \"%response\");\n }\n async getTransactionCountOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getTransactionCount\", address, blockTag\n }), \"%response\");\n }\n async getCode(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getCode\", address, blockTag\n }));\n }\n async getStorageAt(_address, _position, _blockTag) {\n const position = logger.getBigInt(_position);\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getStorageAt\", address, position, blockTag\n }));\n }\n // Write\n async broadcastTransaction(signedTx) {\n throw new Error();\n return {};\n }\n // Queries\n async getBlock(block) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, false);\n if (params == null) {\n return null;\n }\n return format.block(params, this);\n }\n async getBlockWithTransactions(block) {\n const format = (await this.getNetwork()).formatter;\n const params = __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, true);\n if (params == null) {\n return null;\n }\n return format.blockWithTransactions(params, this);\n }\n async getTransaction(hash) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n return format.transactionResponse(params, this);\n }\n async getTransactionReceipt(hash) {\n const format = (await this.getNetwork()).formatter;\n const receipt = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransactionReceipt\", hash });\n if (receipt == null) {\n return null;\n }\n // Some backends did not backfill the effectiveGasPrice into old transactions\n // in the receipt, so we look it up manually and inject it.\n if (receipt.gasPrice == null && receipt.effectiveGasPrice == null) {\n const tx = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n receipt.effectiveGasPrice = tx.gasPrice;\n }\n return format.receipt(receipt, this);\n }\n async _getFilter(filter) {\n // Create a canonical representation of the topics\n const topics = (filter.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const blockHash = (\"blockHash\" in filter) ? filter.blockHash : undefined;\n const lookup = {};\n // Addresses could be async (ENS names or Addressables)\n if (filter.address) {\n if (Array.isArray(filter.address)) {\n lookup.address = Promise.all(filter.address.map((a) => resolveAddress(a, this)));\n }\n else {\n lookup.address = resolveAddress(filter.address, this);\n }\n }\n // Block Tags could be async (i.e. relative)\n const addBlockTag = (key) => {\n if (filter[key] == null) {\n return;\n }\n lookup[key] = this._getBlockTag(filter[key]);\n };\n addBlockTag(\"fromBlock\");\n addBlockTag(\"toBlock\");\n // Wait for all properties to resolve\n const result = await resolveProperties(lookup);\n // Make sure things are canonical\n if (Array.isArray(result.address)) {\n result.address.sort();\n }\n result.topics = topics;\n if (blockHash) {\n if (filter.fromBlock || filter.toBlock) {\n throw new Error(\"invalid filter\");\n }\n result.blockHash = blockHash;\n }\n return result;\n }\n // Bloom-filter Queries\n async getLogs(_filter) {\n const { network, filter } = await resolveProperties({\n network: this.getNetwork(),\n filter: this._getFilter(_filter)\n });\n return (await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getLogs\", filter })).map((l) => {\n return network.formatter.log(l, this);\n });\n }\n // ENS\n _getProvider(chainId) {\n return logger.throwError(\"provider cannot connect to target network\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_getProvider()\"\n });\n }\n async getResolver(name) {\n return await EnsResolver.fromName(this, name);\n }\n async getAvatar(name) {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAvatar();\n }\n return null;\n }\n async resolveName(name) {\n if (typeof (name) === \"string\") {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAddress();\n }\n }\n else {\n const address = await name.getAddress();\n if (address == null) {\n return logger.throwArgumentError(\"Addressable returned no address\", \"name\", name);\n }\n return address;\n }\n return null;\n }\n async lookupAddress(address) {\n throw new Error();\n //return \"TODO\";\n }\n async waitForTransaction(hash, confirms = 1, timeout) {\n if (confirms === 0) {\n return this.getTransactionReceipt(hash);\n }\n return new Promise(async (resolve, reject) => {\n let timer = null;\n const listener = (async (blockNumber) => {\n try {\n const receipt = await this.getTransactionReceipt(hash);\n if (receipt != null) {\n if (blockNumber - receipt.blockNumber + 1 >= confirms) {\n resolve(receipt);\n this.off(\"block\", listener);\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n return;\n }\n }\n }\n catch (error) {\n console.log(\"EEE\", error);\n }\n this.once(\"block\", listener);\n });\n if (timeout != null) {\n timer = setTimeout(() => {\n if (timer == null) {\n return;\n }\n timer = null;\n this.off(\"block\", listener);\n reject(logger.makeError(\"timeout\", \"TIMEOUT\", { reason: \"timeout\" }));\n }, timeout);\n }\n listener(await this.getBlockNumber());\n });\n }\n async waitForBlock(blockTag) {\n throw new Error();\n //return new Block({ }, this);\n }\n _clearTimeout(timerId) {\n const timer = __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").get(timerId);\n if (!timer) {\n return;\n }\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n }\n _setTimeout(_func, timeout = 0) {\n var _a, _b;\n const timerId = (__classPrivateFieldSet(this, _AbstractProvider_nextTimer, (_b = __classPrivateFieldGet(this, _AbstractProvider_nextTimer, \"f\"), _a = _b++, _b), \"f\"), _a);\n const func = () => {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n _func();\n };\n if (this.paused) {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer: null, func, time: timeout });\n }\n else {\n const timer = setTimeout(func, timeout);\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer, func, time: getTime() });\n }\n return timerId;\n }\n _forEachSubscriber(func) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n func(sub.subscriber);\n }\n }\n // Event API; sub-classes should override this; any supported\n // event filter will have been munged into an EventFilter\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"debug\":\n case \"network\":\n return new UnmanagedSubscriber(sub.type);\n case \"block\":\n return new PollingBlockSubscriber(this);\n case \"event\":\n return new PollingEventSubscriber(this, sub.filter);\n case \"transaction\":\n return new PollingTransactionSubscriber(this, sub.hash);\n case \"orphan\":\n return new PollingOrphanSubscriber(this, sub.filter);\n }\n throw new Error(`unsupported event: ${sub.type}`);\n }\n _recoverSubscriber(oldSub, newSub) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n if (sub.subscriber === oldSub) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n sub.subscriber = newSub;\n if (sub.started) {\n newSub.start();\n }\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n newSub.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n break;\n }\n }\n }\n async on(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: false });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async once(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: true });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async emit(event, ...args) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event, args);\n if (!sub) {\n return false;\n }\n ;\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const payload = new EventPayload(this, (once ? null : listener), event);\n try {\n listener.call(this, ...args, payload);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n let total = 0;\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n let result = [];\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (!listener || sub.listeners.length === 0) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const { tag, started, subscriber } = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n else {\n for (const [tag, { started, subscriber }] of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\")) {\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return this.off(event, listener);\n }\n // Sub-classes should override this to shutdown any sockets, etc.\n // but MUST call this super.shutdown.\n async shutdown() {\n // Stop all listeners\n this.removeAllListeners();\n // Shut down all tiemrs\n for (const timerId of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").keys()) {\n this._clearTimeout(timerId);\n }\n }\n get paused() { return (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null); }\n pause(dropWhilePaused) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == !!dropWhilePaused) {\n return;\n }\n return logger.throwError(\"cannot change pause type; resume first\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause\"\n });\n }\n this._forEachSubscriber((s) => s.pause(dropWhilePaused));\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, !!dropWhilePaused, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Clear the timer\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n // Remaining time needed for when we become unpaused\n timer.time = getTime() - timer.time;\n }\n }\n resume() {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == null) {\n return;\n }\n this._forEachSubscriber((s) => s.resume());\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Remaining time when we were paused\n let timeout = timer.time;\n if (timeout < 0) {\n timeout = 0;\n }\n // Start time (in cause paused, so we con compute remaininf time)\n timer.time = getTime();\n // Start the timer\n setTimeout(timer.func, timeout);\n }\n }\n}\n_AbstractProvider_subs = new WeakMap(), _AbstractProvider_plugins = new WeakMap(), _AbstractProvider_pausedState = new WeakMap(), _AbstractProvider_networkPromise = new WeakMap(), _AbstractProvider_anyNetwork = new WeakMap(), _AbstractProvider_performCache = new WeakMap(), _AbstractProvider_nextTimer = new WeakMap(), _AbstractProvider_timers = new WeakMap(), _AbstractProvider_disableCcipRead = new WeakMap(), _AbstractProvider_instances = new WeakSet(), _AbstractProvider_perform = \n// Shares multiple identical requests made during the same 250ms\nasync function _AbstractProvider_perform(req) {\n // Create a tag\n const tag = getTag(req.method, req);\n let perform = __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag);\n if (!perform) {\n perform = this._perform(req);\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").set(tag, perform);\n setTimeout(() => {\n if (__classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag) === perform) {\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").delete(tag);\n }\n }, 250);\n }\n return await perform;\n}, _AbstractProvider_call = async function _AbstractProvider_call(tx, blockTag, attempt) {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", \"OFFCHAIN_FAULT\", {\n reason: \"TOO_MANY_REDIRECTS\",\n transaction: Object.assign({}, tx, { blockTag, enableCcipRead: true })\n });\n }\n const transaction = copyRequest(tx);\n try {\n return hexlify(await this._perform({ method: \"call\", transaction, blockTag }));\n }\n catch (error) {\n // CCIP Read OffchainLookup\n if (!this.disableCcipRead && isCallException(error) && attempt >= 0 && blockTag === \"latest\" && transaction.to != null && dataSlice(error.data, 0, 4) === \"0x556f1830\") {\n const data = error.data;\n const txSender = await resolveAddress(transaction.to, this);\n // Parse the CCIP Read Arguments\n let ccipArgs;\n try {\n ccipArgs = parseOffchainLookup(dataSlice(error.data, 4));\n }\n catch (error) {\n return logger.throwError(error.message, \"OFFCHAIN_FAULT\", {\n reason: \"BAD_DATA\",\n transaction, info: { data }\n });\n }\n // Check the sender of the OffchainLookup matches the transaction\n if (ccipArgs.sender.toLowerCase() !== txSender.toLowerCase()) {\n return logger.throwError(\"CCIP Read sender mismatch\", \"CALL_EXCEPTION\", {\n data, transaction,\n errorSignature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n errorName: \"OffchainLookup\",\n errorArgs: ccipArgs.errorArgs\n });\n }\n const ccipResult = await this.ccipReadFetch(transaction, ccipArgs.calldata, ccipArgs.urls);\n if (ccipResult == null) {\n return logger.throwError(\"CCIP Read failed to fetch data\", \"OFFCHAIN_FAULT\", {\n reason: \"FETCH_FAILED\",\n transaction, info: { data: error.data, errorArgs: ccipArgs.errorArgs }\n });\n }\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, {\n to: txSender,\n data: concat([\n ccipArgs.selector, encodeBytes([ccipResult, ccipArgs.extraData])\n ]),\n }, blockTag, attempt + 1);\n }\n throw error;\n }\n}, _AbstractProvider_getBlock = async function _AbstractProvider_getBlock(block, includeTransactions) {\n const format = (await this.getNetwork()).formatter;\n if (isHexString(block, 32)) {\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockHash: block, includeTransactions\n });\n }\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockTag: format.blockTag(block), includeTransactions\n });\n}, _AbstractProvider_hasSub = async function _AbstractProvider_hasSub(event, emitArgs) {\n let sub = await getSubscription(event, this);\n // This is a log that is removing an existing log; we actually want\n // to emit an orphan event for the removed log\n if (sub.type === \"event\" && emitArgs && emitArgs.length > 0 && emitArgs[0].removed === true) {\n sub = await getSubscription({ orphan: \"drop-log\", log: emitArgs[0] }, this);\n }\n return __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(sub.tag) || null;\n}, _AbstractProvider_getSub = async function _AbstractProvider_getSub(event) {\n const subscription = await getSubscription(event, this);\n // Prevent tampering with our tag in any subclass' _getSubscriber\n const tag = subscription.tag;\n let sub = __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(tag);\n if (!sub) {\n const subscriber = this._getSubscriber(subscription);\n const addressableMap = new WeakMap();\n const nameMap = new Map();\n sub = { subscriber, tag, addressableMap, nameMap, started: false, listeners: [] };\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").set(tag, sub);\n }\n return sub;\n};\nfunction _parseString(result, start) {\n try {\n const bytes = _parseBytes(result, start);\n if (bytes) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction _parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n try {\n const offset = logger.getNumber(dataSlice(result, start, start + 32));\n const length = logger.getNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\nconst empty = new Uint8Array([]);\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\nconst zeros = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseOffchainLookup(data) {\n const result = {\n sender: \"\", urls: [], calldata: \"\", selector: \"\", extraData: \"\", errorArgs: []\n };\n if (dataLength(data) < 5 * 32) {\n throw new Error(\"insufficient OffchainLookup data\");\n }\n const sender = dataSlice(data, 0, 32);\n if (dataSlice(sender, 0, 12) !== dataSlice(zeros, 0, 12)) {\n throw new Error(\"corrupt OffchainLookup sender\");\n }\n result.sender = dataSlice(sender, 12);\n // Read the URLs from the response\n try {\n const urls = [];\n const urlsOffset = logger.getNumber(dataSlice(data, 32, 64));\n const urlsLength = logger.getNumber(dataSlice(data, urlsOffset, urlsOffset + 32));\n const urlsData = dataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n throw new Error(\"abort\");\n }\n urls.push(url);\n }\n result.urls = urls;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup urls\");\n }\n // Get the CCIP calldata to forward\n try {\n const calldata = _parseBytes(data, 64);\n if (calldata == null) {\n throw new Error(\"abort\");\n }\n result.calldata = calldata;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup calldata\");\n }\n // Get the callbackSelector (bytes4)\n if (dataSlice(data, 100, 128) !== dataSlice(zeros, 0, 28)) {\n throw new Error(\"corrupt OffchainLookup callbaackSelector\");\n }\n result.selector = dataSlice(data, 96, 100);\n // Get the extra data to send back to the contract as context\n try {\n const extraData = _parseBytes(data, 128);\n if (extraData == null) {\n throw new Error(\"abort\");\n }\n result.extraData = extraData;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup extraData\");\n }\n result.errorArgs = \"sender,urls,calldata,selector,extraData\".split(/,/).map((k) => result[k]);\n return result;\n}\n//# sourceMappingURL=abstract-provider.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AbstractSigner_instances, _AbstractSigner_checkProvider, _AbstractSigner_fromify, _VoidSigner_instances, _VoidSigner_throwUnsupported, _WrappedSigner_signer;\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class AbstractSigner {\n constructor(provider) {\n _AbstractSigner_instances.add(this);\n defineProperties(this, { provider: (provider || null) });\n }\n async getBalance(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getBalance\").getBalanceOf(await this.getAddress(), blockTag);\n }\n async getTransactionCount(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getTransactionCount\").getTransactionCountOf(await this.getAddress(), blockTag);\n }\n async estimateGas(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"estimateGas\").estimateGas(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async call(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"call\").call(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async populateTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"populateTransaction\");\n //let pop: Deferrable = Object.assign({ }, tx);\n let pop = Object.assign({}, tx);\n if (pop.to != null) {\n pop.to = provider.resolveName(pop.to).then((to) => {\n if (to == null) {\n return logger.throwArgumentError(\"transaction to ENS name not configured\", \"tx.to\", pop.to);\n }\n return to;\n });\n }\n if (pop.from != null) {\n const from = pop.from;\n pop.from = Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n return logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n return address;\n });\n }\n if (pop.nonce == null) {\n pop.nonce = this.getTransactionCount();\n }\n pop = resolveProperties(pop);\n if (pop.gasLimit == null) {\n pop.gasLimit = provider.estimateGas(pop);\n }\n pop = resolveProperties(pop);\n //@TODO: Copy logic from AbstractSigner in v5\n return await resolveProperties(pop);\n }\n async resolveName(name) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"resolveName\");\n return await provider.resolveName(name);\n }\n async sendTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"sendTransaction\");\n const txObj = Transaction.from(await this.populateTransaction(tx));\n return await provider.broadcastTransaction(await this.signTransaction(txObj));\n }\n}\n_AbstractSigner_instances = new WeakSet(), _AbstractSigner_checkProvider = function _AbstractSigner_checkProvider(operation) {\n if (this.provider) {\n return this.provider;\n }\n return logger.throwError(\"missing provider\", \"UNSUPPORTED_OPERATION\", { operation });\n}, _AbstractSigner_fromify = async function _AbstractSigner_fromify(tx) {\n tx = Object.assign({}, tx);\n const actions = [];\n if (tx.from != null) {\n const from = tx.from;\n actions.push(Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n tx.from = address;\n }));\n }\n await Promise.all(actions);\n return tx;\n};\nexport class VoidSigner extends AbstractSigner {\n constructor(address, provider) {\n super(provider);\n _VoidSigner_instances.add(this);\n defineProperties(this, { address });\n }\n async getAddress() { return this.address; }\n connect(provider) {\n return new VoidSigner(this.address, provider);\n }\n async signTransaction(tx) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"transactions\", \"signTransaction\");\n }\n async signMessage(message) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"messages\", \"signMessage\");\n }\n async signTypedData(domain, types, value) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"typed-data\", \"signTypedData\");\n }\n}\n_VoidSigner_instances = new WeakSet(), _VoidSigner_throwUnsupported = function _VoidSigner_throwUnsupported(suffix, operation) {\n return logger.throwError(`VoidSigner cannot sign ${suffix}`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n};\nexport class WrappedSigner extends AbstractSigner {\n //get provider(): null | Provider { return this.#signer.provider; }\n constructor(signer) {\n super(signer.provider);\n _WrappedSigner_signer.set(this, void 0);\n __classPrivateFieldSet(this, _WrappedSigner_signer, signer, \"f\");\n }\n async getAddress() {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").getAddress();\n }\n connect(provider) {\n return new WrappedSigner(__classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").connect(provider));\n }\n async signTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTransaction(tx);\n }\n async sendTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").sendTransaction(tx);\n }\n async signMessage(message) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signMessage(message);\n }\n async signTypedData(domain, types, value) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTypedData(domain, types, value);\n }\n}\n_WrappedSigner_signer = new WeakMap();\n//# sourceMappingURL=abstract-signer.js.map","// Show the throttle message only once\nconst shown = new Set();\nexport function showThrottleMessage(service) {\n if (shown.has(service)) {\n return;\n }\n shown.add(service);\n console.log(\"========= NOTICE =========\");\n console.log(`Request-Rate Exceeded for ${service} (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//# sourceMappingURL=community.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FilterIdSubscriber_instances, _FilterIdSubscriber_provider, _FilterIdSubscriber_filterIdPromise, _FilterIdSubscriber_poller, _FilterIdSubscriber_network, _FilterIdSubscriber_poll, _FilterIdSubscriber_teardown, _FilterIdEventSubscriber_event;\nimport { PollingEventSubscriber } from \"./subscriber-polling.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport class FilterIdSubscriber {\n constructor(provider) {\n _FilterIdSubscriber_instances.add(this);\n _FilterIdSubscriber_provider.set(this, void 0);\n _FilterIdSubscriber_filterIdPromise.set(this, void 0);\n _FilterIdSubscriber_poller.set(this, void 0);\n _FilterIdSubscriber_network.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_poller, __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, null, \"f\");\n }\n _subscribe(provider) {\n throw new Error(\"subclasses must override this\");\n }\n _emitResults(provider, result) {\n throw new Error(\"subclasses must override this\");\n }\n _recover(provider) {\n throw new Error(\"subclasses must override this\");\n }\n start() { __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).call(this, -2); }\n stop() {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n if (dropWhilePaused) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n resume() { this.start(); }\n}\n_FilterIdSubscriber_provider = new WeakMap(), _FilterIdSubscriber_filterIdPromise = new WeakMap(), _FilterIdSubscriber_poller = new WeakMap(), _FilterIdSubscriber_network = new WeakMap(), _FilterIdSubscriber_instances = new WeakSet(), _FilterIdSubscriber_poll = async function _FilterIdSubscriber_poll(blockNumber) {\n try {\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\") == null) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, this._subscribe(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")), \"f\");\n }\n const filterId = await __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterId == null) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")._recoverSubscriber(this, this._recover(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")));\n return;\n }\n const network = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").getNetwork();\n if (!__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\")) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, network, \"f\");\n }\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\").chainId !== network.chainId) {\n throw new Error(\"chaid changed\");\n }\n const result = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_getFilterChanges\", [filterId]);\n await this._emitResults(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\"), result);\n }\n catch (error) {\n console.log(\"@TODO\", error);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").once(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n}, _FilterIdSubscriber_teardown = function _FilterIdSubscriber_teardown() {\n const filterIdPromise = __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterIdPromise) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n filterIdPromise.then((filterId) => {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_uninstallFilter\", [filterId]);\n });\n }\n};\nexport class FilterIdEventSubscriber extends FilterIdSubscriber {\n constructor(provider, filter) {\n super(provider);\n _FilterIdEventSubscriber_event.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdEventSubscriber_event, copy(filter), \"f\");\n }\n _recover(provider) {\n return new PollingEventSubscriber(provider, __classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"));\n }\n async _subscribe(provider) {\n const filterId = await provider.send(\"eth_newFilter\", [__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\")]);\n console.log(\"____SUB\", filterId);\n return filterId;\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n const log = network.formatter.log(result, provider);\n provider.emit(__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"), log);\n }\n }\n}\n_FilterIdEventSubscriber_event = new WeakMap();\nexport class FilterIdPendingSubscriber extends FilterIdSubscriber {\n async _subscribe(provider) {\n return await provider.send(\"eth_newPendingTransactionFilter\", []);\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n provider.emit(\"pending\", network.formatter.hash(result));\n }\n }\n}\n//# sourceMappingURL=subscriber-filterid.js.map","// @TODO:\n// - Add the batching API\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _JsonRpcApiProvider_nextId, _JsonRpcApiProvider_options, _JsonRpcProvider_connect, _JsonRpcProvider_pollingInterval;\n// https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/ethereum/eth1.0-apis/assembled-spec/openrpc.json&uiSchema%5BappBar%5D%5Bui:splitView%5D=true&uiSchema%5BappBar%5D%5Bui:input%5D=false&uiSchema%5BappBar%5D%5Bui:examplesDropdown%5D=false\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { TypedDataEncoder } from \"@ethersproject/hash\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { AbstractProvider, UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { FilterIdEventSubscriber, FilterIdPendingSubscriber } from \"./subscriber-filterid.js\";\nimport { logger } from \"./logger.js\";\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nconst Primitive = \"bigint,boolean,function,number,string,symbol\".split(/,/g);\n//const Methods = \"getAddress,then\".split(/,/g);\nfunction deepCopy(value) {\n if (value == null || Primitive.indexOf(typeof (value)) >= 0) {\n return value;\n }\n // Keep any Addressable\n if (typeof (value.getAddress) === \"function\") {\n return value;\n }\n if (Array.isArray(value)) {\n return (value.map(deepCopy));\n }\n if (typeof (value) === \"object\") {\n return Object.keys(value).reduce((accum, key) => {\n accum[key] = value[key];\n return accum;\n }, {});\n }\n throw new Error(`should not happen: ${value} (${typeof (value)})`);\n}\nfunction getLowerCase(value) {\n if (value) {\n return value.toLowerCase();\n }\n return value;\n}\nfunction isPollable(value) {\n return (value && typeof (value.pollingInterval) === \"number\");\n}\nconst defaultOptions = {\n // Default to use filter ID (the FilterIdSubscriber will\n // fallback onto polling if subscription fails)\n polling: false,\n // Maximum batch size (in bytes)\n batchMaxSize: (1 << 20),\n // How long to wait before dispatching a new batch\n batchStallTime: 250,\n};\n// @TODO: Unchecked Signers\nexport class JsonRpcSigner {\n constructor(provider, address) {\n defineProperties(this, { provider, address });\n }\n connect(provider) {\n return logger.throwError(\"cannot reconnect JsonRpcSigner\", \"UNSUPPORTED_OPERATION\", {\n operation: \"signer.connect\"\n });\n }\n async getAddress() {\n return this.address;\n }\n async getNetwork() {\n return await this.provider.getNetwork();\n }\n async getFeeData() {\n return await this.provider.getFeeData();\n }\n async estimateGas(tx) {\n return await this.provider.estimateGas(tx);\n }\n async call(tx) {\n return await this.provider.call(tx);\n }\n async resolveName(name) {\n return await this.provider.resolveName(name);\n }\n async getBalance(blockTag) {\n return await this.provider.getBalanceOf(this.address);\n }\n async getTransactionCount(blockTag) {\n return await this.provider.getTransactionCountOf(this.address);\n }\n // Returns just the hash of the transaction after sent, which is what\n // the bare JSON-RPC API does;\n async sendUncheckedTransaction(_tx) {\n const tx = deepCopy(_tx);\n const promises = [];\n // Make sure the from matches the sender\n if (tx.from) {\n const _from = tx.from;\n promises.push((async () => {\n const from = await resolveAddress(_from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n })());\n }\n else {\n tx.from = this.address;\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 (tx.gasLimit == null) {\n promises.push((async () => {\n tx.gasLimit = await this.provider.estimateGas(Object.assign(Object.assign({}, tx), { from: this.address }));\n })());\n }\n // The address may be an ENS name or Addressable\n if (tx.to != null) {\n const _to = tx.to;\n promises.push((async () => {\n tx.to = await resolveAddress(_to, this.provider);\n })());\n }\n // Wait until all of our properties are filled in\n if (promises.length) {\n await Promise.all(promises);\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return this.provider.send(\"eth_sendTransaction\", [hexTx]);\n }\n async sendTransaction(tx) {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider.getBlockNumber();\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(tx);\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 (new Promise((resolve, reject) => {\n const timeouts = [1000, 100];\n const checkTx = async () => {\n // Try getting the transaction\n const tx = await this.provider.getTransaction(hash);\n if (tx != null) {\n resolve(this.provider._wrapTransaction(tx, hash, blockNumber));\n return;\n }\n // Wait another 4 seconds\n this.provider._setTimeout(() => { checkTx(); }, timeouts.pop() || 4000);\n };\n checkTx();\n }));\n }\n async signTransaction(_tx) {\n const tx = deepCopy(_tx);\n // Make sure the from matches the sender\n if (tx.from) {\n const from = await resolveAddress(tx.from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n return logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n }\n else {\n tx.from = this.address;\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return await this.provider.send(\"eth_sign_Transaction\", [hexTx]);\n }\n async signMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"personal_sign\", [\n hexlify(message), this.address.toLowerCase()\n ]);\n }\n async signTypedData(domain, types, _value) {\n const value = deepCopy(_value);\n // Populate any ENS names (in-place)\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (value) => {\n const address = await resolveAddress(value);\n if (address == null) {\n return logger.throwArgumentError(\"TypedData does not support null address\", \"value\", value);\n }\n return address;\n });\n return await this.provider.send(\"eth_signTypedData_v4\", [\n this.address.toLowerCase(),\n JSON.stringify(TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n }\n async unlock(password) {\n return this.provider.send(\"personal_unlockAccount\", [\n this.address.toLowerCase(), password, null\n ]);\n }\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n async _legacySignMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"eth_sign\", [\n this.address.toLowerCase(), hexlify(message)\n ]);\n }\n}\nexport class JsonRpcApiProvider extends AbstractProvider {\n constructor(network) {\n super(network);\n _JsonRpcApiProvider_nextId.set(this, void 0);\n _JsonRpcApiProvider_options.set(this, void 0);\n __classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, 1, \"f\");\n __classPrivateFieldSet(this, _JsonRpcApiProvider_options, Object.assign({}, defaultOptions), \"f\");\n }\n _getOptions(key) {\n return __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key];\n }\n _setOptions(options) {\n // Validate all the options\n for (const _key in options) {\n const key = _key;\n const value = options[key];\n if (typeof (value) !== typeof (__classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key])) {\n return logger.throwArgumentError(\"invalid option value\", `options.${key}`, value);\n }\n }\n // Update the values\n for (const _key in options) {\n const key = _key;\n __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key] = (options[key]);\n }\n }\n prepareRequest(method, params) {\n var _a, _b;\n return {\n method, params, id: (__classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, (_b = __classPrivateFieldGet(this, _JsonRpcApiProvider_nextId, \"f\"), _a = _b++, _b), \"f\"), _a), jsonrpc: \"2.0\"\n };\n }\n // Sends the payload to the backend\n //async sendPayload(payload: any): Promise {\n // throw new Error(\"sub-class must implement this\");\n //}\n async send(method, params) {\n // @TODO: This should construct and queue the payload\n throw new Error(\"sub-class must implement this\");\n }\n async getSigner(address = 0) {\n const network = await this.getNetwork();\n const accounts = await this.send(\"eth_accounts\", []);\n // Account index\n if (typeof (address) === \"number\") {\n if (address > accounts.length) {\n throw new Error(\"no such account\");\n }\n return new JsonRpcSigner(this, accounts[address]);\n }\n // Account address\n address = network.formatter.address(address);\n for (const account of accounts) {\n if (network.formatter.address(account) === account) {\n return new JsonRpcSigner(this, account);\n }\n }\n throw new Error(\"invalid account\");\n }\n // Sub-classes can override this; it detects the *actual* network we\n // are connected to\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" })));\n }\n _getSubscriber(sub) {\n // Pending Filters aren't availble via polling\n if (sub.type === \"pending\") {\n return new FilterIdPendingSubscriber(this);\n }\n if (sub.type === \"event\") {\n return new FilterIdEventSubscriber(this, sub.filter);\n }\n // Orphaned Logs are handled automatically, by the filter, since\n // logs with removed are emitted by it\n if (sub.type === \"orphan\" && sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"orphan\");\n }\n return super._getSubscriber(sub);\n }\n getRpcTransaction(tx) {\n const result = {};\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n let dstKey = key;\n if (key === \"gasLimit\") {\n dstKey = \"gas\";\n }\n result[dstKey] = quantity(tx[key]);\n });\n // Make sure addresses and data are lowercase\n [\"from\", \"to\", \"data\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n result[key] = hexlify(tx[key]);\n });\n // Normalize the access list object\n if (tx.accessList) {\n result[\"accessList\"] = accessListify(tx.accessList);\n }\n return result;\n }\n getRpcRequest(req) {\n switch (req.method) {\n case \"chainId\":\n return { method: \"eth_chainId\", args: [] };\n case \"getBlockNumber\":\n return { method: \"eth_blockNumber\", args: [] };\n case \"getGasPrice\":\n return { method: \"eth_gasPrice\", args: [] };\n case \"getBalance\":\n return {\n method: \"eth_getBalance\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getTransactionCount\":\n return {\n method: \"eth_getTransactionCount\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getCode\":\n return {\n method: \"eth_getCode\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getStorageAt\":\n return {\n method: \"eth_getStorageAt\",\n args: [\n getLowerCase(req.address),\n (\"0x\" + req.position.toString(16)),\n req.blockTag\n ]\n };\n case \"sendTransaction\":\n return {\n method: \"eth_sendRawTransaction\",\n args: [req.signedTransaction]\n };\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return {\n method: \"eth_getBlockByNumber\",\n args: [req.blockTag, !!req.includeTransactions]\n };\n }\n else if (\"blockHash\" in req) {\n return {\n method: \"eth_getBlockByHash\",\n args: [req.blockHash, !!req.includeTransactions]\n };\n }\n break;\n case \"getTransaction\":\n return {\n method: \"eth_getTransactionByHash\",\n args: [req.hash]\n };\n case \"getTransactionReceipt\":\n return {\n method: \"eth_getTransactionReceipt\",\n args: [req.hash]\n };\n case \"call\":\n return {\n method: \"eth_call\",\n args: [this.getRpcTransaction(req.transaction), req.blockTag]\n };\n case \"estimateGas\": {\n return {\n method: \"eth_estimateGas\",\n args: [this.getRpcTransaction(req.transaction)]\n };\n }\n case \"getLogs\":\n if (req.filter && req.filter.address != null) {\n if (Array.isArray(req.filter.address)) {\n req.filter.address = req.filter.address.map(getLowerCase);\n }\n else {\n req.filter.address = getLowerCase(req.filter.address);\n }\n }\n return { method: \"eth_getLogs\", args: [req.filter] };\n }\n return null;\n }\n getRpcError(method, args, error) {\n if (method === \"eth_call\") {\n const result = spelunkData(error);\n if (result) {\n // @TODO: Extract errorSignature, errorName, errorArgs, reason if\n // it is Error(string) or Panic(uint25)\n return logger.makeError(\"execution reverted during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: result.data,\n transaction: args[0]\n });\n }\n return logger.makeError(\"missing revert data during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: \"0x\", transaction: args[0], info: { error }\n });\n }\n if (method === \"eth_estimateGas\") {\n }\n const message = JSON.stringify(spelunkMessage(error));\n if (message.match(/insufficient funds|base fee exceeds gas limit/)) {\n return logger.makeError(\"insufficient funds for intrinsic transaction cost\", \"INSUFFICIENT_FUNDS\", {\n transaction: args[0]\n });\n }\n if (message.match(/nonce/) && message.match(/too low/)) {\n return logger.makeError(\"nonce has already been used\", \"NONCE_EXPIRED\", {\n transaction: args[0]\n });\n }\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction/) && message.match(/underpriced/)) {\n return logger.makeError(\"replacement fee too low\", \"REPLACEMENT_UNDERPRICED\", {\n transaction: args[0]\n });\n }\n if (message.match(/only replay-protected/)) {\n return logger.makeError(\"legacy pre-eip-155 transactions not supported\", \"UNSUPPORTED_OPERATION\", {\n operation: method, info: { transaction: args[0] }\n });\n }\n if (method === \"estimateGas\" && message.match(/gas required exceeds allowance|always failing transaction|execution reverted/)) {\n return logger.makeError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", \"UNPREDICTABLE_GAS_LIMIT\", {\n transaction: args[0]\n });\n }\n return error;\n }\n async _perform(req) {\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 (req.method === \"call\" || req.method === \"estimateGas\") {\n let tx = req.transaction;\n if (tx && tx.type != null && logger.getBigInt(tx.type)) {\n // If there are no EIP-1559 properties, it might be non-EIP-a559\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 req = Object.assign({}, req, {\n transaction: Object.assign({}, tx, { type: undefined })\n });\n }\n }\n }\n }\n const request = this.getRpcRequest(req);\n if (request != null) {\n this.emit(\"debug\", { type: \"sendRequest\", request });\n try {\n const result = await this.send(request.method, request.args);\n //console.log(\"RR\", result);\n this.emit(\"debug\", { type: \"getResponse\", result });\n return result;\n }\n catch (error) {\n this.emit(\"debug\", { type: \"getError\", error });\n throw this.getRpcError(request.method, request.args, error);\n }\n }\n return super._perform(req);\n }\n}\n_JsonRpcApiProvider_nextId = new WeakMap(), _JsonRpcApiProvider_options = new WeakMap();\nexport class JsonRpcProvider extends JsonRpcApiProvider {\n constructor(url, network) {\n if (url == null) {\n url = \"http:/\\/localhost:8545\";\n }\n super(network);\n _JsonRpcProvider_connect.set(this, void 0);\n _JsonRpcProvider_pollingInterval.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, { request: new FetchRequest(url) }, \"f\");\n }\n else {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, Object.assign({}, url), \"f\");\n __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request = __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request.clone();\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, 4000, \"f\");\n }\n async send(method, params) {\n params = copy(params);\n // Configure a POST connection for the requested method\n const connection = Object.assign({}, __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\"));\n connection.request = connection.request.clone();\n connection.request.body = this.prepareRequest(method, params);\n const response = await fetchData(connection);\n response.assertOk();\n const result = response.bodyJson;\n if (\"error\" in result) {\n return logger.throwError(\"error from JSON-RPC\", \"UNKNOWN_ERROR\", {\n result\n });\n }\n return result.result;\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\"); }\n set pollingInterval(value) {\n if (!Number.isInteger(value) || value < 0) {\n throw new Error(\"invalid interval\");\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, value, \"f\");\n this._forEachSubscriber((sub) => {\n if (isPollable(sub)) {\n sub.pollingInterval = __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\");\n }\n });\n }\n}\n_JsonRpcProvider_connect = new WeakMap(), _JsonRpcProvider_pollingInterval = new WeakMap();\n// This class should only be used when it is not possible for the\n// underlying network to change, such as with INFURA. If you are\n// using MetaMask or some other client which allows users to change\n// their network DO NOT USE THIS. Bad things will happen.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n constructor(url, network) {\n super(url, network);\n defineProperties(this, { network });\n }\n async _detectNetwork() {\n return this.network;\n }\n}\nfunction spelunkData(value) {\n if (value == null) {\n return null;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\" && value.message.match(\"reverted\") && isHexString(value.data)) {\n return { message: value.message, data: value.data };\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n const result = spelunkData(value[key]);\n if (result) {\n return result;\n }\n }\n return null;\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return spelunkData(JSON.parse(value));\n }\n catch (error) { }\n }\n return null;\n}\nfunction _spelunkMessage(value, result) {\n if (value == null) {\n return;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\") {\n result.push(value.message);\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n _spelunkMessage(value[key], result);\n }\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return _spelunkMessage(JSON.parse(value), result);\n }\n catch (error) { }\n }\n}\nfunction spelunkMessage(value) {\n const result = [];\n _spelunkMessage(value, result);\n return result;\n}\n//# sourceMappingURL=provider-jsonrpc.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth\";\n case \"matic\":\n return \"rpc.ankr.com/polygon\";\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AnkrProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const connection = AnkrProvider.getConnection(network, apiKey);\n super(connection, network);\n defineProperties(this, { apiKey });\n // Ankr does not support filterId, so we force polling\n super._setOptions({ polling: true });\n }\n _getProvider(chainId) {\n try {\n return new AnkrProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"AnkrProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=provider-ankr.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.alchemyapi.io\";\n case \"ropsten\":\n return \"eth-ropsten.alchemyapi.io\";\n case \"rinkeby\":\n return \"eth-rinkeby.alchemyapi.io\";\n case \"goerli\":\n return \"eth-goerli.alchemyapi.io\";\n case \"kovan\":\n return \"eth-kovan.alchemyapi.io\";\n case \"matic\":\n return \"polygon-mainnet.g.alchemy.com\";\n case \"maticmum\":\n return \"polygon-mumbai.g.alchemy.com\";\n case \"arbitrum\":\n return \"arb-mainnet.g.alchemy.com\";\n case \"arbitrum-rinkeby\":\n return \"arb-rinkeby.g.alchemy.com\";\n case \"optimism\":\n return \"opt-mainnet.g.alchemy.com\";\n case \"optimism-kovan\":\n return \"opt-kovan.g.alchemy.com\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AlchemyProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n super(AlchemyProvider.getConnection(network, apiKey), network);\n defineProperties(this, { apiKey });\n }\n _getProvider(chainId) {\n try {\n return new AlchemyProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v2/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"alchemy\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n}\n//# sourceMappingURL=provider-alchemy.js.map","import { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nexport class CloudflareProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\") {\n const network = Network.from(_network);\n if (network.name !== \"homestead\") {\n return logger.throwArgumentError(\"unsupported network\", \"network\", _network);\n }\n super(\"https:/\\/cloudflare-eth.com/\", network);\n }\n}\n//# sourceMappingURL=provider-cloudflare.js.map","import { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { isError } from \"@ethersproject/logger\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nif (false) {\n console.log(isHexString, isError);\n} // @TODO\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { NetworkPlugin } from \"./plugins-network.js\";\nimport { logger } from \"./logger.js\";\nconst defaultApiKey = \"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB\";\nconst EtherscanPluginId = \"org.ethers.plugins.etherscan\";\nexport class EtherscanPlugin extends NetworkPlugin {\n constructor(baseUrl, communityApiKey) {\n super(EtherscanPluginId);\n //if (communityApiKey == null) { communityApiKey = null; }\n defineProperties(this, { baseUrl, communityApiKey });\n }\n clone() {\n return new EtherscanPlugin(this.baseUrl, this.communityApiKey);\n }\n}\nexport class EtherscanProvider extends AbstractProvider {\n constructor(_network, apiKey) {\n super();\n const network = Network.from(_network);\n if (apiKey == null) {\n const plugin = network.getPlugin(EtherscanPluginId);\n if (plugin) {\n apiKey = plugin.communityApiKey;\n }\n else {\n apiKey = defaultApiKey;\n }\n }\n defineProperties(this, { apiKey, network });\n // Test that the network is supported by Etherscan\n this.getBaseUrl();\n }\n getBaseUrl() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return plugin.baseUrl;\n }\n switch (this.network.name) {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"ropsten\":\n return \"https:/\\/api-ropsten.etherscan.io\";\n case \"rinkeby\":\n return \"https:/\\/api-rinkeby.etherscan.io\";\n case \"kovan\":\n return \"https:/\\/api-kovan.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n default:\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network);\n }\n getUrl(module, params) {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${key}=${value}`;\n }\n return accum;\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${this.apiKey}` : \"\");\n return `${this.getBaseUrl()}/api?module=${module}${query}${apiKey}`;\n }\n getPostUrl() {\n return `${this.getBaseUrl()}/api`;\n }\n getPostData(module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n async detectNetwork() {\n return this.network;\n }\n async fetch(module, params, post) {\n const url = (post ? this.getPostUrl() : this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params) : null);\n /*\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n */\n const request = new FetchRequest(url);\n const connection = {\n request,\n throttleSlotInterval: 1000,\n processResponse: async (request, response) => {\n const result = response.hasBody() ? JSON.parse(toUtf8String(response.body)) : {};\n const throttle = ((typeof (result.result) === \"string\") ? result.result : \"\").toLowerCase().indexOf(\"rate limit\") >= 0;\n if (module === \"proxy\") {\n // This JSON response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && throttle) {\n response.throwThrottleError(result.result);\n }\n }\n else {\n if (throttle) {\n response.throwThrottleError(result.result);\n }\n }\n return response;\n },\n };\n if (payload) {\n request.setHeader(\"content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n request.body = Object.keys(payload).map((k) => `${k}=${payload[k]}`).join(\"&\");\n }\n const response = await fetchData(connection);\n response.assertOk();\n if (!response.hasBody()) {\n throw new Error();\n }\n /*\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n */\n const result = JSON.parse(toUtf8String(response.body));\n if (module === \"proxy\") {\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n if (result.error) {\n // @TODO: not any\n const error = new Error(result.error.message || \"unknown error\");\n if (result.error.code) {\n error.code = result.error.code;\n }\n if (result.error.data) {\n error.data = result.error.data;\n }\n throw error;\n }\n return result.result;\n }\n else {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n if (result.status != 1 || result.message != \"OK\") {\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n // if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n // error.throttleRetry = true;\n // }\n throw error;\n }\n return result.result;\n }\n }\n // The transaction has already been sanitized by the calls in Provider\n _getTransactionPostData(transaction) {\n const result = {};\n for (let key in transaction) {\n if (transaction[key] == null) {\n continue;\n }\n let value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = quantity(hexlify(value));\n }\n else if (key === \"accessList\") {\n value = \"[\" + this.network.formatter.accessList(value).map((set) => {\n return `{address:\"${set.address}\",storageKeys:[\"${set.storageKeys.join('\",\"')}\"]}`;\n }).join(\",\") + \"]\";\n }\n else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n }\n _checkError(req, error, transaction) {\n /*\n let body = \"\";\n if (isError(error, Logger.Errors.SERVER_ERROR) && error.response && error.response.hasBody()) {\n body = toUtf8String(error.response.body);\n }\n console.log(body);\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\" && body) {\n \n // Etherscan keeps changing their string\n if (body.match(/reverted/i) || body.match(/VM execution error/i)) {\n \n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n if (!isHexString(data)) { data = \"0x\"; }\n \n logger.throwError(\"call exception\", Logger.Errors.CALL_EXCEPTION, {\n error, data\n });\n }\n }\n \n // Get the message from any nested error structure\n let message = error.message;\n if (isError(error, Logger.Errors.SERVER_ERROR)) {\n if (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 }\n message = (message || \"\").toLowerCase();\n \n // \"Insufficient funds. The account you tried to send transaction from\n // does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.Errors.INSUFFICIENT_FUNDS, {\n error, transaction, info: { method }\n });\n }\n \n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.Errors.NONCE_EXPIRED, {\n error, transaction, info: { method }\n });\n }\n \n // \"Transaction gas price is too low. There is another transaction with\n // same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.Errors.REPLACEMENT_UNDERPRICED, {\n error, transaction, info: { method }\n });\n }\n \n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.Errors.UNPREDICTABLE_GAS_LIMIT, {\n error, transaction, info: { method }\n });\n }\n */\n throw error;\n }\n async _detectNetwork() {\n return this.network;\n }\n async _perform(req) {\n switch (req.method) {\n case \"chainId\":\n return this.network.chainId;\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: req.address,\n position: req.position,\n tag: req.blockTag\n });\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: req.signedTransaction\n }, true).catch((error) => {\n return this._checkError(req, error, req.signedTransaction);\n });\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: req.blockTag,\n boolean: (req.includeTransactions ? \"true\" : \"false\")\n });\n }\n return logger.throwError(\"getBlock by blockHash not supported by Etherscan\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getBlock(blockHash)\"\n });\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: req.hash\n });\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: req.hash\n });\n case \"call\": {\n if (req.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n case \"estimateGas\": {\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n /*\n case \"getLogs\": {\n // Needs to complain if more than one address is passed in\n const args: Record = { action: \"getLogs\" }\n \n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n \n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n \n if (params.filter.address) {\n args.address = params.filter.address;\n }\n \n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.Errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.Errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n \n const logs: Array = await this.fetch(\"logs\", args);\n \n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n \n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n \n log.blockHash = blocks[log.blockNumber];\n }\n \n return logs;\n }\n */\n default:\n break;\n }\n return super._perform(req);\n }\n async getNetwork() {\n return this.network;\n }\n async getEtherPrice() {\n if (this.network.name !== \"homestead\") {\n return 0.0;\n }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n }\n isCommunityResource() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return (plugin.communityApiKey === this.apiKey);\n }\n return (defaultApiKey === this.apiKey);\n }\n}\n/*\n(async function() {\n const provider = new EtherscanProvider();\n console.log(provider);\n console.log(await provider.getBlockNumber());\n / *\n provider.on(\"block\", (b) => {\n console.log(\"BB\", b);\n });\n console.log(await provider.getTransactionReceipt(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\"));\n\n provider.once(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\", (tx) => {\n console.log(\"TT\", tx);\n });\n * /\n try {\n console.log(await provider.getBlock(100));\n } catch (error) {\n console.log(error);\n }\n\n try {\n console.log(await provider.getBlock(13821768));\n } catch (error) {\n console.log(error);\n }\n\n})();\n*/\n//# sourceMappingURL=provider-etherscan.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultProjectId = \"84842078b09946638c03157f83405213\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"mainnet.infura.io\";\n case \"ropsten\":\n return \"ropsten.infura.io\";\n case \"rinkeby\":\n return \"rinkeby.infura.io\";\n case \"kovan\":\n return \"kovan.infura.io\";\n case \"goerli\":\n return \"goerli.infura.io\";\n case \"matic\":\n return \"polygon-mainnet.infura.io\";\n case \"maticmum\":\n return \"polygon-mumbai.infura.io\";\n case \"optimism\":\n return \"optimism-mainnet.infura.io\";\n case \"optimism-kovan\":\n return \"optimism-kovan.infura.io\";\n case \"arbitrum\":\n return \"arbitrum-mainnet.infura.io\";\n case \"arbitrum-rinkeby\":\n return \"arbitrum-rinkeby.infura.io\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class InfuraProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", projectId, projectSecret) {\n const network = Network.from(_network);\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const connection = InfuraProvider.getConnection(network, projectId, projectSecret);\n super(connection, network);\n defineProperties(this, { projectId, projectSecret });\n }\n _getProvider(chainId) {\n try {\n return new InfuraProvider(chainId, this.projectId, this.projectSecret);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, projectId, projectSecret) {\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v3/${projectId}`);\n request.allowGzip = true;\n if (projectSecret) {\n request.setCredentials(\"\", projectSecret);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (projectId === defaultProjectId) {\n showThrottleMessage(\"InfuraProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\n//# sourceMappingURL=provider-infura.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\n// These are load-balancer-based application IDs\nconst defaultAppIds = {\n homestead: \"6004bcd10040261633ade990\",\n ropsten: \"6004bd4d0040261633ade991\",\n rinkeby: \"6004bda20040261633ade994\",\n goerli: \"6004bd860040261633ade992\",\n};\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.gateway.pokt.network\";\n case \"ropsten\":\n return \"eth-ropsten.gateway.pokt.network\";\n case \"rinkeby\":\n return \"eth-rinkeby.gateway.pokt.network\";\n case \"goerli\":\n return \"eth-goerli.gateway.pokt.network\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nfunction normalizeApiKey(network, _appId, applicationSecretKey, loadBalancer) {\n loadBalancer = !!loadBalancer;\n let community = false;\n let applicationId = _appId;\n if (applicationId == null) {\n applicationId = defaultAppIds[network.name];\n if (applicationId == null) {\n logger.throwArgumentError(\"network does not support default applicationId\", \"applicationId\", _appId);\n }\n loadBalancer = true;\n community = true;\n }\n else if (applicationId === defaultAppIds[network.name]) {\n loadBalancer = true;\n community = true;\n }\n if (applicationSecretKey == null) {\n applicationSecretKey = null;\n }\n return { applicationId, applicationSecretKey, community, loadBalancer };\n}\nexport class PocketProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", _appId, _secretKey, _loadBalancer) {\n const network = Network.from(_network);\n const { applicationId, applicationSecretKey, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n const connection = PocketProvider.getConnection(network, applicationId, applicationSecretKey, loadBalancer);\n super(connection, network);\n defineProperties(this, { applicationId, applicationSecretKey, loadBalancer });\n }\n static getConnection(network, _appId, _secretKey, _loadBalancer) {\n const { applicationId, applicationSecretKey, community, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n let url = `https:/\\/${getHost(network.name)}/v1/`;\n if (loadBalancer) {\n url += \"lb/\";\n }\n url += applicationId;\n const request = new FetchRequest(url);\n request.allowGzip = true;\n if (applicationSecretKey) {\n request.setCredentials(\"\", applicationSecretKey);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (community) {\n showThrottleMessage(\"PocketProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.applicationId === defaultAppIds[this.network.name]);\n }\n}\n//# sourceMappingURL=provider-pocket.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FallbackProvider_instances, _FallbackProvider_configs, _FallbackProvider_height, _FallbackProvider_initialSyncPromise, _FallbackProvider_getNextConfig, _FallbackProvider_addRunner, _FallbackProvider_initialSync, _FallbackProvider_checkQuorum, _FallbackProvider_waitForQuorum;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { shuffle } from \"./shuffle.js\";\n//const BN_0 = BigInt(\"0\");\nconst BN_1 = BigInt(\"1\");\nconst BN_2 = BigInt(\"2\");\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\nfunction getTime() { return (new Date()).getTime(); }\n;\nconst defaultConfig = { stallTimeout: 400, priority: 1, weight: 1 };\nconst defaultState = {\n blockNumber: -2, requests: 0, lateResponses: 0, errorResponses: 0,\n outOfSync: -1, unsupportedEvents: 0, rollingDuration: 0, score: 0,\n _network: null, _updateNumber: null, _totalTime: 0\n};\nasync function waitForSync(config, blockNumber) {\n while (config.blockNumber < 0 || config.blockNumber < blockNumber) {\n if (!config._updateNumber) {\n config._updateNumber = (async () => {\n const blockNumber = await config.provider.getBlockNumber();\n if (blockNumber > config.blockNumber) {\n config.blockNumber = blockNumber;\n }\n config._updateNumber = null;\n })();\n }\n await config._updateNumber;\n config.outOfSync++;\n }\n}\n// Normalizes a result to a string that can be used to compare against\n// other results using normal string equality\nfunction normalize(network, value, req) {\n switch (req.method) {\n case \"chainId\":\n return logger.getBigInt(value).toString();\n case \"getBlockNumber\":\n return logger.getNumber(value).toString();\n case \"getGasPrice\":\n return logger.getBigInt(value).toString();\n case \"getBalance\":\n return logger.getBigInt(value).toString();\n case \"getTransactionCount\":\n return logger.getNumber(value).toString();\n case \"getCode\":\n return hexlify(value);\n case \"getStorageAt\":\n return hexlify(value);\n case \"getBlock\":\n if (req.includeTransactions) {\n return JSON.stringify(network.formatter.blockWithTransactions(value));\n }\n return JSON.stringify(network.formatter.block(value));\n case \"getTransaction\":\n return JSON.stringify(network.formatter.transactionResponse(value));\n case \"getTransactionReceipt\":\n return JSON.stringify(network.formatter.receipt(value));\n case \"call\":\n return hexlify(value);\n case \"estimateGas\":\n return logger.getBigInt(value).toString();\n case \"getLogs\":\n return JSON.stringify(value.map((v) => network.formatter.log(v)));\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}\n// This strategy picks the highest wieght result, as long as the weight is\n// equal to or greater than quorum\nfunction checkQuorum(quorum, results) {\n const tally = new Map();\n for (const { result, normal, weight } of results) {\n const t = tally.get(normal) || { result, weight: 0 };\n t.weight += weight;\n tally.set(normal, t);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n if (weight >= quorum && weight > bestWeight) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\n/*\nfunction getMean(results: Array): bigint {\n const total = results.reduce((a, r) => (a + BigInt(r.result)), BN_0);\n return total / BigInt(results.length);\n}\n*/\nfunction getMedian(results) {\n // Get the sorted values\n const values = results.map((r) => BigInt(r.result));\n values.sort((a, b) => ((a < b) ? -1 : (b > a) ? 1 : 0));\n const mid = values.length / 2;\n // Odd-length; take the middle value\n if (values.length % 2) {\n return values[mid];\n }\n // Even length; take the ceiling of the mean of the center two values\n return (values[mid - 1] + values[mid] + BN_1) / BN_2;\n}\nfunction getFuzzyMode(quorum, results) {\n if (quorum === 1) {\n return logger.getNumber(getMedian(results), \"%internal\");\n }\n const tally = new Map();\n const add = (result, weight) => {\n const t = tally.get(result) || { result, weight: 0 };\n t.weight += weight;\n tally.set(result, t);\n };\n for (const { weight, result } of results) {\n const r = logger.getNumber(result);\n add(r - 1, weight);\n add(r, weight);\n add(r + 1, weight);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n // Use this result, if this result meets quorum and has either:\n // - a better weight\n // - or equal weight, but the result is larger\n if (weight >= quorum && (weight > bestWeight || (bestResult != null && weight === bestWeight && result > bestResult))) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\nexport class FallbackProvider extends AbstractProvider {\n constructor(providers, network) {\n super(network);\n _FallbackProvider_instances.add(this);\n _FallbackProvider_configs.set(this, void 0);\n _FallbackProvider_height.set(this, void 0);\n _FallbackProvider_initialSyncPromise.set(this, void 0);\n __classPrivateFieldSet(this, _FallbackProvider_configs, providers.map((p) => {\n if (p instanceof AbstractProvider) {\n return Object.assign({ provider: p }, defaultConfig, defaultState);\n }\n else {\n return Object.assign({}, defaultConfig, p, defaultState);\n }\n }), \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_height, -2, \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, null, \"f\");\n this.quorum = 2; //Math.ceil(providers.length / 2);\n this.eventQuorum = 1;\n this.eventWorkers = 1;\n if (this.quorum > __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").reduce((a, c) => (a + c.weight), 0)) {\n logger.throwArgumentError(\"quorum exceed provider wieght\", \"quorum\", this.quorum);\n }\n }\n // @TOOD: Copy these and only return public values\n get providerConfigs() {\n return __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n }\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" }))).freeze();\n }\n async _perform(req) {\n await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_initialSync).call(this);\n // Bootstrap enough to meet quorum\n const running = new Set();\n for (let i = 0; i < this.quorum; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n const result = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n for (const runner of running) {\n runner.done = true;\n }\n return result;\n }\n}\n_FallbackProvider_configs = new WeakMap(), _FallbackProvider_height = new WeakMap(), _FallbackProvider_initialSyncPromise = new WeakMap(), _FallbackProvider_instances = new WeakSet(), _FallbackProvider_getNextConfig = function _FallbackProvider_getNextConfig(configs) {\n // Shuffle the states, sorted by priority\n const allConfigs = __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n shuffle(allConfigs);\n allConfigs.sort((a, b) => (b.priority - a.priority));\n for (const config of allConfigs) {\n if (configs.indexOf(config) === -1) {\n return config;\n }\n }\n return null;\n}, _FallbackProvider_addRunner = function _FallbackProvider_addRunner(running, req) {\n const config = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_getNextConfig).call(this, Array.from(running).map((r) => r.config));\n if (config == null) {\n return null;\n }\n const result = {};\n const runner = {\n config, result, didBump: false, done: false,\n perform: null, staller: null\n };\n const now = getTime();\n runner.perform = (async () => {\n try {\n config.requests++;\n result.result = await config.provider._perform(req);\n }\n catch (error) {\n config.errorResponses++;\n result.error = error;\n }\n if (runner.done) {\n config.lateResponses++;\n }\n const dt = (getTime() - now);\n config._totalTime += dt;\n config.rollingDuration = 0.95 * config.rollingDuration + 0.05 * dt;\n runner.perform = null;\n })();\n runner.staller = (async () => {\n await stall(config.stallTimeout);\n runner.staller = null;\n })();\n running.add(runner);\n return runner;\n}, _FallbackProvider_initialSync = \n// Initializes the blockNumber and network for each runner and\n// blocks until initialized\nasync function _FallbackProvider_initialSync() {\n let initialSync = __classPrivateFieldGet(this, _FallbackProvider_initialSyncPromise, \"f\");\n if (!initialSync) {\n const promises = [];\n __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").forEach((config) => {\n promises.push(waitForSync(config, 0));\n promises.push((async () => {\n config._network = await config.provider.getNetwork();\n })());\n });\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, initialSync = (async () => {\n // Wait for all providers to have a block number and network\n await Promise.all(promises);\n // Check all the networks match\n let chainId = null;\n for (const config of __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\")) {\n const network = (config._network);\n if (chainId == null) {\n chainId = network.chainId;\n }\n else if (network.chainId !== chainId) {\n logger.throwError(\"cannot mix providers on different networks\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FallbackProvider\"\n });\n }\n }\n })(), \"f\");\n }\n await initialSync;\n}, _FallbackProvider_checkQuorum = async function _FallbackProvider_checkQuorum(running, req) {\n // Get all the result objects\n const results = [];\n for (const runner of running) {\n if (\"result\" in runner.result) {\n const result = runner.result.result;\n results.push({\n result,\n normal: normalize((runner.config._network), result, req),\n weight: runner.config.weight\n });\n }\n }\n // Are there enough results to event meet quorum?\n if (results.reduce((a, r) => (a + r.weight), 0) < this.quorum) {\n return undefined;\n }\n switch (req.method) {\n case \"getBlockNumber\": {\n // We need to get the bootstrap block height\n if (__classPrivateFieldGet(this, _FallbackProvider_height, \"f\") === -2) {\n const height = Math.ceil(logger.getNumber(getMedian(__classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").map((c) => ({\n result: c.blockNumber,\n normal: logger.getNumber(c.blockNumber).toString(),\n weight: c.weight\n }))), \"%internal\"));\n __classPrivateFieldSet(this, _FallbackProvider_height, height, \"f\");\n }\n const mode = getFuzzyMode(this.quorum, results);\n if (mode === undefined) {\n return undefined;\n }\n if (mode > __classPrivateFieldGet(this, _FallbackProvider_height, \"f\")) {\n __classPrivateFieldSet(this, _FallbackProvider_height, mode, \"f\");\n }\n return __classPrivateFieldGet(this, _FallbackProvider_height, \"f\");\n }\n case \"getGasPrice\":\n case \"estimateGas\":\n return getMedian(results);\n case \"getBlock\":\n // Pending blocks are mempool dependant and already\n // quite untrustworthy\n if (\"blockTag\" in req && req.blockTag === \"pending\") {\n return results[0].result;\n }\n return checkQuorum(this.quorum, results);\n case \"chainId\":\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n case \"getLogs\":\n return checkQuorum(this.quorum, results);\n case \"call\":\n // @TODO: Check errors\n return checkQuorum(this.quorum, results);\n case \"sendTransaction\":\n throw new Error(\"TODO\");\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}, _FallbackProvider_waitForQuorum = async function _FallbackProvider_waitForQuorum(running, req) {\n if (running.size === 0) {\n throw new Error(\"no runners?!\");\n }\n // Any promises that are interesting to watch for; an expired stall\n // or a successful perform\n const interesting = [];\n //const results: Array = [ ];\n //const errors: Array = [ ];\n let newRunners = 0;\n for (const runner of running) {\n // @TODO: use runner.perfom != null\n /*\n if (\"result\" in runner.result) {\n results.push(runner.result.result);\n } else if (\"error\" in runner.result) {\n errors.push(runner.result.error);\n }\n*/\n // No responses, yet; keep an eye on it\n if (runner.perform) {\n interesting.push(runner.perform);\n }\n // Still stalling...\n if (runner.staller) {\n interesting.push(runner.staller);\n continue;\n }\n // This runner has already triggered another runner\n if (runner.didBump) {\n continue;\n }\n // Got a response (result or error) or stalled; kick off another runner\n runner.didBump = true;\n newRunners++;\n }\n // Check for quorum\n /*\n console.log({ results, errors } );\n if (results.length >= this.quorum) {\n return results[0];\n }\n\n if (errors.length >= this.quorum) {\n return errors[0];\n }\n */\n const value = await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_checkQuorum).call(this, running, req);\n if (value !== undefined) {\n if (value instanceof Error) {\n throw value;\n }\n return value;\n }\n // Add any new runners, because a staller timed out or a result\n // or error response came in.\n for (let i = 0; i < newRunners; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n if (interesting.length === 0) {\n throw new Error(\"quorum not met\");\n // return logger.throwError(\"failed to meet quorum\", \"\", {\n // });\n }\n // Wait for someone to either complete its perform or trigger a stall\n await Promise.race(interesting);\n return await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n};\n//# sourceMappingURL=provider-fallback.js.map","export function shuffle(array) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n}\n//# sourceMappingURL=shuffle.js.map","function getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst _WebSocket = getGlobal().WebSocket;\nexport { _WebSocket as WebSocket };\n//# sourceMappingURL=ws-browser.js.map","/**\n * SocketProvider\n *\n * Generic long-lived socket provider.\n *\n * Sub-classing notes\n * - a sub-class MUST call the `_start()` method once connected\n * - a sub-class MUST override the `_write(string)` method\n * - a sub-class MUST call `_processMessage(string)` for each message\n */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SocketSubscriber_provider, _SocketSubscriber_filter, _SocketSubscriber_filterId, _SocketSubscriber_paused, _SocketSubscriber_emitPromise, _SocketEventSubscriber_logFilter, _SocketEventSubscriber_formatter, _SocketProvider_callbacks, _SocketProvider_ready, _SocketProvider_subs, _SocketProvider_pending;\nimport { UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { JsonRpcApiProvider } from \"./provider-jsonrpc.js\";\nexport class SocketSubscriber {\n constructor(provider, filter) {\n _SocketSubscriber_provider.set(this, void 0);\n _SocketSubscriber_filter.set(this, void 0);\n _SocketSubscriber_filterId.set(this, void 0);\n _SocketSubscriber_paused.set(this, void 0);\n _SocketSubscriber_emitPromise.set(this, void 0);\n __classPrivateFieldSet(this, _SocketSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n get filter() { return JSON.parse(__classPrivateFieldGet(this, _SocketSubscriber_filter, \"f\")); }\n start() {\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_subscribe\", this.filter).then((filterId) => {\n ;\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\")._register(filterId, this);\n return filterId;\n }), \"f\");\n }\n stop() {\n (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\")).then((filterId) => {\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_unsubscribe\", [filterId]);\n });\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n }\n // @TODO: pause should trap the current blockNumber, unsub, and on resume use getLogs\n // and resume\n pause(dropWhilePaused) {\n if (!dropWhilePaused) {\n logger.throwError(\"preserve logs while paused not supported by SocketSubscriber yet\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause(false)\"\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_paused, !!dropWhilePaused, \"f\");\n }\n resume() {\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n }\n _handleMessage(message) {\n if (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\") == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _SocketSubscriber_paused, \"f\") === null) {\n let emitPromise = __classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\");\n if (emitPromise == null) {\n emitPromise = this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n }\n else {\n emitPromise = emitPromise.then(async () => {\n await this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, emitPromise.then(() => {\n if (__classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\") === emitPromise) {\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n }), \"f\");\n }\n }\n async _emit(provider, message) {\n throw new Error(\"sub-classes must implemente this; _emit\");\n }\n}\n_SocketSubscriber_provider = new WeakMap(), _SocketSubscriber_filter = new WeakMap(), _SocketSubscriber_filterId = new WeakMap(), _SocketSubscriber_paused = new WeakMap(), _SocketSubscriber_emitPromise = new WeakMap();\nexport class SocketBlockSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newHeads\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"block\", parseInt(message.number));\n }\n}\nexport class SocketPendingSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newPendingTransactions\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"pending\", message);\n }\n}\nexport class SocketEventSubscriber extends SocketSubscriber {\n constructor(provider, filter) {\n super(provider, [\"logs\", filter]);\n _SocketEventSubscriber_logFilter.set(this, void 0);\n _SocketEventSubscriber_formatter.set(this, void 0);\n __classPrivateFieldSet(this, _SocketEventSubscriber_logFilter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketEventSubscriber_formatter, provider.getNetwork().then((network) => network.formatter), \"f\");\n }\n get logFilter() { return JSON.parse(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\")); }\n async _emit(provider, message) {\n const formatter = await __classPrivateFieldGet(this, _SocketEventSubscriber_formatter, \"f\");\n provider.emit(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\"), formatter.log(message, provider));\n }\n}\n_SocketEventSubscriber_logFilter = new WeakMap(), _SocketEventSubscriber_formatter = new WeakMap();\nexport class SocketProvider extends JsonRpcApiProvider {\n constructor(network) {\n super(network);\n _SocketProvider_callbacks.set(this, void 0);\n _SocketProvider_ready.set(this, void 0);\n // Maps each filterId to its subscriber\n _SocketProvider_subs.set(this, void 0);\n // If any events come in before a subscriber has finished\n // registering, queue them\n _SocketProvider_pending.set(this, void 0);\n __classPrivateFieldSet(this, _SocketProvider_callbacks, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_ready, false, \"f\");\n __classPrivateFieldSet(this, _SocketProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_pending, new Map(), \"f\");\n }\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"close\":\n return new UnmanagedSubscriber(\"close\");\n case \"block\":\n return new SocketBlockSubscriber(this);\n case \"pending\":\n return new SocketPendingSubscriber(this);\n case \"event\":\n return new SocketEventSubscriber(this, sub.filter);\n case \"orphan\":\n // Handled auto-matically within AbstractProvider\n // when the log.removed = true\n if (sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"drop-log\");\n }\n }\n return super._getSubscriber(sub);\n }\n _register(filterId, subscriber) {\n __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").set(filterId, subscriber);\n const pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending) {\n for (const message of pending) {\n subscriber._handleMessage(message);\n }\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").delete(filterId);\n }\n }\n async send(method, params) {\n const payload = this.prepareRequest(method, params);\n const promise = new Promise((resolve, reject) => {\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").set(payload.id, { payload, resolve, reject });\n });\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n await this._write(JSON.stringify(payload));\n }\n return await promise;\n }\n // Sub-classes must call this once they are connected\n async _start() {\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n return;\n }\n __classPrivateFieldSet(this, _SocketProvider_ready, true, \"f\");\n for (const { payload } of __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").values()) {\n await this._write(JSON.stringify(payload));\n }\n }\n // Sub-classes must call this for each message\n async _processMessage(message) {\n const result = JSON.parse(message);\n if (\"id\" in result) {\n const promise = __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").get(result.id);\n if (!promise) {\n console.log(\"Weird... Response for not a thing we sent\");\n return;\n }\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").delete(result.id);\n if (\"error\" in result) {\n const { message, code, data } = result.error;\n const error = logger.makeError(message || \"unkonwn error\", \"SERVER_ERROR\", {\n request: `ws:${JSON.stringify(promise.payload)}`,\n info: { code, data }\n });\n promise.reject(error);\n }\n else {\n promise.resolve(result.result);\n }\n }\n else if (result.method === \"eth_subscription\") {\n const filterId = result.params.subscription;\n const subscriber = __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").get(filterId);\n if (subscriber) {\n subscriber._handleMessage(result.params.result);\n }\n else {\n let pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending == null) {\n pending = [];\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").set(filterId, pending);\n }\n pending.push(result.params.result);\n }\n }\n }\n async _write(message) {\n throw new Error(\"sub-classes must override this\");\n }\n}\n_SocketProvider_callbacks = new WeakMap(), _SocketProvider_ready = new WeakMap(), _SocketProvider_subs = new WeakMap(), _SocketProvider_pending = new WeakMap();\n//# sourceMappingURL=provider-socket.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WebSocketProvider_websocket;\nimport { WebSocket } from \"ws\"; /*-browser*/\nimport { SocketProvider } from \"./provider-socket.js\";\nexport class WebSocketProvider extends SocketProvider {\n constructor(url, network) {\n super(network);\n _WebSocketProvider_websocket.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, new WebSocket(url), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, url, \"f\");\n }\n this.websocket.onopen = () => {\n this._start();\n };\n this.websocket.onmessage = (message) => {\n this._processMessage(message.data);\n };\n }\n get websocket() { return __classPrivateFieldGet(this, _WebSocketProvider_websocket, \"f\"); }\n async _write(message) {\n this.websocket.send(message);\n }\n}\n_WebSocketProvider_websocket = new WeakMap();\n//# sourceMappingURL=provider-websocket.js.map","import { AnkrProvider } from \"./provider-ankr.js\";\nimport { AlchemyProvider } from \"./provider-alchemy.js\";\nimport { CloudflareProvider } from \"./provider-cloudflare.js\";\nimport { EtherscanProvider } from \"./provider-etherscan.js\";\nimport { InfuraProvider } from \"./provider-infura.js\";\nimport { PocketProvider } from \"./provider-pocket.js\";\nimport { FallbackProvider } from \"./provider-fallback.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nimport { WebSocketProvider } from \"./provider-websocket.js\";\nfunction isWebSocketLike(value) {\n return (value && typeof (value.send) === \"function\" &&\n typeof (value.close) === \"function\");\n}\nexport function getDefaultProvider(network, options) {\n if (options == null) {\n options = {};\n }\n if (typeof (network) === \"string\" && network.match(/^https?:/)) {\n return new JsonRpcProvider(network);\n }\n if (typeof (network) === \"string\" && network.match(/^wss?:/) || isWebSocketLike(network)) {\n return new WebSocketProvider(network);\n }\n const providers = [];\n if (options.alchemy !== \"-\") {\n try {\n providers.push(new AlchemyProvider(network, options.alchemy));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.ankr !== \"-\") {\n try {\n providers.push(new AnkrProvider(network, options.ankr));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.cloudflare !== \"-\") {\n try {\n providers.push(new CloudflareProvider(network));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.etherscan !== \"-\") {\n try {\n providers.push(new EtherscanProvider(network, options.etherscan));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.infura !== \"-\") {\n try {\n let projectId = options.infura;\n let projectSecret = undefined;\n if (typeof (projectId) === \"object\") {\n projectSecret = projectId.projectSecret;\n projectId = projectId.projectId;\n }\n providers.push(new InfuraProvider(network, projectId, projectSecret));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.pocket !== \"-\") {\n try {\n let appId = options.pocket;\n let secretKey = undefined;\n let loadBalancer = undefined;\n if (typeof (appId) === \"object\") {\n loadBalancer = !!appId.loadBalancer;\n secretKey = appId.secretKey;\n appId = appId.appId;\n }\n providers.push(new PocketProvider(network, appId, secretKey, loadBalancer));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (providers.length === 0) {\n throw new Error(\"TODO\");\n }\n if (providers.length === 1) {\n return providers[0];\n }\n return new FallbackProvider(providers);\n}\n//# sourceMappingURL=default-provider.js.map","const IpcSocketProvider = undefined;\nexport { IpcSocketProvider };\n//# sourceMappingURL=provider-ipcsocket-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ContractTransactionReceipt_interface, _ContractTransactionResponse_interface;\nimport { defineProperties, EventPayload } from \"@ethersproject/properties\";\nimport { Log, TransactionReceipt, TransactionResponse } from \"@ethersproject/providers\";\nexport class EventLog extends Log {\n constructor(log, iface, fragment) {\n super(log, log.provider);\n const args = iface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, interface: iface });\n }\n get eventName() { return this.fragment.name; }\n get eventSignature() { return this.fragment.format(); }\n}\nexport class ContractTransactionReceipt extends TransactionReceipt {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionReceipt_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionReceipt_interface, iface, \"f\");\n }\n get logs() {\n return super.logs.map((log) => {\n const fragment = log.topics.length ? __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\").getEvent(log.topics[0]) : null;\n if (fragment) {\n return new EventLog(log, __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\"), fragment);\n }\n else {\n return log;\n }\n });\n }\n}\n_ContractTransactionReceipt_interface = new WeakMap();\nexport class ContractTransactionResponse extends TransactionResponse {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionResponse_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionResponse_interface, iface, \"f\");\n }\n async wait(confirms) {\n const receipt = await super.wait();\n if (receipt == null) {\n return null;\n }\n return new ContractTransactionReceipt(__classPrivateFieldGet(this, _ContractTransactionResponse_interface, \"f\"), this.provider, receipt);\n }\n}\n_ContractTransactionResponse_interface = new WeakMap();\nexport class ContractEventPayload extends EventPayload {\n constructor(contract, listener, filter, fragment, _log) {\n super(contract, listener, filter);\n const log = new EventLog(_log, contract.interface, fragment);\n const args = contract.interface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, log });\n }\n get eventName() {\n return this.fragment.name;\n }\n get eventSignature() {\n return this.fragment.format();\n }\n async getBlock() {\n return await this.log.getBlock();\n }\n async getTransaction() {\n return await this.log.getTransaction();\n }\n async getTransactionReceipt() {\n return await this.log.getTransactionReceipt();\n }\n}\n//# sourceMappingURL=wrappers.js.map","export const version = \"@ethersproject/contract@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PreparedTopicFilter_filter;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { Interface, Typed } from \"@ethersproject/abi\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { copyRequest } from \"@ethersproject/providers\";\nimport { ContractEventPayload, ContractTransactionResponse, EventLog } from \"./wrappers.js\";\nimport { logger } from \"./logger.js\";\nfunction canCall(value) {\n return (value && typeof (value.call) === \"function\");\n}\nfunction canEstimate(value) {\n return (value && typeof (value.estimateGas) === \"function\");\n}\nfunction canResolve(value) {\n return (value && typeof (value.resolveName) === \"function\");\n}\nfunction canSend(value) {\n return (value && typeof (value.sendTransaction) === \"function\");\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\nclass PreparedTopicFilter {\n constructor(contract, fragment, args) {\n _PreparedTopicFilter_filter.set(this, void 0);\n defineProperties(this, { fragment });\n if (fragment.inputs.length < args.length) {\n throw new Error(\"too many arguments\");\n }\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(contract.runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n __classPrivateFieldSet(this, _PreparedTopicFilter_filter, (async function () {\n const resolvedArgs = await Promise.all(fragment.inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n return contract.interface.encodeFilterTopics(fragment, resolvedArgs);\n })(), \"f\");\n }\n getTopicFilter() {\n return __classPrivateFieldGet(this, _PreparedTopicFilter_filter, \"f\");\n }\n}\n_PreparedTopicFilter_filter = new WeakMap();\n// A = Arguments passed in as a tuple\n// R = The result type of the call (i.e. if only one return type,\n// the qualified type, otherwise Result)\n// D = The type the default call will return (i.e. R for view/pure,\n// TransactionResponse otherwise)\n//export interface ContractMethod = Array, R = any, D extends R | ContractTransactionResponse = ContractTransactionResponse> {\nfunction _WrappedMethodBase() {\n return Function;\n}\nfunction getRunner(value, feature) {\n if (value == null) {\n return null;\n }\n if (typeof (value[feature]) === \"function\") {\n return value;\n }\n if (value.provider && typeof (value.provider[feature]) === \"function\") {\n return value.provider;\n }\n return null;\n}\nfunction getProvider(value) {\n if (value == null) {\n return null;\n }\n return value.provider || null;\n}\nexport async function copyOverrides(arg) {\n // Create a shallow copy (we'll deep-ify anything needed during normalizing)\n const overrides = copyRequest(Typed.dereference(arg, \"overrides\"));\n // Some sanity checking; these are what these methods adds\n //if ((overrides).to) {\n if (overrides.to) {\n logger.throwArgumentError(\"cannot override to\", \"overrides.to\", overrides.to);\n }\n else if (overrides.data) {\n logger.throwArgumentError(\"cannot override data\", \"overrides.data\", overrides.data);\n }\n // Resolve any from\n if (overrides.from) {\n overrides.from = await resolveAddress(overrides.from);\n }\n return overrides;\n}\nexport async function resolveArgs(_runner, inputs, args) {\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(_runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n return await Promise.all(inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n}\nclass WrappedMethod extends _WrappedMethodBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getFunctionName(key),\n _contract: contract, _key: key\n });\n const proxy = new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n const fragment = target.getFragment(...args);\n if (fragment.constant) {\n return await target.staticCall(...args);\n }\n return await target.send(...args);\n },\n });\n return proxy;\n }\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n get fragment() {\n return this._contract.interface.getFunction(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getFunction(this._key, args);\n }\n async populateTransaction(...args) {\n const fragment = this.getFragment(...args);\n // If an overrides was passed in, copy it and normalize the values\n let overrides = {};\n if (fragment.inputs.length + 1 === args.length) {\n overrides = await copyOverrides(args.pop());\n }\n if (fragment.inputs.length !== args.length) {\n throw new Error(\"internal error: fragment inputs doesn't match arguments; should not happen\");\n }\n const resolvedArgs = await resolveArgs(this._contract.runner, fragment.inputs, args);\n return Object.assign({}, overrides, await resolveProperties({\n to: this._contract.getAddress(),\n data: this._contract.interface.encodeFunctionData(fragment, resolvedArgs)\n }));\n }\n async staticCall(...args) {\n const result = await this.staticCallResult(...args);\n if (result.length === 1) {\n return result[0];\n }\n return result;\n }\n async send(...args) {\n const runner = this._contract.runner;\n if (!canSend(runner)) {\n return logger.throwError(\"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", {\n operation: \"sendTransaction\"\n });\n }\n const tx = await runner.sendTransaction(await this.populateTransaction(...args));\n const provider = getProvider(this._contract.runner);\n return new ContractTransactionResponse(this._contract.interface, provider, tx);\n }\n async estimateGas(...args) {\n const runner = getRunner(this._contract.runner, \"estimateGas\");\n if (!canEstimate(runner)) {\n return logger.throwError(\"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", {\n operation: \"estimateGas\"\n });\n }\n return await runner.estimateGas(await this.populateTransaction(...args));\n }\n async staticCallResult(...args) {\n const runner = getRunner(this._contract.runner, \"call\");\n if (!canCall(runner)) {\n return logger.throwError(\"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", {\n operation: \"call\"\n });\n }\n const fragment = this.getFragment(...args);\n const tx = await this.populateTransaction(...args);\n let result = \"0x\";\n try {\n result = await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error)) {\n throw this._contract.interface.makeError(fragment, error.data, tx);\n }\n throw error;\n }\n return this._contract.interface.decodeFunctionResult(fragment, result);\n }\n}\nfunction _WrappedEventBase() {\n return Function;\n}\nclass WrappedEvent extends _WrappedEventBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getEventName(key),\n _contract: contract, _key: key\n });\n return new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n return new PreparedTopicFilter(contract, target.getFragment(...args), args);\n },\n });\n }\n // Only works on non-ambiguous keys\n get fragment() {\n return this._contract.interface.getEvent(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getEvent(this._key, args);\n }\n}\n;\n// The combination of TypeScrype, Private Fields and Proxies makes\n// the world go boom; so we hide variables with some trickery keeping\n// a symbol attached to each BaseContract which its sub-class (even\n// via a Proxy) can reach and use to look up its internal values.\nconst internal = Symbol.for(\"_ethersInternal_contract\");\nconst internalValues = new WeakMap();\nfunction setInternal(contract, values) {\n internalValues.set(contract[internal], values);\n}\nfunction getInternal(contract) {\n return internalValues.get(contract[internal]);\n}\nfunction isDeferred(value) {\n return (value && typeof (value) === \"object\" && (\"getTopicFilter\" in value) &&\n (typeof (value.getTopicFilter) === \"function\") && value.fragment);\n}\nasync function getSubTag(contract, event) {\n let fragment;\n let topics;\n if (Array.isArray(event)) {\n // Topics; e.g. `[ \"0x1234...89ab\" ]`\n fragment = contract.interface.getEvent(event[0]);\n topics = event;\n }\n else if (typeof (event) === \"string\") {\n // Event name (name or signature); `\"Transfer\"`\n fragment = contract.interface.getEvent(event);\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else if (isDeferred(event)) {\n // Deferred Topic Filter; e.g. `contract.filter.Transfer(from)`\n fragment = event.fragment;\n topics = await event.getTopicFilter();\n }\n else if (\"fragment\" in event) {\n // ContractEvent; e.g. `contract.filter.Transfer`\n fragment = event.fragment;\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else {\n console.log(event);\n throw new Error(\"TODO\");\n }\n // Normalize topics and sort TopicSets\n topics = topics.map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const tag = topics.map((t) => {\n if (t == null) {\n return \"null\";\n }\n if (Array.isArray(t)) {\n return t.join(\"|\");\n }\n return t;\n }).join(\"&\");\n return { fragment, tag, topics };\n}\nasync function hasSub(contract, event) {\n const { subs } = getInternal(contract);\n return subs.get((await getSubTag(contract, event)).tag) || null;\n}\nasync function getSub(contract, event) {\n // Make sure our runner can actually subscribe to events\n const provider = getProvider(contract.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not support subscribing\", \"UNSUPPORTED_OPERATION\", {\n operation: \"on\"\n });\n }\n const { fragment, tag, topics } = await getSubTag(contract, event);\n const { addr, subs } = getInternal(contract);\n let sub = subs.get(tag);\n if (!sub) {\n const address = (addr ? addr : contract);\n const filter = { address, topics };\n const listener = (log) => {\n const payload = new ContractEventPayload(contract, null, event, fragment, log);\n emit(contract, event, payload.args, payload);\n };\n let started = false;\n const start = () => {\n if (started) {\n return;\n }\n provider.on(filter, listener);\n started = true;\n };\n const stop = () => {\n if (!started) {\n return;\n }\n provider.off(filter, listener);\n started = false;\n };\n sub = { tag, listeners: [], start, stop };\n subs.set(tag, sub);\n }\n return sub;\n}\nasync function _emit(contract, event, args, payload) {\n await lastEmit;\n const sub = await hasSub(contract, event);\n if (!sub) {\n return false;\n }\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const passArgs = args.slice();\n if (payload) {\n passArgs.push(new ContractEventPayload(contract, (once ? null : listener), event, payload.fragment, payload.log));\n }\n try {\n listener.call(contract, ...passArgs);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n}\n// We use this to ensure one emit resolves before firing the next to\n// ensure correct ordering (note this cannot throw and just adds the\n// notice to the event queu using setTimeout).\nlet lastEmit = Promise.resolve();\nasync function emit(contract, event, args, payload) {\n try {\n await lastEmit;\n }\n catch (error) { }\n const resultPromise = _emit(contract, event, args, payload);\n lastEmit = resultPromise;\n return await resultPromise;\n}\nconst passProperties = [\"then\"];\nexport class BaseContract {\n constructor(target, abi, runner = null, _deployTx) {\n const iface = Interface.from(abi);\n defineProperties(this, { target, runner, interface: iface });\n Object.defineProperty(this, internal, { value: {} });\n let addrPromise;\n let addr = null;\n let deployTx = null;\n if (_deployTx) {\n const provider = getProvider(runner);\n deployTx = new ContractTransactionResponse(this.interface, provider, _deployTx);\n }\n let subs = new Map();\n // Resolve the target as the address\n if (typeof (target) === \"string\") {\n if (isHexString(target)) {\n addr = target;\n addrPromise = Promise.resolve(target);\n }\n else {\n const resolver = getRunner(runner, \"resolveName\");\n if (!canResolve(resolver)) {\n throw logger.makeError(\"contract runner does not support name resolution\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\"\n });\n }\n addrPromise = resolver.resolveName(target).then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n }\n else {\n addrPromise = target.getAddress().then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n // Set our private values\n setInternal(this, { addrPromise, addr, deployTx, subs });\n // Add the event filters\n const filters = new Proxy({}, {\n get: (target, _prop, receiver) => {\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = this.getEvent(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract event: ${prop}`);\n }\n });\n defineProperties(this, { filters });\n // Return a Proxy that will respond to functions\n return new Proxy(this, {\n get: (target, _prop, receiver) => {\n if (_prop in target || passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = target.getFunction(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract method: ${prop}`);\n }\n });\n }\n async getAddress() { return await getInternal(this).addrPromise; }\n async getDeployedCode() {\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getDeployedCode\"\n });\n }\n const code = await provider.getCode(await this.getAddress());\n if (code === \"0x\") {\n return null;\n }\n return code;\n }\n async waitForDeployment() {\n // We have the deployement transaction; just use that (throws if deployement fails)\n const deployTx = this.deploymentTransaction();\n if (deployTx) {\n await deployTx.wait();\n return this;\n }\n // Check for code\n const code = await this.getDeployedCode();\n if (code != null) {\n return this;\n }\n // Make sure we can subscribe to a provider event\n const provider = getProvider(this.runner);\n if (provider == null) {\n return logger.throwError(\"contract runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"waitForDeployment\"\n });\n }\n return new Promise((resolve, reject) => {\n const checkCode = async () => {\n try {\n const code = await this.getDeployedCode();\n if (code != null) {\n return resolve(this);\n }\n provider.once(\"block\", checkCode);\n }\n catch (error) {\n reject(error);\n }\n };\n checkCode();\n });\n }\n deploymentTransaction() {\n return getInternal(this).deployTx;\n }\n getFunction(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedMethod(this, key));\n }\n getEvent(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedEvent(this, key));\n }\n async queryTransaction(hash) {\n // Is this useful?\n throw new Error(\"@TODO\");\n }\n async queryFilter(event, fromBlock = 0, toBlock = \"latest\") {\n const { addr, addrPromise } = getInternal(this);\n const address = (addr ? addr : (await addrPromise));\n const { fragment, topics } = await getSubTag(this, event);\n const filter = { address, topics, fromBlock, toBlock };\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not have a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"queryFilter\"\n });\n }\n return (await provider.getLogs(filter)).map((log) => {\n return new EventLog(log, this.interface, fragment);\n });\n }\n async on(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: false });\n sub.start();\n return this;\n }\n async once(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: true });\n sub.start();\n return this;\n }\n async emit(event, ...args) {\n return await emit(this, event, args, null);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n const { subs } = getInternal(this);\n let total = 0;\n for (const { listeners } of subs.values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n const { subs } = getInternal(this);\n let result = [];\n for (const { listeners } of subs.values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (listener == null || sub.listeners.length === 0) {\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n else {\n const { subs } = getInternal(this);\n for (const { tag, stop } of subs.values()) {\n stop();\n subs.delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return await this.off(event, listener);\n }\n static buildClass(abi) {\n class CustomContract extends BaseContract {\n constructor(address, runner = null) {\n super(address, abi, runner);\n }\n }\n return CustomContract;\n }\n ;\n static from(target, abi, runner = null) {\n const contract = new this(target, abi, runner);\n return contract;\n }\n}\nfunction _ContractBase() {\n return BaseContract;\n}\nexport class Contract extends _ContractBase() {\n}\n//# sourceMappingURL=contract.js.map","const subsChrs = \" !#$%&'()*+,-./<=>?@[]^_`{|}~\";\nconst Word = /^[a-z]*$/i;\nfunction unfold(words, sep) {\n let initial = 97;\n return words.reduce((accum, word) => {\n if (word === sep) {\n initial++;\n }\n else if (word.match(Word)) {\n accum.push(String.fromCharCode(initial) + word);\n }\n else {\n initial = 97;\n accum.push(word);\n }\n return accum;\n }, []);\n}\nexport function decode(data, subs) {\n // Replace all the substitutions with their expanded form\n for (let i = subsChrs.length - 1; i >= 0; i--) {\n data = data.split(subsChrs[i]).join(subs.substring(2 * i, 2 * i + 2));\n }\n // Get all tle clumps; each suffix, first-increment and second-increment\n const clumps = [];\n const leftover = data.replace(/(:|([0-9])|([A-Z][a-z]*))/g, (all, item, semi, word) => {\n if (semi) {\n for (let i = parseInt(semi); i >= 0; i--) {\n clumps.push(\";\");\n }\n }\n else {\n clumps.push(item.toLowerCase());\n }\n return \"\";\n });\n if (leftover) {\n throw new Error(`leftovers: ${JSON.stringify(leftover)}`);\n }\n return unfold(unfold(clumps, \";\"), \":\");\n}\nexport function decodeOwl(data) {\n if (data[0] !== \"0\") {\n throw TypeError(\"unsupported auwl data\");\n }\n return decode(data.substring(1 + 2 * subsChrs.length), data.substring(1, 1 + 2 * subsChrs.length));\n}\n//# sourceMappingURL=decode-owl.js.map","export const version = \"@ethersproject/wordlists@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { defineProperties } from \"@ethersproject/properties\";\nexport class Wordlist {\n constructor(locale) {\n defineProperties(this, { locale });\n }\n // Subclasses may override this\n split(mnemonic) {\n return mnemonic.toLowerCase().split(/ +/g);\n }\n // Subclasses may override this\n join(words) {\n return words.join(\" \");\n }\n}\n//# sourceMappingURL=wordlist.js.map","// Use the encode-latin.js script to create the necessary\n// data files to be consumed by this class\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwl_instances, _WordlistOwl_data, _WordlistOwl_checksum, _WordlistOwl_words, _WordlistOwl_loadWords;\nimport { id } from \"@ethersproject/hash\";\nimport { decodeOwl } from \"./decode-owl.js\";\nimport { logger } from \"./logger.js\";\nimport { Wordlist } from \"./wordlist.js\";\nexport class WordlistOwl extends Wordlist {\n constructor(locale, data, checksum) {\n super(locale);\n _WordlistOwl_instances.add(this);\n _WordlistOwl_data.set(this, void 0);\n _WordlistOwl_checksum.set(this, void 0);\n _WordlistOwl_words.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwl_data, data, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_checksum, checksum, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_words, null, \"f\");\n }\n get _data() { return __classPrivateFieldGet(this, _WordlistOwl_data, \"f\"); }\n _decodeWords() {\n return decodeOwl(__classPrivateFieldGet(this, _WordlistOwl_data, \"f\"));\n }\n getWord(index) {\n const words = __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this);\n if (index < 0 || index >= words.length) {\n logger.throwArgumentError(`invalid word index: ${index}`, \"index\", index);\n }\n return words[index];\n }\n getWordIndex(word) {\n return __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this).indexOf(word);\n }\n}\n_WordlistOwl_data = new WeakMap(), _WordlistOwl_checksum = new WeakMap(), _WordlistOwl_words = new WeakMap(), _WordlistOwl_instances = new WeakSet(), _WordlistOwl_loadWords = function _WordlistOwl_loadWords() {\n if (__classPrivateFieldGet(this, _WordlistOwl_words, \"f\") == null) {\n const words = this._decodeWords();\n // Verify the computed list matches the official list\n const checksum = id(words.join(\"\\n\") + \"\\n\");\n /* c8 ignore start */\n if (checksum !== __classPrivateFieldGet(this, _WordlistOwl_checksum, \"f\")) {\n throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);\n }\n /* c8 ignore stop */\n __classPrivateFieldSet(this, _WordlistOwl_words, words, \"f\");\n }\n return __classPrivateFieldGet(this, _WordlistOwl_words, \"f\");\n};\n//# sourceMappingURL=wordlist-owl.js.map","import { WordlistOwl } from \"./wordlist-owl.js\";\nconst words = \"0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-EgSe0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-PM&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryFN Noc|PutQuirySSue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurEAyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOgAyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NNGradeHoldOnP Set1BOng::Rd3Ar~ow9UUngU`:3BraRo9NeO\";\nconst checksum = \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\";\nexport class LangEn extends WordlistOwl {\n constructor() { super(\"en\", words, checksum); }\n}\nexport const langEn = new LangEn();\n//# sourceMappingURL=lang-en.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","export const version = \"@ethersproject/wallet@6.0.0-beta.5\";\n//# sourceMappingURL=_version.js.map","import { langEn as en } from \"./lang-en.js\";\nexport const wordlists = Object.freeze({\n en\n});\n//# sourceMappingURL=wordlists-en.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwlA_accent;\nimport { WordlistOwl } from \"./wordlist-owl.js\";\nimport { decodeOwlA } from \"./decode-owla.js\";\nexport class WordlistOwlA extends WordlistOwl {\n constructor(locale, data, accent, checksum) {\n super(locale, data, checksum);\n _WordlistOwlA_accent.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwlA_accent, accent, \"f\");\n }\n get _accent() { return __classPrivateFieldGet(this, _WordlistOwlA_accent, \"f\"); }\n _decodeWords() {\n return decodeOwlA(this._data, this._accent);\n }\n}\n_WordlistOwlA_accent = new WeakMap();\n//# sourceMappingURL=wordlist-owla.js.map","import { decodeBits } from \"./bit-reader.js\";\nimport { decodeOwl } from \"./decode-owl.js\";\nexport function decodeOwlA(data, accents) {\n let words = decodeOwl(data).join(\",\");\n // Inject the accents\n accents.split(/,/g).forEach((accent) => {\n const match = accent.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);\n if (!match) {\n throw new Error(\"internal error parsing accents\");\n }\n let posOffset = 0;\n const positions = decodeBits(parseInt(match[3]), match[4]);\n const charCode = parseInt(match[2]);\n const regex = new RegExp(`([${match[1]}])`, \"g\");\n words = words.replace(regex, (all, letter) => {\n const rem = --positions[posOffset];\n if (rem === 0) {\n letter = String.fromCharCode(letter.charCodeAt(0), charCode);\n posOffset++;\n }\n return letter;\n });\n });\n return words.split(\",\");\n}\n//# sourceMappingURL=decode-owla.js.map","const Base64 = \")!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_\";\nexport function decodeBits(width, data) {\n const maxValue = (1 << width) - 1;\n const result = [];\n let accum = 0, bits = 0, flood = 0;\n for (let i = 0; i < data.length; i++) {\n // Accumulate 6 bits of data\n accum = ((accum << 6) | Base64.indexOf(data[i]));\n bits += 6;\n // While we have enough for a word...\n while (bits >= width) {\n // ...read the word\n const value = (accum >> (bits - width));\n accum &= (1 << (bits - width)) - 1;\n bits -= width;\n // A value of 0 indicates we exceeded maxValue, it\n // floods over into the next value\n if (value === 0) {\n flood += maxValue;\n }\n else {\n result.push(value + flood);\n flood = 0;\n }\n }\n }\n return result;\n}\n//# sourceMappingURL=bit-reader.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { pbkdf2, sha256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { langEn } from \"@ethersproject/wordlists\";\nimport { logger } from \"./logger.js\";\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits) {\n return ((1 << bits) - 1) << (8 - bits) & 0xff;\n}\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits) {\n return ((1 << bits) - 1) & 0xff;\n}\nfunction mnemonicToEntropy(mnemonic, wordlist = langEn) {\n logger.assertNormalize(\"NFKD\");\n if (wordlist == null) {\n wordlist = langEn;\n }\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0 || words.length < 12 || words.length > 24) {\n logger.throwArgumentError(\"invalid mnemonic length\", \"mnemonic\", \"[ REDACTED ]\");\n }\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) {\n logger.throwArgumentError(`invalid mnemonic word at index ${i}`, \"mnemonic\", \"[ REDACTED ]\");\n }\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n const entropyBits = 32 * words.length / 3;\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n logger.throwArgumentError(\"invalid mnemonic checksum\", \"mnemonic\", \"[ REDACTED ]\");\n }\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\nfunction entropyToMnemonic(entropy, wordlist = langEn) {\n if ((entropy.length % 4) || entropy.length < 16 || entropy.length > 32) {\n logger.throwArgumentError(\"invalid entropy size\", \"entropy\", \"[ REDACTED ]\");\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n const indices = [0];\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n remainingBits -= 8;\n // This byte will complete an 11-bit index\n }\n else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n remainingBits += 3;\n }\n }\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = parseInt(sha256(entropy).substring(2, 4), 16) & getUpperMask(checksumBits);\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n return wordlist.join(indices.map((index) => wordlist.getWord(index)));\n}\nconst _guard = {};\nexport class Mnemonic {\n constructor(guard, entropy, phrase, password, wordlist) {\n if (password == null) {\n password = \"\";\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n logger.assertPrivate(guard, _guard, \"Mnemonic\");\n defineProperties(this, { phrase, password, wordlist, entropy });\n }\n computeSeed() {\n const salt = toUtf8Bytes(\"mnemonic\" + this.password, UnicodeNormalizationForm.NFKD);\n return pbkdf2(toUtf8Bytes(this.phrase, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n }\n static fromPhrase(phrase, password, wordlist) {\n // Normalize the case and space; throws if invalid\n const entropy = mnemonicToEntropy(phrase, wordlist);\n phrase = entropyToMnemonic(logger.getBytes(entropy), wordlist);\n return new Mnemonic(_guard, entropy, phrase, password, wordlist);\n }\n static fromEntropy(_entropy, password, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n const phrase = entropyToMnemonic(entropy, wordlist);\n return new Mnemonic(_guard, hexlify(entropy), phrase, password, wordlist);\n }\n static entropyToPhrase(_entropy, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n return entropyToMnemonic(entropy, wordlist);\n }\n static phraseToEntropy(phrase, wordlist) {\n return mnemonicToEntropy(phrase, wordlist);\n }\n static isValidMnemonic(phrase, wordlist) {\n try {\n mnemonicToEntropy(phrase, wordlist);\n return true;\n }\n catch (error) { }\n return false;\n }\n}\n//# sourceMappingURL=mnemonic.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _BaseWallet_signingKey;\nimport { getAddress, resolveAddress } from \"@ethersproject/address\";\nimport { hashMessage, TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { AbstractSigner } from \"@ethersproject/providers\";\nimport { computeAddress, Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class BaseWallet extends AbstractSigner {\n constructor(privateKey, provider) {\n super(provider);\n _BaseWallet_signingKey.set(this, void 0);\n __classPrivateFieldSet(this, _BaseWallet_signingKey, privateKey, \"f\");\n const address = computeAddress(this.signingKey.publicKey);\n defineProperties(this, { address });\n }\n // Store these in getters to reduce visibility in console.log\n get signingKey() { return __classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"); }\n get privateKey() { return this.signingKey.privateKey; }\n async getAddress() { return this.address; }\n connect(provider) {\n return new BaseWallet(__classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"), provider);\n }\n async signTransaction(_tx) {\n // Replace any Addressable or ENS name with an address\n const tx = Object.assign({}, _tx, await resolveProperties({\n to: (_tx.to ? resolveAddress(_tx.to, this.provider) : undefined),\n from: (_tx.from ? resolveAddress(_tx.from, this.provider) : undefined)\n }));\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"tx.from\", _tx.from);\n }\n delete tx.from;\n }\n // Build the transaction\n const btx = Transaction.from(tx);\n btx.signature = this.signingKey.sign(btx.unsignedHash);\n return btx.serialized;\n }\n async signMessage(message) {\n return this.signingKey.sign(hashMessage(message)).serialized;\n }\n async signTypedData(domain, types, value) {\n // Populate any ENS names\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (name) => {\n if (this.provider == null) {\n return logger.throwError(\"cannot resolve ENS names without a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n info: { name }\n });\n }\n const address = await this.provider.resolveName(name);\n if (address == null) {\n return logger.throwError(\"unconfigured ENS name\", \"UNCONFIGURED_NAME\", {\n value: name\n });\n }\n return address;\n });\n return this.signingKey.sign(TypedDataEncoder.hash(populated.domain, types, populated.value)).serialized;\n }\n}\n_BaseWallet_signingKey = new WeakMap();\n//# sourceMappingURL=base-wallet.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _a, _HDNodeWallet_fromSeed, _HDNodeWalletManager_root;\nimport { arrayify, concat, dataSlice, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac, randomBytes, ripemd160, sha256 } from \"@ethersproject/crypto\";\nimport { decodeBase58, encodeBase58, toBigInt, toHex } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { VoidSigner } from \"@ethersproject/providers\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { langEn } from \"@ethersproject/wordlists/lib/lang-en.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nimport { BaseWallet } from \"./base-wallet.js\";\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n// \"Bitcoin seed\"\nconst MasterSecret = new Uint8Array([66, 105, 116, 99, 111, 105, 110, 32, 115, 101, 101, 100]);\nconst HardenedBit = 0x80000000;\nconst N = BigInt(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\nconst Nibbles = \"0123456789abcdef\";\nfunction zpad(value, length) {\n let result = \"\";\n while (value) {\n result = Nibbles[value % 16] + result;\n value = Math.trunc(value / 16);\n }\n while (result.length < length * 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction encodeBase58Check(_value) {\n const value = logger.getBytes(_value);\n const check = dataSlice(sha256(sha256(value)), 0, 4);\n const bytes = concat([value, check]);\n return encodeBase58(bytes);\n}\nconst _guard = {};\nfunction ser_I(index, chainCode, publicKey, privateKey) {\n const data = new Uint8Array(37);\n if (index & HardenedBit) {\n if (privateKey == null) {\n return logger.throwError(\"cannot derive child of neutered node\", \"UNSUPPORTED_OPERATION\", {\n operation: \"deriveChild\"\n });\n }\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(privateKey), 1);\n }\n else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(publicKey));\n }\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) {\n data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff);\n }\n const I = arrayify(computeHmac(\"sha512\", chainCode, data));\n return { IL: I.slice(0, 32), IR: I.slice(32) };\n}\nfunction derivePath(node, path) {\n const components = path.split(\"/\");\n if (components.length === 0 || (components[0] === \"m\" && node.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n if (components[0] === \"m\") {\n components.shift();\n }\n let result = node;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(HardenedBit + index);\n }\n else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(index);\n }\n else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n return result;\n}\nexport class HDNodeWallet extends BaseWallet {\n constructor(guard, signingKey, parentFingerprint, chainCode, path, index, depth, mnemonic, provider) {\n super(signingKey, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeWallet\");\n defineProperties(this, { publicKey: signingKey.compressedPublicKey });\n const fingerprint = dataSlice(ripemd160(sha256(this.publicKey)), 0, 4);\n defineProperties(this, {\n parentFingerprint, fingerprint,\n chainCode, path, index, depth\n });\n defineProperties(this, { mnemonic });\n }\n connect(provider) {\n return new HDNodeWallet(_guard, this.signingKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.mnemonic, provider);\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488ADE4\", zpad(this.depth, 1), this.parentFingerprint,\n zpad(this.index, 4), this.chainCode,\n concat([\"0x00\", this.privateKey])\n ]));\n }\n hasPath() { return (this.path != null); }\n neuter() {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.provider);\n }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, this.privateKey);\n const ki = new SigningKey(toHex((toBigInt(IL) + BigInt(this.privateKey)) % N, 32));\n return new HDNodeWallet(_guard, ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.mnemonic, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n static fromSeed(seed) {\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, seed, null);\n }\n static fromPhrase(phrase, password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromPhrase(phrase, password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromMnemonic(mnemonic, path = defaultPath) {\n if (!path) {\n path = defaultPath;\n }\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromExtendedKey(extendedKey) {\n const bytes = arrayify(decodeBase58(extendedKey)); // @TODO: redact\n if (bytes.length !== 82 || encodeBase58Check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[ REDACTED ]\");\n }\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\":\n case \"0x043587cf\": {\n const publicKey = hexlify(key);\n return new HDNodeVoidWallet(_guard, computeAddress(publicKey), publicKey, parentFingerprint, chainCode, null, index, depth, null);\n }\n // Private Key\n case \"0x0488ade4\":\n case \"0x04358394 \":\n if (key[0] !== 0) {\n break;\n }\n return new HDNodeWallet(_guard, new SigningKey(key.slice(1)), parentFingerprint, chainCode, null, index, depth, null, null);\n }\n return logger.throwArgumentError(\"invalid extended key prefix\", \"extendedKey\", \"[ REDACTED ]\");\n }\n static createRandom(password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromEntropy(randomBytes(16), password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n}\n_a = HDNodeWallet, _HDNodeWallet_fromSeed = function _HDNodeWallet_fromSeed(_seed, mnemonic) {\n const seed = logger.getBytes(_seed, \"seed\");\n if (seed.length < 16 || seed.length > 64) {\n throw new Error(\"invalid seed\");\n }\n const I = arrayify(computeHmac(\"sha512\", MasterSecret, seed));\n const signingKey = new SigningKey(hexlify(I.slice(0, 32)));\n return new HDNodeWallet(_guard, signingKey, \"0x00000000\", hexlify(I.slice(32)), \"m\", 0, 0, mnemonic, null);\n};\nexport class HDNodeVoidWallet extends VoidSigner {\n constructor(guard, address, publicKey, parentFingerprint, chainCode, path, index, depth, provider) {\n super(address, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeVoidWallet\");\n defineProperties(this, { publicKey });\n const fingerprint = dataSlice(ripemd160(sha256(publicKey)), 0, 4);\n defineProperties(this, {\n publicKey, fingerprint, parentFingerprint, chainCode, path, index, depth\n });\n }\n connect(provider) {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, provider);\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488B21E\",\n zpad(this.depth, 1),\n this.parentFingerprint,\n zpad(this.index, 4),\n this.chainCode,\n this.publicKey,\n ]));\n }\n hasPath() { return (this.path != null); }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, null);\n const Ki = SigningKey._addPoints(IL, this.publicKey, true);\n const address = computeAddress(Ki);\n return new HDNodeVoidWallet(_guard, address, Ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n}\nexport class HDNodeWalletManager {\n constructor(phrase, password = \"\", path = \"m/44'/60'/0'/0\", locale = langEn) {\n _HDNodeWalletManager_root.set(this, void 0);\n __classPrivateFieldSet(this, _HDNodeWalletManager_root, HDNodeWallet.fromPhrase(phrase, password, path, locale), \"f\");\n }\n getSigner(index = 0) {\n return __classPrivateFieldGet(this, _HDNodeWalletManager_root, \"f\").deriveChild(index);\n }\n}\n_HDNodeWalletManager_root = new WeakMap();\nexport function getAccountPath(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index < 0 || index >= HardenedBit) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${index}'/0/0`;\n}\n//# sourceMappingURL=hdwallet.js.map","/*! MIT License. Copyright 2015-2022 Richard Moore . See LICENSE.txt. */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AES_key, _AES_Kd, _AES_Ke;\n// Number of rounds by keysize\nconst numberOfRounds = { 16: 10, 24: 12, 32: 14 };\n// Round constant words\nconst rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n// S-box and Inverse S-box (S is for Substitution)\nconst S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\nconst Si = [0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n// Transformations for encryption\nconst T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\nconst T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\nconst T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\nconst T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n// Transformations for decryption\nconst T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\nconst T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\nconst T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\nconst T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n// Transformations for decryption key expansion\nconst U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\nconst U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\nconst U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\nconst U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\nfunction convertToInt32(bytes) {\n const result = [];\n for (let i = 0; i < bytes.length; i += 4) {\n result.push((bytes[i] << 24) | (bytes[i + 1] << 16) | (bytes[i + 2] << 8) | bytes[i + 3]);\n }\n return result;\n}\nexport class AES {\n constructor(key) {\n _AES_key.set(this, void 0);\n _AES_Kd.set(this, void 0);\n _AES_Ke.set(this, void 0);\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n __classPrivateFieldSet(this, _AES_key, new Uint8Array(key), \"f\");\n const rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new TypeError('invalid key size (must be 16, 24 or 32 bytes)');\n }\n // encryption round keys\n __classPrivateFieldSet(this, _AES_Ke, [], \"f\");\n // decryption round keys\n __classPrivateFieldSet(this, _AES_Kd, [], \"f\");\n for (let i = 0; i <= rounds; i++) {\n __classPrivateFieldGet(this, _AES_Ke, \"f\").push([0, 0, 0, 0]);\n __classPrivateFieldGet(this, _AES_Kd, \"f\").push([0, 0, 0, 0]);\n }\n const roundKeyCount = (rounds + 1) * 4;\n const KC = this.key.length / 4;\n // convert the key into ints\n const tk = convertToInt32(this.key);\n // copy values into round key arrays\n let index;\n for (let i = 0; i < KC; i++) {\n index = i >> 2;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[index][i % 4] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - index][i % 4] = tk[i];\n }\n // key expansion (fips-197 section 5.2)\n let rconpointer = 0;\n let t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (let i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n }\n else {\n for (let i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n tk[KC / 2] ^= (S[tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n for (let i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n // copy values into round key arrays\n let i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][c] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - r][c] = tk[i++];\n t++;\n }\n }\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (let r = 1; r < rounds; r++) {\n for (let c = 0; c < 4; c++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[tt & 0xFF]);\n }\n }\n }\n get key() { return __classPrivateFieldGet(this, _AES_key, \"f\").slice(); }\n encrypt(plaintext) {\n if (plaintext.length != 16) {\n throw new TypeError('invalid plaintext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Ke, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(plaintext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Ke, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T1[(t[i] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[t[(i + 3) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Ke, \"f\")[rounds][i];\n result[4 * i] = (S[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[t[(i + 3) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n decrypt(ciphertext) {\n if (ciphertext.length != 16) {\n throw new TypeError('invalid ciphertext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Kd, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(ciphertext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Kd, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T5[(t[i] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[t[(i + 1) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds][i];\n result[4 * i] = (Si[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[t[(i + 1) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n}\n_AES_key = new WeakMap(), _AES_Kd = new WeakMap(), _AES_Ke = new WeakMap();\n//# sourceMappingURL=aes.js.map","import { AES } from \"./aes.js\";\nexport class ModeOfOperation {\n constructor(name, key, cls) {\n if (cls && !(this instanceof cls)) {\n throw new Error(`${name} must be instantiated with \"new\"`);\n }\n Object.defineProperties(this, {\n aes: { enumerable: true, value: new AES(key) },\n name: { enumerable: true, value: name }\n });\n }\n}\n//# sourceMappingURL=mode.js.map","// Cipher Block Chaining\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CBC_iv, _CBC_lastBlock;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CBC extends ModeOfOperation {\n constructor(key, iv) {\n super(\"ECC\", key, CBC);\n _CBC_iv.set(this, void 0);\n _CBC_lastBlock.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CBC_iv, \"f\")); }\n encrypt(plaintext) {\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext.length);\n for (let i = 0; i < plaintext.length; i += 16) {\n for (let j = 0; j < 16; j++) {\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] ^= plaintext[i + j];\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.aes.encrypt(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\")), \"f\");\n ciphertext.set(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\"), i);\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n const plaintext = new Uint8Array(ciphertext.length);\n for (let i = 0; i < ciphertext.length; i += 16) {\n const block = this.aes.decrypt(ciphertext.subarray(i, i + 16));\n for (let j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j];\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] = ciphertext[i + j];\n }\n }\n return plaintext;\n }\n}\n_CBC_iv = new WeakMap(), _CBC_lastBlock = new WeakMap();\n//# sourceMappingURL=mode-cbc.js.map","// Cipher Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CFB_instances, _CFB_iv, _CFB_shiftRegister, _CFB_shift;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CFB extends ModeOfOperation {\n constructor(key, iv, segmentSize = 8) {\n super(\"CFB\", key, CFB);\n _CFB_instances.add(this);\n _CFB_iv.set(this, void 0);\n _CFB_shiftRegister.set(this, void 0);\n // This library currently only handles byte-aligned segmentSize\n if (!Number.isInteger(segmentSize) || (segmentSize % 8)) {\n throw new TypeError(\"invalid segmentSize\");\n }\n Object.defineProperties(this, {\n segmentSize: { enumerable: true, value: segmentSize }\n });\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CFB_shiftRegister, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CFB_iv, \"f\")); }\n encrypt(plaintext) {\n if (8 * plaintext.length % this.segmentSize) {\n throw new TypeError(\"invalid plaintext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n ciphertext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (8 * ciphertext.length % this.segmentSize) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const plaintext = new Uint8Array(ciphertext);\n for (let i = 0; i < plaintext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return plaintext;\n }\n}\n_CFB_iv = new WeakMap(), _CFB_shiftRegister = new WeakMap(), _CFB_instances = new WeakSet(), _CFB_shift = function _CFB_shift(data) {\n const segmentSize = this.segmentSize / 8;\n // Shift the register\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").subarray(segmentSize));\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(data.subarray(0, segmentSize), 16 - segmentSize);\n};\n//# sourceMappingURL=mode-cfb.js.map","// Counter Mode\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CTR_remaining, _CTR_remainingIndex, _CTR_counter;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CTR extends ModeOfOperation {\n constructor(key, initialValue) {\n super(\"CTR\", key, CTR);\n // Remaining bytes for the one-time pad\n _CTR_remaining.set(this, void 0);\n _CTR_remainingIndex.set(this, void 0);\n // The current counter\n _CTR_counter.set(this, void 0);\n __classPrivateFieldSet(this, _CTR_counter, new Uint8Array(16), \"f\");\n __classPrivateFieldGet(this, _CTR_counter, \"f\").fill(0);\n __classPrivateFieldSet(this, _CTR_remaining, __classPrivateFieldGet(this, _CTR_counter, \"f\"), \"f\"); // This will be discarded immediately\n __classPrivateFieldSet(this, _CTR_remainingIndex, 16, \"f\");\n if (initialValue == null) {\n initialValue = 1;\n }\n if (typeof (initialValue) === \"number\") {\n this.setCounterValue(initialValue);\n }\n else {\n this.setCounterBytes(initialValue);\n }\n }\n get counter() { return new Uint8Array(__classPrivateFieldGet(this, _CTR_counter, \"f\")); }\n setCounterValue(value) {\n if (!Number.isInteger(value) || value < 0 || value > Number.MAX_SAFE_INTEGER) {\n throw new TypeError(\"invalid counter initial integer value\");\n }\n for (let index = 15; index >= 0; --index) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[index] = value % 256;\n value = Math.floor(value / 256);\n }\n }\n setCounterBytes(value) {\n if (value.length !== 16) {\n throw new TypeError(\"invalid counter initial Uint8Array value length\");\n }\n __classPrivateFieldGet(this, _CTR_counter, \"f\").set(value);\n }\n increment() {\n for (let i = 15; i >= 0; i--) {\n if (__classPrivateFieldGet(this, _CTR_counter, \"f\")[i] === 255) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i] = 0;\n }\n else {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i]++;\n break;\n }\n }\n }\n encrypt(plaintext) {\n var _a, _b;\n const crypttext = new Uint8Array(plaintext);\n for (let i = 0; i < crypttext.length; i++) {\n if (__classPrivateFieldGet(this, _CTR_remainingIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _CTR_remaining, this.aes.encrypt(__classPrivateFieldGet(this, _CTR_counter, \"f\")), \"f\");\n __classPrivateFieldSet(this, _CTR_remainingIndex, 0, \"f\");\n this.increment();\n }\n crypttext[i] ^= __classPrivateFieldGet(this, _CTR_remaining, \"f\")[__classPrivateFieldSet(this, _CTR_remainingIndex, (_b = __classPrivateFieldGet(this, _CTR_remainingIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return crypttext;\n }\n decrypt(ciphertext) {\n return this.encrypt(ciphertext);\n }\n}\n_CTR_remaining = new WeakMap(), _CTR_remainingIndex = new WeakMap(), _CTR_counter = new WeakMap();\n//# sourceMappingURL=mode-ctr.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\nimport { logger } from \"./logger.js\";\nexport function looseArrayify(hexString) {\n if (typeof (hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\nexport function zpad(value, length) {\n value = String(value);\n while (value.length < length) {\n value = '0' + value;\n }\n return value;\n}\nexport function getPassword(password) {\n if (typeof (password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\nexport function spelunk(object, _path) {\n const match = _path.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);\n if (match == null) {\n return logger.throwArgumentError(\"invalid path\", \"path\", _path);\n }\n const path = match[1];\n const type = match[3];\n const reqd = (match[4] === \"!\");\n let cur = object;\n for (const comp of path.toLowerCase().split('.')) {\n // Search for a child object with a case-insensitive matching key\n if (Array.isArray(cur)) {\n if (!comp.match(/^[0-9]+$/)) {\n break;\n }\n cur = cur[parseInt(comp)];\n }\n else if (typeof (cur) === \"object\") {\n let found = null;\n for (const key in cur) {\n if (key.toLowerCase() === comp) {\n found = cur[key];\n break;\n }\n }\n cur = found;\n }\n else {\n cur = null;\n }\n if (cur == null) {\n break;\n }\n }\n if (reqd && cur == null) {\n logger.throwArgumentError(\"missing required value\", \"path\", path);\n }\n if (type && cur != null) {\n if (type === \"int\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9]+$/)) {\n return parseInt(cur);\n }\n else if (Number.isSafeInteger(cur)) {\n return cur;\n }\n }\n if (type === \"number\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9.]*$/)) {\n return parseFloat(cur);\n }\n }\n if (type === \"data\") {\n if (typeof (cur) === \"string\") {\n return looseArrayify(cur);\n }\n }\n if (type === \"array\" && Array.isArray(cur)) {\n return cur;\n }\n if (type === typeof (cur)) {\n return cur;\n }\n logger.throwArgumentError(`wrong type found for ${type} `, \"path\", path);\n }\n return cur;\n}\n/*\nexport function follow(object: any, path: string): null | string {\n let currentChild = object;\n\n for (const comp of path.toLowerCase().split('/')) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comp) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n if (matchingChild === null) { return null; }\n\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// \"path/to/something:type!\"\nexport function followRequired(data: any, path: string): string {\n const value = follow(data, path);\n if (value != null) { return value; }\n return logger.throwArgumentError(\"invalid value\", `data:${ path }`,\n JSON.stringify(data));\n}\n*/\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes) {\n const bytes = logger.getBytes(randomBytes, \"randomBytes\");\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const value = hexlify(bytes);\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n//# sourceMappingURL=utils.js.map","import { CBC, pkcs7Strip } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { pbkdf2 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, looseArrayify, spelunk } from \"./utils.js\";\nexport function isCrowdsaleJson(json) {\n try {\n const data = JSON.parse(json);\n if (data.encseed) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\n// See: https://github.com/ethereum/pyethsaletool\nexport function decryptCrowdsaleJson(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n // Ethereum Address\n const address = getAddress(spelunk(data, \"ethaddr:string!\"));\n // Encrypted Seed\n const encseed = looseArrayify(spelunk(data, \"encseed:string!\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n // Decrypt the seed\n const aesCbc = new CBC(key, iv);\n const seed = pkcs7Strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n return { address, privateKey: id(seedHex) };\n}\n//# sourceMappingURL=json-crowdsale.js.map","export function pkcs7Pad(data) {\n const padder = 16 - (data.length % 16);\n const result = new Uint8Array(data.length + padder);\n result.set(data);\n for (let i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n}\nexport function pkcs7Strip(data) {\n if (data.length < 16) {\n throw new TypeError('PKCS#7 invalid length');\n }\n const padder = data[data.length - 1];\n if (padder > 16) {\n throw new TypeError('PKCS#7 padding byte out of range');\n }\n const length = data.length - padder;\n for (let i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new TypeError('PKCS#7 invalid padding byte');\n }\n }\n return new Uint8Array(data.subarray(0, length));\n}\n//# sourceMappingURL=padding.js.map","// Output Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _OFB_iv, _OFB_lastPrecipher, _OFB_lastPrecipherIndex;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class OFB extends ModeOfOperation {\n constructor(key, iv) {\n super(\"OFB\", key, OFB);\n _OFB_iv.set(this, void 0);\n _OFB_lastPrecipher.set(this, void 0);\n _OFB_lastPrecipherIndex.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.iv, \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 16, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _OFB_iv, \"f\")); }\n encrypt(plaintext) {\n var _a, _b;\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i++) {\n if (__classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.aes.encrypt(__classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")), \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 0, \"f\");\n }\n ciphertext[i] ^= __classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")[__classPrivateFieldSet(this, _OFB_lastPrecipherIndex, (_b = __classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n return this.encrypt(ciphertext);\n }\n}\n_OFB_iv = new WeakMap(), _OFB_lastPrecipher = new WeakMap(), _OFB_lastPrecipherIndex = new WeakMap();\n//# sourceMappingURL=mode-ofb.js.map","import { CTR } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256, pbkdf2, randomBytes, scrypt, scryptSync } from \"@ethersproject/crypto\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, spelunk, uuidV4, zpad } from \"./utils.js\";\nimport { version } from \"./_version.js\";\nconst defaultPath = \"m/44'/60'/0'/0/0\";\nexport function isKeystoreJson(json) {\n try {\n const data = JSON.parse(json);\n const version = ((data.version != null) ? parseInt(data.version) : 0);\n if (version === 3) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\nfunction decrypt(data, key, ciphertext) {\n const cipher = spelunk(data, \"crypto.cipher:string\");\n if (cipher === \"aes-128-ctr\") {\n const iv = spelunk(data, \"crypto.cipherparams.iv:data!\");\n const aesCtr = new CTR(key, iv);\n return hexlify(aesCtr.decrypt(ciphertext));\n }\n return logger.throwError(\"unsupported cipher\", \"UNSUPPORTED_OPERATION\", {\n operation: \"decrypt\"\n });\n}\nfunction getAccount(data, _key) {\n const key = logger.getBytes(_key);\n const ciphertext = spelunk(data, \"crypto.ciphertext:data!\");\n const computedMAC = hexlify(keccak256(concat([key.slice(16, 32), ciphertext]))).substring(2);\n if (computedMAC !== spelunk(data, \"crypto.mac:string!\").toLowerCase()) {\n return logger.throwArgumentError(\"incorrect password\", \"password\", \"[ REDACTED ]\");\n }\n const privateKey = decrypt(data, key.slice(0, 16), ciphertext);\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") {\n check = \"0x\" + check;\n }\n if (getAddress(check) !== address) {\n logger.throwArgumentError(\"keystore address/privateKey mismatch\", \"address\", data.address);\n }\n }\n const account = { address, privateKey };\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n const version = spelunk(data, \"x-ethers.version:string\");\n if (version === \"0.1\") {\n const mnemonicKey = key.slice(32, 64);\n const mnemonicCiphertext = spelunk(data, \"x-ethers.mnemonicCiphertext:data!\");\n const mnemonicIv = spelunk(data, \"x-ethers.mnemonicCounter:data!\");\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n account.mnemonic = {\n path: (spelunk(data, \"x-ethers.path:string\") || defaultPath),\n locale: (spelunk(data, \"x-ethers.locale:string\") || \"en\"),\n entropy: hexlify(arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext)))\n };\n }\n return account;\n}\nfunction getKdfParams(data) {\n const kdf = spelunk(data, \"crypto.kdf:string\");\n if (kdf && typeof (kdf) === \"string\") {\n const throwError = function (name, value) {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n };\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const N = spelunk(data, \"crypto.kdfparams.n:int!\");\n const r = spelunk(data, \"crypto.kdfparams.r:int!\");\n const p = spelunk(data, \"crypto.kdfparams.p:int!\");\n // Check for all required parameters\n if (!N || !r || !p) {\n return throwError(\"kdf\", kdf);\n }\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) {\n return throwError(\"N\", N);\n }\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n return throwError(\"dklen\", dkLen);\n }\n return { name: \"scrypt\", salt, N, r, p, dkLen: 64 };\n }\n else if (kdf.toLowerCase() === \"pbkdf2\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const prf = spelunk(data, \"crypto.kdfparams.prf:string!\");\n const algorithm = prf.split(\"-\").pop();\n if (algorithm !== \"sha256\" && algorithm !== \"sha512\") {\n return throwError(\"prf\", prf);\n }\n const count = spelunk(data, \"crypto.kdfparams.c:int!\");\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return { name: \"pbkdf2\", salt, count, dkLen, algorithm };\n }\n }\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\nexport function decryptKeystoreJsonSync(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = scryptSync(password, salt, N, r, p, dkLen);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport async function decryptKeystoreJson(json, _password, progress) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n if (progress) {\n progress(0);\n await stall(0);\n }\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n if (progress) {\n progress(1);\n await stall(0);\n }\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = await scrypt(password, salt, N, r, p, dkLen, progress);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nexport async function encryptKeystoreJson(account, password, options, progressCallback) {\n // Check the address matches the private key\n //if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n // throw new Error(\"address/privateKey mismatch\");\n //}\n // Check the mnemonic (if any) matches the private key\n /*\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n */\n // The options are optional, so adjust the call as needed\n if (typeof (options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n const privateKey = logger.getBytes(account.privateKey, \"privateKey\");\n const passwordBytes = getPassword(password);\n /*\n let mnemonic: null | Mnemonic = null;\n let entropy: Uint8Array = null\n let path: string = null;\n let locale: string = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n mnemonic = Mnemonic.from(\n }\n */\n // Check/generate the salt\n const salt = (options.salt != null) ? logger.getBytes(options.salt, \"options.slat\") : randomBytes(32);\n // Override initialization vector\n const iv = (options.iv != null) ? logger.getBytes(options.iv, \"options.iv\") : randomBytes(16);\n if (iv.length !== 16) {\n logger.throwArgumentError(\"invalid options.iv\", \"options.iv\", options.iv);\n }\n // Override the uuid\n const uuidRandom = (options.uuid != null) ? logger.getBytes(options.uuid, \"options.uuid\") : randomBytes(16);\n if (uuidRandom.length !== 16) {\n logger.throwArgumentError(\"invalid options.uuid\", \"options.uuid\", options.iv);\n }\n if (uuidRandom.length !== 16) {\n throw new Error(\"invalid uuid\");\n }\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) {\n N = options.scrypt.N;\n }\n if (options.scrypt.r) {\n r = options.scrypt.r;\n }\n if (options.scrypt.p) {\n p = options.scrypt.p;\n }\n }\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n const _key = await scrypt(passwordBytes, salt, N, r, p, 64, progressCallback);\n const key = arrayify(_key);\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n // Encrypt the private key\n const aesCtr = new CTR(derivedKey, iv);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]));\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n Crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (account.mnemonic) {\n const client = (options.client != null) ? options.client : `ethers/${version}`;\n const path = account.mnemonic.path || defaultPath;\n const locale = account.mnemonic.locale || \"en\";\n const mnemonicKey = key.slice(32, 64);\n const entropy = logger.getBytes(account.mnemonic.entropy, \"account.mnemonic.entropy\");\n const mnemonicIv = randomBytes(16);\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\");\n const gethFilename = (\"UTC--\" + timestamp + \"--\" + data.address);\n data[\"x-ethers\"] = {\n client, gethFilename, path, locale,\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n version: \"0.1\"\n };\n }\n return JSON.stringify(data);\n}\n//# sourceMappingURL=json-keystore.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Wallet_mnemonic;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { randomBytes } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { BaseWallet } from \"./base-wallet.js\";\nimport { HDNodeWallet } from \"./hdwallet.js\";\nimport { decryptCrowdsaleJson, isCrowdsaleJson } from \"./json-crowdsale.js\";\nimport { decryptKeystoreJson, decryptKeystoreJsonSync, isKeystoreJson } from \"./json-keystore.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nfunction tryWallet(value) {\n try {\n if (!value || !value.signingKey) {\n return null;\n }\n const key = trySigningKey(value.signingKey);\n if (key == null || computeAddress(key.publicKey) !== value.address) {\n return null;\n }\n if (value.mnemonic) {\n const wallet = HDNodeWallet.fromMnemonic(value.mnemonic);\n if (wallet.privateKey !== key.privateKey) {\n return null;\n }\n }\n return value;\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\n// Try using value as mnemonic to derive the defaultPath HDodeWallet\nfunction tryMnemonic(value) {\n try {\n if (value == null || typeof (value.phrase) !== \"string\" ||\n typeof (value.password) !== \"string\" ||\n value.wordlist == null) {\n return null;\n }\n return HDNodeWallet.fromPhrase(value.phrase, value.password, null, value.wordlist);\n }\n catch (error) {\n console.log(error);\n }\n return null;\n}\nfunction trySigningKey(value) {\n try {\n if (!value || !isHexString(value.privateKey, 32)) {\n return null;\n }\n const key = value.privateKey;\n if (SigningKey.computePublicKey(key) !== value.publicKey) {\n return null;\n }\n return new SigningKey(key);\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport class Wallet extends BaseWallet {\n constructor(key, provider) {\n let signingKey = null;\n let mnemonic = null;\n // A normal private key\n if (typeof (key) === \"string\") {\n signingKey = new SigningKey(key);\n }\n // Try Wallet\n if (signingKey == null) {\n const wallet = tryWallet(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // Try Mnemonic, with the defaultPath wallet\n if (signingKey == null) {\n const wallet = tryMnemonic(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // A signing key\n if (signingKey == null) {\n signingKey = trySigningKey(key);\n }\n if (signingKey == null) {\n logger.throwArgumentError(\"invalid key\", \"key\", \"[ REDACTED ]\");\n }\n super(signingKey, provider);\n _Wallet_mnemonic.set(this, void 0);\n __classPrivateFieldSet(this, _Wallet_mnemonic, mnemonic, \"f\");\n }\n // Store this in a getter to reduce visibility in console.log\n get mnemonic() { return __classPrivateFieldGet(this, _Wallet_mnemonic, \"f\"); }\n connect(provider) {\n return new Wallet(this, provider);\n }\n async encrypt(password, options, progressCallback) {\n throw new Error(\"TODO\");\n }\n encryptSync(password, options) {\n throw new Error(\"TODO\");\n }\n static async fromEncryptedJson(json, password, progress) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = await decryptKeystoreJson(json, password, progress);\n }\n else if (isCrowdsaleJson(json)) {\n if (progress) {\n progress(0);\n await stall(0);\n }\n account = decryptCrowdsaleJson(json, password);\n if (progress) {\n progress(1);\n await stall(0);\n }\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static fromEncryptedJsonSync(json, password) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = decryptKeystoreJsonSync(json, password);\n }\n else if (isCrowdsaleJson(json)) {\n account = decryptCrowdsaleJson(json, password);\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static createRandom(provider, password, wordlist) {\n return new Wallet(Mnemonic.fromEntropy(randomBytes(16), password, wordlist), provider);\n }\n static fromMnemonic(mnemonic, provider) {\n return new Wallet(mnemonic, provider);\n }\n static fromPhrase(phrase, provider, password = \"\", wordlist) {\n return new Wallet(Mnemonic.fromPhrase(phrase, password, wordlist), provider);\n }\n}\n_Wallet_mnemonic = new WeakMap();\n//# sourceMappingURL=wallet.js.map","export const version = \"ethers@6.0.0-beta.6\";\n//# sourceMappingURL=_version.js.map"],"names":["async","resolveProperties","value","keys","Object","Promise","all","map","k","resolve","reduce","accum","v","index","checkType","type","types","split","t","trim","i","length","Error","defineProperties","target","values","defaults","key","fallback","undefined","defineProperty","enumerable","writable","_EventPayload_listener","__classPrivateFieldSet","this","receiver","state","kind","f","TypeError","has","call","set","__classPrivateFieldGet","get","EventPayload","constructor","emitter","listener","filter","off","getStore","store","setStore","isFrozen","isError","error","code","isCallException","WeakMap","_Logger_instances","_Logger_getBytes","_Logger_log","LogLevel","LogLevels","debug","default","info","warning","_logLevel","_globalLogger","_normalizeForms","form","normalize","check","String","fromCharCode","push","defineReadOnly","object","name","maxValue","ErrorConstructors","INVALID_ARGUMENT","NUMERIC_FAULT","RangeError","BUFFER_OVERRUN","Logger","version","add","makeError","message","details","JSON","stringify","join","throwError","throwArgumentError","argument","assert","condition","assertArgument","assertIntegerArgument","lower","upper","Number","isInteger","assertSafeUint53","operation","fault","assertNormalize","indexOf","assertPrivate","givenGuard","guard","className","method","assertArgumentCount","count","expectedCount","getBytes","getBytesCopy","getNumber","BigInt","e","getBigInt","args","DEBUG","INFO","warn","WARNING","static","logLevel","level","toLowerCase","globalLogger","WeakSet","copy","Uint8Array","match","result","offset","parseInt","substring","console","log","apply","logger","_TokenString_instances","_TokenString_offset","_TokenString_tokens","_TokenString_subTokenString","_ParamType_instances","_ParamType_walkAsync","FormatType","setify","items","Set","forEach","freeze","_kwVisib","KwVisib","_kwTypes","KwTypes","_kwModifiers","KwModifiers","Keywords","SimpleTokens","regexWhitespace","RegExp","regexNumber","regexIdentifier","regexType","TokenString","tokens","slice","clone","reset","popKeyword","allowed","top","peek","text","pop","popType","popParen","popParams","link","linkNext","peekKeyword","peekType","_a","toString","token","lex","brackets","commas","cur","depth","linkBack","suffix","allowSingle","included","consumeName","keyword","consumeKeywords","keywords","consumeParams","allowIndexed","ParamType","fromTokens","consumeGas","consumeEoi","from","to","assign","regexArrayType","verifyBasicType","size","_guard","internal","Symbol","for","baseType","indexed","components","arrayLength","arrayChildren","format","sighash","json","isTuple","c","parse","isArray","comp","full","isIndexable","walk","process","Array","promises","obj","isParamType","arrayMatch","comps","bracket","FragmentType","setValue","childType","param","then","Fragment","inputs","fromString","fromObject","ConstructorFragment","ErrorFragment","EventFragment","FunctionFragment","StructFragment","NamedFragment","super","joinParams","params","p","input","anonymous","event","payable","gas","stateMutability","outputs","function","constant","o","mutability","modifiers","consumeMutability","struct","BN_0","toBigInt","_value","toNumber","toHex","_width","width","toArray","hex","BN_1","fromTwos","toTwos","mask","_bits","bits","_FixedNumber_instances","_FixedNumber_value","_FixedNumber_checkFormat","_constructorGuard","NegativeOne","throwFault","zeros","getMultiplier","decimals","formatFixed","_decimals","multiplier","multiplierStr","negative","fraction","parseFixed","whole","wei","FixedFormat","constructorGuard","signed","_multiplier","defaultValue","FixedNumber","_isFixedNumber","addUnsafe","other","a","b","fromValue","subUnsafe","mulUnsafe","divUnsafe","floor","hasFraction","isNegative","ONE","toFormat","ceiling","round","factor","bump","BUMP","isZero","toHexString","toUnsafeFloat","parseFloat","fixedFormat","numeric","decimal","fromBytes","Alphabet","Lookup","getAlpha","letter","BN_58","encodeBase58","decodeBase58","names","formatUnits","unit","parseUnits","formatEther","parseEther","ether","isHexString","isBytesLike","BN_8","BN_255","arrayify","data","unshift","_noCopyArrayify","decodeBase64","textData","Buffer","encodeBase64","hexlify","bytes","quantity","concat","datas","d","dataLength","dataSlice","start","end","buffer","stripZerosLeft","zeroPad","left","fill","zeroPadValue","zeroPadBytes","_Result_instances","_Result_indices","_Result_throwError","_Writer_instances","_Writer_data","_Writer_dataLength","_Writer_writeData","_Reader_instances","_Reader_data","_Reader_offset","_Reader_peekBytes","Padding","passProperties","Result","Map","Proxy","prop","item","Reflect","getValue","wrapped","Coder","localName","dynamic","_throwError","Writer","appendWriter","writer","writeBytes","paddingOffset","writeValue","writeUpdatableValue","Reader","allowLoose","consumed","subReader","readBytes","loose","readValue","readIndex","alignedLength","Math","ceil","u32","arr","Uint32Array","byteOffset","byteLength","createView","DataView","rotr","word","shift","padStart","nextTick","nodeRequire","module","require","bind","setImmediate","setTimeout","asyncLoop","iters","tick","cb","ts","Date","now","diff","toBytes","str","TextEncoder","encode","utf8ToBytes","assertNumber","n","isSafeInteger","assertHash","hash","create","outputLen","blockLen","Hash","_cloneInto","checkOpts","def","_opts","prototype","wrapConstructor","hashConstructor","hashC","update","digest","tmp","HMAC","_key","finished","destroyed","iHash","pad","oHash","buf","digestInto","out","destroy","getPrototypeOf","hmac","pbkdf2","password","salt","opts","dkLen","DK","PRF","PRFSalt","_password","_salt","asyncTick","pbkdf2Init","prfW","view","u","ti","pos","Ti","subarray","setInt32","ui","pbkdf2Output","SHA2","padOffset","isLE","len","take","min","dataView","roundClean","setBigUint64","_32n","_u32_max","wh","wl","h","l","setUint32","oview","res","Chi","Maj","SHA256_K","IV","SHA256_W","SHA256","A","B","C","D","E","F","G","H","getUint32","W15","W2","s0","s1","T1","T2","sha256","U32_MASK64","fromBig","le","lst","Ah","Al","shrSH","s","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","SHA512_Kh","SHA512_Kl","u64.split","SHA512_W_H","SHA512_W_L","SHA512","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","u64.rotrSH","u64.shrSH","s0l","u64.rotrSL","u64.shrSL","W2h","W2l","s1h","u64.rotrBH","s1l","u64.rotrBL","SUMl","u64.add4L","SUMh","u64.add4H","sigma1h","sigma1l","CHIh","T1ll","u64.add5L","T1h","u64.add5H","T1l","sigma0h","sigma0l","MAJh","MAJl","u64.add","All","u64.add3L","u64.add3H","SHA512_256","SHA384","sha512","anyGlobal","self","window","global","getGlobal","crypto","msCrypto","createHash","algo","locked","_computeHmac","algorithm","_algo","createHmac","__computeHmac","computeHmac","_data","_","lock","register","func","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","R","x","y","j","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","u64.rotlBH","u64.rotlSH","rotlL","u64.rotlBL","u64.rotlSL","Keccak","enableXOF","rounds","posOut","state32","keccak","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","keccakP","finish","writeInto","xofInto","xof","gen","keccak_256","genShake","hashCons","msg","wrapConstructorWithOpts","_keccak256","__keccak256","keccak256","Rho","Id","Pi","idxL","idxR","shifts","shiftsL","idx","shiftsR","Kl","Kr","rotl","group","z","BUF","RIPEMD160","h0","h1","h2","h3","h4","al","ar","bl","br","cl","cr","dl","dr","el","er","rGroup","hbl","hbr","rl","rr","sl","sr","tl","tr","ripemd160","_ripemd160","noble_ripemd160","__ripemd160","_pbkdf2","iterations","keylen","pbkdf2Sync","__pbkdf2","_randomBytes","getRandomValues","crypto_random","__randomBytes","randomBytes","XorAndSalsa","prev","pi","ii","oi","y00","y01","y02","y03","y04","y05","y06","y07","y08","y09","y10","y11","y12","y13","y14","y15","x00","x01","x02","x03","x04","x05","x06","x07","x08","x09","x10","x11","x12","x13","x14","x15","BlockMix","r","head","tail","scryptInit","maxmem","N","onProgress","blockSize","blockSize32","memUsed","B32","V","blockMixCb","totalBlockMix","callbackPer","max","blockMixCnt","scryptOutput","lockedSync","lockedAsync","_scryptAsync","passwd","_nobleAsync","_scryptSync","_nobleSync","__scryptAsync","__scryptSync","scrypt","_passwd","progress","scryptSync","_sha256","_sha512","__sha256","__sha512","locked256","locked512","BN_36","getChecksumAddress","address","chars","expanded","charCodeAt","hashed","toUpperCase","ibanLookup","ibanChecksum","block","checksum","Base36","getAddress","fromBase36","getIcapAddress","base36","arrayifyInteger","_encode","payload","child","encodeRlp","hexlifyByte","unarrayifyInteger","_decodeChildren","childOffset","decoded","_decode","checkOffset","lengthLength","decodeRlp","getCreateAddress","tx","nonceHex","nonce","getCreate2Address","_from","_initCodeHash","initCodeHash","isAddressable","isAddress","resolveAddress","resolver","resolveName","_Typed_options","_gaurd","Typed","_typedSymbol","gaurd","options","minValue","isBigInt","isData","isString","tupleName","isTyped","AddressCoder","dereference","decode","reader","AnonymousCoder","coder","pack","coders","arrayValues","unique","staticWriter","dynamicWriter","updateFuncs","dynamicOffset","updateFunc","baseOffset","unpack","baseReader","offsetReader","fromItems","ArrayCoder","defaultChild","BooleanCoder","DynamicBytesCoder","BytesCoder","FixedBytesCoder","Empty","NullCoder","BN_MAX_UINT256","NumberCoder","maxUintValue","WordSize","bounds","UnicodeNormalizationForm","Utf8ErrorReason","ignoreFunc","reason","output","badCodepoint","BAD_PREFIX","UNEXPECTED_CONTINUE","OVERRUN","Utf8ErrorFuncs","ignore","replace","OVERLONG","getUtf8CodePoints","_bytes","onError","extraLength","overlongMask","nextChar","MISSING_CONTINUE","OUT_OF_RANGE","UTF16_SURROGATE","toUtf8Bytes","current","c2","pair","escapeChar","_toEscapedUtf8String","codePoint","_toUtf8String","codePoints","toUtf8String","toUtf8CodePoints","formatBytes32String","parseBytes32String","createTable","_func","lo","createRangeTable","hi","matchMap","ranges","range","Table_A_1_ranges","Table_B_1_flags","Table_B_2_ranges","Table_B_2_lut_abs","Table_B_2_lut_rel","Table_B_2_complex","Table_C_ranges","nameprep","codes","codesTableB2","codepoint","_nameprepTableB2","NFKC","StringCoder","TupleCoder","uniqueNames","_AbiCoder_instances","_AbiCoder_getCoder","paramTypeBytes","paramTypeNumber","defaultAbiCoder","getDefaultValue","id","Zeros","Partition","isValidName","namehash","partition","dnsEncode","messagePrefix","hashMessage","regexBytes","regexArray","_pack","solidityPacked","tight","solidityPackedKeccak256","solidityPackedSha256","_TypedDataEncoder_instances","_TypedDataEncoder_types","_TypedDataEncoder_fullTypes","_TypedDataEncoder_encoderCache","_TypedDataEncoder_getEncoder","padding","BN__1","hexTrue","hexFalse","domainFieldTypes","chainId","verifyingContract","domainFieldNames","checkString","domainChecks","getBaseEncoder","boundsUpper","boundsLower","hexPadRight","encodeType","fields","TypedDataEncoder","links","parents","subtypes","field","primaryTypes","primaryType","checkCircular","found","subtype","delete","st","sort","getEncoder","encoder","encodeData","hashStruct","_visit","callback","visit","domain","domainFields","EIP712Domain","hashDomain","ensCache","domainValues","domainTypes","typesWithDomain","subEncoder","encodedType","_Interface_instances","_Interface_errors","_Interface_events","_Interface_functions","_Interface_abiCoder","_Interface_getFunction","_Interface_getEvent","LogDescription","fragment","topic","signature","TransactionDescription","selector","ErrorDescription","Indexed","_isIndexed","PanicReasons","BuiltinErrors","Interface","fragments","abi","getAbiCoder","bucket","deploy","getFunctionName","getFunction","getEventName","getEvent","getError","getSelector","matching","getEventTopic","_decodeParams","_encodeParams","encodeDeploy","decodeErrorResult","encodeErrorResult","decodeFunctionData","encodeFunctionData","decodeFunctionResult","errorArgs","errorName","errorSignature","builtin","transaction","encodeFunctionResult","functionFragment","encodeFilterTopics","eventFragment","topics","encodeTopic","encodeEventLog","dataTypes","dataValues","decodeEventLog","eventTopic","nonIndexed","resultIndexed","resultNonIndexed","nonIndexedIndex","indexedIndex","parseTransaction","parseLog","parseError","hexData","forceUnique","lastValue","valueLength","allowOptions","splice","lastArg","matchStr","m","_FetchResponse_props","_FetchResponse_error","FetchResponse","statusCode","statusMessage","headers","body","request","bodyText","response","bodyJson","iterator","next","done","makeServerError","throwThrottleError","stall","throttle","getHeader","hasBody","ok","assertOk","getUrl","req","timeout","protocol","url","credentials","allowInsecureAuthentication","init","Headers","resp","fetch","arrayBuffer","status","statusText","_FetchRequest_props","FetchRequest","allowInsecure","gzip","bodyType","allowGzip","setHeader","clearHeaders","setCredentials","username","redirect","location","delay","duration","getTime","lockGateways","fetchData","connection","conn","attempts","throttleLimit","slotInterval","throttleSlotInterval","retryFunc","throttleRetry","preflightRequest","processResponse","t0","retryAfter","trunc","random","pow","setGateway","gateway","setIpfsGateway","setArGateway","_EnsResolver_supports2544","_EnsResolver_getResolver","HashZero","parseBytes","parseString","numPad","padded","bytesPad","encodeBytes","byteCount","getIpfsLink","MulticoinProviderPlugin","validate","proivder","supportsCoinType","coinType","matcherIpfs","matchers","EnsResolver","provider","catch","parameters","addrData","enableCcipRead","supportsWildcard","_fetch","getNetwork","formatter","callAddress","coinPlugin","plugin","plugins","encodeAddress","keyBytes","calldata","hexBytes","ipfs","scheme","swarm","_getAvatar","linkage","avatar","getText","owner","addr","tokenId","tokenOwner","balance","metadataUrl","metadata","imageUrl","image","currentName","network","ensPlugin","getPlugin","_Signature_props","BN_2","BN_27","BN_28","BN_35","Zero","Signature","networkV","legacyChainId","getChainId","yParity","yParityAndS","compactSerialized","serialized","toJSON","_type","bv","sig","getNormalizedV","_v","_3n","_8n","POW_2_256","CURVE","P","Gx","Gy","beta","weistrass","x2","mod","x3","USE_ENDOMORPHISM","JacobianPoint","Point","points","toInv","nums","scratch","inverted","invert","acc","num","reduceRight","invertBatch","toAffine","toAffineBatch","fromAffine","equals","X1","Y1","Z1","X2","Y2","Z2","Z1Z1","Z2Z2","U1","U2","S1","S2","negate","double","X3","Y3","Z3","ZERO","HH","HHH","subtract","multiplyUnsafe","scalar","normalizeScalar","P0","k1neg","k1","k2neg","k2","splitScalarEndo","k1p","k2p","precomputeWindow","W","windows","base","wNAF","affinePoint","BASE","_WINDOW_SIZE","precomputes","pointPrecomputes","normalizeZ","windowSize","maxNumber","shiftBy","wbits","pr","cached","abs","multiply","point","fake","f1p","f2p","invZ","iz1","iz2","iz3","ax","ay","_setWindowSize","isShort","bytesToNumber","isValidFieldElement","_6n","_11n","_22n","_23n","_44n","_88n","b2","b3","b6","pow2","b9","b11","b22","b44","b88","b176","b220","b223","t1","t2","sqrtMod","isYOdd","assertValidity","ensureBytes","header","fromCompressedHex","fromUncompressedHex","privateKey","normalizePrivateKey","msgHash","recovery","delta","truncateHash","fromDER","fromCompact","normalizeSignature","prefix","fromHex","numTo32bStr","rinv","u1","u2","Q","multiplyAndAddUnsafe","toRawBytes","isCompressed","hexToBytes","toHexX","toRawX","aP","bQ","sum","sliceDER","parseDERInt","bytesToHex","isUint8a","hexToNumber","sBytes","rBytesLeft","parseDERSignature","isWithinCurveOrder","hasHighS","HALF","normalizeS","toDERRawBytes","toDERHex","sHex","numberToHexUnpadded","rHex","rLen","sLen","toCompactRawBytes","toCompactHex","concatBytes","arrays","every","hexes","uint8a","array","hexByte","byte","isNaN","power","number","modulo","divNearest","POW_2_128","a1","b1","a2","c1","HmacDrbg","counter","utils","hmacSha256","hmacSync","hmacSha256Sync","incr","seed","reseedSync","generateSync","kmdToSig","kBytes","q","isPub","getSharedSecret","privateA","publicB","publicKey","bits2int","bits2octets","z1","z2","int2octets","signSync","privKey","extraEntropy","seedArgs","initSigArgs","drbg","recSig","canonical","der","recovered","finalizeSig","node","web","isValidPrivateKey","hashToPrivateKey","numTo32b","bytesLength","randomPrivateKey","subtle","messages","ckey","importKey","sign","sha256Sync","precompute","_SigningKey_privateKey","secp256k1.utils","SigningKey","computePublicKey","compressedPublicKey","sigDer","recid","secp256k1.signSync","secp256k1.Signature","computeShardSecret","pubKey","secp256k1.getSharedSecret","compressed","fromPrivateKey","secp256k1.getPublicKey","pub","secp256k1.Point","fromSignature","secp256k1.recoverPublicKey","p0","p1","pub0","pub1","accessSetify","storageKeys","storageKey","accessListify","localeCompare","computeAddress","recoverAddress","recoverPublicKey","_Transaction_props","BN_MAX_UINT","handleAddress","handleData","handleAccessList","handleNumber","handleUint","formatNumber","formatAccessList","_serializeLegacy","gasPrice","gasLimit","legacy","getChainIdV","_parseEipSignature","serialize","_serializeEip1559","maxPriorityFeePerGas","maxFeePerGas","accessList","_serializeEip2930","Transaction","typeName","unsignedHash","unsignedSerialized","fromPublicKey","isSigned","inferTypes","hasGasPrice","hasFee","hasAccessList","isLegacy","isBerlin","isLondon","_parseLegacy","_parseEip2930","_parseEip1559","_Block_transactions","_TransactionReceipt_logs","toJson","FeeData","Block","dummyProvider","transactions","timestamp","parentHash","difficulty","gasUsed","miner","extraData","baseFeePerGas","date","getTransaction","isMined","orphanedEvent","orphan","Log","transactionHash","blockHash","blockNumber","removed","transactionIndex","getBlock","getTransactionReceipt","removedEvent","TransactionReceipt","logs","contractAddress","logsBloom","cumulativeGasUsed","effectiveGasPrice","byzantium","root","fee","getBlockNumber","createRemovedTransactionFilter","reorderedEvent","createReorderedTransactionFilter","TransactionResponse","confirms","waitForTransaction","fail","blockTag","position","signedTx","blockHashOrBlockTag","_Formatter_format","_Formatter_baseBlock","Formatter","bigNumber","uint256","arrayOf","fromBlock","allowNull","toBlock","transactionRequest","transactionResponse","blockWithTransactions","boolean","receipt","filterLog","allowFalsish","ifFalse","ifNull","_hexstring","dataOrLength","altNames","srcKey","altKey","nv","storageSlot","NetworkPlugin","GasCostPlugin","effectiveBlock","costs","props","nullish","EnsPlugin","targetNetwork","MaxPriorityFeePlugin","priorityFee","_Network_props","Networks","defaultFormatter","Network","_chainId","attachPlugin","getPlugins","basename","computeIntrinsicGas","txBase","txCreate","txDataZero","txDataNonzero","txAccessListAddress","txAccessListStorageKey","networkFunc","custom","ensAddress","ensNetwork","nameOrChainId","existing","_PollingBlockSubscriber_instances","_PollingBlockSubscriber_provider","_PollingBlockSubscriber_poller","_PollingBlockSubscriber_interval","_PollingBlockSubscriber_blockNumber","_PollingBlockSubscriber_poll","_OnBlockSubscriber_provider","_OnBlockSubscriber_poll","_PollingOrphanSubscriber_filter","_PollingTransactionSubscriber_hash","_PollingEventSubscriber_instances","_PollingEventSubscriber_provider","_PollingEventSubscriber_filter","_PollingEventSubscriber_poller","_PollingEventSubscriber_blockNumber","_PollingEventSubscriber_poll","PollingBlockSubscriber","pollingInterval","_setTimeout","stop","_clearTimeout","pause","dropWhilePaused","resume","emit","OnBlockSubscriber","_poll","on","PollingOrphanSubscriber","PollingTransactionSubscriber","PollingEventSubscriber","getLogs","_AbstractProvider_instances","_AbstractProvider_subs","_AbstractProvider_plugins","_AbstractProvider_pausedState","_AbstractProvider_networkPromise","_AbstractProvider_anyNetwork","_AbstractProvider_performCache","_AbstractProvider_nextTimer","_AbstractProvider_timers","_AbstractProvider_disableCcipRead","_AbstractProvider_perform","_AbstractProvider_call","_AbstractProvider_getBlock","_AbstractProvider_hasSub","_AbstractProvider_getSub","getTag","UnmanagedSubscriber","concisify","getSubscription","_event","tag","addresses","addAddress","AbstractProvider","_network","disableCcipRead","urls","sender","errorMessages","href","errorMessage","_wrapTransaction","_detectNetwork","detectNetwork","networkPromise","expected","actual","priorityFeePlugin","getPriorityFee","_request","_tx","_getTransaction","_getBlockTag","_address","_blockTag","_position","lookup","addBlockTag","_filter","_getFilter","_getProvider","fromName","getResolver","getAvatar","reject","timer","clearTimeout","once","timerId","_b","paused","time","_forEachSubscriber","sub","subscriber","_getSubscriber","_recoverSubscriber","oldSub","newSub","started","listeners","total","removeAllListeners","_parseString","_parseBytes","perform","_perform","attempt","txSender","ccipArgs","urlsOffset","urlsLength","urlsData","parseOffchainLookup","ccipResult","ccipReadFetch","includeTransactions","emitArgs","subscription","addressableMap","nameMap","empty","_AbstractSigner_instances","_AbstractSigner_checkProvider","_AbstractSigner_fromify","_VoidSigner_instances","_VoidSigner_throwUnsupported","_WrappedSigner_signer","AbstractSigner","getBalanceOf","getTransactionCountOf","estimateGas","getTransactionCount","txObj","populateTransaction","broadcastTransaction","signTransaction","actions","VoidSigner","connect","WrappedSigner","signer","sendTransaction","signMessage","signTypedData","shown","showThrottleMessage","service","_FilterIdSubscriber_instances","_FilterIdSubscriber_provider","_FilterIdSubscriber_filterIdPromise","_FilterIdSubscriber_poller","_FilterIdSubscriber_network","_FilterIdSubscriber_poll","_FilterIdSubscriber_teardown","_FilterIdEventSubscriber_event","FilterIdSubscriber","_subscribe","_emitResults","_recover","filterId","send","filterIdPromise","FilterIdEventSubscriber","results","FilterIdPendingSubscriber","_JsonRpcApiProvider_nextId","_JsonRpcApiProvider_options","_JsonRpcProvider_connect","_JsonRpcProvider_pollingInterval","Primitive","deepCopy","getLowerCase","defaultOptions","polling","batchMaxSize","batchStallTime","JsonRpcSigner","getFeeData","_to","hexTx","getRpcTransaction","sendUncheckedTransaction","timeouts","checkTx","_message","populated","resolveNames","getPayload","JsonRpcApiProvider","_getOptions","_setOptions","prepareRequest","jsonrpc","accounts","account","dstKey","getRpcRequest","signedTransaction","getRpcError","spelunkData","_spelunkMessage","spelunkMessage","feeData","JsonRpcProvider","isPollable","StaticJsonRpcProvider","defaultApiKey","AnkrProvider","apiKey","getConnection","getHost","isCommunityResource","AlchemyProvider","CloudflareProvider","EtherscanProvider","communityApiKey","getBaseUrl","baseUrl","query","getPostUrl","getPostData","apikey","post","_getTransactionPostData","maxFeePerGs","_checkError","action","txhash","postData","ethusd","defaultProjectId","InfuraProvider","projectId","projectSecret","defaultAppIds","homestead","ropsten","rinkeby","goerli","normalizeApiKey","_appId","applicationSecretKey","loadBalancer","community","applicationId","PocketProvider","_secretKey","_loadBalancer","_FallbackProvider_instances","_FallbackProvider_configs","_FallbackProvider_height","_FallbackProvider_initialSyncPromise","_FallbackProvider_getNextConfig","_FallbackProvider_addRunner","_FallbackProvider_initialSync","_FallbackProvider_checkQuorum","_FallbackProvider_waitForQuorum","defaultConfig","stallTimeout","priority","weight","defaultState","requests","lateResponses","errorResponses","outOfSync","unsupportedEvents","rollingDuration","score","_updateNumber","_totalTime","checkQuorum","quorum","tally","normal","bestResult","bestWeight","getMedian","mid","FallbackProvider","providers","eventQuorum","eventWorkers","providerConfigs","running","runner","configs","allConfigs","shuffle","config","didBump","staller","dt","initialSync","waitForSync","height","mode","getFuzzyMode","interesting","newRunners","race","_WebSocket","WebSocket","_SocketSubscriber_provider","_SocketSubscriber_filter","_SocketSubscriber_filterId","_SocketSubscriber_paused","_SocketSubscriber_emitPromise","_SocketEventSubscriber_logFilter","_SocketEventSubscriber_formatter","_SocketProvider_callbacks","_SocketProvider_ready","_SocketProvider_subs","_SocketProvider_pending","SocketSubscriber","_register","_handleMessage","emitPromise","_emit","SocketBlockSubscriber","SocketPendingSubscriber","SocketEventSubscriber","logFilter","SocketProvider","pending","promise","_write","_WebSocketProvider_websocket","WebSocketProvider","websocket","onopen","_start","onmessage","_processMessage","getDefaultProvider","alchemy","ankr","cloudflare","etherscan","infura","pocket","secretKey","appId","IpcSocketProvider","_ContractTransactionReceipt_interface","_ContractTransactionResponse_interface","EventLog","iface","interface","eventName","eventSignature","ContractTransactionReceipt","ContractTransactionResponse","wait","ContractEventPayload","contract","_log","_PreparedTopicFilter_filter","canResolve","PreparedTopicFilter","getRunner","resolvedArgs","walkAsync","getTopicFilter","feature","getProvider","copyOverrides","arg","overrides","bigIntKeys","numberKeys","enableCcipReadEnabled","customData","copyRequest","WrappedMethod","Function","_WrappedMethodBase","_contract","thisArg","getFragment","staticCall","_runner","resolveArgs","staticCallResult","WrappedEvent","_WrappedEventBase","internalValues","getInternal","getSubTag","hasSub","subs","getSub","lastEmit","resultPromise","passArgs","BaseContract","_deployTx","addrPromise","deployTx","filters","_prop","getCode","deploymentTransaction","getDeployedCode","checkCode","Contract","_ContractBase","subsChrs","Word","unfold","words","sep","initial","decodeOwl","clumps","leftover","semi","Wordlist","locale","mnemonic","_WordlistOwl_instances","_WordlistOwl_data","_WordlistOwl_checksum","_WordlistOwl_words","_WordlistOwl_loadWords","WordlistOwl","_decodeWords","getWord","getWordIndex","langEn","wordlists","en","_WordlistOwlA_accent","WordlistOwlA","accent","_accent","accents","posOffset","positions","flood","decodeBits","charCode","regex","decodeOwlA","getUpperMask","mnemonicToEntropy","wordlist","entropy","bit","entropyBits","checksumMask","entropyToMnemonic","indices","remainingBits","checksumBits","Mnemonic","phrase","computeSeed","NFKD","_entropy","_BaseWallet_signingKey","BaseWallet","signingKey","btx","_HDNodeWallet_fromSeed","_HDNodeWalletManager_root","defaultPath","MasterSecret","zpad","encodeBase58Check","ser_I","chainCode","I","IL","IR","derivePath","path","component","deriveChild","HDNodeWallet","parentFingerprint","fingerprint","extendedKey","hasPath","neuter","HDNodeVoidWallet","_index","ki","fromPhrase","fromEntropy","_seed","Ki","_addPoints","HDNodeWalletManager","getSigner","getAccountPath","_AES_key","_AES_Kd","_AES_Ke","numberOfRounds","rcon","S","Si","T3","T4","T5","T6","T7","T8","U3","U4","convertToInt32","AES","roundKeyCount","KC","tk","tt","rconpointer","encrypt","plaintext","decrypt","ciphertext","ModeOfOperation","cls","aes","_CBC_iv","_CBC_lastBlock","CBC","iv","_CTR_remaining","_CTR_remainingIndex","_CTR_counter","CTR","initialValue","setCounterValue","setCounterBytes","MAX_SAFE_INTEGER","increment","crypttext","looseArrayify","hexString","getPassword","spelunk","_path","reqd","isCrowdsaleJson","encseed","decryptCrowdsaleJson","encryptedSeed","padder","pkcs7Strip","seedHex","isKeystoreJson","getAccount","mnemonicKey","mnemonicCiphertext","mnemonicIv","mnemonicAesCtr","getKdfParams","kdf","prf","_Wallet_mnemonic","trySigningKey","Wallet","wallet","fromMnemonic","tryWallet","tryMnemonic","progressCallback","encryptSync","decryptKeystoreJson","decryptKeystoreJsonSync"],"mappings":"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AM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CC,GAAK,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAEhgDjmD,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FimD,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAE1/FC,GAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAE1/Fh3B,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/Fg3B,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,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"} \ No newline at end of file diff --git a/packages/ethers/dist/ethers.umd.min.js b/packages/ethers/dist/ethers.umd.min.js index fe81159d9..c14b1917e 100644 --- a/packages/ethers/dist/ethers.umd.min.js +++ b/packages/ethers/dist/ethers.umd.min.js @@ -1,6 +1,6 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ethers={})}(this,(function(t){"use strict";async function e(t){const e=Object.keys(t);return(await Promise.all(e.map((e=>Promise.resolve(t[e]))))).reduce(((t,r,n)=>(t[e[n]]=r,t)),{})}function r(t,e){const r=e.split("|").map((t=>t.trim()));for(let n=0;n{try{if("test"!=="test".normalize(e))throw new Error("bad");if("NFD"===e){const t=String.fromCharCode(233).normalize("NFD");if(t!==String.fromCharCode(101,769))throw new Error("broken")}t.push(e)}catch(t){}return t}),[]);function E(t,e,r){Object.defineProperty(t,e,{enumerable:!0,writable:!1,value:r})}const A=9007199254740991,k={};k.INVALID_ARGUMENT=TypeError,k.NUMERIC_FAULT=RangeError,k.BUFFER_OVERRUN=RangeError;class T{constructor(t){f.add(this),E(this,"version",t||"_")}makeError(t,e,r){{const s=[];if(r)for(const t in r){const e=r[t];try{s.push(t+"="+JSON.stringify(e))}catch(n){s.push(t+"=[could not serialize object]")}}s.push(`code=${e}`),s.push(`version=${this.version}`),s.length&&(t+=" ("+s.join(", ")+")")}const n=new(k[e]||Error)(t);if(E(n,"code",e),r)for(const t in r)E(n,t,r[t]);return n}throwError(t,e,r){throw this.makeError(t,e,r)}throwArgumentError(t,e,r){return this.throwError(t,"INVALID_ARGUMENT",{argument:e,value:r})}assert(t,e,r,n){t||this.throwError(e,r||"UNKNOWN_ERROR",n)}assertArgument(t,e,r,n){return this.assert(t,e,"INVALID_ARGUMENT",{argument:r,value:n})}assertIntegerArgument(t,e,r,n){let s=null;"number"!=typeof e?s="expected a number":Number.isInteger(e)?(null!=r&&en)&&(s="value is out of range"):s="invalid integer",s&&this.throwArgumentError(s,t,e)}assertSafeUint53(t,e){this.assertArgument("number"==typeof t,"invalid number","value",t),null==e&&(e="value not safe");const r="assertSafeInteger";this.assert(t>=0&&t<9007199254740991,e,"NUMERIC_FAULT",{operation:r,fault:"out-of-safe-range",value:t}),this.assert(t%1==0,e,"NUMERIC_FAULT",{operation:r,fault:"non-integer",value:t})}assertNormalize(t){-1===v.indexOf(t)&&this.throwError("platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:t}})}assertPrivate(t,e,r=""){if(t!==e){let t=r,e="new";r&&(t+=".",e+=" "+r),this.throwError(`private constructor; use ${t}from* methods`,"UNSUPPORTED_OPERATION",{operation:e})}}assertArgumentCount(t,e,r=""){r&&(r=": "+r),this.assert(t>=e,"missing arguemnt"+r,"MISSING_ARGUMENT",{count:t,expectedCount:e}),this.assert(t>=e,"too many arguemnts"+r,"UNEXPECTED_ARGUMENT",{count:t,expectedCount:e})}getBytes(t,e){return w(this,f,"m",d).call(this,t,e,!1)}getBytesCopy(t,e){return w(this,f,"m",d).call(this,t,e,!0)}getNumber(t,e){switch(typeof t){case"bigint":return(t<-A||t>A)&&this.throwArgumentError("overflow",e||"value",t),Number(t);case"number":return Number.isInteger(t)?(t<-A||t>A)&&this.throwArgumentError("overflow",e||"value",t):this.throwArgumentError("underflow",e||"value",t),t;case"string":try{return this.getNumber(BigInt(t),e)}catch(r){this.throwArgumentError(`invalid numeric string: ${r.message}`,e||"value",t)}}return this.throwArgumentError("invalid numeric value",e||"value",t)}getBigInt(t,e){switch(typeof t){case"bigint":return t;case"number":return Number.isInteger(t)?(t<-A||t>A)&&this.throwArgumentError("overflow",e||"value",t):this.throwArgumentError("underflow",e||"value",t),BigInt(t);case"string":try{return BigInt(t)}catch(r){this.throwArgumentError(`invalid BigNumberish string: ${r.message}`,e||"value",t)}}return this.throwArgumentError("invalid BigNumberish value",e||"value",t)}debug(...t){w(this,f,"m",p).call(this,g.DEBUG,t)}info(...t){w(this,f,"m",p).call(this,g.INFO,t)}warn(...t){w(this,f,"m",p).call(this,g.WARNING,t)}static globalLogger(){return b||(b=new T("@ethersproject/logger@6.0.0-beta.3")),b}static setLogLevel(t){const e=m[t.toLowerCase()];null!=e?y=e:T.globalLogger().warn("invalid log level - "+t)}}f=new WeakSet,d=function(t,e,r){if(t instanceof Uint8Array)return r?new Uint8Array(t):t;if("string"==typeof t&&t.match(/^0x([0-9a-f][0-9a-f])*$/i)){const e=new Uint8Array((t.length-2)/2);let r=2;for(let n=0;nm[r]||console.log.apply(console,e)},T.LogLevels=g;const P=new T("@ethersproject/abi@6.0.0-beta.3");var N,x,O,I,S,R,B,C=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},_=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function F(t){const e=new Set;return t.forEach((t=>e.add(t))),Object.freeze(e)}!function(t){t.sighash="sighash",t.minimal="minimal",t.full="full",t.json="json"}(B||(B={}));const U="constant external internal payable private public pure view",L=F(U.split(" ")),D="constructor error event function struct",M=F(D.split(" ")),j="calldata memory storage payable indexed",G=F(j.split(" ")),$=F([D,j,"tuple returns",U].join(" ").split(" ")),z={"(":"OPEN_PAREN",")":"CLOSE_PAREN","[":"OPEN_BRACKET","]":"CLOSE_BRACKET",",":"COMMA","@":"AT"},W=new RegExp("^(\\s*)"),H=new RegExp("^([0-9]+)"),V=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)"),K=new RegExp("^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))");class J{constructor(t){N.add(this),x.set(this,void 0),O.set(this,void 0),C(this,x,0,"f"),C(this,O,t.slice(),"f")}get offset(){return _(this,x,"f")}get length(){return _(this,O,"f").length-_(this,x,"f")}clone(){return new J(_(this,O,"f"))}reset(){C(this,x,0,"f")}popKeyword(t){const e=this.peek();if("KEYWORD"!==e.type||!t.has(e.text))throw new Error(`expected keyword ${e.text}`);return this.pop().text}popType(t){if(this.peek().type!==t)throw new Error(`expected ${t}; got ${JSON.stringify(this.peek())}`);return this.pop().text}popParen(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=_(this,N,"m",I).call(this,_(this,x,"f")+1,t.match+1);return C(this,x,t.match+1,"f"),e}popParams(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=[];for(;_(this,x,"f")=_(this,O,"f").length)throw new Error("out-of-bounds");return _(this,O,"f")[_(this,x,"f")]}peekKeyword(t){const e=this.peekType("KEYWORD");return null!=e&&t.has(e)?e:null}peekType(t){if(0===this.length)return null;const e=this.peek();return e.type===t?e.text:null}pop(){var t;const e=this.peek();return C(this,x,(t=_(this,x,"f"),++t),"f"),e}toString(){const t=[];for(let e=_(this,x,"f");e<_(this,O,"f").length;e++){const r=_(this,O,"f")[e];t.push(`${r.type}:${r.text}`)}return``}}function q(t){const e=[],r=e=>{const r=i0&&"NUMBER"===e[e.length-1].type){const r=e.pop().text;t=r+t,e[e.length-1].value=P.getNumber(r)}if(0===e.length||"BRACKET"!==e[e.length-1].type)throw new Error("missing opening bracket");e[e.length-1].text+=t}}else if(a=o.match(V),a){if(c.text=a[1],i+=c.text.length,$.has(c.text)){c.type="KEYWORD";continue}if(c.text.match(K)){c.type="TYPE";continue}c.type="ID"}else{if(a=o.match(H),!a)throw new Error(`unexpected token ${JSON.stringify(o[0])} at position ${i}`);c.text=a[1],c.type="NUMBER",i+=c.text.length}}return new J(e.map((t=>Object.freeze(t))))}function X(t,e){let r=[];for(const n in e.keys())t.has(n)&&r.push(n);if(r.length>1)throw new Error(`conflicting types: ${r.join(", ")}`)}function Y(t,e){if(e.peekKeyword(M)){const r=e.pop().text;if(r!==t)throw new Error(`expected ${t}, got ${r}`)}return e.popType("ID")}function Z(t,e){const r=new Set;for(;;){const n=t.peekType("KEYWORD");if(null==n||e&&!e.has(n))break;if(t.pop(),r.has(n))throw new Error(`duplicate keywords: ${JSON.stringify(n)}`);r.add(n)}return Object.freeze(r)}function Q(t,e){return t.popParams().map((t=>at.fromTokens(t,e)))}function tt(t){if(t.peekType("AT")){if(t.pop(),t.peekType("NUMBER"))return P.getBigInt(t.pop().text);throw new Error("invalid gas")}return null}function et(t){if(t.length)throw new Error(`unexpected tokens: ${t.toString()}`)}x=new WeakMap,O=new WeakMap,N=new WeakSet,I=function(t=0,e=0){return new J(_(this,O,"f").slice(t,e).map((e=>Object.freeze(Object.assign({},e,{match:e.match-t,linkBack:e.linkBack-t,linkNext:e.linkNext-t})))))};const rt=new RegExp(/^(.*)\[([0-9]*)\]$/);function nt(t){const e=t.match(K);if(!e)return P.throwArgumentError("invalid type","type",t);if("uint"===t)return"uint256";if("int"===t)return"int256";if(e[2]){const r=parseInt(e[2]);(0===r||r>32)&&P.throwArgumentError("invalid bytes length","type",t)}else if(e[3]){const r=parseInt(e[3]);(0===r||r>256||r%8)&&P.throwArgumentError("invalid numeric width","type",t)}return t}const st={},it=Symbol.for("_ethers_internal"),ot="_ParamTypeInternal";class at{constructor(t,e,r,s,i,o,a,c){if(S.add(this),P.assertPrivate(t,st,"ParamType"),Object.defineProperty(this,it,{value:ot}),o&&(o=Object.freeze(o.slice())),"array"===s){if(null==a||null==c)throw new Error("")}else if(null!=a||null!=c)throw new Error("");if("tuple"===s){if(null==o)throw new Error("")}else if(null!=o)throw new Error("");n(this,{name:e,type:r,baseType:s,indexed:i,components:o,arrayLength:a,arrayChildren:c})}format(t=B.sighash){if(B[t]||P.throwArgumentError("invalid format type","format",t),t===B.json){let e={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(e.indexed=this.indexed),this.isTuple()&&(e.components=this.components.map((e=>JSON.parse(e.format(t))))),JSON.stringify(e)}let e="";return this.isArray()?(e+=this.arrayChildren.format(t),e+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`):this.isTuple()?(t!==B.sighash&&(e+=this.type),e+="("+this.components.map((e=>e.format(t))).join(t===B.full?", ":",")+")"):e+=this.type,t!==B.sighash&&(!0===this.indexed&&(e+=" indexed"),t===B.full&&this.name&&(e+=" "+this.name)),e}static isArray(t){return t&&"array"===t.baseType}isArray(){return"array"===this.baseType}isTuple(){return"tuple"===this.baseType}isIndexable(){return null!=this.indexed}walk(t,e){if(this.isArray()){if(!Array.isArray(t))throw new Error("invlaid array value");if(-1!==this.arrayLength&&t.length!==this.arrayLength)throw new Error("array is wrong length");return t.map((t=>this.arrayChildren.walk(t,e)))}if(this.isTuple()){if(!Array.isArray(t))throw new Error("invlaid tuple value");if(t.length!==this.components.length)throw new Error("array is wrong length");return t.map(((t,r)=>this.components[r].walk(t,e)))}return e(this.type,t)}async walkAsync(t,e){const r=[],n=[t];return _(this,S,"m",R).call(this,r,t,e,(t=>{n[0]=t})),r.length&&await Promise.all(r),n[0]}static from(t,e){if(at.isParamType(t))return t;if("string"==typeof t)return at.fromTokens(q(t),e);if(t instanceof J)return at.fromTokens(t,e);const r=t.name;!r||"string"==typeof r&&r.match(V)||P.throwArgumentError("invalid name","obj.name",r);let n=t.indexed;null!=n&&(e||P.throwArgumentError("parameter cannot be indexed","obj.indexed",t.indexed),n=!!n);let s=t.type,i=s.match(rt);if(i){const e=i[2],o=at.from({type:i[1],components:t.components});return new at(st,r,s,"array",n,null,e,o)}if("tuple("===s.substring(0,5)||"("===s[0]){const e=null!=t.components?t.components.map((t=>at.from(t))):null;return new at(st,r,s,"tuple",n,e,null,null)}return s=nt(t.type),new at(st,r,s,s,n,null,null,null)}static fromObject(t,e){throw new Error("@TODO")}static fromTokens(t,e){let r="",n="",s=null;Z(t,F(["tuple"])).has("tuple")||t.peekType("OPEN_PAREN")?(n="tuple",s=t.popParams().map((t=>at.from(t))),r=`tuple(${s.map((t=>t.format())).join(",")})`):(r=nt(t.popType("TYPE")),n=r);let i=null,o=null;for(;t.length&&t.peekType("BRACKET");){const e=t.pop();i=new at(st,"",r,n,null,s,o,i),o=e.value,r+=e.text,n="array",s=null}let a=null;if(Z(t,G).has("indexed")){if(!e)throw new Error("");a=!0}const c=t.peekType("ID")?t.pop().text:"";if(t.length)throw new Error("leftover tokens");return new at(st,c,r,n,a,s,o,i)}static isParamType(t){return t&&t[it]===ot}}var ct;S=new WeakSet,R=function t(e,r,n,s){if(this.isArray()){if(!Array.isArray(r))throw new Error("invlaid array value");if(-1!==this.arrayLength&&r.length!==this.arrayLength)throw new Error("array is wrong length");const i=this.arrayChildren,o=r.slice();return o.forEach(((r,s)=>{_(i,S,"m",t).call(i,e,r,n,(t=>{o[s]=t}))})),void s(o)}if(this.isTuple()){const i=this.components;let o;if(Array.isArray(r))o=r.slice();else{if(null==r||"object"!=typeof r)throw new Error("invlaid tuple value");o=i.map((t=>{if(!t.name)throw new Error("cannot use object value with unnamed components");if(!(t.name in r))throw new Error(`missing value for component ${t.name}`);return r[t.name]}))}if(r.length!==this.components.length)throw new Error("array is wrong length");return o.forEach(((r,s)=>{var a;_(a=i[s],S,"m",t).call(a,e,r,n,(t=>{o[s]=t}))})),void s(o)}const i=n(this.type,r);i.then?e.push(async function(){s(await i)}()):s(i)},function(t){t.constructor="constructor",t.error="error",t.event="event",t.function="function",t.struct="struct"}(ct||(ct={}));class lt{constructor(t,e,r){P.assertPrivate(t,st,"Fragment"),n(this,{type:e,inputs:r=Object.freeze(r.slice())})}static from(t){if("string"==typeof t)return this.fromString(t);if(t instanceof J)return this.fromTokens(t);if("object"==typeof t)return this.fromObject(t);throw new Error(`unsupported type: ${t}`)}static fromObject(t){switch(t.type){case"constructor":return pt.fromObject(t);case"error":return ft.fromObject(t);case"event":return dt.fromObject(t);case"function":return gt.fromObject(t);case"struct":return wt.fromObject(t)}throw new Error("not implemented yet")}static fromString(t){try{lt.from(JSON.parse(t))}catch(t){}return lt.fromTokens(q(t))}static fromTokens(t){const e=t.popKeyword(M);switch(e){case"constructor":return pt.fromTokens(t);case"error":return ft.fromTokens(t);case"event":return dt.fromTokens(t);case"function":return gt.fromTokens(t);case"struct":return wt.fromTokens(t)}throw new Error(`unsupported type: ${e}`)}static isConstructor(t){return t&&"constructor"===t.type}static isError(t){return t&&"error"===t.type}static isEvent(t){return t&&"event"===t.type}static isFunction(t){return t&&"function"===t.type}static isStruct(t){return t&&"struct"===t.type}}class ut extends lt{constructor(t,e,r,s){super(t,e,s),s=Object.freeze(s.slice()),n(this,{name:r})}}function ht(t,e){return"("+e.map((e=>e.format(t))).join(t===B.full?", ":",")+")"}class ft extends ut{constructor(t,e,r){super(t,ct.error,e,r)}format(t=B.sighash){if(B[t]||P.throwArgumentError("invalid format type","format",t),t===B.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[];return t!==B.sighash&&e.push("error"),e.push(this.name+ht(t,this.inputs)),e.join(" ")}static fromString(t){return ft.fromTokens(q(t))}static fromTokens(t){const e=Y("error",t),r=Q(t);return et(t),new ft(st,e,r)}}class dt extends ut{constructor(t,e,r,s){super(t,ct.event,e,r),n(this,{anonymous:s})}format(t=B.sighash){if(B[t]||P.throwArgumentError("invalid format type","format",t),t===B.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[];return t!==B.sighash&&e.push("event"),e.push(this.name+ht(t,this.inputs)),t!==B.sighash&&this.anonymous&&e.push("anonymous"),e.join(" ")}static fromString(t){return dt.fromTokens(q(t))}static fromTokens(t){const e=Y("event",t),r=Q(t,!0),n=!!Z(t,F(["anonymous"])).has("anonymous");return et(t),new dt(st,e,r,n)}}class pt extends lt{constructor(t,e,r,s,i){super(t,e,r),n(this,{payable:s,gas:i})}format(t=B.sighash){if(B[t]||P.throwArgumentError("invalid format type","format",t),t===B.sighash&&P.throwError("cannot format a constructor for sighash","UNSUPPORTED_OPERATION",{operation:"format(sighash)"}),t===B.json)return JSON.stringify({type:"constructor",stateMutability:this.payable?"payable":"undefined",payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[`constructor${ht(t,this.inputs)}`];return e.push(this.payable?"payable":"nonpayable"),null!=this.gas&&e.push(`@${this.gas.toString()}`),e.join(" ")}static fromString(t){return pt.fromTokens(q(t))}static fromObject(t){throw new Error("TODO")}static fromTokens(t){Z(t,F(["constructor"]));const e=Q(t),r=!!Z(t,F(["payable"])).has("payable"),n=tt(t);return et(t),new pt(st,ct.constructor,e,r,n)}}class gt extends ut{constructor(t,e,r,s,i,o){super(t,ct.function,e,s);n(this,{constant:"view"===r||"pure"===r,gas:o,outputs:i=Object.freeze(i.slice()),payable:"payable"===r,stateMutability:r})}format(t=B.sighash){if(B[t]||P.throwArgumentError("invalid format type","format",t),t===B.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map((e=>JSON.parse(e.format(t)))),outputs:this.outputs.map((e=>JSON.parse(e.format(t))))});const e=[];return t!==B.sighash&&e.push("function"),e.push(this.name+ht(t,this.inputs)),t!==B.sighash&&("nonpayable"!==this.stateMutability&&e.push(this.stateMutability),this.outputs&&this.outputs.length&&(e.push("returns"),e.push(ht(t,this.outputs))),null!=this.gas&&e.push(`@${this.gas.toString()}`)),e.join(" ")}static fromString(t){return gt.fromTokens(q(t))}static fromTokens(t){const e=Y("function",t),r=Q(t),n=function(t){let e=Z(t,L);return X(e,F("constant payable nonpayable".split(" "))),X(e,F("pure view payable nonpayable".split(" "))),e.has("view")?"view":e.has("pure")?"pure":e.has("payable")?"payable":e.has("nonpayable")?"nonpayable":e.has("constant")?"view":"nonpayable"}(t);let s=[];Z(t,F(["returns"])).has("returns")&&(s=Q(t));const i=tt(t);return et(t),new gt(st,e,n,r,s,i)}}class wt extends ut{format(){throw new Error("@TODO")}static fromString(t){return wt.fromTokens(q(t))}static fromTokens(t){const e=Y("struct",t),r=Q(t);return et(t),new wt(st,ct.struct,e,r)}}const mt=new T("@ethersproject/math@6.0.0-beta.3"),yt=9007199254740991,bt="0123456789abcdef",vt=BigInt(0);function Et(t){if(t instanceof Uint8Array){let e="0x0";for(const r of t)e+=bt[r>>4],e+=bt[15&r];return BigInt(e)}return mt.getBigInt(t,"value")}function At(t){const e=Et(t);return(e<-yt||e>yt)&&mt.throwArgumentError("overflow","value",t),Number(e)}function kt(t,e){const r=mt.getBigInt(t,"value");if(r<0)throw new Error("cannot convert negative value to hex");let n=r.toString(16);if(null==e)n.length%2&&(n="0"+n);else{const t=mt.getNumber(e,"width");if(2*t>n-Nt){return-((~r&(Nt<256||t%1)&&mt.throwArgumentError("invalid decimal length","decimals",t),BigInt("1"+Dt.substring(0,t))}function jt(t,e){null==e&&(e=18);let r=mt.getBigInt(t,"value");const n=Mt(mt.getNumber(e,"decimals")),s=String(n),i=r<0;i&&(r*=Ut);let o=String(r%n);for(;o.length1&&"0"===o.substring(o.length-1);)o=o.substring(0,o.length-1);let a=String(r/n);return 1!==s.length&&(a+="."+o),i&&(a="-"+a),a}function Gt(t,e){null==e&&(e=18);const r=Mt(mt.getNumber(e,"decimals"));"string"==typeof t&&t.match(/^-?[0-9.]+$/)||mt.throwArgumentError("invalid decimal value","value",t);const n="-"===t.substring(0,1);n&&(t=t.substring(1)),"."===t&&mt.throwArgumentError("missing value","value",t);const s=t.split(".");s.length>2&&mt.throwArgumentError("too many decimal points","value",t);let i=s[0]||"0",o=s[1]||"0";for(;"0"===o[o.length-1];)o=o.substring(0,o.length-1);for(o.length>String(r).length-1&&Lt("fractional component exceeds decimals","underflow","parseFixed"),""===o&&(o="0");o.lengthnull==t[e]?n:(typeof t[e]!==r&&mt.throwArgumentError("invalid fixed format ("+e+" not "+r+")","format."+e,t[e]),t[e]);e=s("signed","boolean",e),r=s("width","number",r),n=s("decimals","number",n)}return r%8&&mt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",r),n>80&&mt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new $t(Ft,e,r,n)}}class zt{constructor(t,e,r,n){St.add(this),Rt.set(this,void 0),t!==Ft&&mt.throwError("cannot use FixedNumber constructor; use FixedNumber.from","UNSUPPORTED_OPERATION",{operation:"new FixedFormat"}),this.format=$t.from(n),Ct(this,Rt,r,"f"),this._isFixedNumber=!0,Object.freeze(this)}addUnsafe(t){_t(this,St,"m",Bt).call(this,t);const e=Gt(_t(this,Rt,"f"),this.format.decimals),r=Gt(_t(t,Rt,"f"),t.format.decimals);return zt.fromValue(e+r,this.format.decimals,this.format)}subUnsafe(t){_t(this,St,"m",Bt).call(this,t);const e=Gt(_t(this,Rt,"f"),this.format.decimals),r=Gt(_t(t,Rt,"f"),t.format.decimals);return zt.fromValue(e-r,this.format.decimals,this.format)}mulUnsafe(t){_t(this,St,"m",Bt).call(this,t);const e=Gt(_t(this,Rt,"f"),this.format.decimals),r=Gt(_t(t,Rt,"f"),t.format.decimals);return zt.fromValue(e*r/this.format._multiplier,this.format.decimals,this.format)}divUnsafe(t){_t(this,St,"m",Bt).call(this,t);const e=Gt(_t(this,Rt,"f"),this.format.decimals),r=Gt(_t(t,Rt,"f"),t.format.decimals);return zt.fromValue(e*this.format._multiplier/r,this.format.decimals,this.format)}floor(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=zt.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return this.isNegative()&&r&&(e=e.subUnsafe(Wt.toFormat(e.format))),e}ceiling(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=zt.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return!this.isNegative()&&r&&(e=e.addUnsafe(Wt.toFormat(e.format))),e}round(t){null==t&&(t=0);const e=this.toString().split(".");if(1===e.length&&e.push("0"),(t<0||t>80||t%1)&&mt.throwArgumentError("invalid decimal count","decimals",t),e[1].length<=t)return this;const r=zt.from("1"+Dt.substring(0,t),this.format),n=Ht.toFormat(this.format);return this.mulUnsafe(r).addUnsafe(n).floor().divUnsafe(r)}isZero(){return"0.0"===_t(this,Rt,"f")||"0"===_t(this,Rt,"f")}isNegative(){return"-"===_t(this,Rt,"f")[0]}toString(){return _t(this,Rt,"f")}toHexString(t){throw new Error("TODO")}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return zt.fromString(_t(this,Rt,"f"),t)}static fromValue(t,e=0,r="fixed"){return zt.fromString(jt(t,e),$t.from(r))}static fromString(t,e="fixed"){const r=$t.from(e),n=Gt(t,r.decimals);!r.signed&&n<0&&Lt("unsigned value cannot be negative","overflow","value",t);const s=r.signed?kt(Ot(n,r.width)):kt(n,r.width/8),i=jt(n,r.decimals);return new zt(Ft,s,i,r)}static fromBytes(t,e="fixed"){const r=mt.getBytes(t,"value"),n=$t.from(e);if(r.length>n.width/8)throw new Error("overflow");let s=Et(r);n.signed&&(s=xt(s,n.width));const i=kt(Ot(s,(n.signed?0:1)+n.width)),o=jt(s,n.decimals);return new zt(Ft,i,o,n)}static from(t,e){if("string"==typeof t)return zt.fromString(t,e);if(t instanceof Uint8Array)return zt.fromBytes(t,e);try{return zt.fromValue(t,0,e)}catch(t){if("INVALID_ARGUMENT"!==t.code)throw t}return mt.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!(!t||!t._isFixedNumber)}}Rt=new WeakMap,St=new WeakSet,Bt=function(t){this.format.name!==t.format.name&&mt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)};const Wt=zt.from(1),Ht=zt.from("0.5"),Vt="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";let Kt=null;function Jt(t){if(null==Kt){Kt={};for(let t=0;t>=ae;return 0===e.length&&e.push(0),new Uint8Array(e)}if((e=t)&&"function"==typeof e.toHexString)return le(t.toHexString());var e;if("string"==typeof t){let e=t;if(!e.match(/^0x[0-9a-f]*$/i))throw new RangeError(`invalid hex data string (${JSON.stringify(t)})`);const r=[];for(let t=2;t>4]+de[15&n]}return r}function ge(t){let e=pe(le(t)).substring(2);for(;"0"===e.substring(0,1);)e=e.substring(1);return""===e&&(e="0"),"0x"+e}function we(t){return"0x"+t.map((t=>pe(t).substring(2))).join("")}function me(t){return se(t,!0)?(t.length-2)/2:ue(t).length}function ye(t,e,r){const n=ue(t);return null!=r&&r>n.length&&oe.throwError("cannot slice beyond data bounds","BUFFER_OVERRUN",{buffer:n,length:n.length,offset:r}),pe(n.slice(null==e?0:e,null==r?n.length:r))}function be(t){let e=pe(t).substring(2);for(;"00"==e.substring(0,2);)e=e.substring(2);return"0x"+e}function ve(t,e,r){const n=ue(t);e{null!=t&&(Fe(this,Te,"f").has(t)?Fe(this,Te,"f").get(t).push(e):Fe(this,Te,"f").set(t,[e]))})),Object.freeze(this),new Proxy(this,{get:(t,e,r)=>{if("string"==typeof e){if(e.match(/^[0-9]+$/)){const r=P.getNumber(e,"%index");if(r<0||r>=this.length)throw new RangeError("out of result range");const n=t[r];return n instanceof Error&&Fe(this,ke,"m",Pe).call(this,`index ${r}`,n),n}if(e in t||De.indexOf(e)>=0)return Reflect.get(t,e,r);if(!(e in t))return t.getValue(e)}return Reflect.get(t,e,r)}})}slice(t,e){null==t&&(t=0),null==e&&(e=this.length);const r=[];for(let n=t;nUe&&P.throwError("value out-of-bounds","BUFFER_OVERRUN",{buffer:e,length:Ue,offset:e.length}),e.length!==Ue&&(e=le(we([Le.slice(e.length%Ue),e]))),e}Te=new WeakMap,ke=new WeakSet,Pe=function(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);throw r.error=e,r};class $e{constructor(t,e,r,s){n(this,{name:t,type:e,localName:r,dynamic:s},{name:"string",type:"string",localName:"string",dynamic:"boolean"})}_throwError(t,e){return P.throwArgumentError(t,this.localName,e)}}class ze{constructor(){Ne.add(this),xe.set(this,void 0),Oe.set(this,void 0),_e(this,xe,[],"f"),_e(this,Oe,0,"f")}get data(){return we(Fe(this,xe,"f"))}get length(){return Fe(this,Oe,"f")}appendWriter(t){return Fe(this,Ne,"m",Ie).call(this,le(t.data))}writeBytes(t){let e=le(t);const r=e.length%Ue;return r&&(e=le(we([e,Le.slice(r)]))),Fe(this,Ne,"m",Ie).call(this,e)}writeValue(t){return Fe(this,Ne,"m",Ie).call(this,Ge(t))}writeUpdatableValue(){const t=Fe(this,xe,"f").length;return Fe(this,xe,"f").push(Le),_e(this,Oe,Fe(this,Oe,"f")+Ue,"f"),e=>{Fe(this,xe,"f")[t]=Ge(e)}}}xe=new WeakMap,Oe=new WeakMap,Ne=new WeakSet,Ie=function(t){return Fe(this,xe,"f").push(t),_e(this,Oe,Fe(this,Oe,"f")+t.length,"f"),t.length};class We{constructor(t,e){Se.add(this),Re.set(this,void 0),Be.set(this,void 0),n(this,{allowLoose:!!e}),_e(this,Re,le(t),"f"),_e(this,Be,0,"f")}get data(){return pe(Fe(this,Re,"f"))}get dataLength(){return Fe(this,Re,"f").length}get consumed(){return Fe(this,Be,"f")}get bytes(){return new Uint8Array(Fe(this,Re,"f"))}subReader(t){return new We(Fe(this,Re,"f").slice(Fe(this,Be,"f")+t),this.allowLoose)}readBytes(t,e){let r=Fe(this,Se,"m",Ce).call(this,0,t,!!e);return _e(this,Be,Fe(this,Be,"f")+r.length,"f"),r.slice(0,t)}readValue(){return Et(this.readBytes(Ue))}readIndex(){return At(this.readBytes(Ue))}}Re=new WeakMap,Be=new WeakMap,Se=new WeakSet,Ce=function(t,e,r){let n=Math.ceil(e/Ue)*Ue;return Fe(this,Be,"f")+n>Fe(this,Re,"f").length&&(this.allowLoose&&r&&Fe(this,Be,"f")+e<=Fe(this,Re,"f").length?n=e:P.throwError("data out-of-bounds","BUFFER_OVERRUN",{buffer:le(Fe(this,Re,"f")),length:Fe(this,Re,"f").length,offset:Fe(this,Be,"f")+n})),Fe(this,Re,"f").slice(Fe(this,Be,"f"),Fe(this,Be,"f")+n)}; +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ethers={})}(this,(function(t){"use strict";async function e(t){const e=Object.keys(t);return(await Promise.all(e.map((e=>Promise.resolve(t[e]))))).reduce(((t,r,n)=>(t[e[n]]=r,t)),{})}function r(t,e){const r=e.split("|").map((t=>t.trim()));for(let n=0;n{try{if("test"!=="test".normalize(e))throw new Error("bad");if("NFD"===e){const t=String.fromCharCode(233).normalize("NFD");if(t!==String.fromCharCode(101,769))throw new Error("broken")}t.push(e)}catch(t){}return t}),[]);function E(t,e,r){Object.defineProperty(t,e,{enumerable:!0,writable:!1,value:r})}const A=9007199254740991,k={};k.INVALID_ARGUMENT=TypeError,k.NUMERIC_FAULT=RangeError,k.BUFFER_OVERRUN=RangeError;class T{constructor(t){f.add(this),E(this,"version",t||"_")}makeError(t,e,r){{const s=[];if(r)for(const t in r){const e=r[t];try{s.push(t+"="+JSON.stringify(e))}catch(n){s.push(t+"=[could not serialize object]")}}s.push(`code=${e}`),s.push(`version=${this.version}`),s.length&&(t+=" ("+s.join(", ")+")")}const n=new(k[e]||Error)(t);if(E(n,"code",e),r)for(const t in r)E(n,t,r[t]);return n}throwError(t,e,r){throw this.makeError(t,e,r)}throwArgumentError(t,e,r){return this.throwError(t,"INVALID_ARGUMENT",{argument:e,value:r})}assert(t,e,r,n){t||this.throwError(e,r||"UNKNOWN_ERROR",n)}assertArgument(t,e,r,n){return this.assert(t,e,"INVALID_ARGUMENT",{argument:r,value:n})}assertIntegerArgument(t,e,r,n){let s=null;"number"!=typeof e?s="expected a number":Number.isInteger(e)?(null!=r&&en)&&(s="value is out of range"):s="invalid integer",s&&this.throwArgumentError(s,t,e)}assertSafeUint53(t,e){this.assertArgument("number"==typeof t,"invalid number","value",t),null==e&&(e="value not safe");const r="assertSafeInteger";this.assert(t>=0&&t<9007199254740991,e,"NUMERIC_FAULT",{operation:r,fault:"out-of-safe-range",value:t}),this.assert(t%1==0,e,"NUMERIC_FAULT",{operation:r,fault:"non-integer",value:t})}assertNormalize(t){-1===v.indexOf(t)&&this.throwError("platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:t}})}assertPrivate(t,e,r=""){if(t!==e){let t=r,e="new";r&&(t+=".",e+=" "+r),this.throwError(`private constructor; use ${t}from* methods`,"UNSUPPORTED_OPERATION",{operation:e})}}assertArgumentCount(t,e,r=""){r&&(r=": "+r),this.assert(t>=e,"missing arguemnt"+r,"MISSING_ARGUMENT",{count:t,expectedCount:e}),this.assert(t>=e,"too many arguemnts"+r,"UNEXPECTED_ARGUMENT",{count:t,expectedCount:e})}getBytes(t,e){return w(this,f,"m",d).call(this,t,e,!1)}getBytesCopy(t,e){return w(this,f,"m",d).call(this,t,e,!0)}getNumber(t,e){switch(typeof t){case"bigint":return(t<-A||t>A)&&this.throwArgumentError("overflow",e||"value",t),Number(t);case"number":return Number.isInteger(t)?(t<-A||t>A)&&this.throwArgumentError("overflow",e||"value",t):this.throwArgumentError("underflow",e||"value",t),t;case"string":try{return this.getNumber(BigInt(t),e)}catch(r){this.throwArgumentError(`invalid numeric string: ${r.message}`,e||"value",t)}}return this.throwArgumentError("invalid numeric value",e||"value",t)}getBigInt(t,e){switch(typeof t){case"bigint":return t;case"number":return Number.isInteger(t)?(t<-A||t>A)&&this.throwArgumentError("overflow",e||"value",t):this.throwArgumentError("underflow",e||"value",t),BigInt(t);case"string":try{return BigInt(t)}catch(r){this.throwArgumentError(`invalid BigNumberish string: ${r.message}`,e||"value",t)}}return this.throwArgumentError("invalid BigNumberish value",e||"value",t)}debug(...t){w(this,f,"m",p).call(this,g.DEBUG,t)}info(...t){w(this,f,"m",p).call(this,g.INFO,t)}warn(...t){w(this,f,"m",p).call(this,g.WARNING,t)}static globalLogger(){return b||(b=new T("@ethersproject/logger@6.0.0-beta.4")),b}static setLogLevel(t){const e=m[t.toLowerCase()];null!=e?y=e:T.globalLogger().warn("invalid log level - "+t)}}f=new WeakSet,d=function(t,e,r){if(t instanceof Uint8Array)return r?new Uint8Array(t):t;if("string"==typeof t&&t.match(/^0x([0-9a-f][0-9a-f])*$/i)){const e=new Uint8Array((t.length-2)/2);let r=2;for(let n=0;nm[r]||console.log.apply(console,e)},T.LogLevels=g;const P=new T("@ethersproject/abi@6.0.0-beta.3");var N,x,O,I,S,R,B,C=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},_=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function F(t){const e=new Set;return t.forEach((t=>e.add(t))),Object.freeze(e)}!function(t){t.sighash="sighash",t.minimal="minimal",t.full="full",t.json="json"}(B||(B={}));const U="constant external internal payable private public pure view",L=F(U.split(" ")),D="constructor error event function struct",M=F(D.split(" ")),j="calldata memory storage payable indexed",G=F(j.split(" ")),$=F([D,j,"tuple returns",U].join(" ").split(" ")),z={"(":"OPEN_PAREN",")":"CLOSE_PAREN","[":"OPEN_BRACKET","]":"CLOSE_BRACKET",",":"COMMA","@":"AT"},W=new RegExp("^(\\s*)"),H=new RegExp("^([0-9]+)"),V=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)"),K=new RegExp("^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))");class J{constructor(t){N.add(this),x.set(this,void 0),O.set(this,void 0),C(this,x,0,"f"),C(this,O,t.slice(),"f")}get offset(){return _(this,x,"f")}get length(){return _(this,O,"f").length-_(this,x,"f")}clone(){return new J(_(this,O,"f"))}reset(){C(this,x,0,"f")}popKeyword(t){const e=this.peek();if("KEYWORD"!==e.type||!t.has(e.text))throw new Error(`expected keyword ${e.text}`);return this.pop().text}popType(t){if(this.peek().type!==t)throw new Error(`expected ${t}; got ${JSON.stringify(this.peek())}`);return this.pop().text}popParen(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=_(this,N,"m",I).call(this,_(this,x,"f")+1,t.match+1);return C(this,x,t.match+1,"f"),e}popParams(){const t=this.peek();if("OPEN_PAREN"!==t.type)throw new Error("bad start");const e=[];for(;_(this,x,"f")=_(this,O,"f").length)throw new Error("out-of-bounds");return _(this,O,"f")[_(this,x,"f")]}peekKeyword(t){const e=this.peekType("KEYWORD");return null!=e&&t.has(e)?e:null}peekType(t){if(0===this.length)return null;const e=this.peek();return e.type===t?e.text:null}pop(){var t;const e=this.peek();return C(this,x,(t=_(this,x,"f"),++t),"f"),e}toString(){const t=[];for(let e=_(this,x,"f");e<_(this,O,"f").length;e++){const r=_(this,O,"f")[e];t.push(`${r.type}:${r.text}`)}return``}}function q(t){const e=[],r=e=>{const r=i0&&"NUMBER"===e[e.length-1].type){const r=e.pop().text;t=r+t,e[e.length-1].value=P.getNumber(r)}if(0===e.length||"BRACKET"!==e[e.length-1].type)throw new Error("missing opening bracket");e[e.length-1].text+=t}}else if(a=o.match(V),a){if(c.text=a[1],i+=c.text.length,$.has(c.text)){c.type="KEYWORD";continue}if(c.text.match(K)){c.type="TYPE";continue}c.type="ID"}else{if(a=o.match(H),!a)throw new Error(`unexpected token ${JSON.stringify(o[0])} at position ${i}`);c.text=a[1],c.type="NUMBER",i+=c.text.length}}return new J(e.map((t=>Object.freeze(t))))}function X(t,e){let r=[];for(const n in e.keys())t.has(n)&&r.push(n);if(r.length>1)throw new Error(`conflicting types: ${r.join(", ")}`)}function Y(t,e){if(e.peekKeyword(M)){const r=e.pop().text;if(r!==t)throw new Error(`expected ${t}, got ${r}`)}return e.popType("ID")}function Z(t,e){const r=new Set;for(;;){const n=t.peekType("KEYWORD");if(null==n||e&&!e.has(n))break;if(t.pop(),r.has(n))throw new Error(`duplicate keywords: ${JSON.stringify(n)}`);r.add(n)}return Object.freeze(r)}function Q(t,e){return t.popParams().map((t=>at.fromTokens(t,e)))}function tt(t){if(t.peekType("AT")){if(t.pop(),t.peekType("NUMBER"))return P.getBigInt(t.pop().text);throw new Error("invalid gas")}return null}function et(t){if(t.length)throw new Error(`unexpected tokens: ${t.toString()}`)}x=new WeakMap,O=new WeakMap,N=new WeakSet,I=function(t=0,e=0){return new J(_(this,O,"f").slice(t,e).map((e=>Object.freeze(Object.assign({},e,{match:e.match-t,linkBack:e.linkBack-t,linkNext:e.linkNext-t})))))};const rt=new RegExp(/^(.*)\[([0-9]*)\]$/);function nt(t){const e=t.match(K);if(!e)return P.throwArgumentError("invalid type","type",t);if("uint"===t)return"uint256";if("int"===t)return"int256";if(e[2]){const r=parseInt(e[2]);(0===r||r>32)&&P.throwArgumentError("invalid bytes length","type",t)}else if(e[3]){const r=parseInt(e[3]);(0===r||r>256||r%8)&&P.throwArgumentError("invalid numeric width","type",t)}return t}const st={},it=Symbol.for("_ethers_internal"),ot="_ParamTypeInternal";class at{constructor(t,e,r,s,i,o,a,c){if(S.add(this),P.assertPrivate(t,st,"ParamType"),Object.defineProperty(this,it,{value:ot}),o&&(o=Object.freeze(o.slice())),"array"===s){if(null==a||null==c)throw new Error("")}else if(null!=a||null!=c)throw new Error("");if("tuple"===s){if(null==o)throw new Error("")}else if(null!=o)throw new Error("");n(this,{name:e,type:r,baseType:s,indexed:i,components:o,arrayLength:a,arrayChildren:c})}format(t=B.sighash){if(B[t]||P.throwArgumentError("invalid format type","format",t),t===B.json){let e={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(e.indexed=this.indexed),this.isTuple()&&(e.components=this.components.map((e=>JSON.parse(e.format(t))))),JSON.stringify(e)}let e="";return this.isArray()?(e+=this.arrayChildren.format(t),e+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`):this.isTuple()?(t!==B.sighash&&(e+=this.type),e+="("+this.components.map((e=>e.format(t))).join(t===B.full?", ":",")+")"):e+=this.type,t!==B.sighash&&(!0===this.indexed&&(e+=" indexed"),t===B.full&&this.name&&(e+=" "+this.name)),e}static isArray(t){return t&&"array"===t.baseType}isArray(){return"array"===this.baseType}isTuple(){return"tuple"===this.baseType}isIndexable(){return null!=this.indexed}walk(t,e){if(this.isArray()){if(!Array.isArray(t))throw new Error("invlaid array value");if(-1!==this.arrayLength&&t.length!==this.arrayLength)throw new Error("array is wrong length");return t.map((t=>this.arrayChildren.walk(t,e)))}if(this.isTuple()){if(!Array.isArray(t))throw new Error("invlaid tuple value");if(t.length!==this.components.length)throw new Error("array is wrong length");return t.map(((t,r)=>this.components[r].walk(t,e)))}return e(this.type,t)}async walkAsync(t,e){const r=[],n=[t];return _(this,S,"m",R).call(this,r,t,e,(t=>{n[0]=t})),r.length&&await Promise.all(r),n[0]}static from(t,e){if(at.isParamType(t))return t;if("string"==typeof t)return at.fromTokens(q(t),e);if(t instanceof J)return at.fromTokens(t,e);const r=t.name;!r||"string"==typeof r&&r.match(V)||P.throwArgumentError("invalid name","obj.name",r);let n=t.indexed;null!=n&&(e||P.throwArgumentError("parameter cannot be indexed","obj.indexed",t.indexed),n=!!n);let s=t.type,i=s.match(rt);if(i){const e=i[2],o=at.from({type:i[1],components:t.components});return new at(st,r,s,"array",n,null,e,o)}if("tuple("===s.substring(0,5)||"("===s[0]){const e=null!=t.components?t.components.map((t=>at.from(t))):null;return new at(st,r,s,"tuple",n,e,null,null)}return s=nt(t.type),new at(st,r,s,s,n,null,null,null)}static fromObject(t,e){throw new Error("@TODO")}static fromTokens(t,e){let r="",n="",s=null;Z(t,F(["tuple"])).has("tuple")||t.peekType("OPEN_PAREN")?(n="tuple",s=t.popParams().map((t=>at.from(t))),r=`tuple(${s.map((t=>t.format())).join(",")})`):(r=nt(t.popType("TYPE")),n=r);let i=null,o=null;for(;t.length&&t.peekType("BRACKET");){const e=t.pop();i=new at(st,"",r,n,null,s,o,i),o=e.value,r+=e.text,n="array",s=null}let a=null;if(Z(t,G).has("indexed")){if(!e)throw new Error("");a=!0}const c=t.peekType("ID")?t.pop().text:"";if(t.length)throw new Error("leftover tokens");return new at(st,c,r,n,a,s,o,i)}static isParamType(t){return t&&t[it]===ot}}var ct;S=new WeakSet,R=function t(e,r,n,s){if(this.isArray()){if(!Array.isArray(r))throw new Error("invlaid array value");if(-1!==this.arrayLength&&r.length!==this.arrayLength)throw new Error("array is wrong length");const i=this.arrayChildren,o=r.slice();return o.forEach(((r,s)=>{_(i,S,"m",t).call(i,e,r,n,(t=>{o[s]=t}))})),void s(o)}if(this.isTuple()){const i=this.components;let o;if(Array.isArray(r))o=r.slice();else{if(null==r||"object"!=typeof r)throw new Error("invlaid tuple value");o=i.map((t=>{if(!t.name)throw new Error("cannot use object value with unnamed components");if(!(t.name in r))throw new Error(`missing value for component ${t.name}`);return r[t.name]}))}if(r.length!==this.components.length)throw new Error("array is wrong length");return o.forEach(((r,s)=>{var a;_(a=i[s],S,"m",t).call(a,e,r,n,(t=>{o[s]=t}))})),void s(o)}const i=n(this.type,r);i.then?e.push(async function(){s(await i)}()):s(i)},function(t){t.constructor="constructor",t.error="error",t.event="event",t.function="function",t.struct="struct"}(ct||(ct={}));class lt{constructor(t,e,r){P.assertPrivate(t,st,"Fragment"),n(this,{type:e,inputs:r=Object.freeze(r.slice())})}static from(t){if("string"==typeof t)return this.fromString(t);if(t instanceof J)return this.fromTokens(t);if("object"==typeof t)return this.fromObject(t);throw new Error(`unsupported type: ${t}`)}static fromObject(t){switch(t.type){case"constructor":return pt.fromObject(t);case"error":return ft.fromObject(t);case"event":return dt.fromObject(t);case"function":return gt.fromObject(t);case"struct":return wt.fromObject(t)}throw new Error("not implemented yet")}static fromString(t){try{lt.from(JSON.parse(t))}catch(t){}return lt.fromTokens(q(t))}static fromTokens(t){const e=t.popKeyword(M);switch(e){case"constructor":return pt.fromTokens(t);case"error":return ft.fromTokens(t);case"event":return dt.fromTokens(t);case"function":return gt.fromTokens(t);case"struct":return wt.fromTokens(t)}throw new Error(`unsupported type: ${e}`)}static isConstructor(t){return t&&"constructor"===t.type}static isError(t){return t&&"error"===t.type}static isEvent(t){return t&&"event"===t.type}static isFunction(t){return t&&"function"===t.type}static isStruct(t){return t&&"struct"===t.type}}class ut extends lt{constructor(t,e,r,s){super(t,e,s),s=Object.freeze(s.slice()),n(this,{name:r})}}function ht(t,e){return"("+e.map((e=>e.format(t))).join(t===B.full?", ":",")+")"}class ft extends ut{constructor(t,e,r){super(t,ct.error,e,r)}format(t=B.sighash){if(B[t]||P.throwArgumentError("invalid format type","format",t),t===B.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[];return t!==B.sighash&&e.push("error"),e.push(this.name+ht(t,this.inputs)),e.join(" ")}static fromString(t){return ft.fromTokens(q(t))}static fromTokens(t){const e=Y("error",t),r=Q(t);return et(t),new ft(st,e,r)}}class dt extends ut{constructor(t,e,r,s){super(t,ct.event,e,r),n(this,{anonymous:s})}format(t=B.sighash){if(B[t]||P.throwArgumentError("invalid format type","format",t),t===B.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[];return t!==B.sighash&&e.push("event"),e.push(this.name+ht(t,this.inputs)),t!==B.sighash&&this.anonymous&&e.push("anonymous"),e.join(" ")}static fromString(t){return dt.fromTokens(q(t))}static fromTokens(t){const e=Y("event",t),r=Q(t,!0),n=!!Z(t,F(["anonymous"])).has("anonymous");return et(t),new dt(st,e,r,n)}}class pt extends lt{constructor(t,e,r,s,i){super(t,e,r),n(this,{payable:s,gas:i})}format(t=B.sighash){if(B[t]||P.throwArgumentError("invalid format type","format",t),t===B.sighash&&P.throwError("cannot format a constructor for sighash","UNSUPPORTED_OPERATION",{operation:"format(sighash)"}),t===B.json)return JSON.stringify({type:"constructor",stateMutability:this.payable?"payable":"undefined",payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map((e=>JSON.parse(e.format(t))))});const e=[`constructor${ht(t,this.inputs)}`];return e.push(this.payable?"payable":"nonpayable"),null!=this.gas&&e.push(`@${this.gas.toString()}`),e.join(" ")}static fromString(t){return pt.fromTokens(q(t))}static fromObject(t){throw new Error("TODO")}static fromTokens(t){Z(t,F(["constructor"]));const e=Q(t),r=!!Z(t,F(["payable"])).has("payable"),n=tt(t);return et(t),new pt(st,ct.constructor,e,r,n)}}class gt extends ut{constructor(t,e,r,s,i,o){super(t,ct.function,e,s);n(this,{constant:"view"===r||"pure"===r,gas:o,outputs:i=Object.freeze(i.slice()),payable:"payable"===r,stateMutability:r})}format(t=B.sighash){if(B[t]||P.throwArgumentError("invalid format type","format",t),t===B.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:null!=this.gas?this.gas:void 0,inputs:this.inputs.map((e=>JSON.parse(e.format(t)))),outputs:this.outputs.map((e=>JSON.parse(e.format(t))))});const e=[];return t!==B.sighash&&e.push("function"),e.push(this.name+ht(t,this.inputs)),t!==B.sighash&&("nonpayable"!==this.stateMutability&&e.push(this.stateMutability),this.outputs&&this.outputs.length&&(e.push("returns"),e.push(ht(t,this.outputs))),null!=this.gas&&e.push(`@${this.gas.toString()}`)),e.join(" ")}static fromString(t){return gt.fromTokens(q(t))}static fromTokens(t){const e=Y("function",t),r=Q(t),n=function(t){let e=Z(t,L);return X(e,F("constant payable nonpayable".split(" "))),X(e,F("pure view payable nonpayable".split(" "))),e.has("view")?"view":e.has("pure")?"pure":e.has("payable")?"payable":e.has("nonpayable")?"nonpayable":e.has("constant")?"view":"nonpayable"}(t);let s=[];Z(t,F(["returns"])).has("returns")&&(s=Q(t));const i=tt(t);return et(t),new gt(st,e,n,r,s,i)}}class wt extends ut{format(){throw new Error("@TODO")}static fromString(t){return wt.fromTokens(q(t))}static fromTokens(t){const e=Y("struct",t),r=Q(t);return et(t),new wt(st,ct.struct,e,r)}}const mt=new T("@ethersproject/math@6.0.0-beta.3"),yt=9007199254740991,bt="0123456789abcdef",vt=BigInt(0);function Et(t){if(t instanceof Uint8Array){let e="0x0";for(const r of t)e+=bt[r>>4],e+=bt[15&r];return BigInt(e)}return mt.getBigInt(t,"value")}function At(t){const e=Et(t);return(e<-yt||e>yt)&&mt.throwArgumentError("overflow","value",t),Number(e)}function kt(t,e){const r=mt.getBigInt(t,"value");if(r<0)throw new Error("cannot convert negative value to hex");let n=r.toString(16);if(null==e)n.length%2&&(n="0"+n);else{const t=mt.getNumber(e,"width");if(2*t>n-Nt){return-((~r&(Nt<256||t%1)&&mt.throwArgumentError("invalid decimal length","decimals",t),BigInt("1"+Dt.substring(0,t))}function jt(t,e){null==e&&(e=18);let r=mt.getBigInt(t,"value");const n=Mt(mt.getNumber(e,"decimals")),s=String(n),i=r<0;i&&(r*=Ut);let o=String(r%n);for(;o.length1&&"0"===o.substring(o.length-1);)o=o.substring(0,o.length-1);let a=String(r/n);return 1!==s.length&&(a+="."+o),i&&(a="-"+a),a}function Gt(t,e){null==e&&(e=18);const r=Mt(mt.getNumber(e,"decimals"));"string"==typeof t&&t.match(/^-?[0-9.]+$/)||mt.throwArgumentError("invalid decimal value","value",t);const n="-"===t.substring(0,1);n&&(t=t.substring(1)),"."===t&&mt.throwArgumentError("missing value","value",t);const s=t.split(".");s.length>2&&mt.throwArgumentError("too many decimal points","value",t);let i=s[0]||"0",o=s[1]||"0";for(;"0"===o[o.length-1];)o=o.substring(0,o.length-1);for(o.length>String(r).length-1&&Lt("fractional component exceeds decimals","underflow","parseFixed"),""===o&&(o="0");o.lengthnull==t[e]?n:(typeof t[e]!==r&&mt.throwArgumentError("invalid fixed format ("+e+" not "+r+")","format."+e,t[e]),t[e]);e=s("signed","boolean",e),r=s("width","number",r),n=s("decimals","number",n)}return r%8&&mt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",r),n>80&&mt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new $t(Ft,e,r,n)}}class zt{constructor(t,e,r,n){St.add(this),Rt.set(this,void 0),t!==Ft&&mt.throwError("cannot use FixedNumber constructor; use FixedNumber.from","UNSUPPORTED_OPERATION",{operation:"new FixedFormat"}),this.format=$t.from(n),Ct(this,Rt,r,"f"),this._isFixedNumber=!0,Object.freeze(this)}addUnsafe(t){_t(this,St,"m",Bt).call(this,t);const e=Gt(_t(this,Rt,"f"),this.format.decimals),r=Gt(_t(t,Rt,"f"),t.format.decimals);return zt.fromValue(e+r,this.format.decimals,this.format)}subUnsafe(t){_t(this,St,"m",Bt).call(this,t);const e=Gt(_t(this,Rt,"f"),this.format.decimals),r=Gt(_t(t,Rt,"f"),t.format.decimals);return zt.fromValue(e-r,this.format.decimals,this.format)}mulUnsafe(t){_t(this,St,"m",Bt).call(this,t);const e=Gt(_t(this,Rt,"f"),this.format.decimals),r=Gt(_t(t,Rt,"f"),t.format.decimals);return zt.fromValue(e*r/this.format._multiplier,this.format.decimals,this.format)}divUnsafe(t){_t(this,St,"m",Bt).call(this,t);const e=Gt(_t(this,Rt,"f"),this.format.decimals),r=Gt(_t(t,Rt,"f"),t.format.decimals);return zt.fromValue(e*this.format._multiplier/r,this.format.decimals,this.format)}floor(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=zt.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return this.isNegative()&&r&&(e=e.subUnsafe(Wt.toFormat(e.format))),e}ceiling(){const t=this.toString().split(".");1===t.length&&t.push("0");let e=zt.from(t[0],this.format);const r=!t[1].match(/^(0*)$/);return!this.isNegative()&&r&&(e=e.addUnsafe(Wt.toFormat(e.format))),e}round(t){null==t&&(t=0);const e=this.toString().split(".");if(1===e.length&&e.push("0"),(t<0||t>80||t%1)&&mt.throwArgumentError("invalid decimal count","decimals",t),e[1].length<=t)return this;const r=zt.from("1"+Dt.substring(0,t),this.format),n=Ht.toFormat(this.format);return this.mulUnsafe(r).addUnsafe(n).floor().divUnsafe(r)}isZero(){return"0.0"===_t(this,Rt,"f")||"0"===_t(this,Rt,"f")}isNegative(){return"-"===_t(this,Rt,"f")[0]}toString(){return _t(this,Rt,"f")}toHexString(t){throw new Error("TODO")}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return zt.fromString(_t(this,Rt,"f"),t)}static fromValue(t,e=0,r="fixed"){return zt.fromString(jt(t,e),$t.from(r))}static fromString(t,e="fixed"){const r=$t.from(e),n=Gt(t,r.decimals);!r.signed&&n<0&&Lt("unsigned value cannot be negative","overflow","value",t);const s=r.signed?kt(Ot(n,r.width)):kt(n,r.width/8),i=jt(n,r.decimals);return new zt(Ft,s,i,r)}static fromBytes(t,e="fixed"){const r=mt.getBytes(t,"value"),n=$t.from(e);if(r.length>n.width/8)throw new Error("overflow");let s=Et(r);n.signed&&(s=xt(s,n.width));const i=kt(Ot(s,(n.signed?0:1)+n.width)),o=jt(s,n.decimals);return new zt(Ft,i,o,n)}static from(t,e){if("string"==typeof t)return zt.fromString(t,e);if(t instanceof Uint8Array)return zt.fromBytes(t,e);try{return zt.fromValue(t,0,e)}catch(t){if("INVALID_ARGUMENT"!==t.code)throw t}return mt.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!(!t||!t._isFixedNumber)}}Rt=new WeakMap,St=new WeakSet,Bt=function(t){this.format.name!==t.format.name&&mt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)};const Wt=zt.from(1),Ht=zt.from("0.5"),Vt="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";let Kt=null;function Jt(t){if(null==Kt){Kt={};for(let t=0;t>=ae;return 0===e.length&&e.push(0),new Uint8Array(e)}if((e=t)&&"function"==typeof e.toHexString)return le(t.toHexString());var e;if("string"==typeof t){let e=t;if(!e.match(/^0x[0-9a-f]*$/i))throw new RangeError(`invalid hex data string (${JSON.stringify(t)})`);const r=[];for(let t=2;t>4]+de[15&n]}return r}function ge(t){let e=pe(le(t)).substring(2);for(;"0"===e.substring(0,1);)e=e.substring(1);return""===e&&(e="0"),"0x"+e}function we(t){return"0x"+t.map((t=>pe(t).substring(2))).join("")}function me(t){return se(t,!0)?(t.length-2)/2:ue(t).length}function ye(t,e,r){const n=ue(t);return null!=r&&r>n.length&&oe.throwError("cannot slice beyond data bounds","BUFFER_OVERRUN",{buffer:n,length:n.length,offset:r}),pe(n.slice(null==e?0:e,null==r?n.length:r))}function be(t){let e=pe(t).substring(2);for(;"00"==e.substring(0,2);)e=e.substring(2);return"0x"+e}function ve(t,e,r){const n=ue(t);e{null!=t&&(Fe(this,Te,"f").has(t)?Fe(this,Te,"f").get(t).push(e):Fe(this,Te,"f").set(t,[e]))})),Object.freeze(this),new Proxy(this,{get:(t,e,r)=>{if("string"==typeof e){if(e.match(/^[0-9]+$/)){const r=P.getNumber(e,"%index");if(r<0||r>=this.length)throw new RangeError("out of result range");const n=t[r];return n instanceof Error&&Fe(this,ke,"m",Pe).call(this,`index ${r}`,n),n}if(e in t||De.indexOf(e)>=0)return Reflect.get(t,e,r);if(!(e in t))return t.getValue(e)}return Reflect.get(t,e,r)}})}slice(t,e){null==t&&(t=0),null==e&&(e=this.length);const r=[];for(let n=t;nUe&&P.throwError("value out-of-bounds","BUFFER_OVERRUN",{buffer:e,length:Ue,offset:e.length}),e.length!==Ue&&(e=le(we([Le.slice(e.length%Ue),e]))),e}Te=new WeakMap,ke=new WeakSet,Pe=function(t,e){const r=new Error(`deferred error during ABI decoding triggered accessing ${t}`);throw r.error=e,r};class $e{constructor(t,e,r,s){n(this,{name:t,type:e,localName:r,dynamic:s},{name:"string",type:"string",localName:"string",dynamic:"boolean"})}_throwError(t,e){return P.throwArgumentError(t,this.localName,e)}}class ze{constructor(){Ne.add(this),xe.set(this,void 0),Oe.set(this,void 0),_e(this,xe,[],"f"),_e(this,Oe,0,"f")}get data(){return we(Fe(this,xe,"f"))}get length(){return Fe(this,Oe,"f")}appendWriter(t){return Fe(this,Ne,"m",Ie).call(this,le(t.data))}writeBytes(t){let e=le(t);const r=e.length%Ue;return r&&(e=le(we([e,Le.slice(r)]))),Fe(this,Ne,"m",Ie).call(this,e)}writeValue(t){return Fe(this,Ne,"m",Ie).call(this,Ge(t))}writeUpdatableValue(){const t=Fe(this,xe,"f").length;return Fe(this,xe,"f").push(Le),_e(this,Oe,Fe(this,Oe,"f")+Ue,"f"),e=>{Fe(this,xe,"f")[t]=Ge(e)}}}xe=new WeakMap,Oe=new WeakMap,Ne=new WeakSet,Ie=function(t){return Fe(this,xe,"f").push(t),_e(this,Oe,Fe(this,Oe,"f")+t.length,"f"),t.length};class We{constructor(t,e){Se.add(this),Re.set(this,void 0),Be.set(this,void 0),n(this,{allowLoose:!!e}),_e(this,Re,le(t),"f"),_e(this,Be,0,"f")}get data(){return pe(Fe(this,Re,"f"))}get dataLength(){return Fe(this,Re,"f").length}get consumed(){return Fe(this,Be,"f")}get bytes(){return new Uint8Array(Fe(this,Re,"f"))}subReader(t){return new We(Fe(this,Re,"f").slice(Fe(this,Be,"f")+t),this.allowLoose)}readBytes(t,e){let r=Fe(this,Se,"m",Ce).call(this,0,t,!!e);return _e(this,Be,Fe(this,Be,"f")+r.length,"f"),r.slice(0,t)}readValue(){return Et(this.readBytes(Ue))}readIndex(){return At(this.readBytes(Ue))}}Re=new WeakMap,Be=new WeakMap,Se=new WeakSet,Ce=function(t,e,r){let n=Math.ceil(e/Ue)*Ue;return Fe(this,Be,"f")+n>Fe(this,Re,"f").length&&(this.allowLoose&&r&&Fe(this,Be,"f")+e<=Fe(this,Re,"f").length?n=e:P.throwError("data out-of-bounds","BUFFER_OVERRUN",{buffer:le(Fe(this,Re,"f")),length:Fe(this,Re,"f").length,offset:Fe(this,Be,"f")+n})),Fe(this,Re,"f").slice(Fe(this,Be,"f"),Fe(this,Be,"f")+n)}; /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */ -const He=t=>new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4)),Ve=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),Ke=(t,e)=>t<<32-e|t>>>e;if(!(68===new Uint8Array(new Uint32Array([287454020]).buffer)[0]))throw new Error("Non little-endian hardware is not supported");Array.from({length:256},((t,e)=>e.toString(16).padStart(2,"0")));const Je=(()=>{const t="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);try{if(t){const{setImmediate:e}=t("timers");return()=>new Promise((t=>e(t)))}}catch(t){}return()=>new Promise((t=>setTimeout(t,0)))})();async function qe(t,e,r){let n=Date.now();for(let s=0;s=0&&tt().update(Xe(e)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e}class rr extends Qe{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,Ze(t);const r=Xe(e);if(this.iHash=t.create(),!(this.iHash instanceof Qe))throw new TypeError("Expected instance of class which extends utils.Hash");const n=this.blockLen=this.iHash.blockLen;this.outputLen=this.iHash.outputLen;const s=new Uint8Array(n);s.set(r.length>this.iHash.blockLen?t.create().update(r).digest():r);for(let t=0;tnew rr(t,e).update(r).digest();function sr(t,e,r,n){const{c:s,dkLen:i,DK:o,PRF:a,PRFSalt:c}=function(t,e,r,n){Ze(t);const s=tr({dkLen:32,asyncTick:10},n),{c:i,dkLen:o,asyncTick:a}=s;if(Ye(i),Ye(o),Ye(a),i<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const c=Xe(e),l=Xe(r),u=new Uint8Array(o),h=nr.create(t,c),f=h._cloneInto().update(l);return{c:i,dkLen:o,asyncTick:a,DK:u,PRF:h,PRFSalt:f}}(t,e,r,n);let l;const u=new Uint8Array(4),h=Ve(u),f=new Uint8Array(a.outputLen);for(let t=1,e=0;enew rr(t,e);class ir extends Qe{constructor(t,e,r,n){super(),this.blockLen=t,this.outputLen=e,this.padOffset=r,this.isLE=n,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=Ve(this.buffer)}update(t){if(this.destroyed)throw new Error("instance is destroyed");const{view:e,buffer:r,blockLen:n,finished:s}=this;if(s)throw new Error("digest() was already called");const i=(t=Xe(t)).length;for(let s=0;sn-i&&(this.process(r,0),i=0);for(let t=i;t>s&i),a=Number(r&i),c=n?4:0,l=n?0:4;t.setUint32(e+c,o,n),t.setUint32(e+l,a,n)}(r,n-8,BigInt(8*this.length),s),this.process(r,0);const o=Ve(t);this.get().forEach(((t,e)=>o.setUint32(4*e,t,s)))}digest(){const{buffer:t,outputLen:e}=this;this.digestInto(t);const r=t.slice(0,e);return this.destroy(),r}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:e,buffer:r,length:n,finished:s,destroyed:i,pos:o}=this;return t.length=n,t.pos=o,t.finished=s,t.destroyed=i,n%e&&t.buffer.set(r),t}}const or=(t,e,r)=>t&e^~t&r,ar=(t,e,r)=>t&e^t&r^e&r,cr=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),lr=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ur=new Uint32Array(64);class hr extends ir{constructor(){super(64,32,8,!1),this.A=0|lr[0],this.B=0|lr[1],this.C=0|lr[2],this.D=0|lr[3],this.E=0|lr[4],this.F=0|lr[5],this.G=0|lr[6],this.H=0|lr[7]}get(){const{A:t,B:e,C:r,D:n,E:s,F:i,G:o,H:a}=this;return[t,e,r,n,s,i,o,a]}set(t,e,r,n,s,i,o,a){this.A=0|t,this.B=0|e,this.C=0|r,this.D=0|n,this.E=0|s,this.F=0|i,this.G=0|o,this.H=0|a}process(t,e){for(let r=0;r<16;r++,e+=4)ur[r]=t.getUint32(e,!1);for(let t=16;t<64;t++){const e=ur[t-15],r=ur[t-2],n=Ke(e,7)^Ke(e,18)^e>>>3,s=Ke(r,17)^Ke(r,19)^r>>>10;ur[t]=s+ur[t-7]+n+ur[t-16]|0}let{A:r,B:n,C:s,D:i,E:o,F:a,G:c,H:l}=this;for(let t=0;t<64;t++){const e=l+(Ke(o,6)^Ke(o,11)^Ke(o,25))+or(o,a,c)+cr[t]+ur[t]|0,u=(Ke(r,2)^Ke(r,13)^Ke(r,22))+ar(r,n,s)|0;l=c,c=a,a=o,o=i+e|0,i=s,s=n,n=r,r=e+u|0}r=r+this.A|0,n=n+this.B|0,s=s+this.C|0,i=i+this.D|0,o=o+this.E|0,a=a+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(r,n,s,i,o,a,c,l)}roundClean(){ur.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const fr=er((()=>new hr)),dr=BigInt(2**32-1),pr=BigInt(32);function gr(t,e=!1){return e?{h:Number(t&dr),l:Number(t>>pr&dr)}:{h:0|Number(t>>pr&dr),l:0|Number(t&dr)}}function wr(t,e=!1){let r=new Uint32Array(t.length),n=new Uint32Array(t.length);for(let s=0;st>>>r,yr=(t,e,r)=>t<<32-r|e>>>r,br=(t,e,r)=>t>>>r|e<<32-r,vr=(t,e,r)=>t<<32-r|e>>>r,Er=(t,e,r)=>t<<64-r|e>>>r-32,Ar=(t,e,r)=>t>>>r-32|e<<64-r;function kr(t,e,r,n){const s=(e>>>0)+(n>>>0);return{h:t+r+(s/2**32|0)|0,l:0|s}}const Tr=(t,e,r)=>(t>>>0)+(e>>>0)+(r>>>0),Pr=(t,e,r,n)=>e+r+n+(t/2**32|0)|0,Nr=(t,e,r,n)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0),xr=(t,e,r,n,s)=>e+r+n+s+(t/2**32|0)|0,Or=(t,e,r,n,s)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)+(s>>>0),Ir=(t,e,r,n,s,i)=>e+r+n+s+i+(t/2**32|0)|0,[Sr,Rr]=wr(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map((t=>BigInt(t)))),Br=new Uint32Array(80),Cr=new Uint32Array(80);class _r extends ir{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:t,Al:e,Bh:r,Bl:n,Ch:s,Cl:i,Dh:o,Dl:a,Eh:c,El:l,Fh:u,Fl:h,Gh:f,Gl:d,Hh:p,Hl:g}=this;return[t,e,r,n,s,i,o,a,c,l,u,h,f,d,p,g]}set(t,e,r,n,s,i,o,a,c,l,u,h,f,d,p,g){this.Ah=0|t,this.Al=0|e,this.Bh=0|r,this.Bl=0|n,this.Ch=0|s,this.Cl=0|i,this.Dh=0|o,this.Dl=0|a,this.Eh=0|c,this.El=0|l,this.Fh=0|u,this.Fl=0|h,this.Gh=0|f,this.Gl=0|d,this.Hh=0|p,this.Hl=0|g}process(t,e){for(let r=0;r<16;r++,e+=4)Br[r]=t.getUint32(e),Cr[r]=t.getUint32(e+=4);for(let t=16;t<80;t++){const e=0|Br[t-15],r=0|Cr[t-15],n=br(e,r,1)^br(e,r,8)^mr(e,0,7),s=vr(e,r,1)^vr(e,r,8)^yr(e,r,7),i=0|Br[t-2],o=0|Cr[t-2],a=br(i,o,19)^Er(i,o,61)^mr(i,0,6),c=vr(i,o,19)^Ar(i,o,61)^yr(i,o,6),l=Nr(s,c,Cr[t-7],Cr[t-16]),u=xr(l,n,a,Br[t-7],Br[t-16]);Br[t]=0|u,Cr[t]=0|l}let{Ah:r,Al:n,Bh:s,Bl:i,Ch:o,Cl:a,Dh:c,Dl:l,Eh:u,El:h,Fh:f,Fl:d,Gh:p,Gl:g,Hh:w,Hl:m}=this;for(let t=0;t<80;t++){const e=br(u,h,14)^br(u,h,18)^Er(u,h,41),y=vr(u,h,14)^vr(u,h,18)^Ar(u,h,41),b=u&f^~u&p,v=Or(m,y,h&d^~h&g,Rr[t],Cr[t]),E=Ir(v,w,e,b,Sr[t],Br[t]),A=0|v,k=br(r,n,28)^Er(r,n,34)^Er(r,n,39),T=vr(r,n,28)^Ar(r,n,34)^Ar(r,n,39),P=r&s^r&o^s&o,N=n&i^n&a^i&a;w=0|p,m=0|g,p=0|f,g=0|d,f=0|u,d=0|h,({h:u,l:h}=kr(0|c,0|l,0|E,0|A)),c=0|o,l=0|a,o=0|s,a=0|i,s=0|r,i=0|n;const x=Tr(A,T,N);r=Pr(x,E,k,P),n=0|x}({h:r,l:n}=kr(0|this.Ah,0|this.Al,0|r,0|n)),({h:s,l:i}=kr(0|this.Bh,0|this.Bl,0|s,0|i)),({h:o,l:a}=kr(0|this.Ch,0|this.Cl,0|o,0|a)),({h:c,l:l}=kr(0|this.Dh,0|this.Dl,0|c,0|l)),({h:u,l:h}=kr(0|this.Eh,0|this.El,0|u,0|h)),({h:f,l:d}=kr(0|this.Fh,0|this.Fl,0|f,0|d)),({h:p,l:g}=kr(0|this.Gh,0|this.Gl,0|p,0|g)),({h:w,l:m}=kr(0|this.Hh,0|this.Hl,0|w,0|m)),this.set(r,n,s,i,o,a,c,l,u,h,f,d,p,g,w,m)}roundClean(){Br.fill(0),Cr.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class Fr extends _r{constructor(){super(),this.Ah=573645204,this.Al=-64227540,this.Bh=-1621794909,this.Bl=-934517566,this.Ch=596883563,this.Cl=1867755857,this.Dh=-1774684391,this.Dl=1497426621,this.Eh=-1775747358,this.El=-1467023389,this.Fh=-1101128155,this.Fl=1401305490,this.Gh=721525244,this.Gl=746961066,this.Hh=246885852,this.Hl=-2117784414,this.outputLen=32}}class Ur extends _r{constructor(){super(),this.Ah=-876896931,this.Al=-1056596264,this.Bh=1654270250,this.Bl=914150663,this.Ch=-1856437926,this.Cl=812702999,this.Dh=355462360,this.Dl=-150054599,this.Eh=1731405415,this.El=-4191439,this.Fh=-1900787065,this.Fl=1750603025,this.Gh=-619958771,this.Gl=1694076839,this.Hh=1203062813,this.Hl=-1090891868,this.outputLen=48}}const Lr=er((()=>new _r));er((()=>new Fr)),er((()=>new Ur));const Dr=new T("@ethersproject/crypto@6.0.0-beta.2");const Mr=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let jr=Mr.crypto||Mr.msCrypto;function Gr(t){switch(t){case"sha256":return fr.create();case"sha512":return Lr.create()}return Dr.throwArgumentError("invalid hashing algorithm name","algorithm",t)}let $r=!1;const zr=function(t,e,r){return"0x"+function(t,e){const r={sha256:fr,sha512:Lr}[t];return null==r?Dr.throwArgumentError("invalid hmac algorithm","algorithm",t):nr.create(r,e)}(t,e).update(r).digest("hex")};let Wr=zr;function Hr(t,e,r){const n=Dr.getBytes(e,"key"),s=Dr.getBytes(r,"data");return pe(Wr(t,n,s))}Hr._=zr,Hr.lock=function(){$r=!0},Hr.register=function(t){if($r)throw new Error("computeHmac is locked");Wr=t},Object.freeze(Hr);const[Vr,Kr,Jr]=[[],[],[]],qr=BigInt(0),Xr=BigInt(1),Yr=BigInt(2),Zr=BigInt(7),Qr=BigInt(256),tn=BigInt(113);for(let t=0,e=Xr,r=1,n=0;t<24;t++){[r,n]=[n,(2*r+3*n)%5],Vr.push(2*(5*n+r)),Kr.push((t+1)*(t+2)/2%64);let s=qr;for(let t=0;t<7;t++)e=(e<>Zr)*tn)%Qr,e&Yr&&(s^=Xr<<(Xr<r>32?((t,e,r)=>e<>>64-r)(t,e,r):((t,e,r)=>t<>>32-r)(t,e,r),sn=(t,e,r)=>r>32?((t,e,r)=>t<>>64-r)(t,e,r):((t,e,r)=>e<>>32-r)(t,e,r);class on extends Qe{constructor(t,e,r,n=!1,s=24){if(super(),this.blockLen=t,this.suffix=e,this.outputLen=r,this.enableXOF=n,this.rounds=s,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,Ye(r),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=He(this.state)}keccak(){!function(t,e=24){const r=new Uint32Array(10);for(let n=24-e;n<24;n++){for(let e=0;e<10;e++)r[e]=t[e]^t[e+10]^t[e+20]^t[e+30]^t[e+40];for(let e=0;e<10;e+=2){const n=(e+8)%10,s=(e+2)%10,i=r[s],o=r[s+1],a=nn(i,o,1)^r[n],c=sn(i,o,1)^r[n+1];for(let r=0;r<50;r+=10)t[e+r]^=a,t[e+r+1]^=c}let e=t[2],s=t[3];for(let r=0;r<24;r++){const n=Kr[r],i=nn(e,s,n),o=sn(e,s,n),a=Vr[r];e=t[a],s=t[a+1],t[a]=i,t[a+1]=o}for(let e=0;e<50;e+=10){for(let n=0;n<10;n++)r[n]=t[e+n];for(let n=0;n<10;n++)t[e+n]^=~r[(n+2)%10]&r[(n+4)%10]}t[0]^=en[n],t[1]^=rn[n]}r.fill(0)}(this.state32,this.rounds),this.posOut=0,this.pos=0}update(t){if(this.destroyed)throw new Error("instance is destroyed");if(this.finished)throw new Error("digest() was already called");const{blockLen:e,state:r}=this,n=(t=Xe(t)).length;for(let s=0;s=this.blockLen&&this.keccak();const n=Math.min(this.blockLen-this.posOut,r-e);t.set(this.state.subarray(this.posOut,this.posOut+n),e),this.posOut+=n,e+=n}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return Ye(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(t.lengther((()=>new on(e,t,r)));an(6,144,28),an(6,136,32),an(6,104,48),an(6,72,64),an(1,144,28);const cn=an(1,136,32);an(1,104,48),an(1,72,64);const ln=(t,e,r)=>function(t){const e=(e,r)=>t(r).update(Xe(e)).digest(),r=t({});return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=e=>t(e),e}(((n={})=>new on(e,t,void 0!==n.dkLen?n.dkLen:r,!0)));ln(31,168,16),ln(31,136,32);let un=!1;const hn=function(t){return cn(t)};let fn=hn;function dn(t){const e=Dr.getBytes(t,"data");return pe(fn(e))}dn._=hn,dn.lock=function(){un=!0},dn.register=function(t){if(un)throw new TypeError("keccak256 is locked");fn=t},Object.freeze(dn);const pn=new Uint8Array([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),gn=Uint8Array.from({length:16},((t,e)=>e)),wn=gn.map((t=>(9*t+5)%16));let mn=[gn],yn=[wn];for(let t=0;t<4;t++)for(let e of[mn,yn])e.push(e[t].map((t=>pn[t])));const bn=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map((t=>new Uint8Array(t))),vn=mn.map(((t,e)=>t.map((t=>bn[e][t])))),En=yn.map(((t,e)=>t.map((t=>bn[e][t])))),An=new Uint32Array([0,1518500249,1859775393,2400959708,2840853838]),kn=new Uint32Array([1352829926,1548603684,1836072691,2053994217,0]),Tn=(t,e)=>t<>>32-e;function Pn(t,e,r,n){return 0===t?e^r^n:1===t?e&r|~e&n:2===t?(e|~r)^n:3===t?e&n|r&~n:e^(r|~n)}const Nn=new Uint32Array(16);class xn extends ir{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){const{h0:t,h1:e,h2:r,h3:n,h4:s}=this;return[t,e,r,n,s]}set(t,e,r,n,s){this.h0=0|t,this.h1=0|e,this.h2=0|r,this.h3=0|n,this.h4=0|s}process(t,e){for(let r=0;r<16;r++,e+=4)Nn[r]=t.getUint32(e,!0);let r=0|this.h0,n=r,s=0|this.h1,i=s,o=0|this.h2,a=o,c=0|this.h3,l=c,u=0|this.h4,h=u;for(let t=0;t<5;t++){const e=4-t,f=An[t],d=kn[t],p=mn[t],g=yn[t],w=vn[t],m=En[t];for(let e=0;e<16;e++){const n=Tn(r+Pn(t,s,o,c)+Nn[p[e]]+f,w[e])+u|0;r=u,u=c,c=0|Tn(o,10),o=s,s=n}for(let t=0;t<16;t++){const r=Tn(n+Pn(e,i,a,l)+Nn[g[t]]+d,m[t])+h|0;n=h,h=l,l=0|Tn(a,10),a=i,i=r}}this.set(this.h1+o+l|0,this.h2+c+h|0,this.h3+u+n|0,this.h4+r+i|0,this.h0+s+a|0)}roundClean(){Nn.fill(0)}destroy(){this.destroyed=!0,this.buffer.fill(0),this.set(0,0,0,0,0)}}const On=er((()=>new xn));let In=!1;const Sn=function(t){return On(t)};let Rn=Sn;function Bn(t){const e=Dr.getBytes(t,"data");return pe(Rn(e))}Bn._=Sn,Bn.lock=function(){In=!0},Bn.register=function(t){if(In)throw new TypeError("ripemd160 is locked");Rn=t},Object.freeze(Bn);let Cn=!1;const _n=function(t,e,r,n,s){return function(t,e,r,n,s){const i={sha256:fr,sha512:Lr}[s];return null==i?Dr.throwArgumentError("invalid pbkdf2 algorithm","algorithm",s):sr(i,t,e,{c:r,dkLen:n})}(t,e,r,n,s)};let Fn=_n;function Un(t,e,r,n,s){const i=Dr.getBytes(t,"password"),o=Dr.getBytes(e,"salt");return pe(Fn(i,o,r,n,s))}Un._=_n,Un.lock=function(){Cn=!0},Un.register=function(t){if(Cn)throw new Error("pbkdf2 is locked");Fn=t},Object.freeze(Un);let Ln=!1;const Dn=function(t){return new Uint8Array(function(t){if(null==jr)return Dr.throwError("platform does not support secure random numbers","UNSUPPORTED_OPERATION",{operation:"randomBytes"});(t<=0||t>1024||t%1||t!=t)&&Dr.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return jr.getRandomValues(e),e}(t))};let Mn=Dn;function jn(t){return Mn(t)}jn._=Dn,jn.lock=function(){Ln=!0},jn.register=function(t){if(Ln)throw new Error("random is locked");Mn=t},Object.freeze(jn);const Gn=(t,e)=>t<>>32-e;function $n(t,e,r,n,s,i){let o=t[e++]^r[n++],a=t[e++]^r[n++],c=t[e++]^r[n++],l=t[e++]^r[n++],u=t[e++]^r[n++],h=t[e++]^r[n++],f=t[e++]^r[n++],d=t[e++]^r[n++],p=t[e++]^r[n++],g=t[e++]^r[n++],w=t[e++]^r[n++],m=t[e++]^r[n++],y=t[e++]^r[n++],b=t[e++]^r[n++],v=t[e++]^r[n++],E=t[e++]^r[n++],A=o,k=a,T=c,P=l,N=u,x=h,O=f,I=d,S=p,R=g,B=w,C=m,_=y,F=b,U=v,L=E;for(let t=0;t<8;t+=2)N^=Gn(A+_|0,7),S^=Gn(N+A|0,9),_^=Gn(S+N|0,13),A^=Gn(_+S|0,18),R^=Gn(x+k|0,7),F^=Gn(R+x|0,9),k^=Gn(F+R|0,13),x^=Gn(k+F|0,18),U^=Gn(B+O|0,7),T^=Gn(U+B|0,9),O^=Gn(T+U|0,13),B^=Gn(O+T|0,18),P^=Gn(L+C|0,7),I^=Gn(P+L|0,9),C^=Gn(I+P|0,13),L^=Gn(C+I|0,18),k^=Gn(A+P|0,7),T^=Gn(k+A|0,9),P^=Gn(T+k|0,13),A^=Gn(P+T|0,18),O^=Gn(x+N|0,7),I^=Gn(O+x|0,9),N^=Gn(I+O|0,13),x^=Gn(N+I|0,18),C^=Gn(B+R|0,7),S^=Gn(C+B|0,9),R^=Gn(S+C|0,13),B^=Gn(R+S|0,18),_^=Gn(L+U|0,7),F^=Gn(_+L|0,9),U^=Gn(F+_|0,13),L^=Gn(U+F|0,18);s[i++]=o+A|0,s[i++]=a+k|0,s[i++]=c+T|0,s[i++]=l+P|0,s[i++]=u+N|0,s[i++]=h+x|0,s[i++]=f+O|0,s[i++]=d+I|0,s[i++]=p+S|0,s[i++]=g+R|0,s[i++]=w+B|0,s[i++]=m+C|0,s[i++]=y+_|0,s[i++]=b+F|0,s[i++]=v+U|0,s[i++]=E+L|0}function zn(t,e,r,n,s){let i=n+0,o=n+16*s;for(let n=0;n<16;n++)r[o+n]=t[e+16*(2*s-1)+n];for(let n=0;n0&&(o+=16),$n(r,i,t,e+=16,r,o)}function Wn(t,e,r){const n=tr({dkLen:32,asyncTick:10,maxmem:1073742848},r),{N:s,r:i,p:o,dkLen:a,asyncTick:c,maxmem:l,onProgress:u}=n;if(Ye(s),Ye(i),Ye(o),Ye(a),Ye(c),Ye(l),void 0!==u&&"function"!=typeof u)throw new Error("progressCb should be function");const h=128*i,f=h/4;if(s<=1||0!=(s&s-1)||s>=2**(h/8)||s>2**32)throw new Error("Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32");if(o<0||o>137438953440/h)throw new Error("Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)");if(a<0||a>137438953440)throw new Error("Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32");const d=h*(s+o);if(d>l)throw new Error(`Scrypt: parameters too large, ${d} (128 * r * (N + p)) > ${l} (maxmem)`);const p=sr(fr,t,e,{c:1,dkLen:h*o}),g=He(p),w=He(new Uint8Array(h*s)),m=He(new Uint8Array(h));let y=()=>{};if(u){const t=2*s*o,e=Math.max(Math.floor(t/1e4),1);let r=0;y=()=>{r++,!u||r%e&&r!==t||u(r/t)}}return{N:s,r:i,p:o,dkLen:a,blockSize32:f,V:w,B32:g,B:p,tmp:m,blockMixCb:y,asyncTick:c}}function Hn(t,e,r,n,s){const i=sr(fr,t,r,{c:1,dkLen:e});return r.fill(0),n.fill(0),s.fill(0),i}let Vn=!1,Kn=!1;const Jn=async function(t,e,r,n,s,i,o){return await async function(t,e,r){const{N:n,r:s,p:i,dkLen:o,blockSize32:a,V:c,B32:l,B:u,tmp:h,blockMixCb:f,asyncTick:d}=Wn(t,e,r);for(let t=0;t{zn(c,r,c,r+=a,s),f()})),zn(c,(n-1)*a,l,e,s),f(),await qe(n,d,(t=>{const r=l[e+a-16]%n;for(let t=0;t>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&n[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const ds={};for(let t=0;t<10;t++)ds[String(t)]=String(t);for(let t=0;t<26;t++)ds[String.fromCharCode(65+t)]=String(10+t);function ps(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map((t=>ds[t])).join("");for(;e.length>=15;){let t=e.substring(0,15);e=parseInt(t,10)%97+e.substring(t.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}const gs=function(){const t={};for(let e=0;e<36;e++){t["0123456789abcdefghijklmnopqrstuvwxyz"[e]]=BigInt(e)}return t}();function ws(t){if("string"!=typeof t&&ls.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/)){"0x"!==t.substring(0,2)&&(t="0x"+t);const e=fs(t);return t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&ls.throwArgumentError("bad address checksum","address",t),e}if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){t.substring(2,4)!==ps(t)&&ls.throwArgumentError("bad icap checksum","address",t);let e=function(t){t=t.toLowerCase();let e=us;for(let r=0;r>=8;return e}function vs(t){if(Array.isArray(t)){let e=[];if(t.forEach((function(t){e=e.concat(vs(t))})),e.length<=55)return e.unshift(192+e.length),e;const r=bs(e.length);return r.unshift(247+r.length),r.concat(e)}const e=Array.prototype.slice.call(ys.getBytes(t,"object"));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=bs(e.length);return r.unshift(183+r.length),r.concat(e)}const Es="0123456789abcdef";function As(t){let e="0x";for(const r of vs(t))e+=Es[r>>4],e+=Es[15&r];return e}function ks(t){let e=t.toString(16);for(;e.length<2;)e="0"+e;return"0x"+e}function Ts(t,e,r){let n=0;for(let s=0;se+1+n&&ys.throwError("child data too short","BUFFER_OVERRUN",{buffer:t,length:n,offset:e})}return{consumed:1+n,result:s}}function Ns(t,e){0===t.length&&ys.throwError("data too short","BUFFER_OVERRUN",{buffer:t,length:0,offset:1});const r=e=>{e>t.length&&ys.throwError("data short segment too short","BUFFER_OVERRUN",{buffer:t,length:t.length,offset:e})};if(t[e]>=248){const n=t[e]-247;r(e+1+n);const s=Ts(t,e+1,n);return r(e+1+n+s),Ps(t,e,e+1+n,n+s)}if(t[e]>=192){const n=t[e]-192;return r(e+1+n),Ps(t,e,e+1,n)}if(t[e]>=184){const n=t[e]-183;r(e+1+n);const s=Ts(t,e+1,n);r(e+1+n+s);return{consumed:1+n+s,result:pe(t.slice(e+1+n,e+1+n+s))}}if(t[e]>=128){const n=t[e]-128;r(e+1+n);return{consumed:1+n,result:pe(t.slice(e+1,e+1+n))}}return{consumed:1,result:ks(t[e])}}function xs(t){const e=ys.getBytes(t,"data"),r=Ns(e,0);return r.consumed!==e.length&&ys.throwArgumentError("unexpected junk after rlp payload","data",t),r.result}function Os(t){const e=ws(t.from);let r=ls.getBigInt(t.nonce,"tx.nonce").toString(16);return r="0"===r?"0x":r.length%2?"0x0"+r:"0x"+r,ws(ye(dn(As([e,r])),12))}function Is(t,e,r){const n=ws(t),s=ls.getBytes(e,"salt"),i=ls.getBytes(r,"initCodeHash");return 32!==s.length&&ls.throwArgumentError("salt must be 32 bytes","salt",e),32!==i.length&&ls.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),ws(ye(dn(we(["0xff",n,s,i])),12))}function Ss(t){return t&&"function"==typeof t.getAddress}function Rs(t){try{return ws(t),!0}catch(t){}return!1}async function Bs(t,e){if("string"==typeof t){if(t.match(/^0x[0-9a-f]{40}$/i))return ws(t);if(null==e)return ls.throwError("ENS resolution requires a provider","UNSUPPORTED_OPERATION",{operation:"resolveName"});const r=await e.resolveName(t);return null==r||"0x0000000000000000000000000000000000000000"===r?ls.throwError("unconfigured name","UNCONFIGURED_NAME",{value:t}):ws(r)}if(Ss(t)){const e=await t.getAddress();return null==e&&ls.throwArgumentError("addressable resolved to null","target",t),ws(e)}return ls.throwArgumentError("unsupported addressable value","target",t)}var Cs,_s=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Fs=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Us={};function Ls(t,e){let r=!1;return e<0&&(r=!0,e*=-1),new js(Us,`${r?"":"u"}int${e}`,t,{signed:r,width:e})}function Ds(t,e){return new js(Us,`bytes${e||""}`,t,{size:e})}const Ms=Symbol.for("_ethers_typed");class js{constructor(t,e,r,s=null){if(Cs.set(this,void 0),t!==Us)throw new Error("private constructor");n(this,{_typedSymbol:Ms,type:e,value:r}),_s(this,Cs,s,"f"),this.format()}format(){if("array"===this.type)throw new Error("");if("dynamicArray"===this.type)throw new Error("");return"tuple"===this.type?`tuple(${this.value.map((t=>t.format())).join(",")})`:this.type}defaultValue(){return 0}minValue(){return 0}maxValue(){return 0}isBigInt(){return!!this.type.match(/^u?int[0-9]+$/)}isData(){return"bytes"===this.type.substring(0,5)}isString(){return"string"===this.type}get tupleName(){if("tuple"!==this.type)throw TypeError("not a tuple");return Fs(this,Cs,"f")}get arrayLength(){if("array"!==this.type)throw TypeError("not an array");return!0===Fs(this,Cs,"f")?-1:!1===Fs(this,Cs,"f")?this.value.length:null}static from(t,e){return new js(Us,t,e)}static uint8(t){return Ls(t,8)}static uint16(t){return Ls(t,16)}static uint24(t){return Ls(t,24)}static uint32(t){return Ls(t,32)}static uint40(t){return Ls(t,40)}static uint48(t){return Ls(t,46)}static uint56(t){return Ls(t,56)}static uint64(t){return Ls(t,64)}static uint72(t){return Ls(t,72)}static uint80(t){return Ls(t,80)}static uint88(t){return Ls(t,88)}static uint96(t){return Ls(t,96)}static uint104(t){return Ls(t,104)}static uint112(t){return Ls(t,112)}static uint120(t){return Ls(t,120)}static uint128(t){return Ls(t,128)}static uint136(t){return Ls(t,136)}static uint144(t){return Ls(t,144)}static uint152(t){return Ls(t,152)}static uint160(t){return Ls(t,160)}static uint168(t){return Ls(t,168)}static uint176(t){return Ls(t,176)}static uint184(t){return Ls(t,184)}static uint192(t){return Ls(t,192)}static uint200(t){return Ls(t,200)}static uint208(t){return Ls(t,208)}static uint216(t){return Ls(t,216)}static uint224(t){return Ls(t,224)}static uint232(t){return Ls(t,232)}static uint240(t){return Ls(t,240)}static uint248(t){return Ls(t,248)}static uint256(t){return Ls(t,256)}static uint(t){return Ls(t,256)}static int8(t){return Ls(t,-8)}static int16(t){return Ls(t,-16)}static int24(t){return Ls(t,-24)}static int32(t){return Ls(t,-32)}static int40(t){return Ls(t,-40)}static int48(t){return Ls(t,-46)}static int56(t){return Ls(t,-56)}static int64(t){return Ls(t,-64)}static int72(t){return Ls(t,-72)}static int80(t){return Ls(t,-80)}static int88(t){return Ls(t,-88)}static int96(t){return Ls(t,-96)}static int104(t){return Ls(t,-104)}static int112(t){return Ls(t,-112)}static int120(t){return Ls(t,-120)}static int128(t){return Ls(t,-128)}static int136(t){return Ls(t,-136)}static int144(t){return Ls(t,-144)}static int152(t){return Ls(t,-152)}static int160(t){return Ls(t,-160)}static int168(t){return Ls(t,-168)}static int176(t){return Ls(t,-176)}static int184(t){return Ls(t,-184)}static int192(t){return Ls(t,-192)}static int200(t){return Ls(t,-200)}static int208(t){return Ls(t,-208)}static int216(t){return Ls(t,-216)}static int224(t){return Ls(t,-224)}static int232(t){return Ls(t,-232)}static int240(t){return Ls(t,-240)}static int248(t){return Ls(t,-248)}static int256(t){return Ls(t,-256)}static int(t){return Ls(t,-256)}static bytes(t){return Ds(t)}static bytes1(t){return Ds(t,1)}static bytes2(t){return Ds(t,2)}static bytes3(t){return Ds(t,3)}static bytes4(t){return Ds(t,4)}static bytes5(t){return Ds(t,5)}static bytes6(t){return Ds(t,6)}static bytes7(t){return Ds(t,7)}static bytes8(t){return Ds(t,8)}static bytes9(t){return Ds(t,9)}static bytes10(t){return Ds(t,10)}static bytes11(t){return Ds(t,11)}static bytes12(t){return Ds(t,12)}static bytes13(t){return Ds(t,13)}static bytes14(t){return Ds(t,14)}static bytes15(t){return Ds(t,15)}static bytes16(t){return Ds(t,16)}static bytes17(t){return Ds(t,17)}static bytes18(t){return Ds(t,18)}static bytes19(t){return Ds(t,19)}static bytes20(t){return Ds(t,20)}static bytes21(t){return Ds(t,21)}static bytes22(t){return Ds(t,22)}static bytes23(t){return Ds(t,23)}static bytes24(t){return Ds(t,24)}static bytes25(t){return Ds(t,25)}static bytes26(t){return Ds(t,26)}static bytes27(t){return Ds(t,27)}static bytes28(t){return Ds(t,28)}static bytes29(t){return Ds(t,29)}static bytes30(t){return Ds(t,30)}static bytes31(t){return Ds(t,31)}static bytes32(t){return Ds(t,32)}static address(t){return new js(Us,"address",t)}static bool(t){return new js(Us,"bool",!!t)}static string(t){return new js(Us,"string",t)}static array(t,e){throw new Error("not implemented yet")}static tuple(t,e){throw new Error("not implemented yet")}static overrides(t){return new js(Us,"overrides",Object.assign({},t))}static isTyped(t){return t&&t._typedSymbol===Ms}static dereference(t,e){if(js.isTyped(t)){if(t.type!==e)throw new Error(`invalid type: expecetd ${e}, got ${t.type}`);return t.value}return t}}Cs=new WeakMap;class Gs extends $e{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){let r=js.dereference(e,"string");try{r=ws(r)}catch(t){return this._throwError(t.message,e)}return t.writeValue(r)}decode(t){return ws(kt(t.readValue(),20))}}class $s extends $e{constructor(t){super(t.name,t.type,"_",t.dynamic),this.coder=t}defaultValue(){return this.coder.defaultValue()}encode(t,e){return this.coder.encode(t,e)}decode(t){return this.coder.decode(t)}}function zs(t,e,r){let n=[];if(Array.isArray(r))n=r;else if(r&&"object"==typeof r){let t={};n=e.map((e=>{const n=e.localName;return n||P.throwError("cannot encode object for signature with missing names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:r}),t[n]&&P.throwError("cannot encode object for signature with duplicate names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:r}),t[n]=!0,r[n]}))}else P.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&P.throwArgumentError("types/value length mismatch","tuple",r);let s=new ze,i=new ze,o=[];e.forEach(((t,e)=>{let r=n[e];if(t.dynamic){let e=i.length;t.encode(i,r);let n=s.writeUpdatableValue();o.push((t=>{n(t+e)}))}else t.encode(s,r)})),o.forEach((t=>{t(s.length)}));let a=t.appendWriter(s);return a+=t.appendWriter(i),a}function Ws(t,e){let r=[],n=[],s=t.subReader(0);return e.forEach((e=>{let i=null;if(e.dynamic){let r=t.readIndex(),n=s.subReader(r);try{i=e.decode(n)}catch(t){if(u(t,"BUFFER_OVERRUN"))throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(u(t,"BUFFER_OVERRUN"))throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}if(null==i)throw new Error("investigate");r.push(i),n.push(e.localName||null)})),je.fromItems(r,n)}class Hs extends $e{constructor(t,e,r){super("array",t.type+"["+(e>=0?e:"")+"]",r,-1===e||t.dynamic),n(this,{coder:t,length:e})}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let r=0;rt.dataLength&&P.throwError("insufficient data length","BUFFER_OVERRUN",{buffer:t.bytes,offset:e*Ue,length:t.dataLength}));let r=[];for(let t=0;tt||r<-(t+Qs))&&this._throwError("value out-of-bounds",e)}else(rIt(n,8*this.size))&&this._throwError("value out-of-bounds",e);return r=It(Ot(r,8*this.size),8*this.size),this.signed&&(r=Ot(xt(r,8*this.size),256)),t.writeValue(r)}decode(t){let e=It(t.readValue(),8*this.size);return this.signed&&(e=xt(e,8*this.size)),e}}const ri=new T("@ethersproject/strings@6.0.0-beta.2");var ni,si;function ii(e,r,n,s,i){if(e===t.Utf8ErrorReason.BAD_PREFIX||e===t.Utf8ErrorReason.UNEXPECTED_CONTINUE){let t=0;for(let e=r+1;e>6==2;e++)t++;return t}return e===t.Utf8ErrorReason.OVERRUN?n.length-r-1:0}t.UnicodeNormalizationForm=void 0,(ni=t.UnicodeNormalizationForm||(t.UnicodeNormalizationForm={})).current="",ni.NFC="NFC",ni.NFD="NFD",ni.NFKC="NFKC",ni.NFKD="NFKD",t.Utf8ErrorReason=void 0,(si=t.Utf8ErrorReason||(t.Utf8ErrorReason={})).UNEXPECTED_CONTINUE="unexpected continuation byte",si.BAD_PREFIX="bad codepoint prefix",si.OVERRUN="string overrun",si.MISSING_CONTINUE="missing continuation byte",si.OUT_OF_RANGE="out of UTF-8 range",si.UTF16_SURROGATE="UTF-16 surrogate",si.OVERLONG="overlong representation";const oi=Object.freeze({error:function(t,e,r,n,s){return ri.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:ii,replace:function(e,r,n,s,i){return e===t.Utf8ErrorReason.OVERLONG?(s.push(null!=i?i:-1),0):(s.push(65533),ii(e,r,n))}});function ai(e,r){null==r&&(r=oi.error);const n=ri.getBytes(e,"bytes"),s=[];let i=0;for(;i>7==0){s.push(e);continue}let o=null,a=null;if(192==(224&e))o=1,a=127;else if(224==(240&e))o=2,a=2047;else{if(240!=(248&e)){i+=r(128==(192&e)?t.Utf8ErrorReason.UNEXPECTED_CONTINUE:t.Utf8ErrorReason.BAD_PREFIX,i-1,n,s);continue}o=3,a=65535}if(i-1+o>=n.length){i+=r(t.Utf8ErrorReason.OVERRUN,i-1,n,s);continue}let c=e&(1<<8-o-1)-1;for(let e=0;e1114111?i+=r(t.Utf8ErrorReason.OUT_OF_RANGE,i-1-o,n,s,c):c>=55296&&c<=57343?i+=r(t.Utf8ErrorReason.UTF16_SURROGATE,i-1-o,n,s,c):c<=a?i+=r(t.Utf8ErrorReason.OVERLONG,i-1-o,n,s,c):s.push(c))}return s}function ci(e,r=t.UnicodeNormalizationForm.current){r!=t.UnicodeNormalizationForm.current&&(ri.assertNormalize(r),e=e.normalize(r));let n=[];for(let t=0;t>6|192),n.push(63&r|128);else if(55296==(64512&r)){t++;const s=e.charCodeAt(t);if(t>=e.length||56320!=(64512&s))throw new Error("invalid utf-8 string");const i=65536+((1023&r)<<10)+(1023&s);n.push(i>>18|240),n.push(i>>12&63|128),n.push(i>>6&63|128),n.push(63&i|128)}else n.push(r>>12|224),n.push(r>>6&63|128),n.push(63&r|128)}return new Uint8Array(n)}function li(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function ui(t,e){return'"'+ai(t,e).map((t=>{if(t<256){switch(t){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(t>=32&&t<127)return String.fromCharCode(t)}return t<=65535?li(t):li(55296+((t-=65536)>>10&1023))+li(56320+(1023&t))})).join("")+'"'}function hi(t){return t.map((t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t))))).join("")}function fi(t,e){return hi(ai(t,e))}function di(e,r=t.UnicodeNormalizationForm.current){return ai(ci(e,r))}function pi(t){const e=ci(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return Ae(e,32)}function gi(t){const e=ri.getBytes(t,"bytes");if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let r=31;for(;0===e[r-1];)r--;return fi(e.slice(0,r))}function wi(t,e){const r=e||function(t){return[parseInt(t,16)]};let n=0,s={};return t.split(",").forEach((t=>{let e=t.split(":");n+=parseInt(e[0],16),s[n]=r(e[1])})),s}function mi(t){let e=0;return t.split(",").map((t=>{let r=t.split("-");1===r.length?r[1]="0":""===r[1]&&(r[1]="1");let n=e+parseInt(r[0],16);return e=parseInt(r[1],16),{l:n,h:e}}))}function yi(t,e){let r=0;for(let n=0;n=r&&t<=r+s.h&&(t-r)%(s.d||1)==0){if(s.e&&-1!==s.e.indexOf(t-r))continue;return s}}return null}const bi=mi("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),vi="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map((t=>parseInt(t,16))),Ei=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],Ai=wi("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),ki=wi("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),Ti=wi("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",(function(t){if(t.length%4!=0)throw new Error("should not happen; bad data");let e=[];for(let r=0;r{if(vi.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){const e=yi(t,Ei);if(e){if(null==e.s)throw new Error("should not happenl bad range");return[t+e.s]}const r=Ai[t];if(r)return r;const n=ki[t];return n?[t+n[0]]:Ti[t]||null}(t);return e||[t]})),r=n.reduce(((t,e)=>(e.forEach((e=>{t.push(e)})),t)),[]),r=di(hi(r),t.UnicodeNormalizationForm.NFKC),r.forEach((t=>{yi(t,Pi)&&ri.throwArgumentError("STRINGPREP_CONTAINS_PROHIBITED","value",e)})),r.forEach((t=>{yi(t,bi)&&ri.throwArgumentError("STRINGPREP_CONTAINS_UNASSIGNED","value",e)}));let s=hi(r);return"-"!==s.substring(0,1)&&"--"!==s.substring(2,4)&&"-"!==s.substring(s.length-1)||ri.throwArgumentError("invalid hyphen","value",e),s.length>63&&ri.throwArgumentError("too long","value",e),s}class xi extends Ks{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,ci(js.dereference(e,"string")))}decode(t){return fi(super.decode(t))}}class Oi extends $e{constructor(t,e){let r=!1;const s=[];t.forEach((t=>{t.dynamic&&(r=!0),s.push(t.type)}));super("tuple","tuple("+s.join(",")+")",e,r),n(this,{coders:Object.freeze(t.slice())})}defaultValue(){const t=[];this.coders.forEach((e=>{t.push(e.defaultValue())}));const e=this.coders.reduce(((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t}),{});return this.coders.forEach(((r,n)=>{let s=r.localName;s&&1===e[s]&&("length"===s&&(s="_length"),null==t[s]&&(t[s]=t[n]))})),Object.freeze(t)}encode(t,e){const r=js.dereference(e,"tuple");return zs(t,this.coders,r)}decode(t){return Ws(t,this.coders)}}var Ii,Si,Ri=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Bi=new RegExp(/^bytes([0-9]*)$/),Ci=new RegExp(/^(u?int)([0-9]*)$/);Ii=new WeakSet,Si=function t(e){if(e.isArray())return new Hs(Ri(this,Ii,"m",t).call(this,e.arrayChildren),e.arrayLength,e.name);if(e.isTuple())return new Oi(e.components.map((e=>Ri(this,Ii,"m",t).call(this,e))),e.name);switch(e.baseType){case"address":return new Gs(e.name);case"bool":return new Vs(e.name);case"string":return new xi(e.name);case"bytes":return new Js(e.name);case"":return new Ys(e.name)}let r=e.type.match(Ci);if(r){let t=parseInt(r[2]||"256");return(0===t||t>256||t%8!=0)&&P.throwArgumentError("invalid "+r[1]+" bit length","param",e),new ei(t/8,"int"===r[1],e.name)}if(r=e.type.match(Bi),r){let t=parseInt(r[1]);return(0===t||t>32)&&P.throwArgumentError("invalid bytes length","param",e),new qs(t,e.name)}return P.throwArgumentError("invalid type","type",e.type)};const _i=new class{constructor(){Ii.add(this)}getDefaultValue(t){const e=t.map((t=>Ri(this,Ii,"m",Si).call(this,at.from(t))));return new Oi(e,"_").defaultValue()}encode(t,e){P.assertArgumentCount(e.length,t.length,"types/values length mismatch");const r=t.map((t=>Ri(this,Ii,"m",Si).call(this,at.from(t)))),n=new Oi(r,"_"),s=new ze;return n.encode(s,e),s.data}decode(t,e,r){const n=t.map((t=>Ri(this,Ii,"m",Si).call(this,at.from(t))));return new Oi(n,"_").decode(new We(e,r))}};function Fi(t){return dn(ci(t))}const Ui=new T("@ethersproject/hash@6.0.0-beta.3"),Li=new Uint8Array(32);Li.fill(0);const Di=new RegExp("^((.*)\\.)?([^.]+)$");function Mi(t){try{const e=t.split(".");for(let t=0;t{""===e&&Ui.throwArgumentError("invalid DNS name; missing component","name",t);const r=ci("_"+Ni(e));return r[0]=r.length-1,r})))+"00"}const $i="Ethereum Signed Message:\n";function zi(t){return"string"==typeof t&&(t=ci(t)),dn(we([ci($i),ci(String(t.length)),t]))}const Wi=new RegExp("^bytes([0-9]+)$"),Hi=new RegExp("^(u?int)([0-9]*)$"),Vi=new RegExp("^(.*)\\[([0-9]*)\\]$");function Ki(t,e,r){switch(t){case"address":return r?Ui.getBytes(Ee(e,32)):Ui.getBytes(e);case"string":return ci(e);case"bytes":return Ui.getBytes(e);case"bool":return e=e?"0x01":"0x00",r?Ui.getBytes(Ee(e,32)):Ui.getBytes(e)}let n=t.match(Hi);if(n){let s=parseInt(n[2]||"256");return n[2]&&String(s)!==n[2]||s%8!=0||0===s||s>256?Ui.throwArgumentError("invalid number type","type",t):(r&&(s=256),e=Ot(e,s),Ui.getBytes(Ee(e,s/8)))}if(n=t.match(Wi),n){const s=parseInt(n[1]);return String(s)!==n[1]||0===s||s>32?Ui.throwArgumentError("invalid bytes type","type",t):me(e)!==s?Ui.throwArgumentError(`invalid value for ${t}`,"value",e):r?Ui.getBytes(Ae(e,32)):e}if(n=t.match(Vi),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&Ui.throwArgumentError(`invalid array length for ${t}`,"value",e);const s=[];return e.forEach((function(t){s.push(Ki(r,t,!0))})),Ui.getBytes(we(s))}return Ui.throwArgumentError("invalid type","type",t)}function Ji(t,e){t.length!=e.length&&Ui.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach((function(t,n){r.push(Ki(t,e[n]))})),pe(we(r))}function qi(t,e){return dn(Ji(t,e))}function Xi(t,e){return os(Ji(t,e))}var Yi,Zi,Qi,to,eo,ro=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},no=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const so=new Uint8Array(32);so.fill(0);const io=BigInt(-1),oo=BigInt(0),ao=BigInt(1),co=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const lo=kt(ao,32),uo=kt(oo,32),ho={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},fo=["name","version","chainId","verifyingContract","salt"];function po(t){return function(e){return"string"!=typeof e&&Ui.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const go={name:po("name"),version:po("version"),chainId:function(t){return Ui.getBigInt(t,"domain.chainId")},verifyingContract:function(t){try{return ws(t).toLowerCase()}catch(t){}return Ui.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){const e=Ui.getBytes(t,"domain.salt");return 32!==e.length&&Ui.throwArgumentError('invalid domain value "salt"',"domain.salt",t),pe(e)}};function wo(t){{const e=t.match(/^(u?)int(\d*)$/);if(e){const r=""===e[1],n=parseInt(e[2]||"256");(n%8!=0||n>256||e[2]&&e[2]!==String(n))&&Ui.throwArgumentError("invalid numeric width","type",t);const s=It(co,r?n-1:n),i=r?(s+ao)*io:oo;return function(e){const r=Ui.getBigInt(e,"value");return(rs)&&Ui.throwArgumentError(`value out-of-bounds for ${t}`,"value",r),kt(Ot(r,256),32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const r=parseInt(e[1]);return(0===r||r>32||e[1]!==String(r))&&Ui.throwArgumentError("invalid bytes width","type",t),function(e){return le(e).length!==r&&Ui.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=le(t),r=e.length%32;return r?we([e,so.slice(r)]):pe(e)}(e)}}}switch(t){case"address":return function(t){return Ee(ws(t),32)};case"bool":return function(t){return t?lo:uo};case"bytes":return function(t){return dn(t)};case"string":return function(t){return Fi(t)}}return null}function mo(t,e){return`${t}(${e.map((({name:t,type:e})=>e+" "+t)).join(",")})`}class yo{constructor(t){Yi.add(this),Zi.set(this,void 0),Qi.set(this,void 0),to.set(this,void 0),ro(this,Zi,JSON.stringify(t),"f"),ro(this,Qi,new Map,"f"),ro(this,to,new Map,"f");const e=new Map,r=new Map,s=new Map;Object.keys(t).forEach((t=>{e.set(t,new Set),r.set(t,[]),s.set(t,new Set)}));for(const n in t){const s=new Set;for(const i of t[n]){s.has(i.name)&&Ui.throwArgumentError(`duplicate variable name ${JSON.stringify(i.name)} in ${JSON.stringify(n)}`,"types",t),s.add(i.name);const o=i.type.match(/^([^\x5b]*)(\x5b|$)/)[1]||null;o===n&&Ui.throwArgumentError(`circular type reference to ${JSON.stringify(o)}`,"types",t);wo(o)||(r.has(o)||Ui.throwArgumentError(`unknown type ${JSON.stringify(o)}`,"types",t),r.get(o).push(n),e.get(n).add(o))}}const i=Array.from(r.keys()).filter((t=>0===r.get(t).length));0===i.length?Ui.throwArgumentError("missing primary type","types",t):i.length>1&&Ui.throwArgumentError(`ambiguous primary types or unused types: ${i.map((t=>JSON.stringify(t))).join(", ")}`,"types",t),n(this,{primaryType:i[0]}),function n(i,o){o.has(i)&&Ui.throwArgumentError(`circular type reference to ${JSON.stringify(i)}`,"types",t),o.add(i);for(const t of e.get(i))if(r.has(t)){n(t,o);for(const e of o)s.get(e).add(t)}o.delete(i)}(this.primaryType,new Set);for(const[e,r]of s){const n=Array.from(r);n.sort(),no(this,Qi,"f").set(e,mo(e,t[e])+n.map((e=>mo(e,t[e]))).join(""))}}get types(){return JSON.parse(no(this,Zi,"f"))}getEncoder(t){let e=no(this,to,"f").get(t);return e||(e=no(this,Yi,"m",eo).call(this,t),no(this,to,"f").set(t,e)),e}encodeType(t){const e=no(this,Qi,"f").get(t);return e||Ui.throwArgumentError(`unknown type: ${JSON.stringify(t)}`,"name",t)}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return dn(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,r){if(wo(t))return r(t,e);const n=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(n){const t=n[1],s=parseInt(n[3]);return s>=0&&e.length!==s&&Ui.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e),e.map((e=>this._visit(t,e,r)))}const s=this.types[t];return s?s.reduce(((t,{name:n,type:s})=>(t[n]=this._visit(s,e[n],r),t)),{}):Ui.throwArgumentError(`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new yo(t)}static getPrimaryType(t){return yo.from(t).primaryType}static hashStruct(t,e,r){return yo.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=ho[r];n||Ui.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort(((t,e)=>fo.indexOf(t.name)-fo.indexOf(e.name))),yo.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return we(["0x1901",yo.hashDomain(t),yo.from(e).hash(r)])}static hash(t,e,r){return dn(yo.encode(t,e,r))}static async resolveNames(t,e,r,n){t=Object.assign({},t);const s={};t.verifyingContract&&!se(t.verifyingContract,20)&&(s[t.verifyingContract]="0x");const i=yo.from(e);i.visit(r,((t,e)=>("address"!==t||se(e,20)||(s[e]="0x"),e)));for(const t in s)s[t]=await n(t);return t.verifyingContract&&s[t.verifyingContract]&&(t.verifyingContract=s[t.verifyingContract]),{domain:t,value:r=i.visit(r,((t,e)=>"address"===t&&s[e]?s[e]:e))}}static getPayload(t,e,r){yo.hashDomain(t);const n={},s=[];fo.forEach((e=>{const r=t[e];null!=r&&(n[e]=go[e](r),s.push({name:e,type:ho[e]}))}));const i=yo.from(e),o=Object.assign({},e);return o.EIP712Domain?Ui.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",e):o.EIP712Domain=s,i.encode(r),{types:o,domain:n,primaryType:i.primaryType,message:i.visit(r,((t,e)=>{if(t.match(/^bytes(\d*)/))return pe(Ui.getBytes(e));if(t.match(/^u?int/))return Ui.getBigInt(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return"string"!=typeof e&&Ui.throwArgumentError("invalid string","value",e),e}return Ui.throwArgumentError("unsupported type","type",t)}))}}}Zi=new WeakMap,Qi=new WeakMap,to=new WeakMap,Yi=new WeakSet,eo=function(t){{const e=wo(t);if(e)return e}const e=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(e){const t=e[1],r=this.getEncoder(t),n=parseInt(e[3]);return e=>{n>=0&&e.length!==n&&Ui.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e);let s=e.map(r);return no(this,Qi,"f").has(t)&&(s=s.map(dn)),dn(we(s))}}const r=this.types[t];if(r){const e=Fi(no(this,Qi,"f").get(t));return t=>{const n=r.map((({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return no(this,Qi,"f").has(r)?dn(n):n}));return n.unshift(e),we(n)}}return Ui.throwArgumentError(`unknown type: ${t}`,"type",t)};var bo,vo,Eo,Ao,ko,To,Po,No=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},xo=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Oo{constructor(t,e,r){const s=t.name,i=t.format();n(this,{fragment:t,name:s,signature:i,topic:e,args:r})}}class Io{constructor(t,e,r,s){const i=t.name,o=t.format();n(this,{fragment:t,name:i,args:r,signature:o,selector:e,value:s})}}class So{constructor(t,e,r){const s=t.name,i=t.format();n(this,{fragment:t,name:s,args:r,signature:i,selector:e})}}class Ro{constructor(t){n(this,{hash:t,_isIndexed:!0})}static isIndexed(t){return!(!t||!t._isIndexed)}}const Bo={0:"generic panic",1:"assert(false)",17:"arithmetic overflow",18:"division or modulo by zero",33:"enum overflow",34:"invalid encoded storage byte array accessed",49:"out-of-bounds array access; popping on an empty array",50:"out-of-bounds access of an array or bytesN",65:"out of memory",81:"uninitialized function"},Co={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:t=>`reverted with reason string ${JSON.stringify(t)}`},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"],reason:t=>{let e="unknown panic code";return t>=0&&t<=255&&Bo[t.toString()]&&(e=Bo[t.toString()]),`reverted with panic code 0x${t.toString(16)} (${e})`}}};class _o{constructor(t){bo.add(this),vo.set(this,void 0),Eo.set(this,void 0),Ao.set(this,void 0),ko.set(this,void 0);let e=[];e="string"==typeof t?JSON.parse(t):t,No(this,Ao,new Map,"f"),No(this,vo,new Map,"f"),No(this,Eo,new Map,"f"),n(this,{fragments:Object.freeze(e.map((t=>lt.from(t))).filter((t=>null!=t)))}),No(this,ko,this.getAbiCoder(),"f"),this.fragments.forEach((t=>{let e;switch(t.type){case"constructor":return this.deploy?void P.warn("duplicate definition - constructor"):void n(this,{deploy:t});case"function":e=xo(this,Ao,"f");break;case"event":e=xo(this,Eo,"f");break;case"error":e=xo(this,vo,"f");break;default:return}const r=t.format();e.has(r)?P.warn("duplicate definition - "+r):e.set(r,t)})),this.deploy||n(this,{deploy:pt.fromString("constructor()")})}format(t){t||(t=B.full),t===B.sighash&&P.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map((e=>e.format(t)));return t===B.json?JSON.stringify(e.map((t=>JSON.parse(t)))):e}getAbiCoder(){return _i}getFunctionName(t){return xo(this,bo,"m",To).call(this,t,null,!1).name}getFunction(t,e){return xo(this,bo,"m",To).call(this,t,e||null,!0)}getEventName(t){return xo(this,bo,"m",Po).call(this,t,null,!1).name}getEvent(t,e){return xo(this,bo,"m",Po).call(this,t,e||null,!0)}getError(t,e){if(se(t)){const e=t.toLowerCase();for(const t of xo(this,vo,"f").values())if(e===this.getSelector(t))return t;P.throwArgumentError("no matching error","selector",t)}if(-1===t.indexOf("(")){const e=[];for(const[r,n]of xo(this,vo,"f"))r.split("(")[0]===t&&e.push(n);return 0===e.length?P.throwArgumentError("no matching error","name",t):e.length>1&&P.throwArgumentError("multiple matching errors","name",t),e[0]}const r=xo(this,vo,"f").get(ft.fromString(t).format());return r||P.throwArgumentError("no matching error","signature",t)}getSelector(t){return ye(Fi(t.format()),0,4)}getEventTopic(t){return Fi(t.format())}_decodeParams(t,e){return xo(this,ko,"f").decode(t,e)}_encodeParams(t,e){return xo(this,ko,"f").encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),ye(e,0,4)!==this.getSelector(t)&&P.throwArgumentError(`data signature does not match error ${t.name}.`,"data",e),this._decodeParams(t.inputs,ye(e,4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),we([this.getSelector(t),this._encodeParams(t.inputs,e||[])])}decodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),ye(e,0,4)!==this.getSelector(t)&&P.throwArgumentError(`data signature does not match function ${t.name}.`,"data",e),this._decodeParams(t.inputs,ye(e,4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),we([this.getSelector(t),this._encodeParams(t.inputs,e||[])])}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r="invalid length for result data";const n=le(e);if(n.length%32==0)try{return xo(this,ko,"f").decode(t.outputs,n)}catch(t){r="could not decode result data"}return P.throwError(r,"BAD_DATA",{value:pe(n),info:{method:t.name,signature:t.format()}})}makeError(t,e,r){"string"==typeof t&&(t=this.getFunction(t));const n=P.getBytes(e);let s,i,o,a;if(r)try{s=xo(this,ko,"f").decode(t.inputs,r.data||"0x")}catch(t){console.log(t)}let c="unknown reason";if(0===n.length)c="missing error reason";else if(n.length%32==4){const t=pe(n.slice(0,4)),e=Co[t];if(e)try{o=e.name,a=e.signature,i=xo(this,ko,"f").decode(e.inputs,n.slice(4)),c=e.reason(...i)}catch(t){console.log(t)}else{c="unknown custom error";try{const e=this.getError(t);o=e.name,a=e.format(),c=`custom error: ${a}`;try{i=xo(this,ko,"f").decode(e.inputs,n.slice(4))}catch(t){c=`custom error: ${a} (coult not decode error data)`}}catch(t){console.log(t)}}}return P.makeError("call revert exception","CALL_EXCEPTION",{data:pe(n),transaction:null,method:t.name,signature:t.format(),args:s,errorArgs:i,errorName:o,errorSignature:a,reason:c})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),pe(xo(this,ko,"f").encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&P.throwError("too many arguments for "+t.format(),"UNEXPECTED_ARGUMENT",{count:e.length,expectedCount:t.inputs.length});const r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?Fi(e):"bytes"===t.type?dn(pe(e)):("address"===t.type&&xo(this,ko,"f").encode(["address"],[e]),Ee(pe(e),32));for(e.forEach(((e,s)=>{const i=t.inputs[s];i.indexed?null==e?r.push(null):"array"===i.baseType||"tuple"===i.baseType?P.throwArgumentError("filtering with tuples or arrays not supported","contract."+i.name,e):Array.isArray(e)?r.push(e.map((t=>n(i,t)))):r.push(n(i,e)):null!=e&&P.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+i.name,e)}));r.length&&null===r[r.length-1];)r.pop();return r}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const r=[],n=[],s=[];return t.anonymous||r.push(this.getEventTopic(t)),e.length!==t.inputs.length&&P.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach(((t,i)=>{const o=e[i];if(t.indexed)if("string"===t.type)r.push(Fi(o));else if("bytes"===t.type)r.push(dn(o));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");r.push(xo(this,ko,"f").encode([t.type],[o]))}else n.push(t),s.push(o)})),{data:xo(this,ko,"f").encode(n,s),topics:r}}decodeEventLog(t,e,r){if("string"==typeof t&&(t=this.getEvent(t)),null!=r&&!t.anonymous){const e=this.getEventTopic(t);se(r[0],32)&&r[0].toLowerCase()===e||P.throwArgumentError("fragment/topic mismatch","topics[0]",r[0]),r=r.slice(1)}const n=[],s=[],i=[];t.inputs.forEach(((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(n.push(at.fromObject({type:"bytes32",name:t.name})),i.push(!0)):(n.push(t),i.push(!1)):(s.push(t),i.push(!1))}));const o=null!=r?xo(this,ko,"f").decode(n,we(r)):null,a=xo(this,ko,"f").decode(s,e,!0),c=[],l=[];let u=0,h=0;return t.inputs.forEach(((t,e)=>{let r=null;if(t.indexed)if(null==o)r=new Ro(null);else if(i[e])r=new Ro(o[h++]);else try{r=o[h++]}catch(t){r=t}else try{r=a[u++]}catch(t){r=t}c.push(r),l.push(t.name||null)})),je.fromItems(c,l)}parseTransaction(t){const e=P.getBytes(t.data,"tx.data"),r=P.getBigInt(null!=t.value?t.value:0,"tx.value"),n=this.getFunction(pe(e.slice(0,4)));if(!n)return null;const s=xo(this,ko,"f").decode(n.inputs,e.slice(4));return new Io(n,this.getSelector(n),s,r)}parseLog(t){const e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new Oo(e,this.getEventTopic(e),this.decodeEventLog(e,t.data,t.topics))}parseError(t){const e=pe(t),r=this.getError(ye(e,0,4));if(!r)return null;const n=xo(this,ko,"f").decode(r.inputs,ye(e,4));return new So(r,this.getSelector(r),n)}static from(t){return t instanceof _o?t:"string"==typeof t?new _o(JSON.parse(t)):"function"==typeof t.format?new _o(t.format(B.json)):new _o(t)}}vo=new WeakMap,Eo=new WeakMap,Ao=new WeakMap,ko=new WeakMap,bo=new WeakSet,To=function(t,e,r){if(se(t)){const e=t.toLowerCase();for(const t of xo(this,Ao,"f").values())if(e===this.getSelector(t))return t;P.throwArgumentError("no matching function","selector",t)}if(-1===t.indexOf("(")){const n=[];for(const[e,r]of xo(this,Ao,"f"))e.split("(")[0]===t&&n.push(r);if(e){const t=e.length>0?e[e.length-1]:null;let r=e.length,s=!0;js.isTyped(t)&&"overrides"===t.type&&(s=!1,r--);for(let t=n.length-1;t>=0;t--){const e=n[t].inputs.length;e===r||s&&e===r-1||n.splice(t,1)}for(let t=n.length-1;t>=0;t--){const r=n[t].inputs;for(let s=0;s=r.length){if("overrides"===e[s].type)continue;n.splice(t,1);break}if(e[s].type!==r[s].baseType){n.splice(t,1);break}}}}if(1===n.length&&e&&e.length!==n[0].inputs.length){const t=e[e.length-1];(null==t||Array.isArray(t)||"object"!=typeof t)&&n.splice(0,1)}if(0===n.length)P.throwArgumentError("no matching function","name",t);else if(n.length>1&&r){const e=n.map((t=>JSON.stringify(t.format()))).join(", ");P.throwArgumentError(`multiple matching functions (i.e. ${e})`,"name",t)}return n[0]}const n=xo(this,Ao,"f").get(gt.fromString(t).format());return n||P.throwArgumentError("no matching function","signature",t)},Po=function(t,e,r){if(se(t)){const e=t.toLowerCase();for(const t of xo(this,Eo,"f").values())if(e===this.getEventTopic(t))return t;P.throwArgumentError("no matching event","eventTopic",t)}if(-1===t.indexOf("(")){const n=[];for(const[e,r]of xo(this,Eo,"f"))e.split("(")[0]===t&&n.push(r);if(e){for(let t=n.length-1;t>=0;t--)n[t].inputs.length=0;t--){const r=n[t].inputs;for(let s=0;s1&&r&&P.throwArgumentError("multiple matching events","name",t),n[0]}const n=xo(this,Eo,"f").get(dt.fromString(t).format());return n||P.throwArgumentError("no matching event","signature",t)};const Fo=new T("@ethersproject/web@6.0.0-beta.2");var Uo,Lo,Do=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Mo=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class jo{constructor(t,e,r,n,s){Uo.set(this,void 0),Lo.set(this,void 0),Do(this,Uo,{statusCode:t,statusMessage:e,headers:Object.freeze(Object.assign({},Object.keys(r).reduce(((t,e)=>(t[e.toLowerCase()]=r[e],t)),{}))),body:null==n?null:new Uint8Array(n),request:s||null},"f"),Do(this,Lo,{message:""},"f")}toString(){const t=c(Mo(this,Uo,"f"),"body");return``}get statusCode(){return c(Mo(this,Uo,"f"),"statusCode")}get statusMessage(){return c(Mo(this,Uo,"f"),"statusMessage")}get headers(){return c(Mo(this,Uo,"f"),"headers")}get body(){const t=c(Mo(this,Uo,"f"),"body");return null==t?null:new Uint8Array(t)}get bodyText(){try{const t=c(Mo(this,Uo,"f"),"body");return null==t?"":fi(t)}catch(t){return Fo.throwError("response body is not valid UTF-8 data","UNSUPPORTED_OPERATION",{operation:"bodyText",info:{response:this}})}}get bodyJson(){try{return JSON.parse(this.bodyText)}catch(t){return Fo.throwError("response body is not valid JSON","UNSUPPORTED_OPERATION",{operation:"bodyJson",info:{response:this}})}}[(Uo=new WeakMap,Lo=new WeakMap,Symbol.iterator)](){const t=this.headers,e=Object.keys(t);let r=0;return{next:()=>{if(r=200&&this.statusCode<300}assertOk(){if(this.ok())return;let{message:t,error:e}=Mo(this,Lo,"f");""===t&&(t=`server response ${this.statusCode} ${this.statusMessage}`),Fo.throwError(t,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e})}}async function Go(t,e){const r=t.url.split(":")[0].toLowerCase();"http"!==r&&"https"!==r&&Fo.throwError(`unsupported protocol ${r}`,"UNSUPPORTED_OPERATION",{info:{protocol:r},operation:"request"}),t.credentials&&!t.allowInsecureAuthentication&&Fo.throwError("insecure authorized connections unsupported","UNSUPPORTED_OPERATION",{operation:"request"});const n={method:t.method,headers:new Headers(Array.from(t)),body:t.body||void 0},s=await fetch(t.url,n),i={};s.headers.forEach(((t,e)=>{i[e.toLowerCase()]=t}));const o=new Uint8Array(await s.arrayBuffer());return new jo(s.status,s.statusText,i,o,t)}var $o,zo=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Wo=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Ho(t,e,r){if(typeof t!==e)throw new Error(`invalid ${r}`);return t}class Vo{constructor(t){$o.set(this,void 0),zo(this,$o,{allowInsecure:!1,gzip:!1,headers:{},method:"",timeout:300,url:Ho(t,"string","url")},"f")}get url(){return c(Wo(this,$o,"f"),"url")}set url(t){l(Wo(this,$o,"f"),"url",Ho(t,"string","url"))}get body(){const t=c(Wo(this,$o,"f"),"body");return null==t?null:this.isFrozen()?new Uint8Array(t):t}set body(t){if(null==t)l(Wo(this,$o,"f"),"body",void 0),l(Wo(this,$o,"f"),"bodyType",void 0);else if("string"==typeof t)l(Wo(this,$o,"f"),"body",ci(t)),l(Wo(this,$o,"f"),"bodyType","text/plain");else if(t instanceof Uint8Array)l(Wo(this,$o,"f"),"body",t),l(Wo(this,$o,"f"),"bodyType","application/octet-stream");else{if("object"!=typeof t)throw new Error("invalid body");l(Wo(this,$o,"f"),"body",ci(JSON.stringify(t))),l(Wo(this,$o,"f"),"bodyType","application/json")}}hasBody(){return null!=c(Wo(this,$o,"f"),"body")}get method(){const t=c(Wo(this,$o,"f"),"method");return t?t.toUpperCase():this.body?"POST":"GET"}set method(t){null==t&&(t=""),l(Wo(this,$o,"f"),"method",Ho(t,"string","method"))}get headers(){const t=Object.assign({},c(Wo(this,$o,"f"),"headers")),e=c(Wo(this,$o,"f"),"bodyType");return this.credentials,this.allowGzip&&(t["accept-encoding"]="gzip"),null==t["content-type"]&&e&&(t["content-type"]=e),this.body&&(t["content-length"]=String(this.body.length)),Object.freeze(t)}getHeader(t){return this.headers[t.toLowerCase()]}setHeader(t,e){const r=c(Wo(this,$o,"f"),"headers");l(Wo(this,$o,"f"),"headers",r),r[Ho(t,"string","key").toLowerCase()]=String(e)}clearHeaders(){l(Wo(this,$o,"f"),"headers",{})}[($o=new WeakMap,Symbol.iterator)](){const t=this.headers,e=Object.keys(t);let r=0;return{next:()=>{if(r ${JSON.stringify(t)})`});const n=new Vo(t);return n.method="GET",n.allowGzip=this.allowGzip,n.timeout=this.timeout,l(Wo(n,$o,"f"),"body",c(Wo(this,$o,"f"),"body")),l(Wo(n,$o,"f"),"headers",Object.assign({},c(Wo(this,$o,"f"),"headers"))),l(Wo(n,$o,"f"),"bodyType",c(Wo(this,$o,"f"),"bodyType")),n}clone(){const t=new Vo(this.url);l(Wo(t,$o,"f"),"method",c(Wo(this,$o,"f"),"method"));const e=c(Wo(this,$o,"f"),"body");return l(Wo(t,$o,"f"),"body",null==e?void 0:new Uint8Array(e)),l(Wo(t,$o,"f"),"bodyType",c(Wo(this,$o,"f"),"bodyType")),l(Wo(t,$o,"f"),"headers",Object.assign({},c(Wo(this,$o,"f"),"headers"))),l(Wo(t,$o,"f"),"creds",c(Wo(this,$o,"f"),"creds")),this.allowGzip&&(t.allowGzip=!0),t.timeout=this.timeout,this.allowInsecureAuthentication&&(t.allowInsecureAuthentication=!0),t}freeze(){const t=c(Wo(this,$o,"f"),"body");return null!=t&&l(Wo(this,$o,"f"),"body",new Uint8Array(t)),Object.freeze(Wo(this,$o,"f").headers),Object.freeze(Wo(this,$o,"f")),this}isFrozen(){return Object.isFrozen(Wo(this,$o,"f"))}}async function Ko(t){return new Promise((e=>{setTimeout(e,t)}))}function Jo(){return(new Date).getTime()}let qo=!1;async function Xo(t){const e="string"==typeof t?{request:new Vo(t)}:t instanceof Vo?{request:t}:Object.assign({},t);if(null==e.request)return Fo.throwArgumentError("missing request","connection",t);let r=e.request.clone().freeze();switch(e.request.url.split(":")[0]){case"data":{const t=r.url.match(/^data:([^;:]*)?(;base64)?,(.*)$/i);if(t)try{const e={"content-type":t[1]?t[1]:"text/plain"},n=t[2]?he(t[3]):ci(t[3].replace(/%([0-9a-f][0-9a-f])/gi,((t,e)=>String.fromCharCode(parseInt(e,16)))));return new jo(200,"OK",e,n,r.clone())}catch(t){return new jo(400,"BAD REQUEST (invalid base64 encoded data)",{},null,r.clone())}return new jo(500,"INTERNAL SERVER ERROR (unsupported dara URI)",{},null,r.clone())}case"ipfs":case"ipns":case"ar":throw new Error("not implemented yet");case"http":case"https":break;default:throw new Error("unsupported scheme")}const n=null!=e.throttleLimit?e.throttleLimit:12;if(!Number.isInteger(n)||n<1)return Fo.throwArgumentError("invalid throttleLimit","connection",t);const s=null!=e.throttleSlotInterval?e.throttleSlotInterval:100;if(!Number.isInteger(s)||n<0)return Fo.throwArgumentError("invalid throttleSlotInterval","connection",t);const i=null!=e.throttleRetry?e.throttleRetry:null;if(i&&"function"!=typeof i)return Fo.throwArgumentError("invalid throttleRetry callback","connection",t);const o=e.preflightRequest||null;if(o&&"function"!=typeof o)return Fo.throwArgumentError("invalid preflightRequest callback","connection",t);const a=e.processResponse||null;if(a&&"function"!=typeof a)return Fo.throwArgumentError("invalid processResponse callback","connection",t);const c=Jo();let l=null;for(let t=0;t32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function la(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function ua(t){const e=[];let r=0;for(let n=0;nYo.getBigInt(t)===na)).catch((t=>{if("CALL_EXCEPTION"===t.code)return!1;throw ea(this,Qo,null,"f"),t})),"f"),await ra(this,Qo,"f")}async _fetch(t,e="0x"){const r=we([t,ji(this.name),e]),n={to:this.address,enableCcipRead:!0,data:r};let s=!1;await this.supportsWildcard()&&(s=!0,n.data=we(["0x9061b923",ua([Gi(this.name),r])]));try{let t=await this.provider.call(n);return Yo.getBytes(t).length%32==4?Yo.throwError("resolver threw error","CALL_EXCEPTION",{transaction:n,data:t}):s?oa(t,0):t}catch(t){if("CALL_EXCEPTION"!==t.code)throw t}return null}async getAddress(t=60){if(60===t)try{const t=await this._fetch("0x3b3b57de");if("0x"===t||t===ia)return null;return(await this.provider.getNetwork()).formatter.callAddress(t)}catch(t){if("CALL_EXCEPTION"===t.code)return null;throw t}let e=null;for(const r of this.provider.plugins)if(r instanceof fa&&r.supportsCoinType(t)){e=r;break}if(null==e)return null;const r=oa(await this._fetch("0xf1cb7e06",ca(t))||"0x",0);if(null==r||"0x"===r)return null;const n=await e.encodeAddress(t,r);return null!=n?n:Yo.throwError("invalid coin data","UNSUPPORTED_OPERATION",{operation:`getAddress(${t})`,info:{coinType:t,data:r}})}async getText(t){let e=ci(t);const r=Yo.getBytes(we([ca(64),ca(e.length),e])),n=oa(await this._fetch("0x59d1d43c",la(r))||"0x",0);return null==n||"0x"===n?null:fi(n)}async getContentHash(){const t=oa(await this._fetch("0xbc1c58d1")||"0x",0);if(null==t||"0x"===t)return null;const e=t.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t="e3010170"===e[1]?"ipfs":"ipns",r=parseInt(e[4],16);if(e[5].length===2*r)return`${t}://${Yt("0x"+e[2])}`}const r=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);return r&&64===r[1].length?`bzz://${r[1]}`:Yo.throwError("invalid or unsupported content hash data","UNSUPPORTED_OPERATION",{operation:"getContentHash()",info:{data:t}})}async getAvatar(){return(await this._getAvatar()).url}async _getAvatar(){const t=[{type:"name",value:this.name}];try{const e=await this.getText("avatar");if(null==e)throw t.push({type:"!avatar",value:""}),new Error("!avatar");t.push({type:"avatar",value:e});for(let r=0;rwa.throwArgumentError(e,"signature",t);if("string"==typeof t){const r=wa.getBytes(t,"signature");if(64===r.length){const t=pe(r.slice(0,32)),e=r.slice(32,64),n=128&e[0]?28:27;return e[0]&=127,new Oa(Na,t,pe(e),n)}if(65!==me(t)){const n=pe(t.slice(0,32)),s=r.slice(32,64);128&s[0]&&e("non-canonical s");const i=Oa.getNormalizedV(r[64]);return new Oa(Na,n,pe(s),i)}return e("invlaid raw signature length")}if(t instanceof Oa)return t.clone();const r=t.r;null==r&&e("missing r"),se(r,32)||e("invalid r");const n=function(t,r){if(null!=t)return se(t,32)||e("invalid s"),t;if(null!=r){se(r,32)||e("invalid yParityAndS");const t=wa.getBytes(r);return t[0]&=127,pe(t)}return e("missing s")}(t.s,t.yParityAndS);128&wa.getBytes(n)[0]&&e("non-canonical s");const{networkV:s,v:i}=function(t,r,n){if(null!=t){const e=wa.getBigInt(t);return{networkV:e>=Pa?e:void 0,v:Oa.getNormalizedV(e)}}if(null!=r)return se(r,32)||e("invalid yParityAndS"),{v:128&wa.getBytes(r)[0]?28:27};if(null!=n){switch(n){case 0:return{v:27};case 1:return{v:28}}return e("invalid yParity")}return e("missing v")}(t.v,t.yParityAndS,t.yParity),o=new Oa(Na,r,n,i);return s&&l(ba(o,ma,"f"),"networkV",s),"yParity"in t&&t.yParity!==o.yParity?e("yParity mismatch"):"yParityAndS"in t&&t.yParityAndS!==o.yParityAndS&&e("yParityAndS mismatch"),o}} -/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */const Ia=BigInt(0),Sa=BigInt(1),Ra=BigInt(2),Ba=BigInt(3),Ca=BigInt(8),_a=Ra**BigInt(256),Fa={a:Ia,b:BigInt(7),P:_a-Ra**BigInt(32)-BigInt(977),n:_a-BigInt("432420386565659656852420866394968145599"),h:Sa,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee")};function Ua(t){const{a:e,b:r}=Fa,n=ec(t*t),s=ec(n*t);return ec(s+e*t+r)}const La=Fa.a===Ia;class Da{constructor(t,e,r){this.x=t,this.y=e,this.z=r}static fromAffine(t){if(!(t instanceof ja))throw new TypeError("JacobianPoint#fromAffine: expected Point");return new Da(t.x,t.y,Sa)}static toAffineBatch(t){const e=function(t,e=Fa.P){const r=new Array(t.length),n=nc(t.reduce(((t,n,s)=>n===Ia?t:(r[s]=t,ec(t*n,e))),Sa),e);return t.reduceRight(((t,n,s)=>n===Ia?t:(r[s]=ec(t*r[s],e),ec(t*n,e))),n),r}(t.map((t=>t.z)));return t.map(((t,r)=>t.toAffine(e[r])))}static normalizeZ(t){return Da.toAffineBatch(t).map(Da.fromAffine)}equals(t){if(!(t instanceof Da))throw new TypeError("JacobianPoint expected");const{x:e,y:r,z:n}=this,{x:s,y:i,z:o}=t,a=ec(n**Ra),c=ec(o**Ra),l=ec(e*c),u=ec(s*a),h=ec(ec(r*o)*c),f=ec(ec(i*n)*a);return l===u&&h===f}negate(){return new Da(this.x,ec(-this.y),this.z)}double(){const{x:t,y:e,z:r}=this,n=ec(t**Ra),s=ec(e**Ra),i=ec(s**Ra),o=ec(Ra*(ec((t+s)**Ra)-n-i)),a=ec(Ba*n),c=ec(a**Ra),l=ec(c-Ra*o),u=ec(a*(o-l)-Ca*i),h=ec(Ra*e*r);return new Da(l,u,h)}add(t){if(!(t instanceof Da))throw new TypeError("JacobianPoint expected");const{x:e,y:r,z:n}=this,{x:s,y:i,z:o}=t;if(s===Ia||i===Ia)return this;if(e===Ia||r===Ia)return t;const a=ec(n**Ra),c=ec(o**Ra),l=ec(e*c),u=ec(s*a),h=ec(ec(r*o)*c),f=ec(ec(i*n)*a),d=ec(u-l),p=ec(f-h);if(d===Ia)return p===Ia?this.double():Da.ZERO;const g=ec(d**Ra),w=ec(d*g),m=ec(l*g),y=ec(p**Ra-w-Ra*m),b=ec(p*(m-y)-h*w),v=ec(n*o*d);return new Da(y,b,v)}subtract(t){return this.add(t.negate())}multiplyUnsafe(t){let e=tc(t);const r=Da.ZERO;if(e===Ia)return r;if(e===Sa)return this;if(!La){let t=r,n=this;for(;e>Ia;)e&Sa&&(t=t.add(n)),n=n.double(),e>>=Sa;return t}let{k1neg:n,k1:s,k2neg:i,k2:o}=oc(e),a=r,c=r,l=this;for(;s>Ia||o>Ia;)s&Sa&&(a=a.add(l)),o&Sa&&(c=c.add(l)),l=l.double(),s>>=Sa,o>>=Sa;return n&&(a=a.negate()),i&&(c=c.negate()),c=new Da(ec(c.x*Fa.beta),c.y,c.z),a.add(c)}precomputeWindow(t){const e=La?128/t+1:256/t+1,r=[];let n=this,s=n;for(let i=0;i>=u,o>a&&(o-=l,t+=Sa),0===o){let t=n[r];e%2&&(t=t.negate()),i=i.add(t)}else{let t=n[r+Math.abs(o)-1];o<0&&(t=t.negate()),s=s.add(t)}}return{p:s,f:i}}multiply(t,e){let r,n,s=tc(t);if(La){const{k1neg:t,k1:i,k2neg:o,k2:a}=oc(s);let{p:c,f:l}=this.wNAF(i,e),{p:u,f:h}=this.wNAF(a,e);t&&(c=c.negate()),o&&(u=u.negate()),u=new Da(ec(u.x*Fa.beta),u.y,u.z),r=c.add(u),n=l.add(h)}else{const{p:t,f:i}=this.wNAF(s,e);r=t,n=i}return Da.normalizeZ([r,n])[0]}toAffine(t=nc(this.z)){const{x:e,y:r,z:n}=this,s=t,i=ec(s*s),o=ec(i*s),a=ec(e*i),c=ec(r*o);if(ec(n*s)!==Sa)throw new Error("invZ was invalid");return new ja(a,c)}}Da.BASE=new Da(Fa.Gx,Fa.Gy,Sa),Da.ZERO=new Da(Ia,Sa,Ia);const Ma=new WeakMap;class ja{constructor(t,e){this.x=t,this.y=e}_setWindowSize(t){this._WINDOW_SIZE=t,Ma.delete(this)}static fromCompressedHex(t){const e=32===t.length,r=Za(e?t:t.subarray(1));if(!lc(r))throw new Error("Point is not on curve");let n=function(t){const{P:e}=Fa,r=BigInt(6),n=BigInt(11),s=BigInt(22),i=BigInt(23),o=BigInt(44),a=BigInt(88),c=t*t*t%e,l=c*c*t%e,u=rc(l,Ba)*l%e,h=rc(u,Ba)*l%e,f=rc(h,Ra)*c%e,d=rc(f,n)*f%e,p=rc(d,s)*d%e,g=rc(p,o)*p%e,w=rc(g,a)*g%e,m=rc(w,o)*p%e,y=rc(m,Ba)*l%e,b=rc(y,i)*d%e,v=rc(b,r)*c%e;return rc(v,Ra)}(Ua(r));const s=(n&Sa)===Sa;if(e)s&&(n=ec(-n));else{1==(1&t[0])!==s&&(n=ec(-n))}const i=new ja(r,n);return i.assertValidity(),i}static fromUncompressedHex(t){const e=Za(t.subarray(1,33)),r=Za(t.subarray(33,65)),n=new ja(e,r);return n.assertValidity(),n}static fromHex(t){const e=Qa(t),r=e.length,n=e[0];if(32===r||33===r&&(2===n||3===n))return this.fromCompressedHex(e);if(65===r&&4===n)return this.fromUncompressedHex(e);throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${r}`)}static fromPrivateKey(t){return ja.BASE.multiply(hc(t))}static fromSignature(t,e,r){const n=function(t){const{n:e}=Fa,r=8*t.length-256;let n=Za(t);r>0&&(n>>=BigInt(r));n>=e&&(n-=e);return n}(t=Qa(t)),{r:s,s:i}=function(t){if(t instanceof za)return t.assertValidity(),t;try{return za.fromDER(t)}catch(e){return za.fromCompact(t)}}(e);if(0!==r&&1!==r)throw new Error("Cannot recover signature: invalid recovery bit");if(n===Ia)throw new Error("Cannot recover signature: msgHash cannot be 0");const o=1&r?"03":"02",a=ja.fromHex(o+Ja(s)),{n:c}=Fa,l=nc(s,c),u=ec(-n*l,c),h=ec(i*l,c),f=ja.BASE.multiplyAndAddUnsafe(a,u,h);if(!f)throw new Error("Cannot recover signature: point at infinify");return f.assertValidity(),f}toRawBytes(t=!1){return Ya(this.toHex(t))}toHex(t=!1){const e=Ja(this.x);if(t){return`${this.y&Sa?"03":"02"}${e}`}return`04${e}${Ja(this.y)}`}toHexX(){return this.toHex(!0).slice(2)}toRawX(){return this.toRawBytes(!0).slice(1)}assertValidity(){const t="Point is not on elliptic curve",{x:e,y:r}=this;if(!lc(e)||!lc(r))throw new Error(t);const n=ec(r*r);if(ec(n-Ua(e))!==Ia)throw new Error(t)}equals(t){return this.x===t.x&&this.y===t.y}negate(){return new ja(this.x,ec(-this.y))}double(){return Da.fromAffine(this).double().toAffine()}add(t){return Da.fromAffine(this).add(Da.fromAffine(t)).toAffine()}subtract(t){return this.add(t.negate())}multiply(t){return Da.fromAffine(this).multiply(t,this).toAffine()}multiplyAndAddUnsafe(t,e,r){const n=Da.fromAffine(this).multiply(e),s=Da.fromAffine(t).multiplyUnsafe(r),i=n.add(s);return i.equals(Da.ZERO)?void 0:i.toAffine()}}function Ga(t){return Number.parseInt(t[0],16)>=8?"00"+t:t}function $a(t){if(t.length<2||2!==t[0])throw new Error(`Invalid signature integer tag: ${Ka(t)}`);const e=t[1],r=t.subarray(2,e+2);if(!e||r.length!==e)throw new Error("Invalid signature integer: wrong length");if(0===r[0]&&r[1]<=127)throw new Error("Invalid signature integer: trailing length");return{data:Za(r),left:t.subarray(e+2)}}ja.BASE=new ja(Fa.Gx,Fa.Gy),ja.ZERO=new ja(Ia,Ia);class za{constructor(t,e){this.r=t,this.s=e,this.assertValidity()}static fromCompact(t){const e=Ha(t),r="Signature.fromCompact";if("string"!=typeof t&&!e)throw new TypeError(`${r}: Expected string or Uint8Array`);const n=e?Ka(t):t;if(128!==n.length)throw new Error(`${r}: Expected 64-byte hex`);return new za(Xa(n.slice(0,64)),Xa(n.slice(64,128)))}static fromDER(t){const e=Ha(t);if("string"!=typeof t&&!e)throw new TypeError("Signature.fromDER: Expected string or Uint8Array");const{r:r,s:n}=function(t){if(t.length<2||48!=t[0])throw new Error(`Invalid signature tag: ${Ka(t)}`);if(t[1]!==t.length-2)throw new Error("Invalid signature: incorrect length");const{data:e,left:r}=$a(t.subarray(2)),{data:n,left:s}=$a(r);if(s.length)throw new Error(`Invalid signature: left bytes after parsing: ${Ka(s)}`);return{r:e,s:n}}(e?t:Ya(t));return new za(r,n)}static fromHex(t){return this.fromDER(t)}assertValidity(){const{r:t,s:e}=this;if(!cc(t))throw new Error("Invalid Signature: r must be 0 < r < n");if(!cc(e))throw new Error("Invalid Signature: s must be 0 < s < n")}hasHighS(){const t=Fa.n>>Sa;return this.s>t}normalizeS(){return this.hasHighS()?new za(this.r,Fa.n-this.s):this}toDERRawBytes(t=!1){return Ya(this.toDERHex(t))}toDERHex(t=!1){const e=Ga(qa(this.s));if(t)return e;const r=Ga(qa(this.r)),n=qa(r.length/2),s=qa(e.length/2);return`30${qa(r.length/2+e.length/2+4)}02${n}${r}02${s}${e}`}toRawBytes(){return this.toDERRawBytes()}toHex(){return this.toDERHex()}toCompactRawBytes(){return Ya(this.toCompactHex())}toCompactHex(){return Ja(this.r)+Ja(this.s)}}function Wa(...t){if(!t.every(Ha))throw new Error("Uint8Array list expected");if(1===t.length)return t[0];const e=t.reduce(((t,e)=>t+e.length),0),r=new Uint8Array(e);for(let e=0,n=0;ee.toString(16).padStart(2,"0")));function Ka(t){if(!(t instanceof Uint8Array))throw new Error("Expected Uint8Array");let e="";for(let r=0;r_a)throw new Error("Expected number < 2^256");return t.toString(16).padStart(64,"0")}function qa(t){const e=t.toString(16);return 1&e.length?`0${e}`:e}function Xa(t){if("string"!=typeof t)throw new TypeError("hexToNumber: expected string, got "+typeof t);return BigInt(`0x${t}`)}function Ya(t){if("string"!=typeof t)throw new TypeError("hexToBytes: expected string, got "+typeof t);if(t.length%2)throw new Error("hexToBytes: received invalid unpadded hex"+t.length);const e=new Uint8Array(t.length/2);for(let r=0;r0)return BigInt(t);if("bigint"==typeof t&&cc(t))return t;throw new TypeError("Expected valid private scalar: 0 < scalar < curve.n")}function ec(t,e=Fa.P){const r=t%e;return r>=Ia?r:e+r}function rc(t,e){const{P:r}=Fa;let n=t;for(;e-- >Ia;)n*=n,n%=r;return n}function nc(t,e=Fa.P){if(t===Ia||e<=Ia)throw new Error(`invert: expected positive integers, got n=${t} mod=${e}`);let r=ec(t,e),n=e,s=Ia,i=Sa;for(;r!==Ia;){const t=n%r,e=s-i*(n/r);n=r,r=t,s=i,i=e}if(n!==Sa)throw new Error("invert: does not exist");return ec(s,e)}const sc=(t,e)=>(t+e/Ra)/e,ic=Ra**BigInt(128);function oc(t){const{n:e}=Fa,r=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-Sa*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=r,o=sc(i*t,e),a=sc(-n*t,e);let c=ec(t-o*r-a*s,e),l=ec(-o*n-a*i,e);const u=c>ic,h=l>ic;if(u&&(c=e-c),h&&(l=e-l),c>ic||l>ic)throw new Error("splitScalarEndo: Endomorphism failed, k="+t);return{k1neg:u,k1:c,k2neg:h,k2:l}}class ac{constructor(){this.v=new Uint8Array(32).fill(1),this.k=new Uint8Array(32).fill(0),this.counter=0}hmac(...t){return bc.hmacSha256(this.k,...t)}hmacSync(...t){if("function"!=typeof bc.hmacSha256Sync)throw new Error("utils.hmacSha256Sync is undefined, you need to set it");const e=bc.hmacSha256Sync(this.k,...t);if(e instanceof Promise)throw new Error("To use sync sign(), ensure utils.hmacSha256 is sync");return e}incr(){if(this.counter>=1e3)throw new Error("Tried 1,000 k values for sign(), all were invalid");this.counter+=1}async reseed(t=new Uint8Array){this.k=await this.hmac(this.v,Uint8Array.from([0]),t),this.v=await this.hmac(this.v),0!==t.length&&(this.k=await this.hmac(this.v,Uint8Array.from([1]),t),this.v=await this.hmac(this.v))}reseedSync(t=new Uint8Array){this.k=this.hmacSync(this.v,Uint8Array.from([0]),t),this.v=this.hmacSync(this.v),0!==t.length&&(this.k=this.hmacSync(this.v,Uint8Array.from([1]),t),this.v=this.hmacSync(this.v))}async generate(){return this.incr(),this.v=await this.hmac(this.v),this.v}generateSync(){return this.incr(),this.v=this.hmacSync(this.v),this.v}}function cc(t){return Ia0)e=BigInt(t);else if("string"==typeof t){if(64!==t.length)throw new Error("Expected 32 bytes of private key");e=Xa(t)}else{if(!Ha(t))throw new TypeError("Expected valid private key");if(32!==t.length)throw new Error("Expected 32 bytes of private key");e=Za(t)}if(!cc(e))throw new Error("Expected private key: 0 < key < n");return e}function fc(t){const e=Ha(t),r="string"==typeof t,n=(e||r)&&t.length;return e?33===n||65===n:r?66===n||130===n:t instanceof ja}function dc(t,e,r=!1){if(fc(t))throw new TypeError("getSharedSecret: first arg must be private key");if(!fc(e))throw new TypeError("getSharedSecret: second arg must be public key");const n=(s=e)instanceof ja?(s.assertValidity(),s):ja.fromHex(s);var s;return n.assertValidity(),n.multiply(hc(t)).toRawBytes(r)}function pc(t){return Za(t.length>32?t.slice(0,32):t)}function gc(t){const e=pc(t),r=ec(e,Fa.n);return wc(r{if((t=Qa(t)).length<40||t.length>1024)throw new Error("Expected 40-1024 bytes of private key as per FIPS 186");const e=ec(Za(t),Fa.n);if(e===Ia||e===Sa)throw new Error("Invalid private key");return function(t){return Ya(Ja(t))}(e)},randomBytes:(t=32)=>{if(yc.web)return yc.web.getRandomValues(new Uint8Array(t));throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>bc.hashToPrivateKey(bc.randomBytes(40)),bytesToHex:Ka,mod:ec,sha256:async t=>{if(yc.web){const e=await yc.web.subtle.digest("SHA-256",t.buffer);return new Uint8Array(e)}throw new Error("The environment doesn't have sha256 function")},hmacSha256:async(t,...e)=>{if(yc.web){const r=await yc.web.subtle.importKey("raw",t,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]),n=Wa(...e),s=await yc.web.subtle.sign("HMAC",r,n);return new Uint8Array(s)}throw new Error("The environment doesn't have hmac-sha256 function")},sha256Sync:void 0,hmacSha256Sync:void 0,precompute(t=8,e=ja.BASE){const r=e===ja.BASE?e:new ja(e.x,e.y);return r._setWindowSize(t),r.multiply(Ba),r}};var vc,Ec=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Ac=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};bc.hmacSha256Sync=function(t,...e){return le(Hr("sha256",t,we(e)))};class kc{constructor(t){vc.set(this,void 0),wa.assertArgument(32===me(t),"invalid private key length","privateKey","[REDACTED]"),Ec(this,vc,pe(t),"f")}get privateKey(){return Ac(this,vc,"f")}get publicKey(){return kc.computePublicKey(Ac(this,vc,"f"))}get compressedPublicKey(){return kc.computePublicKey(Ac(this,vc,"f"),!0)}sign(t){wa.assertArgument(32===me(t),"invalid digest length","digest",t);const[e,r]=mc(le(t),le(Ac(this,vc,"f")),{recovered:!0,canonical:!0}),n=za.fromHex(e);return Oa.from({r:kt("0x"+n.r.toString(16),32),s:kt("0x"+n.s.toString(16),32),v:r?28:27}).freeze()}computeShardSecret(t){const e=kc.computePublicKey(t);return pe(dc(le(Ac(this,vc,"f")),e))}static computePublicKey(t,e){let r=wa.getBytes(t,"key");if(32===r.length){return pe(function(t,e=!1){return ja.fromPrivateKey(t).toRawBytes(e)}(r,!!e))}if(64===r.length){const t=new Uint8Array(65);t[0]=4,t.set(r,1),r=t}return pe(ja.fromHex(r).toRawBytes(e))}static recoverPublicKey(t,e){const r=Oa.from(e),n=za.fromCompact(le(we([r.r,r.s]))).toDERRawBytes(),s=function(t,e,r,n=!1){return ja.fromSignature(t,e,r).toRawBytes(n)}(le(t),n,r.yParity);return null!=s?pe(s):wa.throwArgumentError("invalid signautre for digest","signature",e)}static _addPoints(t,e,r){const n=ja.fromHex(kc.computePublicKey(t).substring(2)),s=ja.fromHex(kc.computePublicKey(e).substring(2));return"0x"+n.add(s).toHex(!!r)}}function Tc(t,e){return{address:ws(t),storageKeys:(e||[]).map(((t,e)=>{if(32!==me(t))throw new Error("");return t.toLowerCase()}))}}function Pc(t){if(Array.isArray(t))return t.map(((t,e)=>{if(Array.isArray(t)){if(t.length>2)throw new Error("");return Tc(t[0],t[1])}return Tc(t.address,t.storageKeys)}));const e=Object.keys(t).map((e=>{const r=t[e].reduce(((t,e)=>(t[e]=!0,t)),{});return Tc(e,Object.keys(r).sort())}));return e.sort(((t,e)=>t.address.localeCompare(e.address))),e}function Nc(t){return ws(dn("0x"+kc.computePublicKey(t,!1).substring(4)).substring(26))}function xc(t,e){return Nc(kc.recoverPublicKey(t,e))}vc=new WeakMap;const Oc=new T("@ethersproject/transaction@6.0.0-beta.2");var Ic,Sc=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Rc=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Bc=BigInt(0),Cc=BigInt(2),_c=BigInt(27),Fc=BigInt(28),Uc=BigInt(35),Lc=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");function Dc(t){return"0x"===t?null:ws(t)}function Mc(t,e){try{return pe(t)}catch(r){return Oc.throwArgumentError("invalid data",e,t)}}function jc(t,e){try{return Pc(t)}catch(r){return Oc.throwArgumentError("invalid accessList",e,t)}}function Gc(t,e){return"0x"===t?0:Oc.getNumber(t,e)}function $c(t,e){if("0x"===t)return Bc;const r=Oc.getBigInt(t,e);return r>Lc&&Oc.throwArgumentError("value exceeds uint size",e,r),r}function zc(t,e){const r=Oc.getBigInt(t,"value"),n=Tt(r);return n.length>32&&Oc.throwArgumentError("value too large",`tx.${e}`,r),n}function Wc(t){return Pc(t).map((t=>[t.address,t.storageKeys]))}function Hc(t,e){const r=[zc(t.nonce||0,"nonce"),zc(t.gasPrice||0,"gasPrice"),zc(t.gasLimit||0,"gasLimit"),null!=t.to?ws(t.to):"0x",zc(t.value||0,"value"),t.data||"0x"];let n=Bc;if(null!=t.chainId)n=Oc.getBigInt(t.chainId,"tx.chainId"),e&&null!=e.networkV&&e.legacyChainId!==n&&Oc.throwArgumentError("tx.chainId/sig.v mismatch","sig",e);else if(e){const t=e.legacyChainId;null!=t&&(n=t)}if(!e)return n!==Bc&&(r.push(Tt(n)),r.push("0x"),r.push("0x")),As(r);let s=BigInt(27+e.yParity);return n!==Bc?s=Oa.getChainIdV(n,e.v):BigInt(e.v)!==s&&Oc.throwArgumentError("tx.chainId/sig.v mismatch","sig",e),r.push(Tt(s)),r.push(Tt(e.r)),r.push(Tt(e.s)),As(r)}function Vc(t,e,r){let n;try{if(n=Gc(e[0],"yParity"),0!==n&&1!==n)throw new Error("bad yParity")}catch(t){return Oc.throwArgumentError("invalid yParity","yParity",e[0])}const s=Ee(e[1],32),i=Ee(e[2],32),o=Oa.from({r:s,s:i,yParity:n});t.signature=o}function Kc(t,e){const r=[zc(t.chainId||0,"chainId"),zc(t.nonce||0,"nonce"),zc(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),zc(t.maxFeePerGas||0,"maxFeePerGas"),zc(t.gasLimit||0,"gasLimit"),null!=t.to?ws(t.to):"0x",zc(t.value||0,"value"),t.data||"0x",Wc(t.accessList||[])];return e&&(r.push(zc(e.yParity,"yParity")),r.push(Tt(e.r)),r.push(Tt(e.s))),we(["0x02",As(r)])}function Jc(t,e){const r=[zc(t.chainId||0,"chainId"),zc(t.nonce||0,"nonce"),zc(t.gasPrice||0,"gasPrice"),zc(t.gasLimit||0,"gasLimit"),null!=t.to?ws(t.to):"0x",zc(t.value||0,"value"),t.data||"0x",Wc(t.accessList||[])];return e&&(r.push(zc(e.yParity,"recoveryParam")),r.push(Tt(e.r)),r.push(Tt(e.s))),we(["0x01",As(r)])}class qc{constructor(){Ic.set(this,void 0),Sc(this,Ic,{type:null,to:null,nonce:0,gasLimit:BigInt(0),gasPrice:null,maxPriorityFeePerGas:null,maxFeePerGas:null,data:"0x",value:BigInt(0),chainId:BigInt(0),sig:null,accessList:null},"f")}get type(){return c(Rc(this,Ic,"f"),"type")}get typeName(){switch(this.type){case 0:return"legacy";case 1:return"eip-2930";case 2:return"eip-1559"}return null}set type(t){switch(t){case null:l(Rc(this,Ic,"f"),"type",null);break;case 0:case"legacy":l(Rc(this,Ic,"f"),"type",0);break;case 1:case"berlin":case"eip-2930":l(Rc(this,Ic,"f"),"type",1);break;case 2:case"london":case"eip-1559":l(Rc(this,Ic,"f"),"type",2);break;default:throw new Error("unsupported transaction type")}}get to(){return c(Rc(this,Ic,"f"),"to")}set to(t){l(Rc(this,Ic,"f"),"to",null==t?null:ws(t))}get nonce(){return c(Rc(this,Ic,"f"),"nonce")}set nonce(t){l(Rc(this,Ic,"f"),"nonce",Oc.getNumber(t,"value"))}get gasLimit(){return c(Rc(this,Ic,"f"),"gasLimit")}set gasLimit(t){l(Rc(this,Ic,"f"),"gasLimit",Oc.getBigInt(t))}get gasPrice(){const t=c(Rc(this,Ic,"f"),"gasPrice");return null!=t||0!==this.type&&1!==this.type?t:Bc}set gasPrice(t){l(Rc(this,Ic,"f"),"gasPrice",null==t?null:Oc.getBigInt(t,"gasPrice"))}get maxPriorityFeePerGas(){const t=c(Rc(this,Ic,"f"),"maxPriorityFeePerGas");return null==t&&2===this.type?Bc:t}set maxPriorityFeePerGas(t){l(Rc(this,Ic,"f"),"maxPriorityFeePerGas",null==t?null:Oc.getBigInt(t,"maxPriorityFeePerGas"))}get maxFeePerGas(){const t=c(Rc(this,Ic,"f"),"maxFeePerGas");return null==t&&2===this.type?Bc:t}set maxFeePerGas(t){l(Rc(this,Ic,"f"),"maxFeePerGas",null==t?null:Oc.getBigInt(t,"maxFeePerGas"))}get data(){return c(Rc(this,Ic,"f"),"data")}set data(t){l(Rc(this,Ic,"f"),"data",pe(t))}get value(){return c(Rc(this,Ic,"f"),"value")}set value(t){l(Rc(this,Ic,"f"),"value",Oc.getBigInt(t,"value"))}get chainId(){return c(Rc(this,Ic,"f"),"chainId")}set chainId(t){l(Rc(this,Ic,"f"),"chainId",Oc.getBigInt(t))}get signature(){return c(Rc(this,Ic,"f"),"sig")||null}set signature(t){l(Rc(this,Ic,"f"),"sig",null==t?null:Oa.from(t))}get accessList(){const t=c(Rc(this,Ic,"f"),"accessList")||null;return null!=t||1!==this.type&&2!==this.type?t:[]}set accessList(t){l(Rc(this,Ic,"f"),"accessList",null==t?null:Pc(t))}get hash(){if(null==this.signature)throw new Error("cannot hash unsigned transaction; maybe you meant .unsignedHash");return dn(this.serialized)}get unsignedHash(){return dn(this.unsignedSerialized)}get from(){return null==this.signature?null:xc(this.unsignedSerialized,this.signature)}get fromPublicKey(){return null==this.signature?null:""}isSigned(){return null!=this.signature}get serialized(){if(null==this.signature)throw new Error("cannot serialize unsigned transaction; maybe you meant .unsignedSerialized");const t=this.inferTypes();if(1!==t.length)throw new Error("cannot determine transaction type; specify type manually");switch(t[0]){case 0:return Hc(this,this.signature);case 1:return Jc(this,this.signature);case 2:return Kc(this,this.signature)}throw new Error("unsupported type")}get unsignedSerialized(){const t=this.inferTypes();if(1!==t.length)throw new Error("cannot determine transaction type; specify type manually");switch(t[0]){case 0:return Hc(this);case 1:return Jc(this);case 2:return Kc(this)}throw new Error("unsupported type")}inferTypes(){const t=null!=this.gasPrice,e=null!=this.maxFeePerGas||null!=this.maxPriorityFeePerGas,r=null!=this.accessList;if(null!=this.maxFeePerGas&&null!=this.maxPriorityFeePerGas&&this.maxFeePerGas(Object.freeze(t.storageKeys),Object.freeze(t)))))),Object.freeze(Rc(this,Ic,"f")),this}isFrozen(){return Object.isFrozen(Rc(this,Ic,"f"))}static from(t){if("string"==typeof t){const e=le(t);if(e[0]>=127)return qc.from(function(t){const e=xs(t);if(!Array.isArray(e)||9!==e.length&&6!==e.length)return Oc.throwArgumentError("invalid field count for legacy transaction","data",t);const r={type:0,nonce:Gc(e[0],"nonce"),gasPrice:$c(e[1],"gasPrice"),gasLimit:$c(e[2],"gasLimit"),to:Dc(e[3]),value:$c(e[4],"value"),data:Mc(e[5],"dta"),chainId:Bc};if(6===e.length)return r;const n=$c(e[6],"v"),s=$c(e[7],"r"),i=$c(e[8],"s");if(s===Bc&&i===Bc)r.chainId=n;else{let s=(n-Uc)/Cc;sFc)&&Oc.throwArgumentError("non-canonical legacy v","v",e[6]),r.signature=Oa.from({r:Ee(e[7],32),s:Ee(e[8],32),v:n}),r.hash=dn(t)}return r}(e));switch(e[0]){case 1:return qc.from(function(t){const e=xs(Oc.getBytes(t).slice(1));(!Array.isArray(e)||8!==e.length&&11!==e.length)&&Oc.throwArgumentError("invalid field count for transaction type: 1","data",pe(t));const r={type:1,chainId:$c(e[0],"chainId"),nonce:Gc(e[1],"nonce"),gasPrice:$c(e[2],"gasPrice"),gasLimit:$c(e[3],"gasLimit"),to:Dc(e[4]),value:$c(e[5],"value"),data:Mc(e[6],"data"),accessList:jc(e[7],"accessList")};return 8===e.length||(r.hash=dn(t),Vc(r,e.slice(8))),r}(e));case 2:return qc.from(function(t){const e=xs(Oc.getBytes(t).slice(1));(!Array.isArray(e)||9!==e.length&&12!==e.length)&&Oc.throwArgumentError("invalid field count for transaction type: 2","data",pe(t));const r=$c(e[2],"maxPriorityFeePerGas"),n=$c(e[3],"maxFeePerGas"),s={type:2,chainId:$c(e[0],"chainId"),nonce:Gc(e[1],"nonce"),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:$c(e[4],"gasLimit"),to:Dc(e[5]),value:$c(e[6],"value"),data:Mc(e[7],"data"),accessList:jc(e[8],"accessList")};return 9===e.length||(s.hash=dn(t),Vc(s,e.slice(9))),s}(e))}throw new Error("unsupported transaction type")}const e=new qc;if(null!=t.type&&(e.type=t.type),null!=t.to&&(e.to=t.to),null!=t.nonce&&(e.nonce=t.nonce),null!=t.gasLimit&&(e.gasLimit=t.gasLimit),null!=t.gasPrice&&(e.gasPrice=t.gasPrice),null!=t.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas),null!=t.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null!=t.data&&(e.data=t.data),null!=t.value&&(e.value=t.value),null!=t.chainId&&(e.chainId=t.chainId),null!=t.signature&&(e.signature=Oa.from(t.signature)),null!=t.accessList&&(e.accessList=t.accessList),null!=t.hash){if(!e.isSigned())throw new Error("unsigned transaction cannot have a hashs");if(e.hash!==t.hash)throw new Error("hash mismatch")}if(null!=t.from){if(!e.isSigned())throw new Error("unsigned transaction cannot have a from");if(e.from.toLowerCase()!==(t.from||"").toLowerCase())throw new Error("from mismatch")}return e}}Ic=new WeakMap;var Xc,Yc,Zc=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Qc=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function tl(t){return null==t?null:t}function el(t){return null==t?null:t.toString()}class rl{constructor(t,e,r){n(this,{gasPrice:tl(t),maxFeePerGas:tl(e),maxPriorityFeePerGas:tl(r)})}toJSON(){const{gasPrice:t,maxFeePerGas:e,maxPriorityFeePerGas:r}=this;return{_type:"FeeData",gasPrice:el(t),maxFeePerGas:el(e),maxPriorityFeePerGas:el(r)}}}class nl{constructor(t,e){Xc.set(this,void 0),null==e&&(e=ul),Zc(this,Xc,Object.freeze(t.transactions.map((t=>{if("string"!=typeof t&&t.provider!==e)throw new Error("provider mismatch");return t}))),"f"),n(this,{provider:e,hash:tl(t.hash),number:t.number,timestamp:t.timestamp,parentHash:t.parentHash,nonce:t.nonce,difficulty:t.difficulty,gasLimit:t.gasLimit,gasUsed:t.gasUsed,miner:t.miner,extraData:t.extraData,baseFeePerGas:tl(t.baseFeePerGas)})}get transactions(){return Qc(this,Xc,"f")}toJSON(){const{baseFeePerGas:t,difficulty:e,extraData:r,gasLimit:n,gasUsed:s,hash:i,miner:o,nonce:a,number:c,parentHash:l,timestamp:u,transactions:h}=this;return{_type:"Block",baseFeePerGas:el(t),difficulty:el(e),extraData:r,gasLimit:el(n),gasUsed:el(s),hash:i,miner:o,nonce:a,number:c,parentHash:l,timestamp:u,transactions:h}}[(Xc=new WeakMap,Symbol.iterator)](){let t=0;return{next:()=>t{if(e!==t.provider)throw new Error("provider mismatch");return t}))),"f"),n(this,{provider:e,to:t.to,from:t.from,contractAddress:t.contractAddress,hash:t.hash,index:t.index,blockHash:t.blockHash,blockNumber:t.blockNumber,logsBloom:t.logsBloom,gasUsed:t.gasUsed,cumulativeGasUsed:t.cumulativeGasUsed,gasPrice:t.effectiveGasPrice||t.gasPrice,byzantium:t.byzantium,status:t.status,root:t.root})}get logs(){return Qc(this,Yc,"f")}toJSON(){const{to:t,from:e,contractAddress:r,hash:n,index:s,blockHash:i,blockNumber:o,logsBloom:a,logs:c,byzantium:l,status:u,root:h}=this;return{_type:"TransactionReceipt",blockHash:i,blockNumber:o,byzantium:l,contractAddress:r,cumulativeGasUsed:el(this.cumulativeGasUsed),from:e,gasPrice:el(this.gasPrice),gasUsed:el(this.gasUsed),hash:n,index:s,logs:c,logsBloom:a,root:h,status:u,to:t}}get length(){return this.logs.length}[(Yc=new WeakMap,Symbol.iterator)](){let t=0;return{next:()=>tthis.hash(t))),new nl(r,e)}blockWithTransactions(t,e){throw new Error}transactionRequest(t,e){return pl(this,hl,"f").transactionRequest(t)}transactionResponse(t,e){null==(t=Object.assign({},t)).data&&null!=t.input&&(t.data=t.input),null==t.gasLimit&&t.gas&&(t.gasLimit=t.gas),t=pl(this,hl,"f").transactionResponse(t);const r=Oa.from({r:t.r,s:t.s,v:t.v});return t.signature=r,null==t.chainId&&(t.chainId=r.legacyChainId),new ol(t,e)}log(t,e){const r=this.object({address:this.address,blockHash:this.hash,blockNumber:this.number,data:this.data,index:this.number,removed:this.boolean,topics:this.topics,transactionHash:this.hash,transactionIndex:this.number},{index:["logIndex"]})(t);return new sl(r,e)}receipt(t,e){const r=this.object({blockHash:this.hash,blockNumber:this.number,contractAddress:this.allowNull(this.address),cumulativeGasUsed:this.bigNumber,from:this.address,gasUsed:this.bigNumber,logs:this.arrayOf((t=>this.log(t,e))),logsBloom:this.data,root:this.allowNull(this.data),status:this.allowNull(this.number),to:this.address,gasPrice:this.allowNull(this.bigNumber),hash:this.hash,index:this.number,type:this.allowNull(this.number,0)},{hash:["transactionHash"],gasPrice:["effectiveGasPrice"],index:["transactionIndex"]})(t);if(null!=r.root)if(r.root.length<=4){const t=parseInt(r.root);if(0!==t&&1!==t)return Yo.throwError("invalid alt-root-status","BAD_DATA",{value:r.root});if(null!=r.status&&r.status!==t)return Yo.throwError("alt-root-status/status mismatch","BAD_DATA",{value:{root:r.root,status:r.status}});r.status=t,delete r.root}else if(!se(r.root,32))return Yo.throwError("invalid receipt root hash","BAD_DATA",{value:r.root});return new il(r,e)}topics(t){return pl(this,hl,"f").topics(t)}filter(t){return pl(this,hl,"f").filter(t)}filterLog(t){return console.log("ME",t),null}transaction(t){throw new Error}accessList(t){return Pc(t)}allowFalsish(t,e){return r=>r?t.call(this,r):e}allowNull(t,e){return r=>null==r?e:t.call(this,r)}arrayOf(t){return e=>{if(!Array.isArray(e))throw new Error("not an array");return e.map((e=>t.call(this,e)))}}bigNumber(t){return Yo.getBigInt(t,"value")}uint256(t){const e=this.bigNumber(t);return(e<0||e>gl)&&Yo.throwArgumentError("invalid uint256","value",t),e}boolean(t){switch(t){case!0:case"true":return!0;case!1:case"false":return!1}return Yo.throwArgumentError(`invalid boolean; ${JSON.stringify(t)}`,"value",t)}_hexstring(t){return null==t&&(t=!1),function(e){if(se(e,t))return e.toLowerCase();throw new Error("bad hexstring")}}data(t){return null==me(t)&&Yo.throwArgumentError("","value",t),t}hash(t){return 32!==me(t)&&Yo.throwArgumentError("","value",t),pl(this,hl,"f").data(t)}number(t){return Yo.getNumber(t)}object(t,e){return r=>{const n={};for(const s in t){let i=s;if(e&&s in e&&!(i in r))for(const t of e[s])if(t in r){i=t;break}try{const e=t[s].call(this,r[i]);void 0!==e&&(n[s]=e)}catch(t){const e=t instanceof Error?t.message:"not-an-error";Yo.throwError(`invalid value for value.${s} (${e})`,"BAD_DATA",{value:r})}}return n}}storageSlot(t){return kt(Yo.getBigInt(t),32)}}hl=new WeakMap,fl=new WeakMap;class yl{constructor(t){n(this,{name:t})}clone(){return new yl(this.name)}validate(t){return this}}class bl extends yl{constructor(t=0,e){super(`org.ethers.plugins.gas-cost#${t||0}`);const r={effectiveBlock:t};function s(t,n){let s=(e||{})[t];null==s&&(s=n),"number"!=typeof s&&Yo.throwArgumentError(`invalud value for ${t}`,"costs",e),r[t]=s}s("txBase",21e3),s("txCreate",32e3),s("txDataZero",4),s("txDataNonzero",16),s("txAccessListStorageKey",1900),s("txAccessListAddress",2400),n(this,r)}clone(){return new bl(this.effectiveBlock,this)}}class vl extends yl{constructor(t,e){super("org.ethers.plugins.ens"),n(this,{address:t||"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",targetNetwork:null==e?1:e})}clone(){return new vl(this.address,this.targetNetwork)}validate(t){return t.formatter.address(this.address),this}}class El extends yl{constructor(t){super("org.ethers.plugins.max-priority-fee"),n(this,{priorityFee:Yo.getBigInt(t)})}async getPriorityFee(t){return this.priorityFee}clone(){return new El(this.priorityFee)}}var Al,kl=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Tl=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Pl=new Map,Nl=new ml;class xl{constructor(t,e,r){Al.set(this,void 0);const n=Yo.getBigInt(e);null==r&&(r=Nl);const s=new Map;kl(this,Al,{name:t,chainId:n,formatter:r,plugins:s},"f")}toJSON(){return{name:this.name,chainId:this.chainId}}get name(){return c(Tl(this,Al,"f"),"name")}set name(t){l(Tl(this,Al,"f"),"name",t)}get chainId(){return c(Tl(this,Al,"f"),"chainId")}set chainId(t){l(Tl(this,Al,"f"),"chainId",Yo.getBigInt(t,"chainId"))}get formatter(){return c(Tl(this,Al,"f"),"formatter")}set formatter(t){l(Tl(this,Al,"f"),"formatter",t)}get plugins(){return Array.from(Tl(this,Al,"f").plugins.values())}attachPlugin(t){if(this.isFrozen())throw new Error("frozen");if(Tl(this,Al,"f").plugins.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return Tl(this,Al,"f").plugins.set(t.name,t.validate(this)),this}getPlugin(t){return Tl(this,Al,"f").plugins.get(t)||null}getPlugins(t){return this.plugins.filter((e=>e.name.split("#")[0]===t))}clone(){const t=new xl(this.name,this.chainId,this.formatter);return this.plugins.forEach((e=>{t.attachPlugin(e.clone())})),t}freeze(){return Object.freeze(Tl(this,Al,"f")),this}isFrozen(){return Object.isFrozen(Tl(this,Al,"f"))}computeIntrinsicGas(t){const e=this.getPlugin("org.ethers.gas-cost")||new bl;let r=e.txBase;if(null==t.to&&(r+=e.txCreate),t.data)for(let n=2;n{this._poll(t,Hl(this,_l,"f"))}),"f")}async _poll(t,e){throw new Error("sub-classes must override this")}start(){Hl(this,Fl,"f").call(this,-2),Hl(this,_l,"f").on("block",Hl(this,Fl,"f"))}stop(){Hl(this,_l,"f").off("block",Hl(this,Fl,"f"))}pause(t){this.stop()}resume(){this.start()}}_l=new WeakMap,Fl=new WeakMap;class ql extends Jl{constructor(t,e){super(t),Ul.set(this,void 0),Wl(this,Ul,Vl(e),"f")}async _poll(t,e){throw new Error("@TODO")}}Ul=new WeakMap;class Xl extends Jl{constructor(t,e){super(t),Ll.set(this,void 0),Wl(this,Ll,e,"f")}async _poll(t,e){const r=await e.getTransactionReceipt(Hl(this,Ll,"f"));r&&e.emit(Hl(this,Ll,"f"),r)}}Ll=new WeakMap;class Yl{constructor(t,e){Dl.add(this),Ml.set(this,void 0),jl.set(this,void 0),Gl.set(this,void 0),$l.set(this,void 0),Wl(this,Ml,t,"f"),Wl(this,jl,Vl(e),"f"),Wl(this,Gl,Hl(this,Dl,"m",zl).bind(this),"f"),Wl(this,$l,-2,"f")}start(){-2===Hl(this,$l,"f")&&Hl(this,Ml,"f").getBlockNumber().then((t=>{Wl(this,$l,t,"f")})),Hl(this,Ml,"f").on("block",Hl(this,Gl,"f"))}stop(){Hl(this,Ml,"f").off("block",Hl(this,Gl,"f"))}pause(t){this.stop(),t&&Wl(this,$l,-2,"f")}resume(){this.start()}}Ml=new WeakMap,jl=new WeakMap,Gl=new WeakMap,$l=new WeakMap,Dl=new WeakSet,zl=async function(t){if(-2===Hl(this,$l,"f"))return;const e=Vl(Hl(this,jl,"f"));e.fromBlock=Hl(this,$l,"f")+1,e.toBlock=t;const r=await Hl(this,Ml,"f").getLogs(e);if(0!==r.length){Wl(this,$l,t,"f");for(const t of r)Hl(this,Ml,"f").emit(Hl(this,jl,"f"),t)}else Hl(this,$l,"f"){if("bigint"==typeof e)return`bigint:${e.toString()}`;if("string"==typeof e)return e.toLowerCase();if("object"==typeof e&&!Array.isArray(e)){const t=Object.keys(e);return t.sort(),t.reduce(((t,r)=>(t[r]=e[r],t)),{})}return e}))}class mu{constructor(t){n(this,{name:t})}start(){}stop(){}pause(t){}resume(){}}function yu(t){return(t=Array.from(new Set(t).values())).sort(),t}async function bu(t,e){if(null==t)throw new Error("invalid event");if(Array.isArray(t)&&(t={topics:t}),"string"==typeof t)switch(t){case"block":case"pending":case"debug":case"network":return{type:t,tag:t}}if(se(t,32)){const e=t.toLowerCase();return{type:"transaction",tag:wu("tx",{hash:e}),hash:e}}if(t.orphan){const e=t;return{type:"orphan",tag:wu("orphan",e),filter:(r=e,JSON.parse(JSON.stringify(r)))}}var r;if(t.address||t.topics){const r=t,n={topics:(r.topics||[]).map((t=>null==t?null:Array.isArray(t)?yu(t.map((t=>t.toLowerCase()))):t.toLowerCase()))};if(r.address){const t=[],s=[],i=r=>{se(r)?t.push(r):s.push((async()=>{t.push(await Bs(r,e))})())};Array.isArray(r.address)?r.address.forEach(i):i(r.address),s.length&&await Promise.all(s),n.address=yu(t.map((t=>t.toLowerCase())))}return{filter:n,tag:wu("event",n),type:"event"}}return Yo.throwArgumentError("unknown ProviderEvent","event",t)}function vu(){return(new Date).getTime()}class Eu{constructor(t){if(Zl.add(this),Ql.set(this,void 0),tu.set(this,void 0),eu.set(this,void 0),ru.set(this,void 0),nu.set(this,void 0),su.set(this,void 0),iu.set(this,void 0),ou.set(this,void 0),au.set(this,void 0),"any"===t)du(this,nu,!0,"f"),du(this,ru,null,"f");else if(t){const e=xl.from(t);du(this,nu,!1,"f"),du(this,ru,Promise.resolve(e),"f"),setTimeout((()=>{this.emit("network",e,null)}),0)}else du(this,nu,!1,"f"),du(this,ru,null,"f");du(this,su,new Map,"f"),du(this,Ql,new Map,"f"),du(this,tu,new Map,"f"),du(this,eu,null,"f"),du(this,iu,0,"f"),du(this,ou,new Map,"f"),du(this,au,!1,"f")}get provider(){return this}get plugins(){return Array.from(pu(this,tu,"f").values())}attachPlugin(t){if(pu(this,tu,"f").get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return pu(this,tu,"f").set(t.name,t.validate(this)),this}getPlugin(t){return pu(this,tu,"f").get(t)||null}set disableCcipRead(t){du(this,au,!!t,"f")}get disableCcipRead(){return pu(this,au,"f")}async ccipReadFetch(t,e,r){if(this.disableCcipRead||0===r.length||null==t.to)return null;const n=t.to.toLowerCase(),s=e.toLowerCase(),i=[];for(let e=0;e=400&&u.statusCode<500)return Yo.throwError(`response not found during CCIP fetch: ${l}`,"OFFCHAIN_FAULT",{reason:"404_MISSING_RESOURCE",transaction:t,info:{url:o,errorMessage:l}});i.push(l)}return Yo.throwError(`error encountered during CCIP fetch: ${i.map((t=>JSON.stringify(t))).join(", ")}`,"OFFCHAIN_FAULT",{reason:"500_SERVER_ERROR",transaction:t,info:{urls:r,errorMessages:i}})}_wrapTransaction(t,e,r){return t}_detectNetwork(){return Yo.throwError("sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(t){return Yo.throwError(`unsupported method: ${t.method}`,"UNSUPPORTED_OPERATION",{operation:t.method,info:t})}async getBlockNumber(){return Yo.getNumber(await pu(this,Zl,"m",cu).call(this,{method:"getBlockNumber"}),"%response")}async _getAddress(t){return"string"==typeof t?t:await t.getAddress()}async _getBlockTag(t){const e=await this.getNetwork();if("number"==typeof t&&Number.isSafeInteger(t)&&t<0){let r=await this.getBlockNumber();return r+=t,r<0&&(r=0),e.formatter.blockTag(r)}return e.formatter.blockTag(t)}async getNetwork(){if(null==pu(this,ru,"f")){const t=this._detectNetwork().then((t=>(this.emit("network",t,null),t)),(e=>{throw pu(this,ru,"f")===t&&du(this,ru,null,"f"),e}));return du(this,ru,t,"f"),await t}const t=pu(this,ru,"f"),[e,r]=await Promise.all([t,this._detectNetwork()]);return e.chainId!==r.chainId&&(pu(this,nu,"f")?(this.emit("network",r,e),pu(this,ru,"f")===t&&du(this,ru,Promise.resolve(r),"f")):Yo.throwError(`network changed: ${e.chainId} => ${r.chainId} `,"NETWORK_ERROR",{event:"changed"})),e.clone().freeze()}async getFeeData(){const{block:t,gasPrice:r}=await e({block:this.getBlock("latest"),gasPrice:(async()=>{try{const t=await pu(this,Zl,"m",cu).call(this,{method:"getGasPrice"});return Yo.getBigInt(t,"%response")}catch(t){}return null})()});let n=null,s=null;if(t&&t.baseFeePerGas){s=BigInt("1500000000");const e=(await this.getNetwork()).getPlugin("org.ethers.plugins.max-priority-fee");e&&(s=await e.getPriorityFee(this)),n=t.baseFeePerGas*gu+s}return new rl(r,n,s)}async _getTransaction(t){const r=await this.getNetwork(),n=Object.assign({},t,await e({to:t.to?Bs(t.to,this):void 0,from:t.from?Bs(t.from,this):void 0}));return r.formatter.transactionRequest(n)}async estimateGas(t){const e=await this._getTransaction(t);return Yo.getBigInt(await pu(this,Zl,"m",cu).call(this,{method:"estimateGas",transaction:e}),"%response")}async call(t){const{tx:r,blockTag:n}=await e({tx:this._getTransaction(t),blockTag:this._getBlockTag(t.blockTag)});return pu(this,Zl,"m",lu).call(this,r,n,t.enableCcipRead?0:-1)}async getBalanceOf(t,r){const{address:n,blockTag:s}=await e({address:Bs(t),blockTag:this._getBlockTag(r)});return Yo.getBigInt(await pu(this,Zl,"m",cu).call(this,{method:"getBalance",address:n,blockTag:s}),"%response")}async getTransactionCountOf(t,r){const{address:n,blockTag:s}=await e({address:Bs(t),blockTag:this._getBlockTag(r)});return Yo.getNumber(await pu(this,Zl,"m",cu).call(this,{method:"getTransactionCount",address:n,blockTag:s}),"%response")}async getCode(t,r){const{address:n,blockTag:s}=await e({address:Bs(t),blockTag:this._getBlockTag(r)});return pe(await pu(this,Zl,"m",cu).call(this,{method:"getCode",address:n,blockTag:s}))}async getStorageAt(t,r,n){const s=Yo.getBigInt(r),{address:i,blockTag:o}=await e({address:Bs(t),blockTag:this._getBlockTag(n)});return pe(await pu(this,Zl,"m",cu).call(this,{method:"getStorageAt",address:i,position:s,blockTag:o}))}async broadcastTransaction(t){throw new Error}async getBlock(t){const e=(await this.getNetwork()).formatter,r=await pu(this,Zl,"m",uu).call(this,t,!1);return null==r?null:e.block(r,this)}async getBlockWithTransactions(t){const e=(await this.getNetwork()).formatter,r=pu(this,Zl,"m",uu).call(this,t,!0);return null==r?null:e.blockWithTransactions(r,this)}async getTransaction(t){const e=(await this.getNetwork()).formatter,r=await pu(this,Zl,"m",cu).call(this,{method:"getTransaction",hash:t});return e.transactionResponse(r,this)}async getTransactionReceipt(t){const e=(await this.getNetwork()).formatter,r=await pu(this,Zl,"m",cu).call(this,{method:"getTransactionReceipt",hash:t});if(null==r)return null;if(null==r.gasPrice&&null==r.effectiveGasPrice){const e=await pu(this,Zl,"m",cu).call(this,{method:"getTransaction",hash:t});r.effectiveGasPrice=e.gasPrice}return e.receipt(r,this)}async _getFilter(t){const r=(t.topics||[]).map((t=>null==t?null:Array.isArray(t)?yu(t.map((t=>t.toLowerCase()))):t.toLowerCase())),n="blockHash"in t?t.blockHash:void 0,s={};t.address&&(Array.isArray(t.address)?s.address=Promise.all(t.address.map((t=>Bs(t,this)))):s.address=Bs(t.address,this));const i=e=>{null!=t[e]&&(s[e]=this._getBlockTag(t[e]))};i("fromBlock"),i("toBlock");const o=await e(s);if(Array.isArray(o.address)&&o.address.sort(),o.topics=r,n){if(t.fromBlock||t.toBlock)throw new Error("invalid filter");o.blockHash=n}return o}async getLogs(t){const{network:r,filter:n}=await e({network:this.getNetwork(),filter:this._getFilter(t)});return(await pu(this,Zl,"m",cu).call(this,{method:"getLogs",filter:n})).map((t=>r.formatter.log(t,this)))}_getProvider(t){return Yo.throwError("provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(t){return await ga.fromName(this,t)}async getAvatar(t){const e=await this.getResolver(t);return e?await e.getAvatar():null}async resolveName(t){if("string"!=typeof t){const e=await t.getAddress();return null==e?Yo.throwArgumentError("Addressable returned no address","name",t):e}{const e=await this.getResolver(t);if(e)return await e.getAddress()}return null}async lookupAddress(t){throw new Error}async waitForTransaction(t,e=1,r){return 0===e?this.getTransactionReceipt(t):new Promise((async(n,s)=>{let i=null;const o=async r=>{try{const s=await this.getTransactionReceipt(t);if(null!=s&&r-s.blockNumber+1>=e)return n(s),this.off("block",o),void(i&&(clearTimeout(i),i=null))}catch(t){console.log("EEE",t)}this.once("block",o)};null!=r&&(i=setTimeout((()=>{null!=i&&(i=null,this.off("block",o),s(Yo.makeError("timeout","TIMEOUT",{reason:"timeout"})))}),r)),o(await this.getBlockNumber())}))}async waitForBlock(t){throw new Error}_clearTimeout(t){const e=pu(this,ou,"f").get(t);e&&(e.timer&&clearTimeout(e.timer),pu(this,ou,"f").delete(t))}_setTimeout(t,e=0){var r,n;const s=(du(this,iu,(n=pu(this,iu,"f"),r=n++,n),"f"),r),i=()=>{pu(this,ou,"f").delete(s),t()};if(this.paused)pu(this,ou,"f").set(s,{timer:null,func:i,time:e});else{const t=setTimeout(i,e);pu(this,ou,"f").set(s,{timer:t,func:i,time:vu()})}return s}_forEachSubscriber(t){for(const e of pu(this,Ql,"f").values())t(e.subscriber)}_getSubscriber(t){switch(t.type){case"debug":case"network":return new mu(t.type);case"block":return new Kl(this);case"event":return new Yl(this,t.filter);case"transaction":return new Xl(this,t.hash);case"orphan":return new ql(this,t.filter)}throw new Error(`unsupported event: ${t.type}`)}_recoverSubscriber(t,e){for(const r of pu(this,Ql,"f").values())if(r.subscriber===t){r.started&&r.subscriber.stop(),r.subscriber=e,r.started&&e.start(),null!=pu(this,eu,"f")&&e.pause(pu(this,eu,"f"));break}}async on(t,e){const r=await pu(this,Zl,"m",fu).call(this,t);return r.listeners.push({listener:e,once:!1}),r.started||(r.subscriber.start(),r.started=!0,null!=pu(this,eu,"f")&&r.subscriber.pause(pu(this,eu,"f"))),this}async once(t,e){const r=await pu(this,Zl,"m",fu).call(this,t);return r.listeners.push({listener:e,once:!0}),r.started||(r.subscriber.start(),r.started=!0,null!=pu(this,eu,"f")&&r.subscriber.pause(pu(this,eu,"f"))),this}async emit(t,...e){const r=await pu(this,Zl,"m",hu).call(this,t,e);if(!r)return!1;const n=r.listeners.length;return r.listeners=r.listeners.filter((({listener:r,once:n})=>{const s=new a(this,n?null:r,t);try{r.call(this,...e,s)}catch(t){}return!n})),n>0}async listenerCount(t){if(t){const e=await pu(this,Zl,"m",hu).call(this,t);return e?e.listeners.length:0}let e=0;for(const{listeners:t}of pu(this,Ql,"f").values())e+=t.length;return e}async listeners(t){if(t){const e=await pu(this,Zl,"m",hu).call(this,t);return e?e.listeners.map((({listener:t})=>t)):[]}let e=[];for(const{listeners:t}of pu(this,Ql,"f").values())e=e.concat(t.map((({listener:t})=>t)));return e}async off(t,e){const r=await pu(this,Zl,"m",hu).call(this,t);if(!r)return this;if(e){const t=r.listeners.map((({listener:t})=>t)).indexOf(e);t>=0&&r.listeners.splice(t,1)}return e&&0!==r.listeners.length||(r.started&&r.subscriber.stop(),pu(this,Ql,"f").delete(r.tag)),this}async removeAllListeners(t){if(t){const{tag:e,started:r,subscriber:n}=await pu(this,Zl,"m",fu).call(this,t);r&&n.stop(),pu(this,Ql,"f").delete(e)}else for(const[t,{started:e,subscriber:r}]of pu(this,Ql,"f"))e&&r.stop(),pu(this,Ql,"f").delete(t);return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return this.off(t,e)}async shutdown(){this.removeAllListeners();for(const t of pu(this,ou,"f").keys())this._clearTimeout(t)}get paused(){return null!=pu(this,eu,"f")}pause(t){if(null!=pu(this,eu,"f")){if(pu(this,eu,"f")==!!t)return;return Yo.throwError("cannot change pause type; resume first","UNSUPPORTED_OPERATION",{operation:"pause"})}this._forEachSubscriber((e=>e.pause(t))),du(this,eu,!!t,"f");for(const t of pu(this,ou,"f").values())t.timer&&clearTimeout(t.timer),t.time=vu()-t.time}resume(){if(null!=pu(this,eu,"f")){this._forEachSubscriber((t=>t.resume())),du(this,eu,null,"f");for(const t of pu(this,ou,"f").values()){let e=t.time;e<0&&(e=0),t.time=vu(),setTimeout(t.func,e)}}}}function Au(t,e){try{const r=ku(t,e);if(r)return fi(r)}catch(t){}return null}function ku(t,e){if("0x"===t)return null;try{const r=Yo.getNumber(ye(t,e,e+32)),n=Yo.getNumber(ye(t,r,r+32));return ye(t,r+32,r+32+n)}catch(t){}return null}function Tu(t){const e=Tt(t);if(e.length>32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function Pu(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}Ql=new WeakMap,tu=new WeakMap,eu=new WeakMap,ru=new WeakMap,nu=new WeakMap,su=new WeakMap,iu=new WeakMap,ou=new WeakMap,au=new WeakMap,Zl=new WeakSet,cu=async function(t){const e=wu(t.method,t);let r=pu(this,su,"f").get(e);return r||(r=this._perform(t),pu(this,su,"f").set(e,r),setTimeout((()=>{pu(this,su,"f").get(e)===r&&pu(this,su,"f").delete(e)}),250)),await r},lu=async function t(e,r,n){n>=10&&Yo.throwError("CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},e,{blockTag:r,enableCcipRead:!0})});const s=e;try{return pe(await this._perform({method:"call",transaction:s,blockTag:r}))}catch(e){if(!this.disableCcipRead&&h(e)&&n>=0&&"latest"===r&&null!=s.to&&"0x556f1830"===ye(e.data,0,4)){const i=e.data,o=await Bs(s.to,this);let a;try{a=function(t){const e={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};if(me(t)<160)throw new Error("insufficient OffchainLookup data");const r=ye(t,0,32);if(ye(r,0,12)!==ye(Ou,0,12))throw new Error("corrupt OffchainLookup sender");e.sender=ye(r,12);try{const r=[],n=Yo.getNumber(ye(t,32,64)),s=Yo.getNumber(ye(t,n,n+32)),i=ye(t,n+32);for(let t=0;te[t])),e}(ye(e.data,4))}catch(t){return Yo.throwError(t.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:s,info:{data:i}})}if(a.sender.toLowerCase()!==o.toLowerCase())return Yo.throwError("CCIP Read sender mismatch","CALL_EXCEPTION",{data:i,transaction:s,errorSignature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",errorName:"OffchainLookup",errorArgs:a.errorArgs});const c=await this.ccipReadFetch(s,a.calldata,a.urls);return null==c?Yo.throwError("CCIP Read failed to fetch data","OFFCHAIN_FAULT",{reason:"FETCH_FAILED",transaction:s,info:{data:e.data,errorArgs:a.errorArgs}}):pu(this,Zl,"m",t).call(this,{to:o,data:we([a.selector,xu([c,a.extraData])])},r,n+1)}throw e}},uu=async function(t,e){const r=(await this.getNetwork()).formatter;return se(t,32)?await pu(this,Zl,"m",cu).call(this,{method:"getBlock",blockHash:t,includeTransactions:e}):await pu(this,Zl,"m",cu).call(this,{method:"getBlock",blockTag:r.blockTag(t),includeTransactions:e})},hu=async function(t,e){let r=await bu(t,this);return"event"===r.type&&e&&e.length>0&&!0===e[0].removed&&(r=await bu({orphan:"drop-log",log:e[0]},this)),pu(this,Ql,"f").get(r.tag)||null},fu=async function(t){const e=await bu(t,this),r=e.tag;let n=pu(this,Ql,"f").get(r);if(!n){n={subscriber:this._getSubscriber(e),tag:r,addressableMap:new WeakMap,nameMap:new Map,started:!1,listeners:[]},pu(this,Ql,"f").set(r,n)}return n};const Nu=new Uint8Array([]);function xu(t){const e=[];let r=0;for(let n=0;nnull==t?Yo.throwArgumentError("transaction to ENS name not configured","tx.to",n.to):t))),null!=n.from){const t=n.from;n.from=Promise.all([this.getAddress(),this.resolveName(t)]).then((([t,e])=>e&&t.toLowerCase()===e.toLowerCase()?t:Yo.throwArgumentError("transaction from mismatch","tx.from",e)))}return null==n.nonce&&(n.nonce=this.getTransactionCount()),n=e(n),null==n.gasLimit&&(n.gasLimit=r.estimateGas(n)),n=e(n),await e(n)}async resolveName(t){const e=Fu(this,Iu,"m",Su).call(this,"resolveName");return await e.resolveName(t)}async sendTransaction(t){const e=Fu(this,Iu,"m",Su).call(this,"sendTransaction"),r=qc.from(await this.populateTransaction(t));return await e.broadcastTransaction(await this.signTransaction(r))}}Iu=new WeakSet,Su=function(t){return this.provider?this.provider:Yo.throwError("missing provider","UNSUPPORTED_OPERATION",{operation:t})},Ru=async function(t){const e=[];if(null!=(t=Object.assign({},t)).from){const r=t.from;e.push(Promise.all([this.getAddress(),this.resolveName(r)]).then((([e,r])=>{r&&e.toLowerCase()===r.toLowerCase()||Yo.throwArgumentError("transaction from mismatch","tx.from",r),t.from=e})))}return await Promise.all(e),t};class Du extends Lu{constructor(t,e){super(e),Bu.add(this),n(this,{address:t})}async getAddress(){return this.address}connect(t){return new Du(this.address,t)}async signTransaction(t){Fu(this,Bu,"m",Cu).call(this,"transactions","signTransaction")}async signMessage(t){Fu(this,Bu,"m",Cu).call(this,"messages","signMessage")}async signTypedData(t,e,r){Fu(this,Bu,"m",Cu).call(this,"typed-data","signTypedData")}}Bu=new WeakSet,Cu=function(t,e){return Yo.throwError(`VoidSigner cannot sign ${t}`,"UNSUPPORTED_OPERATION",{operation:e})};class Mu extends Lu{constructor(t){super(t.provider),_u.set(this,void 0),Uu(this,_u,t,"f")}async getAddress(){return await Fu(this,_u,"f").getAddress()}connect(t){return new Mu(Fu(this,_u,"f").connect(t))}async signTransaction(t){return await Fu(this,_u,"f").signTransaction(t)}async sendTransaction(t){return await Fu(this,_u,"f").sendTransaction(t)}async signMessage(t){return await Fu(this,_u,"f").signMessage(t)}async signTypedData(t,e,r){return await Fu(this,_u,"f").signTypedData(t,e,r)}}_u=new WeakMap;const ju=new Set;function Gu(t){ju.has(t)||(ju.add(t),console.log("========= NOTICE ========="),console.log(`Request-Rate Exceeded for ${t} (this message will not be repeated)`),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}var $u,zu,Wu,Hu,Vu,Ku,Ju,qu,Xu=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Yu=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Zu{constructor(t){$u.add(this),zu.set(this,void 0),Wu.set(this,void 0),Hu.set(this,void 0),Vu.set(this,void 0),Xu(this,zu,t,"f"),Xu(this,Wu,null,"f"),Xu(this,Hu,Yu(this,$u,"m",Ku).bind(this),"f"),Xu(this,Vu,null,"f")}_subscribe(t){throw new Error("subclasses must override this")}_emitResults(t,e){throw new Error("subclasses must override this")}_recover(t){throw new Error("subclasses must override this")}start(){Yu(this,$u,"m",Ku).call(this,-2)}stop(){Yu(this,$u,"m",Ju).call(this),Yu(this,zu,"f").off("block",Yu(this,Hu,"f"))}pause(t){t&&Yu(this,$u,"m",Ju).call(this),Yu(this,zu,"f").off("block",Yu(this,Hu,"f"))}resume(){this.start()}}zu=new WeakMap,Wu=new WeakMap,Hu=new WeakMap,Vu=new WeakMap,$u=new WeakSet,Ku=async function(t){try{null==Yu(this,Wu,"f")&&Xu(this,Wu,this._subscribe(Yu(this,zu,"f")),"f");const t=await Yu(this,Wu,"f");if(null==t)return void Yu(this,zu,"f")._recoverSubscriber(this,this._recover(Yu(this,zu,"f")));const e=await Yu(this,zu,"f").getNetwork();if(Yu(this,Vu,"f")||Xu(this,Vu,e,"f"),Yu(this,Vu,"f").chainId!==e.chainId)throw new Error("chaid changed");const r=await Yu(this,zu,"f").send("eth_getFilterChanges",[t]);await this._emitResults(Yu(this,zu,"f"),r)}catch(t){console.log("@TODO",t)}Yu(this,zu,"f").once("block",Yu(this,Hu,"f"))},Ju=function(){const t=Yu(this,Wu,"f");t&&(Xu(this,Wu,null,"f"),t.then((t=>{Yu(this,zu,"f").send("eth_uninstallFilter",[t])})))};class Qu extends Zu{constructor(t,e){var r;super(t),qu.set(this,void 0),Xu(this,qu,(r=e,JSON.parse(JSON.stringify(r))),"f")}_recover(t){return new Yl(t,Yu(this,qu,"f"))}async _subscribe(t){const e=await t.send("eth_newFilter",[Yu(this,qu,"f")]);return console.log("____SUB",e),e}async _emitResults(t,e){const r=await t.getNetwork();for(const n of e){const e=r.formatter.log(n,t);t.emit(Yu(this,qu,"f"),e)}}}qu=new WeakMap;class th extends Zu{async _subscribe(t){return await t.send("eth_newPendingTransactionFilter",[])}async _emitResults(t,e){const r=await t.getNetwork();for(const n of e)t.emit("pending",r.formatter.hash(n))}}var eh,rh,nh,sh,ih=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},oh=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const ah="bigint,boolean,function,number,string,symbol".split(/,/g);function ch(t){if(null==t||ah.indexOf(typeof t)>=0)return t;if("function"==typeof t.getAddress)return t;if(Array.isArray(t))return t.map(ch);if("object"==typeof t)return Object.keys(t).reduce(((e,r)=>(e[r]=t[r],e)),{});throw new Error(`should not happen: ${t} (${typeof t})`)}function lh(t){return t?t.toLowerCase():t}const uh={polling:!1,batchMaxSize:1<<20,batchStallTime:250};class hh{constructor(t,e){n(this,{provider:t,address:e})}connect(t){return Yo.throwError("cannot reconnect JsonRpcSigner","UNSUPPORTED_OPERATION",{operation:"signer.connect"})}async getAddress(){return this.address}async getNetwork(){return await this.provider.getNetwork()}async getFeeData(){return await this.provider.getFeeData()}async estimateGas(t){return await this.provider.estimateGas(t)}async call(t){return await this.provider.call(t)}async resolveName(t){return await this.provider.resolveName(t)}async getBalance(t){return await this.provider.getBalanceOf(this.address)}async getTransactionCount(t){return await this.provider.getTransactionCountOf(this.address)}async sendUncheckedTransaction(t){const e=ch(t),r=[];if(e.from){const n=e.from;r.push((async()=>{const r=await Bs(n,this.provider);null!=r&&r.toLowerCase()===this.address.toLowerCase()||Yo.throwArgumentError("from address mismatch","transaction",t),e.from=r})())}else e.from=this.address;if(null==e.gasLimit&&r.push((async()=>{e.gasLimit=await this.provider.estimateGas(Object.assign(Object.assign({},e),{from:this.address}))})()),null!=e.to){const t=e.to;r.push((async()=>{e.to=await Bs(t,this.provider)})())}r.length&&await Promise.all(r);const n=this.provider.getRpcTransaction(e);return this.provider.send("eth_sendTransaction",[n])}async sendTransaction(t){const e=await this.provider.getBlockNumber(),r=await this.sendUncheckedTransaction(t);return await new Promise(((t,n)=>{const s=[1e3,100],i=async()=>{const n=await this.provider.getTransaction(r);null==n?this.provider._setTimeout((()=>{i()}),s.pop()||4e3):t(this.provider._wrapTransaction(n,r,e))};i()}))}async signTransaction(t){const e=ch(t);if(e.from){const r=await Bs(e.from,this.provider);if(null==r||r.toLowerCase()!==this.address.toLowerCase())return Yo.throwArgumentError("from address mismatch","transaction",t);e.from=r}else e.from=this.address;const r=this.provider.getRpcTransaction(e);return await this.provider.send("eth_sign_Transaction",[r])}async signMessage(t){const e="string"==typeof t?ci(t):t;return await this.provider.send("personal_sign",[pe(e),this.address.toLowerCase()])}async signTypedData(t,e,r){const n=ch(r),s=await yo.resolveNames(t,e,n,(async t=>{const e=await Bs(t);return null==e?Yo.throwArgumentError("TypedData does not support null address","value",t):e}));return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(yo.getPayload(s.domain,e,s.value))])}async unlock(t){return this.provider.send("personal_unlockAccount",[this.address.toLowerCase(),t,null])}async _legacySignMessage(t){const e="string"==typeof t?ci(t):t;return await this.provider.send("eth_sign",[this.address.toLowerCase(),pe(e)])}}class fh extends Eu{constructor(t){super(t),eh.set(this,void 0),rh.set(this,void 0),ih(this,eh,1,"f"),ih(this,rh,Object.assign({},uh),"f")}_getOptions(t){return oh(this,rh,"f")[t]}_setOptions(t){for(const e in t){const r=e,n=t[r];if(typeof n!=typeof oh(this,rh,"f")[r])return Yo.throwArgumentError("invalid option value",`options.${r}`,n)}for(const e in t){const r=e;oh(this,rh,"f")[r]=t[r]}}prepareRequest(t,e){var r,n;return{method:t,params:e,id:(ih(this,eh,(n=oh(this,eh,"f"),r=n++,n),"f"),r),jsonrpc:"2.0"}}async send(t,e){throw new Error("sub-class must implement this")}async getSigner(t=0){const e=await this.getNetwork(),r=await this.send("eth_accounts",[]);if("number"==typeof t){if(t>r.length)throw new Error("no such account");return new hh(this,r[t])}t=e.formatter.address(t);for(const t of r)if(e.formatter.address(t)===t)return new hh(this,t);throw new Error("invalid account")}async _detectNetwork(){return xl.from(Yo.getBigInt(await this._perform({method:"chainId"})))}_getSubscriber(t){return"pending"===t.type?new th(this):"event"===t.type?new Qu(this,t.filter):"orphan"===t.type&&"drop-log"===t.filter.orphan?new mu("orphan"):super._getSubscriber(t)}getRpcTransaction(t){const e={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach((r=>{if(null==t[r])return;let n=r;"gasLimit"===r&&(n="gas"),e[n]=ge(t[r])})),["from","to","data"].forEach((r=>{null!=t[r]&&(e[r]=pe(t[r]))})),t.accessList&&(e.accessList=Pc(t.accessList)),e}getRpcRequest(t){switch(t.method){case"chainId":return{method:"eth_chainId",args:[]};case"getBlockNumber":return{method:"eth_blockNumber",args:[]};case"getGasPrice":return{method:"eth_gasPrice",args:[]};case"getBalance":return{method:"eth_getBalance",args:[lh(t.address),t.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[lh(t.address),t.blockTag]};case"getCode":return{method:"eth_getCode",args:[lh(t.address),t.blockTag]};case"getStorageAt":return{method:"eth_getStorageAt",args:[lh(t.address),"0x"+t.position.toString(16),t.blockTag]};case"sendTransaction":return{method:"eth_sendRawTransaction",args:[t.signedTransaction]};case"getBlock":if("blockTag"in t)return{method:"eth_getBlockByNumber",args:[t.blockTag,!!t.includeTransactions]};if("blockHash"in t)return{method:"eth_getBlockByHash",args:[t.blockHash,!!t.includeTransactions]};break;case"getTransaction":return{method:"eth_getTransactionByHash",args:[t.hash]};case"getTransactionReceipt":return{method:"eth_getTransactionReceipt",args:[t.hash]};case"call":return{method:"eth_call",args:[this.getRpcTransaction(t.transaction),t.blockTag]};case"estimateGas":return{method:"eth_estimateGas",args:[this.getRpcTransaction(t.transaction)]};case"getLogs":return t.filter&&null!=t.filter.address&&(Array.isArray(t.filter.address)?t.filter.address=t.filter.address.map(lh):t.filter.address=lh(t.filter.address)),{method:"eth_getLogs",args:[t.filter]}}return null}getRpcError(t,e,r){if("eth_call"===t){const t=gh(r);return t?Yo.makeError("execution reverted during JSON-RPC call","CALL_EXCEPTION",{data:t.data,transaction:e[0]}):Yo.makeError("missing revert data during JSON-RPC call","CALL_EXCEPTION",{data:"0x",transaction:e[0],info:{error:r}})}const n=JSON.stringify(function(t){const e=[];return wh(t,e),e}(r));return n.match(/insufficient funds|base fee exceeds gas limit/)?Yo.makeError("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e[0]}):n.match(/nonce/)&&n.match(/too low/)?Yo.makeError("nonce has already been used","NONCE_EXPIRED",{transaction:e[0]}):n.match(/replacement transaction/)&&n.match(/underpriced/)?Yo.makeError("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e[0]}):n.match(/only replay-protected/)?Yo.makeError("legacy pre-eip-155 transactions not supported","UNSUPPORTED_OPERATION",{operation:t,info:{transaction:e[0]}}):"estimateGas"===t&&n.match(/gas required exceeds allowance|always failing transaction|execution reverted/)?Yo.makeError("cannot estimate gas; transaction may fail or may require manual gas limit","UNPREDICTABLE_GAS_LIMIT",{transaction:e[0]}):r}async _perform(t){if("call"===t.method||"estimateGas"===t.method){let e=t.transaction;if(e&&null!=e.type&&Yo.getBigInt(e.type)&&null==e.maxFeePerGas&&null==e.maxPriorityFeePerGas){const r=await this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&(t=Object.assign({},t,{transaction:Object.assign({},e,{type:void 0})}))}}const e=this.getRpcRequest(t);if(null!=e){this.emit("debug",{type:"sendRequest",request:e});try{const t=await this.send(e.method,e.args);return this.emit("debug",{type:"getResponse",result:t}),t}catch(t){throw this.emit("debug",{type:"getError",error:t}),this.getRpcError(e.method,e.args,t)}}return super._perform(t)}}eh=new WeakMap,rh=new WeakMap;class dh extends fh{constructor(t,e){null==t&&(t="http://localhost:8545"),super(e),nh.set(this,void 0),sh.set(this,void 0),"string"==typeof t?ih(this,nh,{request:new Vo(t)},"f"):(ih(this,nh,Object.assign({},t),"f"),oh(this,nh,"f").request=oh(this,nh,"f").request.clone()),ih(this,sh,4e3,"f")}async send(t,e){var r;r=e,e=JSON.parse(JSON.stringify(r));const n=Object.assign({},oh(this,nh,"f"));n.request=n.request.clone(),n.request.body=this.prepareRequest(t,e);const s=await Xo(n);s.assertOk();const i=s.bodyJson;return"error"in i?Yo.throwError("error from JSON-RPC","UNKNOWN_ERROR",{result:i}):i.result}get pollingInterval(){return oh(this,sh,"f")}set pollingInterval(t){if(!Number.isInteger(t)||t<0)throw new Error("invalid interval");ih(this,sh,t,"f"),this._forEachSubscriber((t=>{(function(t){return t&&"number"==typeof t.pollingInterval})(t)&&(t.pollingInterval=oh(this,sh,"f"))}))}}nh=new WeakMap,sh=new WeakMap;class ph extends dh{constructor(t,e){super(t,e),n(this,{network:e})}async _detectNetwork(){return this.network}}function gh(t){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")&&se(t.data))return{message:t.message,data:t.data};if("object"==typeof t){for(const e in t){const r=gh(t[e]);if(r)return r}return null}if("string"==typeof t)try{return gh(JSON.parse(t))}catch(t){}return null}function wh(t,e){if(null!=t){if("string"==typeof t.message&&e.push(t.message),"object"==typeof t)for(const r in t)wh(t[r],e);if("string"==typeof t)try{return wh(JSON.parse(t),e)}catch(t){}}}const mh="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";class yh extends ph{constructor(t="homestead",e){const r=xl.from(t);null==e&&(e=mh);super(yh.getConnection(r,e),r),n(this,{apiKey:e}),super._setOptions({polling:!0})}_getProvider(t){try{return new yh(t,this.apiKey)}catch(t){}return super._getProvider(t)}static getConnection(t,e){null==e&&(e=mh);const r=new Vo(`https://${function(t){switch(t){case"homestead":return"rpc.ankr.com/eth";case"matic":return"rpc.ankr.com/polygon";case"arbitrum":return"rpc.ankr.com/arbitrum"}return Yo.throwArgumentError("unsupported network","network",t)}(t.name)}/${e}`);r.allowGzip=!0;return{request:r,throttleRetry:async(t,r,n)=>(e===mh&&Gu("AnkrProvider"),!0)}}isCommunityResource(){return this.apiKey===mh}}const bh="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class vh extends ph{constructor(t="homestead",e){const r=xl.from(t);null==e&&(e=bh),super(vh.getConnection(r,e),r),n(this,{apiKey:e})}_getProvider(t){try{return new vh(t,this.apiKey)}catch(t){}return super._getProvider(t)}isCommunityResource(){return this.apiKey===bh}static getConnection(t,e){null==e&&(e=bh);const r=new Vo(`https://${function(t){switch(t){case"homestead":return"eth-mainnet.alchemyapi.io";case"ropsten":return"eth-ropsten.alchemyapi.io";case"rinkeby":return"eth-rinkeby.alchemyapi.io";case"goerli":return"eth-goerli.alchemyapi.io";case"kovan":return"eth-kovan.alchemyapi.io";case"matic":return"polygon-mainnet.g.alchemy.com";case"maticmum":return"polygon-mumbai.g.alchemy.com";case"arbitrum":return"arb-mainnet.g.alchemy.com";case"arbitrum-rinkeby":return"arb-rinkeby.g.alchemy.com";case"optimism":return"opt-mainnet.g.alchemy.com";case"optimism-kovan":return"opt-kovan.g.alchemy.com"}return Yo.throwArgumentError("unsupported network","network",t)}(t.name)}/v2/${e}`);r.allowGzip=!0;return{request:r,throttleRetry:async(t,r,n)=>(e===bh&&Gu("alchemy"),!0)}}}class Eh extends ph{constructor(t="homestead"){const e=xl.from(t);if("homestead"!==e.name)return Yo.throwArgumentError("unsupported network","network",t);super("https://cloudflare-eth.com/",e)}}const Ah="9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB",kh="org.ethers.plugins.etherscan";class Th extends yl{constructor(t,e){super(kh),n(this,{baseUrl:t,communityApiKey:e})}clone(){return new Th(this.baseUrl,this.communityApiKey)}}class Ph extends Eu{constructor(t,e){super();const r=xl.from(t);if(null==e){const t=r.getPlugin(kh);e=t?t.communityApiKey:Ah}n(this,{apiKey:e,network:r}),this.getBaseUrl()}getBaseUrl(){const t=this.network.getPlugin(kh);if(t)return t.baseUrl;switch(this.network.name){case"homestead":return"https://api.etherscan.io";case"ropsten":return"https://api-ropsten.etherscan.io";case"rinkeby":return"https://api-rinkeby.etherscan.io";case"kovan":return"https://api-kovan.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io"}return Yo.throwArgumentError("unsupported network","network",this.network)}getUrl(t,e){const r=Object.keys(e).reduce(((t,r)=>{const n=e[r];return null!=n&&(t+=`&${r}=${n}`),t}),""),n=this.apiKey?`&apikey=${this.apiKey}`:"";return`${this.getBaseUrl()}/api?module=${t}${r}${n}`}getPostUrl(){return`${this.getBaseUrl()}/api`}getPostData(t,e){return e.module=t,e.apikey=this.apiKey,e}async detectNetwork(){return this.network}async fetch(t,e,r){const n=r?this.getPostUrl():this.getUrl(t,e),s=r?this.getPostData(t,e):null,i=new Vo(n),o={request:i,throttleSlotInterval:1e3,processResponse:async(e,r)=>{const n=r.hasBody()?JSON.parse(fi(r.body)):{},s=("string"==typeof n.result?n.result:"").toLowerCase().indexOf("rate limit")>=0;return"proxy"===t?n&&0==n.status&&"NOTOK"==n.message&&s&&r.throwThrottleError(n.result):s&&r.throwThrottleError(n.result),r}};s&&(i.setHeader("content-type","application/x-www-form-urlencoded; charset=UTF-8"),i.body=Object.keys(s).map((t=>`${t}=${s[t]}`)).join("&"));const a=await Xo(o);if(a.assertOk(),!a.hasBody())throw new Error;const c=JSON.parse(fi(a.body));if("proxy"===t){if("2.0"!=c.jsonrpc){const t=new Error("invalid response");throw t.result=JSON.stringify(c),t}if(c.error){const t=new Error(c.error.message||"unknown error");throw c.error.code&&(t.code=c.error.code),c.error.data&&(t.data=c.error.data),t}return c.result}if(0==c.status&&("No records found"===c.message||"No transactions found"===c.message))return c.result;if(1!=c.status||"OK"!=c.message){const t=new Error("invalid response");throw t.result=JSON.stringify(c),t}return c.result}_getTransactionPostData(t){const e={};for(let r in t){if(null==t[r])continue;let n=t[r];"type"===r&&0===n||(n={type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[r]?ge(pe(n)):"accessList"===r?"["+this.network.formatter.accessList(n).map((t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`)).join(",")+"]":pe(n),e[r]=n)}return e}_checkError(t,e,r){throw e}async _detectNetwork(){return this.network}async _perform(t){switch(t.method){case"chainId":return this.network.chainId;case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getBalance":return this.fetch("account",{action:"balance",address:t.address,tag:t.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:t.address,tag:t.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:t.address,tag:t.blockTag});case"getStorageAt":return this.fetch("proxy",{action:"eth_getStorageAt",address:t.address,position:t.position,tag:t.blockTag});case"sendTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:t.signedTransaction},!0).catch((e=>this._checkError(t,e,t.signedTransaction)));case"getBlock":return"blockTag"in t?this.fetch("proxy",{action:"eth_getBlockByNumber",tag:t.blockTag,boolean:t.includeTransactions?"true":"false"}):Yo.throwError("getBlock by blockHash not supported by Etherscan","UNSUPPORTED_OPERATION",{operation:"getBlock(blockHash)"});case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:t.hash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:t.hash});case"call":{if("latest"!==t.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const e=this._getTransactionPostData(t.transaction);e.module="proxy",e.action="eth_call";try{return await this.fetch("proxy",e,!0)}catch(e){return this._checkError(t,e,t.transaction)}}case"estimateGas":{const e=this._getTransactionPostData(t.transaction);e.module="proxy",e.action="eth_estimateGas";try{return await this.fetch("proxy",e,!0)}catch(e){return this._checkError(t,e,t.transaction)}}}return super._perform(t)}async getNetwork(){return this.network}async getEtherPrice(){return"homestead"!==this.network.name?0:parseFloat((await this.fetch("stats",{action:"ethprice"})).ethusd)}isCommunityResource(){const t=this.network.getPlugin(kh);return t?t.communityApiKey===this.apiKey:Ah===this.apiKey}}const Nh="84842078b09946638c03157f83405213";class xh extends ph{constructor(t="homestead",e,r){const s=xl.from(t);null==e&&(e=Nh),null==r&&(r=null);super(xh.getConnection(s,e,r),s),n(this,{projectId:e,projectSecret:r})}_getProvider(t){try{return new xh(t,this.projectId,this.projectSecret)}catch(t){}return super._getProvider(t)}static getConnection(t,e,r){null==e&&(e=Nh),null==r&&(r=null);const n=new Vo(`https://${function(t){switch(t){case"homestead":return"mainnet.infura.io";case"ropsten":return"ropsten.infura.io";case"rinkeby":return"rinkeby.infura.io";case"kovan":return"kovan.infura.io";case"goerli":return"goerli.infura.io";case"matic":return"polygon-mainnet.infura.io";case"maticmum":return"polygon-mumbai.infura.io";case"optimism":return"optimism-mainnet.infura.io";case"optimism-kovan":return"optimism-kovan.infura.io";case"arbitrum":return"arbitrum-mainnet.infura.io";case"arbitrum-rinkeby":return"arbitrum-rinkeby.infura.io"}return Yo.throwArgumentError("unsupported network","network",t)}(t.name)}/v3/${e}`);n.allowGzip=!0,r&&n.setCredentials("",r);return{request:n,throttleRetry:async(t,r,n)=>(e===Nh&&Gu("InfuraProvider"),!0)}}isCommunityResource(){return this.projectId===Nh}}const Oh={homestead:"6004bcd10040261633ade990",ropsten:"6004bd4d0040261633ade991",rinkeby:"6004bda20040261633ade994",goerli:"6004bd860040261633ade992"};function Ih(t,e,r,n){n=!!n;let s=!1,i=e;return null==i?(i=Oh[t.name],null==i&&Yo.throwArgumentError("network does not support default applicationId","applicationId",e),n=!0,s=!0):i===Oh[t.name]&&(n=!0,s=!0),null==r&&(r=null),{applicationId:i,applicationSecretKey:r,community:s,loadBalancer:n}}class Sh extends ph{constructor(t="homestead",e,r,s){const i=xl.from(t),{applicationId:o,applicationSecretKey:a,loadBalancer:c}=Ih(i,e,r,s);super(Sh.getConnection(i,o,a,c),i),n(this,{applicationId:o,applicationSecretKey:a,loadBalancer:c})}static getConnection(t,e,r,n){const{applicationId:s,applicationSecretKey:i,community:o,loadBalancer:a}=Ih(t,e,r,n);let c=`https://${function(t){switch(t){case"homestead":return"eth-mainnet.gateway.pokt.network";case"ropsten":return"eth-ropsten.gateway.pokt.network";case"rinkeby":return"eth-rinkeby.gateway.pokt.network";case"goerli":return"eth-goerli.gateway.pokt.network"}return Yo.throwArgumentError("unsupported network","network",t)}(t.name)}/v1/`;a&&(c+="lb/"),c+=s;const l=new Vo(c);l.allowGzip=!0,i&&l.setCredentials("",i);return{request:l,throttleRetry:async(t,e,r)=>(o&&Gu("PocketProvider"),!0)}}isCommunityResource(){return this.applicationId===Oh[this.network.name]}}var Rh,Bh,Ch,_h,Fh,Uh,Lh,Dh,Mh,jh=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Gh=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const $h=BigInt("1"),zh=BigInt("2");function Wh(){return(new Date).getTime()}const Hh={stallTimeout:400,priority:1,weight:1},Vh={blockNumber:-2,requests:0,lateResponses:0,errorResponses:0,outOfSync:-1,unsupportedEvents:0,rollingDuration:0,score:0,_network:null,_updateNumber:null,_totalTime:0};function Kh(t,e,r){switch(r.method){case"chainId":case"getGasPrice":case"getBalance":case"estimateGas":return Yo.getBigInt(e).toString();case"getBlockNumber":case"getTransactionCount":return Yo.getNumber(e).toString();case"getCode":case"getStorageAt":case"call":return pe(e);case"getBlock":return r.includeTransactions?JSON.stringify(t.formatter.blockWithTransactions(e)):JSON.stringify(t.formatter.block(e));case"getTransaction":return JSON.stringify(t.formatter.transactionResponse(e));case"getTransactionReceipt":return JSON.stringify(t.formatter.receipt(e));case"getLogs":return JSON.stringify(e.map((e=>t.formatter.log(e))))}return Yo.throwError("unsupported method","UNSUPPORTED_OPERATION",{operation:`_perform(${JSON.stringify(r.method)})`})}function Jh(t,e){const r=new Map;for(const{result:t,normal:n,weight:s}of e){const e=r.get(n)||{result:t,weight:0};e.weight+=s,r.set(n,e)}let n,s=0;for(const{weight:e,result:i}of r.values())e>=t&&e>s&&(s=e,n=i);return n}function qh(t){const e=t.map((t=>BigInt(t.result)));e.sort(((t,e)=>tt?1:0));const r=e.length/2;return e.length%2?e[r]:(e[r-1]+e[r]+$h)/zh}class Xh extends Eu{constructor(t,e){super(e),Rh.add(this),Bh.set(this,void 0),Ch.set(this,void 0),_h.set(this,void 0),jh(this,Bh,t.map((t=>t instanceof Eu?Object.assign({provider:t},Hh,Vh):Object.assign({},Hh,t,Vh))),"f"),jh(this,Ch,-2,"f"),jh(this,_h,null,"f"),this.quorum=2,this.eventQuorum=1,this.eventWorkers=1,this.quorum>Gh(this,Bh,"f").reduce(((t,e)=>t+e.weight),0)&&Yo.throwArgumentError("quorum exceed provider wieght","quorum",this.quorum)}get providerConfigs(){return Gh(this,Bh,"f").slice()}async _detectNetwork(){return xl.from(Yo.getBigInt(await this._perform({method:"chainId"}))).freeze()}async _perform(t){await Gh(this,Rh,"m",Lh).call(this);const e=new Set;for(let r=0;r0;e--){const r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}}(e),e.sort(((t,e)=>e.priority-t.priority));for(const r of e)if(-1===t.indexOf(r))return r;return null},Uh=function(t,e){const r=Gh(this,Rh,"m",Fh).call(this,Array.from(t).map((t=>t.config)));if(null==r)return null;const n={},s={config:r,result:n,didBump:!1,done:!1,perform:null,staller:null},i=Wh();return s.perform=(async()=>{try{r.requests++,n.result=await r.provider._perform(e)}catch(t){r.errorResponses++,n.error=t}s.done&&r.lateResponses++;const t=Wh()-i;r._totalTime+=t,r.rollingDuration=.95*r.rollingDuration+.05*t,s.perform=null})(),s.staller=(async()=>{var t;await(t=r.stallTimeout,new Promise((e=>{setTimeout(e,t)}))),s.staller=null})(),t.add(s),s},Lh=async function(){let t=Gh(this,_h,"f");if(!t){const e=[];Gh(this,Bh,"f").forEach((t=>{e.push(async function(t,e){for(;t.blockNumber<0||t.blockNumber{const e=await t.provider.getBlockNumber();e>t.blockNumber&&(t.blockNumber=e),t._updateNumber=null})()),await t._updateNumber,t.outOfSync++}(t,0)),e.push((async()=>{t._network=await t.provider.getNetwork()})())})),jh(this,_h,t=(async()=>{await Promise.all(e);let t=null;for(const e of Gh(this,Bh,"f")){const r=e._network;null==t?t=r.chainId:r.chainId!==t&&Yo.throwError("cannot mix providers on different networks","UNSUPPORTED_OPERATION",{operation:"new FallbackProvider"})}})(),"f")}await t},Dh=async function(t,e){const r=[];for(const n of t)if("result"in n.result){const t=n.result.result;r.push({result:t,normal:Kh(n.config._network,t,e),weight:n.config.weight})}if(!(r.reduce(((t,e)=>t+e.weight),0)({result:t.blockNumber,normal:Yo.getNumber(t.blockNumber).toString(),weight:t.weight})))),"%internal"));jh(this,Ch,t,"f")}const t=function(t,e){if(1===t)return Yo.getNumber(qh(e),"%internal");const r=new Map,n=(t,e)=>{const n=r.get(t)||{result:t,weight:0};n.weight+=e,r.set(t,n)};for(const{weight:t,result:r}of e){const e=Yo.getNumber(r);n(e-1,t),n(e,t),n(e+1,t)}let s,i=0;for(const{weight:e,result:n}of r.values())e>=t&&(e>i||null!=s&&e===i&&n>s)&&(i=e,s=n);return s}(this.quorum,r);if(void 0===t)return;return t>Gh(this,Ch,"f")&&jh(this,Ch,t,"f"),Gh(this,Ch,"f")}case"getGasPrice":case"estimateGas":return qh(r);case"getBlock":return"blockTag"in e&&"pending"===e.blockTag?r[0].result:Jh(this.quorum,r);case"chainId":case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"getTransaction":case"getTransactionReceipt":case"getLogs":case"call":return Jh(this.quorum,r);case"sendTransaction":throw new Error("TODO")}return Yo.throwError("unsupported method","UNSUPPORTED_OPERATION",{operation:`_perform(${JSON.stringify(e.method)})`})}},Mh=async function t(e,r){if(0===e.size)throw new Error("no runners?!");const n=[];let s=0;for(const t of e)t.perform&&n.push(t.perform),t.staller?n.push(t.staller):t.didBump||(t.didBump=!0,s++);const i=await Gh(this,Rh,"m",Dh).call(this,e,r);if(void 0!==i){if(i instanceof Error)throw i;return i}for(let t=0;t(hf(this,Zh,"f")._register(t,this),t))),"f")}stop(){hf(this,tf,"f").then((t=>{hf(this,Zh,"f").send("eth_unsubscribe",[t])})),uf(this,tf,null,"f")}pause(t){t||Yo.throwError("preserve logs while paused not supported by SocketSubscriber yet","UNSUPPORTED_OPERATION",{operation:"pause(false)"}),uf(this,ef,!!t,"f")}resume(){uf(this,ef,null,"f")}_handleMessage(t){if(null!=hf(this,tf,"f")&&null===hf(this,ef,"f")){let e=hf(this,rf,"f");e=null==e?this._emit(hf(this,Zh,"f"),t):e.then((async()=>{await this._emit(hf(this,Zh,"f"),t)})),uf(this,rf,e.then((()=>{hf(this,rf,"f")===e&&uf(this,rf,null,"f")})),"f")}}async _emit(t,e){throw new Error("sub-classes must implemente this; _emit")}}Zh=new WeakMap,Qh=new WeakMap,tf=new WeakMap,ef=new WeakMap,rf=new WeakMap;class df extends ff{constructor(t){super(t,["newHeads"])}async _emit(t,e){t.emit("block",parseInt(e.number))}}class pf extends ff{constructor(t){super(t,["newPendingTransactions"])}async _emit(t,e){t.emit("pending",e)}}class gf extends ff{constructor(t,e){super(t,["logs",e]),nf.set(this,void 0),sf.set(this,void 0),uf(this,nf,JSON.stringify(e),"f"),uf(this,sf,t.getNetwork().then((t=>t.formatter)),"f")}get logFilter(){return JSON.parse(hf(this,nf,"f"))}async _emit(t,e){const r=await hf(this,sf,"f");t.emit(hf(this,nf,"f"),r.log(e,t))}}nf=new WeakMap,sf=new WeakMap;class wf extends fh{constructor(t){super(t),of.set(this,void 0),af.set(this,void 0),cf.set(this,void 0),lf.set(this,void 0),uf(this,of,new Map,"f"),uf(this,af,!1,"f"),uf(this,cf,new Map,"f"),uf(this,lf,new Map,"f")}_getSubscriber(t){switch(t.type){case"close":return new mu("close");case"block":return new df(this);case"pending":return new pf(this);case"event":return new gf(this,t.filter);case"orphan":if("drop-log"===t.filter.orphan)return new mu("drop-log")}return super._getSubscriber(t)}_register(t,e){hf(this,cf,"f").set(t,e);const r=hf(this,lf,"f").get(t);if(r){for(const t of r)e._handleMessage(t);hf(this,lf,"f").delete(t)}}async send(t,e){const r=this.prepareRequest(t,e),n=new Promise(((t,e)=>{hf(this,of,"f").set(r.id,{payload:r,resolve:t,reject:e})}));return hf(this,af,"f")&&await this._write(JSON.stringify(r)),await n}async _start(){if(!hf(this,af,"f")){uf(this,af,!0,"f");for(const{payload:t}of hf(this,of,"f").values())await this._write(JSON.stringify(t))}}async _processMessage(t){const e=JSON.parse(t);if("id"in e){const t=hf(this,of,"f").get(e.id);if(!t)return void console.log("Weird... Response for not a thing we sent");if(hf(this,of,"f").delete(e.id),"error"in e){const{message:r,code:n,data:s}=e.error,i=Yo.makeError(r||"unkonwn error","SERVER_ERROR",{request:`ws:${JSON.stringify(t.payload)}`,info:{code:n,data:s}});t.reject(i)}else t.resolve(e.result)}else if("eth_subscription"===e.method){const t=e.params.subscription,r=hf(this,cf,"f").get(t);if(r)r._handleMessage(e.params.result);else{let r=hf(this,lf,"f").get(t);null==r&&(r=[],hf(this,lf,"f").set(t,r)),r.push(e.params.result)}}}async _write(t){throw new Error("sub-classes must override this")}}of=new WeakMap,af=new WeakMap,cf=new WeakMap,lf=new WeakMap;var mf,yf=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},bf=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class vf extends wf{constructor(t,e){super(e),mf.set(this,void 0),yf(this,mf,"string"==typeof t?new Yh(t):t,"f"),this.websocket.onopen=()=>{this._start()},this.websocket.onmessage=t=>{this._processMessage(t.data)}}get websocket(){return bf(this,mf,"f")}async _write(t){this.websocket.send(t)}}function Ef(t,e){if(null==e&&(e={}),"string"==typeof t&&t.match(/^https?:/))return new dh(t);if("string"==typeof t&&t.match(/^wss?:/)||(r=t)&&"function"==typeof r.send&&"function"==typeof r.close)return new vf(t);var r;const n=[];if("-"!==e.alchemy)try{n.push(new vh(t,e.alchemy))}catch(t){console.log(t)}if("-"!==e.ankr)try{n.push(new yh(t,e.ankr))}catch(t){console.log(t)}if("-"!==e.cloudflare)try{n.push(new Eh(t))}catch(t){console.log(t)}if("-"!==e.etherscan)try{n.push(new Ph(t,e.etherscan))}catch(t){console.log(t)}if("-"!==e.infura)try{let r,s=e.infura;"object"==typeof s&&(r=s.projectSecret,s=s.projectId),n.push(new xh(t,s,r))}catch(t){console.log(t)}if("-"!==e.pocket)try{let r,s,i=e.pocket;"object"==typeof i&&(s=!!i.loadBalancer,r=i.secretKey,i=i.appId),n.push(new Sh(t,i,r,s))}catch(t){console.log(t)}if(0===n.length)throw new Error("TODO");return 1===n.length?n[0]:new Xh(n)}mf=new WeakMap;const Af=function(t){function e(e,r,n){const s=function(){const s=new t(e,r);if(null!=n.ensNetwork&&s.attachPlugin(new vl(null,n.ensNetwork)),n.priorityFee&&s.attachPlugin(new El(n.priorityFee)),n.etherscan){const{url:t,apiKey:e}=n.etherscan;s.attachPlugin(new Th(t,e))}return s.attachPlugin(new bl),s};t.register(e,s),t.register(r,s),n.altNames&&n.altNames.forEach((e=>{t.register(e,s)}))}return e("homestead",1,{ensNetwork:1,altNames:["mainnet"]}),e("ropsten",3,{ensNetwork:3}),e("rinkeby",4,{ensNetwork:4}),e("goerli",5,{ensNetwork:5}),e("kovan",42,{ensNetwork:42}),e("classic",61,{}),e("classicKotti",6,{}),e("xdai",100,{ensNetwork:1}),e("matic",137,{ensNetwork:1,priorityFee:35e9,etherscan:{apiKey:"W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7",url:"https://api.polygonscan.com/"}}),e("maticMumbai",80001,{priorityFee:35e9,etherscan:{apiKey:"W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7",url:"https://api-testnet.polygonscan.com/"}}),e("bnb",56,{ensNetwork:1,etherscan:{apiKey:"EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9",url:"http://api.bscscan.com"}}),e("bnbt",97,{etherscan:{apiKey:"EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9",url:"http://api-testnet.bscscan.com"}}),t}(xl),kf=void 0;var Tf,Pf,Nf=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},xf=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Of extends sl{constructor(t,e,r){super(t,t.provider);n(this,{args:e.decodeEventLog(r,t.data,t.topics),fragment:r,interface:e})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}}class If extends il{constructor(t,e,r){super(r,e),Tf.set(this,void 0),Nf(this,Tf,t,"f")}get logs(){return super.logs.map((t=>{const e=t.topics.length?xf(this,Tf,"f").getEvent(t.topics[0]):null;return e?new Of(t,xf(this,Tf,"f"),e):t}))}}Tf=new WeakMap;class Sf extends ol{constructor(t,e,r){super(r,e),Pf.set(this,void 0),Nf(this,Pf,t,"f")}async wait(t){const e=await super.wait();return null==e?null:new If(xf(this,Pf,"f"),this.provider,e)}}Pf=new WeakMap;class Rf extends a{constructor(t,e,r,s,i){super(t,e,r);const o=new Of(i,t.interface,s);n(this,{args:t.interface.decodeEventLog(s,o.data,o.topics),fragment:s,log:o})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}async getBlock(){return await this.log.getBlock()}async getTransaction(){return await this.log.getTransaction()}async getTransactionReceipt(){return await this.log.getTransactionReceipt()}}const Bf=new T("@ethersproject/contract@6.0.0-beta.4");var Cf,_f=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Ff=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Uf(t){return t&&"function"==typeof t.resolveName}class Lf{constructor(t,e,r){if(Cf.set(this,void 0),n(this,{fragment:e}),e.inputs.lengtht.walkAsync(r[e],((t,e)=>"address"===t?Bs(e,i):e)))));return t.interface.encodeFilterTopics(e,n)}(),"f")}getTopicFilter(){return Ff(this,Cf,"f")}}function Df(t,e){return null==t?null:"function"==typeof t[e]?t:t.provider&&"function"==typeof t.provider[e]?t.provider:null}function Mf(t){return null==t?null:t.provider||null}async function jf(t){const e=function(t){const e={};t.to&&(e.to=t.to),t.from&&(e.from=t.from),t.data&&(e.data=pe(t.data));const r="chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value".split(/,/);for(const n in r)n in t&&null!=t[n]&&(e[n]=Yo.getBigInt(t[n],`request.${n}`));const n="type,nonce".split(/,/);for(const r in n)r in t&&null!=t[r]&&(e[r]=Yo.getNumber(t[r],`request.${r}`));return t.accessList&&(e.accessList=Pc(t.accessList)),"blockTag"in t&&(e.blockTag=t.blockTag),"enableCcipRead"in t&&(e.enableCcipReadEnabled=!!t.enableCcipRead),"customData"in t&&(e.customData=t.customData),e}(js.dereference(t,"overrides"));return e.to?Bf.throwArgumentError("cannot override to","overrides.to",e.to):e.data&&Bf.throwArgumentError("cannot override data","overrides.data",e.data),e.from&&(e.from=await Bs(e.from)),e}Cf=new WeakMap;class Gf extends(function(){return Function}()){constructor(t,e){super(),n(this,{name:t.interface.getFunctionName(e),_contract:t,_key:e});return new Proxy(this,{apply:async(t,e,r)=>t.getFragment(...r).constant?await t.staticCall(...r):await t.send(...r)})}get fragment(){return this._contract.interface.getFunction(this._key)}getFragment(...t){return this._contract.interface.getFunction(this._key,t)}async populateTransaction(...t){const r=this.getFragment(...t);let n={};if(r.inputs.length+1===t.length&&(n=await jf(t.pop())),r.inputs.length!==t.length)throw new Error("internal error: fragment inputs doesn't match arguments; should not happen");const s=await async function(t,e,r){const n=Df(t,"resolveName"),s=Uf(n)?n:null;return await Promise.all(e.map(((t,e)=>t.walkAsync(r[e],((t,e)=>"address"===t?Bs(e,s):e)))))}(this._contract.runner,r.inputs,t);return Object.assign({},n,await e({to:this._contract.getAddress(),data:this._contract.interface.encodeFunctionData(r,s)}))}async staticCall(...t){const e=await this.staticCallResult(...t);return 1===e.length?e[0]:e}async send(...t){const e=this._contract.runner;if(!(r=e)||"function"!=typeof r.sendTransaction)return Bf.throwError("contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});var r;const n=await e.sendTransaction(await this.populateTransaction(...t)),s=Mf(this._contract.runner);return new Sf(this._contract.interface,s,n)}async estimateGas(...t){const e=Df(this._contract.runner,"estimateGas");return(r=e)&&"function"==typeof r.estimateGas?await e.estimateGas(await this.populateTransaction(...t)):Bf.throwError("contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"});var r}async staticCallResult(...t){const e=Df(this._contract.runner,"call");if(!(r=e)||"function"!=typeof r.call)return Bf.throwError("contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});var r;const n=this.getFragment(...t),s=await this.populateTransaction(...t);let i="0x";try{i=await e.call(s)}catch(t){if(h(t))throw this._contract.interface.makeError(n,t.data,s);throw t}return this._contract.interface.decodeFunctionResult(n,i)}}class $f extends(function(){return Function}()){constructor(t,e){return super(),n(this,{name:t.interface.getEventName(e),_contract:t,_key:e}),new Proxy(this,{apply:async(e,r,n)=>new Lf(t,e.getFragment(...n),n)})}get fragment(){return this._contract.interface.getEvent(this._key)}getFragment(...t){return this._contract.interface.getEvent(this._key,t)}}const zf=Symbol.for("_ethersInternal_contract"),Wf=new WeakMap;function Hf(t){return Wf.get(t[zf])}async function Vf(t,e){let r,n;if(Array.isArray(e))r=t.interface.getEvent(e[0]),n=e;else if("string"==typeof e)r=t.interface.getEvent(e),n=[t.interface.getEventTopic(r)];else if((s=e)&&"object"==typeof s&&"getTopicFilter"in s&&"function"==typeof s.getTopicFilter&&s.fragment)r=e.fragment,n=await e.getTopicFilter();else{if(!("fragment"in e))throw console.log(e),new Error("TODO");r=e.fragment,n=[t.interface.getEventTopic(r)]}var s;n=n.map((t=>{return null==t?null:Array.isArray(t)?(e=t.map((t=>t.toLowerCase())),(e=Array.from(new Set(e).values())).sort(),e):t.toLowerCase();var e}));return{fragment:r,tag:n.map((t=>null==t?"null":Array.isArray(t)?t.join("|"):t)).join("&"),topics:n}}async function Kf(t,e){const{subs:r}=Hf(t);return r.get((await Vf(t,e)).tag)||null}async function Jf(t,e){const r=Mf(t.runner);if(!r)return Bf.throwError("contract runner does not support subscribing","UNSUPPORTED_OPERATION",{operation:"on"});const{fragment:n,tag:s,topics:i}=await Vf(t,e),{addr:o,subs:a}=Hf(t);let c=a.get(s);if(!c){const l={address:o||t,topics:i},u=r=>{const s=new Rf(t,null,e,n,r);Xf(t,e,s.args,s)};let h=!1;c={tag:s,listeners:[],start:()=>{h||(r.on(l,u),h=!0)},stop:()=>{h&&(r.off(l,u),h=!1)}},a.set(s,c)}return c}let qf=Promise.resolve();async function Xf(t,e,r,n){try{await qf}catch(t){}const s=async function(t,e,r,n){await qf;const s=await Kf(t,e);if(!s)return!1;const i=s.listeners.length;return s.listeners=s.listeners.filter((({listener:s,once:i})=>{const o=r.slice();n&&o.push(new Rf(t,i?null:s,e,n.fragment,n.log));try{s.call(t,...o)}catch(t){}return!i})),i>0}(t,e,r,n);return qf=s,await s}const Yf=["then"];class Zf{constructor(t,e,r=null,s){let i;n(this,{target:t,runner:r,interface:_o.from(e)}),Object.defineProperty(this,zf,{value:{}});let o=null,a=null;if(s){const t=Mf(r);a=new Sf(this.interface,t,s)}let c=new Map;if("string"==typeof t)if(se(t))o=t,i=Promise.resolve(t);else{const e=Df(r,"resolveName");if(!Uf(e))throw Bf.makeError("contract runner does not support name resolution","UNSUPPORTED_OPERATION",{operation:"resolveName"});i=e.resolveName(t).then((t=>{if(null==t)throw new Error("TODO");return Hf(this).addr=t,t}))}else i=t.getAddress().then((t=>{if(null==t)throw new Error("TODO");return Hf(this).addr=t,t}));var l,u;l=this,u={addrPromise:i,addr:o,deployTx:a,subs:c},Wf.set(l[zf],u);const h=new Proxy({},{get:(t,e,r)=>{if(Yf.indexOf(e)>=0)return Reflect.get(t,e,r);const n=String(e),s=this.getEvent(n);if(s)return s;throw new Error(`unknown contract event: ${n}`)}});return n(this,{filters:h}),new Proxy(this,{get:(t,e,r)=>{if(e in t||Yf.indexOf(e)>=0)return Reflect.get(t,e,r);const n=String(e),s=t.getFunction(n);if(s)return s;throw new Error(`unknown contract method: ${n}`)}})}async getAddress(){return await Hf(this).addrPromise}async getDeployedCode(){const t=Mf(this.runner);if(!t)return Bf.throwError("runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"getDeployedCode"});const e=await t.getCode(await this.getAddress());return"0x"===e?null:e}async waitForDeployment(){const t=this.deploymentTransaction();if(t)return await t.wait(),this;if(null!=await this.getDeployedCode())return this;const e=Mf(this.runner);return null==e?Bf.throwError("contract runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"waitForDeployment"}):new Promise(((t,r)=>{const n=async()=>{try{if(null!=await this.getDeployedCode())return t(this);e.once("block",n)}catch(t){r(t)}};n()}))}deploymentTransaction(){return Hf(this).deployTx}getFunction(t){return"string"!=typeof t&&(t=t.format()),new Gf(this,t)}getEvent(t){return"string"!=typeof t&&(t=t.format()),new $f(this,t)}async queryTransaction(t){throw new Error("@TODO")}async queryFilter(t,e=0,r="latest"){const{addr:n,addrPromise:s}=Hf(this),i=n||await s,{fragment:o,topics:a}=await Vf(this,t),c={address:i,topics:a,fromBlock:e,toBlock:r},l=Mf(this.runner);return l?(await l.getLogs(c)).map((t=>new Of(t,this.interface,o))):Bf.throwError("contract runner does not have a provider","UNSUPPORTED_OPERATION",{operation:"queryFilter"})}async on(t,e){const r=await Jf(this,t);return r.listeners.push({listener:e,once:!1}),r.start(),this}async once(t,e){const r=await Jf(this,t);return r.listeners.push({listener:e,once:!0}),r.start(),this}async emit(t,...e){return await Xf(this,t,e,null)}async listenerCount(t){if(t){const e=await Kf(this,t);return e?e.listeners.length:0}const{subs:e}=Hf(this);let r=0;for(const{listeners:t}of e.values())r+=t.length;return r}async listeners(t){if(t){const e=await Kf(this,t);return e?e.listeners.map((({listener:t})=>t)):[]}const{subs:e}=Hf(this);let r=[];for(const{listeners:t}of e.values())r=r.concat(t.map((({listener:t})=>t)));return r}async off(t,e){const r=await Kf(this,t);if(!r)return this;if(e){const t=r.listeners.map((({listener:t})=>t)).indexOf(e);t>=0&&r.listeners.splice(t,1)}return null!=e&&0!==r.listeners.length||(r.stop(),Hf(this).subs.delete(r.tag)),this}async removeAllListeners(t){if(t){const e=await Kf(this,t);if(!e)return this;e.stop(),Hf(this).subs.delete(e.tag)}else{const{subs:t}=Hf(this);for(const{tag:e,stop:r}of t.values())r(),t.delete(e)}return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return await this.off(t,e)}static buildClass(t){return class extends Zf{constructor(e,r=null){super(e,t,r)}}}static from(t,e,r=null){return new this(t,e,r)}}class Qf extends(function(){return Zf}()){}const td=" !#$%&'()*+,-./<=>?@[]^_`{|}~",ed=/^[a-z]*$/i;function rd(t,e){let r=97;return t.reduce(((t,n)=>(n===e?r++:n.match(ed)?t.push(String.fromCharCode(r)+n):(r=97,t.push(n)),t)),[])}function nd(t){if("0"!==t[0])throw TypeError("unsupported auwl data");return function(t,e){for(let r=td.length-1;r>=0;r--)t=t.split(td[r]).join(e.substring(2*r,2*r+2));const r=[],n=t.replace(/(:|([0-9])|([A-Z][a-z]*))/g,((t,e,n,s)=>{if(n)for(let t=parseInt(n);t>=0;t--)r.push(";");else r.push(e.toLowerCase());return""}));if(n)throw new Error(`leftovers: ${JSON.stringify(n)}`);return rd(rd(r,";"),":")}(t.substring(1+2*td.length),t.substring(1,1+2*td.length))}const sd=new T("@ethersproject/wordlists@6.0.0-beta.2");class id{constructor(t){n(this,{locale:t})}split(t){return t.toLowerCase().split(/ +/g)}join(t){return t.join(" ")}}var od,ad,cd,ld,ud,hd=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},fd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class dd extends id{constructor(t,e,r){super(t),od.add(this),ad.set(this,void 0),cd.set(this,void 0),ld.set(this,void 0),hd(this,ad,e,"f"),hd(this,cd,r,"f"),hd(this,ld,null,"f")}get _data(){return fd(this,ad,"f")}_decodeWords(){return nd(fd(this,ad,"f"))}getWord(t){const e=fd(this,od,"m",ud).call(this);return(t<0||t>=e.length)&&sd.throwArgumentError(`invalid word index: ${t}`,"index",t),e[t]}getWordIndex(t){return fd(this,od,"m",ud).call(this).indexOf(t)}}ad=new WeakMap,cd=new WeakMap,ld=new WeakMap,od=new WeakSet,ud=function(){if(null==fd(this,ld,"f")){const t=this._decodeWords();if(Fi(t.join("\n")+"\n")!==fd(this,cd,"f"))throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);hd(this,ld,t,"f")}return fd(this,ld,"f")};const pd=new class extends dd{constructor(){super("en","0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-EgSe0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-PM&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryFN Noc|PutQuirySSue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurEAyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOgAyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NNGradeHoldOnP Set1BOng::Rd3Ar~ow9UUngU`:3BraRo9NeO","0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60")}},gd=new T("@ethersproject/wallet@6.0.0-beta.4"),wd=Object.freeze({en:pd});var md,yd=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},bd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class vd extends dd{constructor(t,e,r,n){super(t,e,n),md.set(this,void 0),yd(this,md,r,"f")}get _accent(){return bd(this,md,"f")}_decodeWords(){return function(t,e){let r=nd(t).join(",");return e.split(/,/g).forEach((t=>{const e=t.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);if(!e)throw new Error("internal error parsing accents");let n=0;const s=function(t,e){const r=(1<=t;){const e=s>>i-t;s&=(1<(0==--s[n]&&(e=String.fromCharCode(e.charCodeAt(0),i),n++),e)))})),r.split(",")}(this._data,this._accent)}}function Ed(t){return(1<24)&&gd.throwArgumentError("invalid mnemonic length","mnemonic","[ REDACTED ]");const n=le(new Uint8Array(Math.ceil(11*r.length/8)));let s=0;for(let t=0;t>3]|=1<<7-s%8),s++}const i=32*r.length/3,o=Ed(r.length/3);return(le(os(n.slice(0,i/8)))[0]&o)!==(n[n.length-1]&o)&&gd.throwArgumentError("invalid mnemonic checksum","mnemonic","[ REDACTED ]"),pe(n.slice(0,i/8))}function kd(t,e=pd){(t.length%4||t.length<16||t.length>32)&&gd.throwArgumentError("invalid entropy size","entropy","[ REDACTED ]"),null==e&&(e=pd);const r=[0];let n=11;for(let e=0;e8?(r[r.length-1]<<=8,r[r.length-1]|=t[e],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[e]>>8-n,r.push(t[e]&((1<<8-n)-1&255)),n+=3);const s=t.length/4,i=parseInt(os(t).substring(2,4),16)&Ed(s);return r[r.length-1]<<=s,r[r.length-1]|=i>>8-s,e.join(r.map((t=>e.getWord(t))))}md=new WeakMap;const Td={};class Pd{constructor(t,e,r,s,i){null==s&&(s=""),null==i&&(i=pd),gd.assertPrivate(t,Td,"Mnemonic"),n(this,{phrase:r,password:s,wordlist:i,entropy:e})}computeSeed(){const e=ci("mnemonic"+this.password,t.UnicodeNormalizationForm.NFKD);return Un(ci(this.phrase,t.UnicodeNormalizationForm.NFKD),e,2048,64,"sha512")}static fromPhrase(t,e,r){const n=Ad(t,r);return t=kd(gd.getBytes(n),r),new Pd(Td,n,t,e,r)}static fromEntropy(t,e,r){const n=gd.getBytes(t,"entropy"),s=kd(n,r);return new Pd(Td,pe(n),s,e,r)}static entropyToPhrase(t,e){return kd(gd.getBytes(t,"entropy"),e)}static phraseToEntropy(t,e){return Ad(t,e)}static isValidMnemonic(t,e){try{return Ad(t,e),!0}catch(t){}return!1}}var Nd,xd=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Od=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Id extends Lu{constructor(t,e){super(e),Nd.set(this,void 0),xd(this,Nd,t,"f");n(this,{address:Nc(this.signingKey.publicKey)})}get signingKey(){return Od(this,Nd,"f")}get privateKey(){return this.signingKey.privateKey}async getAddress(){return this.address}connect(t){return new Id(Od(this,Nd,"f"),t)}async signTransaction(t){const r=Object.assign({},t,await e({to:t.to?Bs(t.to,this.provider):void 0,from:t.from?Bs(t.from,this.provider):void 0}));null!=r.from&&(ws(r.from)!==this.address&&gd.throwArgumentError("transaction from address mismatch","tx.from",t.from),delete r.from);const n=qc.from(r);return n.signature=this.signingKey.sign(n.unsignedHash),n.serialized}async signMessage(t){return this.signingKey.sign(zi(t)).serialized}async signTypedData(t,e,r){const n=await yo.resolveNames(t,e,r,(async t=>{if(null==this.provider)return gd.throwError("cannot resolve ENS names without a provider","UNSUPPORTED_OPERATION",{operation:"resolveName",info:{name:t}});const e=await this.provider.resolveName(t);return null==e?gd.throwError("unconfigured ENS name","UNCONFIGURED_NAME",{value:t}):e}));return this.signingKey.sign(yo.hash(n.domain,e,n.value)).serialized}}Nd=new WeakMap;var Sd,Rd,Bd,Cd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)},_d=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r};const Fd="m/44'/60'/0'/0/0",Ud=new Uint8Array([66,105,116,99,111,105,110,32,115,101,101,100]),Ld=2147483648,Dd=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");function Md(t,e){let r="";for(;t;)r="0123456789abcdef"[t%16]+r,t=Math.trunc(t/16);for(;r.length<2*e;)r="0"+r;return"0x"+r}function jd(t){const e=gd.getBytes(t);return Yt(we([e,ye(os(os(e)),0,4)]))}const Gd={};function $d(t,e,r,n){const s=new Uint8Array(37);if(t&Ld){if(null==n)return gd.throwError("cannot derive child of neutered node","UNSUPPORTED_OPERATION",{operation:"deriveChild"});s.set(le(n),1)}else s.set(le(r));for(let e=24;e>=0;e-=8)s[33+(e>>3)]=t>>24-e&255;const i=le(Hr("sha512",e,s));return{IL:i.slice(0,32),IR:i.slice(32)}}function zd(t,e){const r=e.split("/");if(0===r.length||"m"===r[0]&&0!==t.depth)throw new Error("invalid path - "+e);"m"===r[0]&&r.shift();let n=t;for(let t=0;t=Ld)throw new Error("invalid path index - "+e);n=n.deriveChild(Ld+t)}else{if(!e.match(/^[0-9]+$/))throw new Error("invalid path component - "+e);{const t=parseInt(e);if(t>=Ld)throw new Error("invalid path index - "+e);n=n.deriveChild(t)}}}return n}class Wd extends Id{constructor(t,e,r,s,i,o,a,c,l){super(e,l),gd.assertPrivate(t,Gd,"HDNodeWallet"),n(this,{publicKey:e.compressedPublicKey});n(this,{parentFingerprint:r,fingerprint:ye(Bn(os(this.publicKey)),0,4),chainCode:s,path:i,index:o,depth:a}),n(this,{mnemonic:c})}connect(t){return new Wd(Gd,this.signingKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.mnemonic,t)}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return jd(we(["0x0488ADE4",Md(this.depth,1),this.parentFingerprint,Md(this.index,4),this.chainCode,we(["0x00",this.privateKey])]))}hasPath(){return null!=this.path}neuter(){return new Hd(Gd,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.provider)}deriveChild(t){const e=gd.getNumber(t,"index");if(e>4294967295)throw new Error("invalid index - "+String(e));let r=this.path;r&&(r+="/"+(2147483647&e),e&Ld&&(r+="'"));const{IR:n,IL:s}=$d(e,this.chainCode,this.publicKey,this.privateKey),i=new kc(kt((Et(s)+BigInt(this.privateKey))%Dd,32));return new Wd(Gd,i,this.fingerprint,pe(n),r,e,this.depth+1,this.mnemonic,this.provider)}derivePath(t){return zd(this,t)}static fromSeed(t){return Cd(Wd,Sd,"m",Rd).call(Wd,t,null)}static fromPhrase(t,e="",r=Fd,n=pd){r||(r=Fd);const s=Pd.fromPhrase(t,e,n);return Cd(Wd,Sd,"m",Rd).call(Wd,s.computeSeed(),s).derivePath(r)}static fromMnemonic(t,e=Fd){return e||(e=Fd),Cd(Wd,Sd,"m",Rd).call(Wd,t.computeSeed(),t).derivePath(e)}static fromExtendedKey(t){const e=le(Zt(t));82===e.length&&jd(e.slice(0,78))===t||gd.throwArgumentError("invalid extended key","extendedKey","[ REDACTED ]");const r=e[4],n=pe(e.slice(5,9)),s=parseInt(pe(e.slice(9,13)).substring(2),16),i=pe(e.slice(13,45)),o=e.slice(45,78);switch(pe(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":{const t=pe(o);return new Hd(Gd,Nc(t),t,n,i,null,s,r,null)}case"0x0488ade4":case"0x04358394 ":if(0!==o[0])break;return new Wd(Gd,new kc(o.slice(1)),n,i,null,s,r,null,null)}return gd.throwArgumentError("invalid extended key prefix","extendedKey","[ REDACTED ]")}static createRandom(t="",e=Fd,r=pd){e||(e=Fd);const n=Pd.fromEntropy(jn(16),t,r);return Cd(Wd,Sd,"m",Rd).call(Wd,n.computeSeed(),n).derivePath(e)}}Sd=Wd,Rd=function(t,e){const r=gd.getBytes(t,"seed");if(r.length<16||r.length>64)throw new Error("invalid seed");const n=le(Hr("sha512",Ud,r)),s=new kc(pe(n.slice(0,32)));return new Wd(Gd,s,"0x00000000",pe(n.slice(32)),"m",0,0,e,null)};class Hd extends Du{constructor(t,e,r,s,i,o,a,c,l){super(e,l),gd.assertPrivate(t,Gd,"HDNodeVoidWallet"),n(this,{publicKey:r});n(this,{publicKey:r,fingerprint:ye(Bn(os(r)),0,4),parentFingerprint:s,chainCode:i,path:o,index:a,depth:c})}connect(t){return new Hd(Gd,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,t)}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return jd(we(["0x0488B21E",Md(this.depth,1),this.parentFingerprint,Md(this.index,4),this.chainCode,this.publicKey]))}hasPath(){return null!=this.path}deriveChild(t){const e=gd.getNumber(t,"index");if(e>4294967295)throw new Error("invalid index - "+String(e));let r=this.path;r&&(r+="/"+(2147483647&e),e&Ld&&(r+="'"));const{IR:n,IL:s}=$d(e,this.chainCode,this.publicKey,null),i=kc._addPoints(s,this.publicKey,!0),o=Nc(i);return new Hd(Gd,o,i,this.fingerprint,pe(n),r,e,this.depth+1,this.provider)}derivePath(t){return zd(this,t)}}class Vd{constructor(t,e="",r="m/44'/60'/0'/0",n=pd){Bd.set(this,void 0),_d(this,Bd,Wd.fromPhrase(t,e,r,n),"f")}getSigner(t=0){return Cd(this,Bd,"f").deriveChild(t)}}function Kd(t){const e=gd.getNumber(t,"index");return(e<0||e>=Ld)&&gd.throwArgumentError("invalid account index","index",e),`m/44'/60'/${e}'/0/0`} -/*! MIT License. Copyright 2015-2022 Richard Moore . See LICENSE.txt. */Bd=new WeakMap;var Jd,qd,Xd,Yd=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Zd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Qd={16:10,24:12,32:14},tp=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],ep=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],rp=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],np=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],sp=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],ip=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],op=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],ap=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],cp=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],lp=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],up=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],hp=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],fp=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],dp=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],pp=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function gp(t){const e=[];for(let r=0;r>2,Zd(this,Xd,"f")[i][t%4]=s[t],Zd(this,qd,"f")[e-i][t%4]=s[t];let o,a=0,c=n;for(;c>16&255]<<24^ep[o>>8&255]<<16^ep[255&o]<<8^ep[o>>24&255]^tp[a]<<24,a+=1,8!=n)for(let t=1;t>8&255]<<8^ep[o>>16&255]<<16^ep[o>>24&255]<<24;for(let t=n/2+1;t>2,i=c%4,Zd(this,Xd,"f")[t][i]=s[l],Zd(this,qd,"f")[e-t][i]=s[l++],c++}for(let t=1;t>24&255]^fp[o>>16&255]^dp[o>>8&255]^pp[255&o]}get key(){return Zd(this,Jd,"f").slice()}encrypt(t){if(16!=t.length)throw new TypeError("invalid plaintext size (must be 16 bytes)");const e=Zd(this,Xd,"f").length-1,r=[0,0,0,0];let n=gp(t);for(let t=0;t<4;t++)n[t]^=Zd(this,Xd,"f")[0][t];for(let t=1;t>24&255]^sp[n[(e+1)%4]>>16&255]^ip[n[(e+2)%4]>>8&255]^op[255&n[(e+3)%4]]^Zd(this,Xd,"f")[t][e];n=r.slice()}const s=new Uint8Array(16);let i=0;for(let t=0;t<4;t++)i=Zd(this,Xd,"f")[e][t],s[4*t]=255&(ep[n[t]>>24&255]^i>>24),s[4*t+1]=255&(ep[n[(t+1)%4]>>16&255]^i>>16),s[4*t+2]=255&(ep[n[(t+2)%4]>>8&255]^i>>8),s[4*t+3]=255&(ep[255&n[(t+3)%4]]^i);return s}decrypt(t){if(16!=t.length)throw new TypeError("invalid ciphertext size (must be 16 bytes)");const e=Zd(this,qd,"f").length-1,r=[0,0,0,0];let n=gp(t);for(let t=0;t<4;t++)n[t]^=Zd(this,qd,"f")[0][t];for(let t=1;t>24&255]^cp[n[(e+3)%4]>>16&255]^lp[n[(e+2)%4]>>8&255]^up[255&n[(e+1)%4]]^Zd(this,qd,"f")[t][e];n=r.slice()}const s=new Uint8Array(16);let i=0;for(let t=0;t<4;t++)i=Zd(this,qd,"f")[e][t],s[4*t]=255&(rp[n[t]>>24&255]^i>>24),s[4*t+1]=255&(rp[n[(t+3)%4]>>16&255]^i>>16),s[4*t+2]=255&(rp[n[(t+2)%4]>>8&255]^i>>8),s[4*t+3]=255&(rp[255&n[(t+1)%4]]^i);return s}}Jd=new WeakMap,qd=new WeakMap,Xd=new WeakMap;class mp{constructor(t,e,r){if(r&&!(this instanceof r))throw new Error(`${t} must be instantiated with "new"`);Object.defineProperties(this,{aes:{enumerable:!0,value:new wp(e)},name:{enumerable:!0,value:t}})}}var yp,bp,vp=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Ep=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Ap extends mp{constructor(t,e){if(super("ECC",t,Ap),yp.set(this,void 0),bp.set(this,void 0),e){if(e.length%16)throw new TypeError("invalid iv size (must be 16 bytes)");vp(this,yp,new Uint8Array(e),"f")}else vp(this,yp,new Uint8Array(16),"f");vp(this,bp,this.iv,"f")}get iv(){return new Uint8Array(Ep(this,yp,"f"))}encrypt(t){if(t.length%16)throw new TypeError("invalid plaintext size (must be multiple of 16 bytes)");const e=new Uint8Array(t.length);for(let r=0;rNumber.MAX_SAFE_INTEGER)throw new TypeError("invalid counter initial integer value");for(let e=15;e>=0;--e)xp(this,Pp,"f")[e]=t%256,t=Math.floor(t/256)}setCounterBytes(t){if(16!==t.length)throw new TypeError("invalid counter initial Uint8Array value length");xp(this,Pp,"f").set(t)}increment(){for(let t=15;t>=0;t--){if(255!==xp(this,Pp,"f")[t]){xp(this,Pp,"f")[t]++;break}xp(this,Pp,"f")[t]=0}}encrypt(t){var e,r;const n=new Uint8Array(t);for(let t=0;t16)throw new TypeError("PKCS#7 padding byte out of range");const r=t.length-e;for(let n=0;n{setTimeout((()=>{e()}),t)}))}var Dp,Mp=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},jp=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Gp(t){try{if(!t||!se(t.privateKey,32))return null;const e=t.privateKey;return kc.computePublicKey(e)!==t.publicKey?null:new kc(e)}catch(t){console.log(t)}return null}function $p(t){return new Promise((e=>{setTimeout((()=>{e()}),t)}))}class zp extends Id{constructor(t,e){let r=null,n=null;if("string"==typeof t&&(r=new kc(t)),null==r){const e=function(t){try{if(!t||!t.signingKey)return null;const e=Gp(t.signingKey);return null==e||Nc(e.publicKey)!==t.address||t.mnemonic&&Wd.fromMnemonic(t.mnemonic).privateKey!==e.privateKey?null:t}catch(t){console.log(t)}return null}(t);e&&(r=e.signingKey,n=e.mnemonic||null)}if(null==r){const e=function(t){try{return null==t||"string"!=typeof t.phrase||"string"!=typeof t.password||null==t.wordlist?null:Wd.fromPhrase(t.phrase,t.password,null,t.wordlist)}catch(t){console.log(t)}return null}(t);e&&(r=e.signingKey,n=e.mnemonic||null)}null==r&&(r=Gp(t)),null==r&&gd.throwArgumentError("invalid key","key","[ REDACTED ]"),super(r,e),Dp.set(this,void 0),Mp(this,Dp,n,"f")}get mnemonic(){return jp(this,Dp,"f")}connect(t){return new zp(this,t)}async encrypt(t,e,r){throw new Error("TODO")}encryptSync(t,e){throw new Error("TODO")}static async fromEncryptedJson(t,e,r){let n=null;if(_p(t))n=await async function(t,e,r){const n=JSON.parse(t),s=Sp(e),i=Up(n);if("pbkdf2"===i.name){r&&(r(0),await Lp(0));const{salt:t,count:e,dkLen:o,algorithm:a}=i,c=Un(s,t,e,o,a);return r&&(r(1),await Lp(0)),Fp(n,c)}if("scrypt"===i.name){const{salt:t,N:e,r:o,p:a,dkLen:c}=i;return Fp(n,await Zn(s,t,e,o,a,c,r))}throw new Error("unreachable")}(t,e,r);else{if(!Bp(t))return gd.throwArgumentError("invalid JSON wallet","json","[ REDACTED ]");r&&(r(0),await $p(0)),n=Cp(t,e),r&&(r(1),await $p(0))}const s=new zp(n.privateKey);return s.address!==n.address&&gd.throwArgumentError("address/privateKey mismatch","json","[ REDACTED ]"),s}static fromEncryptedJsonSync(t,e){let r=null;if(_p(t))r=function(t,e){const r=JSON.parse(t),n=Sp(e),s=Up(r);if("pbkdf2"===s.name){const{salt:t,count:e,dkLen:i,algorithm:o}=s;return Fp(r,Un(n,t,e,i,o))}if("scrypt"===s.name){const{salt:t,N:e,r:i,p:o,dkLen:a}=s;return Fp(r,Qn(n,t,e,i,o,a))}throw new Error("unreachable")}(t,e);else{if(!Bp(t))return gd.throwArgumentError("invalid JSON wallet","json","[ REDACTED ]");r=Cp(t,e)}const n=new zp(r.privateKey);return n.address!==r.address&&gd.throwArgumentError("address/privateKey mismatch","json","[ REDACTED ]"),n}static createRandom(t,e,r){return new zp(Pd.fromEntropy(jn(16),e,r),t)}static fromMnemonic(t,e){return new zp(t,e)}static fromPhrase(t,e,r="",n){return new zp(Pd.fromPhrase(t,r,n),e)}}Dp=new WeakMap;const Wp="ethers@6.0.0-beta.5";var Hp=Object.freeze({__proto__:null,Interface:_o,getAddress:ws,getIcapAddress:ms,getCreateAddress:Os,getCreate2Address:Is,isAddressable:Ss,isAddress:Rs,resolveAddress:Bs,arrayify:le,decodeBase64:he,encodeBase64:fe,isHexString:se,isBytesLike:ie,concat:we,dataLength:me,dataSlice:ye,stripZerosLeft:be,hexlify:pe,quantity:ge,zeroPadBytes:Ae,zeroPadValue:Ee,BaseContract:Zf,Contract:Qf,ContractEventPayload:Rf,ContractTransactionReceipt:If,ContractTransactionResponse:Sf,EventLog:Of,computeHmac:Hr,keccak256:dn,ripemd160:Bn,sha256:os,sha512:as,pbkdf2:Un,scrypt:Zn,scryptSync:Qn,randomBytes:jn,lock:cs,messagePrefix:$i,id:Fi,hashMessage:zi,isValidName:Mi,namehash:ji,dnsEncode:Gi,solidityPacked:Ji,solidityPackedKeccak256:qi,solidityPackedSha256:Xi,TypedDataEncoder:yo,isError:u,isCallException:h,Logger:T,formatFixed:jt,parseFixed:Gt,fromTwos:xt,toTwos:Ot,mask:It,toArray:Tt,toBigInt:Et,toHex:kt,toNumber:At,decodeBase58:Zt,encodeBase58:Yt,formatEther:re,parseEther:ne,formatUnits:te,parseUnits:ee,FixedFormat:$t,FixedNumber:zt,defineProperties:n,resolveProperties:e,getStore:c,setStore:l,dummyProvider:ul,getDefaultProvider:Ef,showThrottleMessage:Gu,AbstractProvider:Eu,UnmanagedSubscriber:mu,AbstractSigner:Lu,VoidSigner:Du,WrappedSigner:Mu,EnsResolver:ga,Formatter:ml,NetworkPlugin:yl,GasCostPlugin:bl,EnsPlugin:vl,MaxPriorityFeePlugin:El,Network:Af,Block:nl,FeeData:rl,Log:sl,TransactionReceipt:il,TransactionResponse:ol,FallbackProvider:Xh,JsonRpcProvider:dh,JsonRpcSigner:hh,StaticJsonRpcProvider:ph,AlchemyProvider:vh,AnkrProvider:yh,CloudflareProvider:Eh,EtherscanProvider:Ph,InfuraProvider:xh,PocketProvider:Sh,IpcSocketProvider:kf,SocketProvider:wf,WebSocketProvider:vf,encodeRlp:As,decodeRlp:xs,Signature:Oa,SigningKey:kc,formatBytes32String:pi,parseBytes32String:gi,nameprep:Ni,_toEscapedUtf8String:ui,toUtf8Bytes:ci,toUtf8CodePoints:di,toUtf8String:fi,get UnicodeNormalizationForm(){return t.UnicodeNormalizationForm},Utf8ErrorFuncs:oi,get Utf8ErrorReason(){return t.Utf8ErrorReason},accessListify:Pc,computeAddress:Nc,recoverAddress:xc,Transaction:qc,defaultPath:Fd,getAccountPath:Kd,HDNodeWallet:Wd,HDNodeVoidWallet:Hd,HDNodeWalletManager:Vd,Mnemonic:Pd,Wallet:zp,fetchData:Xo,FetchRequest:Vo,FetchResponse:jo,wordlists:wd,Wordlist:id,WordlistOwl:dd,WordlistOwlA:vd,version:Wp});t.AbstractProvider=Eu,t.AbstractSigner=Lu,t.AlchemyProvider=vh,t.AnkrProvider=yh,t.BaseContract=Zf,t.Block=nl,t.CloudflareProvider=Eh,t.Contract=Qf,t.ContractEventPayload=Rf,t.ContractTransactionReceipt=If,t.ContractTransactionResponse=Sf,t.EnsPlugin=vl,t.EnsResolver=ga,t.EtherscanProvider=Ph,t.EventLog=Of,t.FallbackProvider=Xh,t.FeeData=rl,t.FetchRequest=Vo,t.FetchResponse=jo,t.FixedFormat=$t,t.FixedNumber=zt,t.Formatter=ml,t.GasCostPlugin=bl,t.HDNodeVoidWallet=Hd,t.HDNodeWallet=Wd,t.HDNodeWalletManager=Vd,t.InfuraProvider=xh,t.Interface=_o,t.IpcSocketProvider=kf,t.JsonRpcProvider=dh,t.JsonRpcSigner=hh,t.Log=sl,t.Logger=T,t.MaxPriorityFeePlugin=El,t.Mnemonic=Pd,t.Network=Af,t.NetworkPlugin=yl,t.PocketProvider=Sh,t.Signature=Oa,t.SigningKey=kc,t.SocketProvider=wf,t.StaticJsonRpcProvider=ph,t.Transaction=qc,t.TransactionReceipt=il,t.TransactionResponse=ol,t.TypedDataEncoder=yo,t.UnmanagedSubscriber=mu,t.Utf8ErrorFuncs=oi,t.VoidSigner=Du,t.Wallet=zp,t.WebSocketProvider=vf,t.Wordlist=id,t.WordlistOwl=dd,t.WordlistOwlA=vd,t.WrappedSigner=Mu,t._toEscapedUtf8String=ui,t.accessListify=Pc,t.arrayify=le,t.computeAddress=Nc,t.computeHmac=Hr,t.concat=we,t.dataLength=me,t.dataSlice=ye,t.decodeBase58=Zt,t.decodeBase64=he,t.decodeRlp=xs,t.defaultPath=Fd,t.defineProperties=n,t.dnsEncode=Gi,t.dummyProvider=ul,t.encodeBase58=Yt,t.encodeBase64=fe,t.encodeRlp=As,t.ethers=Hp,t.fetchData=Xo,t.formatBytes32String=pi,t.formatEther=re,t.formatFixed=jt,t.formatUnits=te,t.fromTwos=xt,t.getAccountPath=Kd,t.getAddress=ws,t.getCreate2Address=Is,t.getCreateAddress=Os,t.getDefaultProvider=Ef,t.getIcapAddress=ms,t.getStore=c,t.hashMessage=zi,t.hexlify=pe,t.id=Fi,t.isAddress=Rs,t.isAddressable=Ss,t.isBytesLike=ie,t.isCallException=h,t.isError=u,t.isHexString=se,t.isValidName=Mi,t.keccak256=dn,t.lock=cs,t.mask=It,t.messagePrefix=$i,t.namehash=ji,t.nameprep=Ni,t.parseBytes32String=gi,t.parseEther=ne,t.parseFixed=Gt,t.parseUnits=ee,t.pbkdf2=Un,t.quantity=ge,t.randomBytes=jn,t.recoverAddress=xc,t.resolveAddress=Bs,t.resolveProperties=e,t.ripemd160=Bn,t.scrypt=Zn,t.scryptSync=Qn,t.setStore=l,t.sha256=os,t.sha512=as,t.showThrottleMessage=Gu,t.solidityPacked=Ji,t.solidityPackedKeccak256=qi,t.solidityPackedSha256=Xi,t.stripZerosLeft=be,t.toArray=Tt,t.toBigInt=Et,t.toHex=kt,t.toNumber=At,t.toTwos=Ot,t.toUtf8Bytes=ci,t.toUtf8CodePoints=di,t.toUtf8String=fi,t.version=Wp,t.wordlists=wd,t.zeroPadBytes=Ae,t.zeroPadValue=Ee,Object.defineProperty(t,"__esModule",{value:!0})})); +const He=t=>new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4)),Ve=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),Ke=(t,e)=>t<<32-e|t>>>e;if(!(68===new Uint8Array(new Uint32Array([287454020]).buffer)[0]))throw new Error("Non little-endian hardware is not supported");Array.from({length:256},((t,e)=>e.toString(16).padStart(2,"0")));const Je=(()=>{const t="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);try{if(t){const{setImmediate:e}=t("timers");return()=>new Promise((t=>e(t)))}}catch(t){}return()=>new Promise((t=>setTimeout(t,0)))})();async function qe(t,e,r){let n=Date.now();for(let s=0;s=0&&tt().update(Xe(e)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e}class rr extends Qe{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,Ze(t);const r=Xe(e);if(this.iHash=t.create(),!(this.iHash instanceof Qe))throw new TypeError("Expected instance of class which extends utils.Hash");const n=this.blockLen=this.iHash.blockLen;this.outputLen=this.iHash.outputLen;const s=new Uint8Array(n);s.set(r.length>this.iHash.blockLen?t.create().update(r).digest():r);for(let t=0;tnew rr(t,e).update(r).digest();function sr(t,e,r,n){const{c:s,dkLen:i,DK:o,PRF:a,PRFSalt:c}=function(t,e,r,n){Ze(t);const s=tr({dkLen:32,asyncTick:10},n),{c:i,dkLen:o,asyncTick:a}=s;if(Ye(i),Ye(o),Ye(a),i<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const c=Xe(e),l=Xe(r),u=new Uint8Array(o),h=nr.create(t,c),f=h._cloneInto().update(l);return{c:i,dkLen:o,asyncTick:a,DK:u,PRF:h,PRFSalt:f}}(t,e,r,n);let l;const u=new Uint8Array(4),h=Ve(u),f=new Uint8Array(a.outputLen);for(let t=1,e=0;enew rr(t,e);class ir extends Qe{constructor(t,e,r,n){super(),this.blockLen=t,this.outputLen=e,this.padOffset=r,this.isLE=n,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=Ve(this.buffer)}update(t){if(this.destroyed)throw new Error("instance is destroyed");const{view:e,buffer:r,blockLen:n,finished:s}=this;if(s)throw new Error("digest() was already called");const i=(t=Xe(t)).length;for(let s=0;sn-i&&(this.process(r,0),i=0);for(let t=i;t>s&i),a=Number(r&i),c=n?4:0,l=n?0:4;t.setUint32(e+c,o,n),t.setUint32(e+l,a,n)}(r,n-8,BigInt(8*this.length),s),this.process(r,0);const o=Ve(t);this.get().forEach(((t,e)=>o.setUint32(4*e,t,s)))}digest(){const{buffer:t,outputLen:e}=this;this.digestInto(t);const r=t.slice(0,e);return this.destroy(),r}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:e,buffer:r,length:n,finished:s,destroyed:i,pos:o}=this;return t.length=n,t.pos=o,t.finished=s,t.destroyed=i,n%e&&t.buffer.set(r),t}}const or=(t,e,r)=>t&e^~t&r,ar=(t,e,r)=>t&e^t&r^e&r,cr=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),lr=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ur=new Uint32Array(64);class hr extends ir{constructor(){super(64,32,8,!1),this.A=0|lr[0],this.B=0|lr[1],this.C=0|lr[2],this.D=0|lr[3],this.E=0|lr[4],this.F=0|lr[5],this.G=0|lr[6],this.H=0|lr[7]}get(){const{A:t,B:e,C:r,D:n,E:s,F:i,G:o,H:a}=this;return[t,e,r,n,s,i,o,a]}set(t,e,r,n,s,i,o,a){this.A=0|t,this.B=0|e,this.C=0|r,this.D=0|n,this.E=0|s,this.F=0|i,this.G=0|o,this.H=0|a}process(t,e){for(let r=0;r<16;r++,e+=4)ur[r]=t.getUint32(e,!1);for(let t=16;t<64;t++){const e=ur[t-15],r=ur[t-2],n=Ke(e,7)^Ke(e,18)^e>>>3,s=Ke(r,17)^Ke(r,19)^r>>>10;ur[t]=s+ur[t-7]+n+ur[t-16]|0}let{A:r,B:n,C:s,D:i,E:o,F:a,G:c,H:l}=this;for(let t=0;t<64;t++){const e=l+(Ke(o,6)^Ke(o,11)^Ke(o,25))+or(o,a,c)+cr[t]+ur[t]|0,u=(Ke(r,2)^Ke(r,13)^Ke(r,22))+ar(r,n,s)|0;l=c,c=a,a=o,o=i+e|0,i=s,s=n,n=r,r=e+u|0}r=r+this.A|0,n=n+this.B|0,s=s+this.C|0,i=i+this.D|0,o=o+this.E|0,a=a+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(r,n,s,i,o,a,c,l)}roundClean(){ur.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const fr=er((()=>new hr)),dr=BigInt(2**32-1),pr=BigInt(32);function gr(t,e=!1){return e?{h:Number(t&dr),l:Number(t>>pr&dr)}:{h:0|Number(t>>pr&dr),l:0|Number(t&dr)}}function wr(t,e=!1){let r=new Uint32Array(t.length),n=new Uint32Array(t.length);for(let s=0;st>>>r,yr=(t,e,r)=>t<<32-r|e>>>r,br=(t,e,r)=>t>>>r|e<<32-r,vr=(t,e,r)=>t<<32-r|e>>>r,Er=(t,e,r)=>t<<64-r|e>>>r-32,Ar=(t,e,r)=>t>>>r-32|e<<64-r;function kr(t,e,r,n){const s=(e>>>0)+(n>>>0);return{h:t+r+(s/2**32|0)|0,l:0|s}}const Tr=(t,e,r)=>(t>>>0)+(e>>>0)+(r>>>0),Pr=(t,e,r,n)=>e+r+n+(t/2**32|0)|0,Nr=(t,e,r,n)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0),xr=(t,e,r,n,s)=>e+r+n+s+(t/2**32|0)|0,Or=(t,e,r,n,s)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)+(s>>>0),Ir=(t,e,r,n,s,i)=>e+r+n+s+i+(t/2**32|0)|0,[Sr,Rr]=wr(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map((t=>BigInt(t)))),Br=new Uint32Array(80),Cr=new Uint32Array(80);class _r extends ir{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:t,Al:e,Bh:r,Bl:n,Ch:s,Cl:i,Dh:o,Dl:a,Eh:c,El:l,Fh:u,Fl:h,Gh:f,Gl:d,Hh:p,Hl:g}=this;return[t,e,r,n,s,i,o,a,c,l,u,h,f,d,p,g]}set(t,e,r,n,s,i,o,a,c,l,u,h,f,d,p,g){this.Ah=0|t,this.Al=0|e,this.Bh=0|r,this.Bl=0|n,this.Ch=0|s,this.Cl=0|i,this.Dh=0|o,this.Dl=0|a,this.Eh=0|c,this.El=0|l,this.Fh=0|u,this.Fl=0|h,this.Gh=0|f,this.Gl=0|d,this.Hh=0|p,this.Hl=0|g}process(t,e){for(let r=0;r<16;r++,e+=4)Br[r]=t.getUint32(e),Cr[r]=t.getUint32(e+=4);for(let t=16;t<80;t++){const e=0|Br[t-15],r=0|Cr[t-15],n=br(e,r,1)^br(e,r,8)^mr(e,0,7),s=vr(e,r,1)^vr(e,r,8)^yr(e,r,7),i=0|Br[t-2],o=0|Cr[t-2],a=br(i,o,19)^Er(i,o,61)^mr(i,0,6),c=vr(i,o,19)^Ar(i,o,61)^yr(i,o,6),l=Nr(s,c,Cr[t-7],Cr[t-16]),u=xr(l,n,a,Br[t-7],Br[t-16]);Br[t]=0|u,Cr[t]=0|l}let{Ah:r,Al:n,Bh:s,Bl:i,Ch:o,Cl:a,Dh:c,Dl:l,Eh:u,El:h,Fh:f,Fl:d,Gh:p,Gl:g,Hh:w,Hl:m}=this;for(let t=0;t<80;t++){const e=br(u,h,14)^br(u,h,18)^Er(u,h,41),y=vr(u,h,14)^vr(u,h,18)^Ar(u,h,41),b=u&f^~u&p,v=Or(m,y,h&d^~h&g,Rr[t],Cr[t]),E=Ir(v,w,e,b,Sr[t],Br[t]),A=0|v,k=br(r,n,28)^Er(r,n,34)^Er(r,n,39),T=vr(r,n,28)^Ar(r,n,34)^Ar(r,n,39),P=r&s^r&o^s&o,N=n&i^n&a^i&a;w=0|p,m=0|g,p=0|f,g=0|d,f=0|u,d=0|h,({h:u,l:h}=kr(0|c,0|l,0|E,0|A)),c=0|o,l=0|a,o=0|s,a=0|i,s=0|r,i=0|n;const x=Tr(A,T,N);r=Pr(x,E,k,P),n=0|x}({h:r,l:n}=kr(0|this.Ah,0|this.Al,0|r,0|n)),({h:s,l:i}=kr(0|this.Bh,0|this.Bl,0|s,0|i)),({h:o,l:a}=kr(0|this.Ch,0|this.Cl,0|o,0|a)),({h:c,l:l}=kr(0|this.Dh,0|this.Dl,0|c,0|l)),({h:u,l:h}=kr(0|this.Eh,0|this.El,0|u,0|h)),({h:f,l:d}=kr(0|this.Fh,0|this.Fl,0|f,0|d)),({h:p,l:g}=kr(0|this.Gh,0|this.Gl,0|p,0|g)),({h:w,l:m}=kr(0|this.Hh,0|this.Hl,0|w,0|m)),this.set(r,n,s,i,o,a,c,l,u,h,f,d,p,g,w,m)}roundClean(){Br.fill(0),Cr.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class Fr extends _r{constructor(){super(),this.Ah=573645204,this.Al=-64227540,this.Bh=-1621794909,this.Bl=-934517566,this.Ch=596883563,this.Cl=1867755857,this.Dh=-1774684391,this.Dl=1497426621,this.Eh=-1775747358,this.El=-1467023389,this.Fh=-1101128155,this.Fl=1401305490,this.Gh=721525244,this.Gl=746961066,this.Hh=246885852,this.Hl=-2117784414,this.outputLen=32}}class Ur extends _r{constructor(){super(),this.Ah=-876896931,this.Al=-1056596264,this.Bh=1654270250,this.Bl=914150663,this.Ch=-1856437926,this.Cl=812702999,this.Dh=355462360,this.Dl=-150054599,this.Eh=1731405415,this.El=-4191439,this.Fh=-1900787065,this.Fl=1750603025,this.Gh=-619958771,this.Gl=1694076839,this.Hh=1203062813,this.Hl=-1090891868,this.outputLen=48}}const Lr=er((()=>new _r));er((()=>new Fr)),er((()=>new Ur));const Dr=new T("@ethersproject/crypto@6.0.0-beta.2");const Mr=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}();let jr=Mr.crypto||Mr.msCrypto;function Gr(t){switch(t){case"sha256":return fr.create();case"sha512":return Lr.create()}return Dr.throwArgumentError("invalid hashing algorithm name","algorithm",t)}let $r=!1;const zr=function(t,e,r){return"0x"+function(t,e){const r={sha256:fr,sha512:Lr}[t];return null==r?Dr.throwArgumentError("invalid hmac algorithm","algorithm",t):nr.create(r,e)}(t,e).update(r).digest("hex")};let Wr=zr;function Hr(t,e,r){const n=Dr.getBytes(e,"key"),s=Dr.getBytes(r,"data");return pe(Wr(t,n,s))}Hr._=zr,Hr.lock=function(){$r=!0},Hr.register=function(t){if($r)throw new Error("computeHmac is locked");Wr=t},Object.freeze(Hr);const[Vr,Kr,Jr]=[[],[],[]],qr=BigInt(0),Xr=BigInt(1),Yr=BigInt(2),Zr=BigInt(7),Qr=BigInt(256),tn=BigInt(113);for(let t=0,e=Xr,r=1,n=0;t<24;t++){[r,n]=[n,(2*r+3*n)%5],Vr.push(2*(5*n+r)),Kr.push((t+1)*(t+2)/2%64);let s=qr;for(let t=0;t<7;t++)e=(e<>Zr)*tn)%Qr,e&Yr&&(s^=Xr<<(Xr<r>32?((t,e,r)=>e<>>64-r)(t,e,r):((t,e,r)=>t<>>32-r)(t,e,r),sn=(t,e,r)=>r>32?((t,e,r)=>t<>>64-r)(t,e,r):((t,e,r)=>e<>>32-r)(t,e,r);class on extends Qe{constructor(t,e,r,n=!1,s=24){if(super(),this.blockLen=t,this.suffix=e,this.outputLen=r,this.enableXOF=n,this.rounds=s,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,Ye(r),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=He(this.state)}keccak(){!function(t,e=24){const r=new Uint32Array(10);for(let n=24-e;n<24;n++){for(let e=0;e<10;e++)r[e]=t[e]^t[e+10]^t[e+20]^t[e+30]^t[e+40];for(let e=0;e<10;e+=2){const n=(e+8)%10,s=(e+2)%10,i=r[s],o=r[s+1],a=nn(i,o,1)^r[n],c=sn(i,o,1)^r[n+1];for(let r=0;r<50;r+=10)t[e+r]^=a,t[e+r+1]^=c}let e=t[2],s=t[3];for(let r=0;r<24;r++){const n=Kr[r],i=nn(e,s,n),o=sn(e,s,n),a=Vr[r];e=t[a],s=t[a+1],t[a]=i,t[a+1]=o}for(let e=0;e<50;e+=10){for(let n=0;n<10;n++)r[n]=t[e+n];for(let n=0;n<10;n++)t[e+n]^=~r[(n+2)%10]&r[(n+4)%10]}t[0]^=en[n],t[1]^=rn[n]}r.fill(0)}(this.state32,this.rounds),this.posOut=0,this.pos=0}update(t){if(this.destroyed)throw new Error("instance is destroyed");if(this.finished)throw new Error("digest() was already called");const{blockLen:e,state:r}=this,n=(t=Xe(t)).length;for(let s=0;s=this.blockLen&&this.keccak();const n=Math.min(this.blockLen-this.posOut,r-e);t.set(this.state.subarray(this.posOut,this.posOut+n),e),this.posOut+=n,e+=n}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return Ye(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(t.lengther((()=>new on(e,t,r)));an(6,144,28),an(6,136,32),an(6,104,48),an(6,72,64),an(1,144,28);const cn=an(1,136,32);an(1,104,48),an(1,72,64);const ln=(t,e,r)=>function(t){const e=(e,r)=>t(r).update(Xe(e)).digest(),r=t({});return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=e=>t(e),e}(((n={})=>new on(e,t,void 0!==n.dkLen?n.dkLen:r,!0)));ln(31,168,16),ln(31,136,32);let un=!1;const hn=function(t){return cn(t)};let fn=hn;function dn(t){const e=Dr.getBytes(t,"data");return pe(fn(e))}dn._=hn,dn.lock=function(){un=!0},dn.register=function(t){if(un)throw new TypeError("keccak256 is locked");fn=t},Object.freeze(dn);const pn=new Uint8Array([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),gn=Uint8Array.from({length:16},((t,e)=>e)),wn=gn.map((t=>(9*t+5)%16));let mn=[gn],yn=[wn];for(let t=0;t<4;t++)for(let e of[mn,yn])e.push(e[t].map((t=>pn[t])));const bn=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map((t=>new Uint8Array(t))),vn=mn.map(((t,e)=>t.map((t=>bn[e][t])))),En=yn.map(((t,e)=>t.map((t=>bn[e][t])))),An=new Uint32Array([0,1518500249,1859775393,2400959708,2840853838]),kn=new Uint32Array([1352829926,1548603684,1836072691,2053994217,0]),Tn=(t,e)=>t<>>32-e;function Pn(t,e,r,n){return 0===t?e^r^n:1===t?e&r|~e&n:2===t?(e|~r)^n:3===t?e&n|r&~n:e^(r|~n)}const Nn=new Uint32Array(16);class xn extends ir{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){const{h0:t,h1:e,h2:r,h3:n,h4:s}=this;return[t,e,r,n,s]}set(t,e,r,n,s){this.h0=0|t,this.h1=0|e,this.h2=0|r,this.h3=0|n,this.h4=0|s}process(t,e){for(let r=0;r<16;r++,e+=4)Nn[r]=t.getUint32(e,!0);let r=0|this.h0,n=r,s=0|this.h1,i=s,o=0|this.h2,a=o,c=0|this.h3,l=c,u=0|this.h4,h=u;for(let t=0;t<5;t++){const e=4-t,f=An[t],d=kn[t],p=mn[t],g=yn[t],w=vn[t],m=En[t];for(let e=0;e<16;e++){const n=Tn(r+Pn(t,s,o,c)+Nn[p[e]]+f,w[e])+u|0;r=u,u=c,c=0|Tn(o,10),o=s,s=n}for(let t=0;t<16;t++){const r=Tn(n+Pn(e,i,a,l)+Nn[g[t]]+d,m[t])+h|0;n=h,h=l,l=0|Tn(a,10),a=i,i=r}}this.set(this.h1+o+l|0,this.h2+c+h|0,this.h3+u+n|0,this.h4+r+i|0,this.h0+s+a|0)}roundClean(){Nn.fill(0)}destroy(){this.destroyed=!0,this.buffer.fill(0),this.set(0,0,0,0,0)}}const On=er((()=>new xn));let In=!1;const Sn=function(t){return On(t)};let Rn=Sn;function Bn(t){const e=Dr.getBytes(t,"data");return pe(Rn(e))}Bn._=Sn,Bn.lock=function(){In=!0},Bn.register=function(t){if(In)throw new TypeError("ripemd160 is locked");Rn=t},Object.freeze(Bn);let Cn=!1;const _n=function(t,e,r,n,s){return function(t,e,r,n,s){const i={sha256:fr,sha512:Lr}[s];return null==i?Dr.throwArgumentError("invalid pbkdf2 algorithm","algorithm",s):sr(i,t,e,{c:r,dkLen:n})}(t,e,r,n,s)};let Fn=_n;function Un(t,e,r,n,s){const i=Dr.getBytes(t,"password"),o=Dr.getBytes(e,"salt");return pe(Fn(i,o,r,n,s))}Un._=_n,Un.lock=function(){Cn=!0},Un.register=function(t){if(Cn)throw new Error("pbkdf2 is locked");Fn=t},Object.freeze(Un);let Ln=!1;const Dn=function(t){return new Uint8Array(function(t){if(null==jr)return Dr.throwError("platform does not support secure random numbers","UNSUPPORTED_OPERATION",{operation:"randomBytes"});(t<=0||t>1024||t%1||t!=t)&&Dr.throwArgumentError("invalid length","length",t);const e=new Uint8Array(t);return jr.getRandomValues(e),e}(t))};let Mn=Dn;function jn(t){return Mn(t)}jn._=Dn,jn.lock=function(){Ln=!0},jn.register=function(t){if(Ln)throw new Error("random is locked");Mn=t},Object.freeze(jn);const Gn=(t,e)=>t<>>32-e;function $n(t,e,r,n,s,i){let o=t[e++]^r[n++],a=t[e++]^r[n++],c=t[e++]^r[n++],l=t[e++]^r[n++],u=t[e++]^r[n++],h=t[e++]^r[n++],f=t[e++]^r[n++],d=t[e++]^r[n++],p=t[e++]^r[n++],g=t[e++]^r[n++],w=t[e++]^r[n++],m=t[e++]^r[n++],y=t[e++]^r[n++],b=t[e++]^r[n++],v=t[e++]^r[n++],E=t[e++]^r[n++],A=o,k=a,T=c,P=l,N=u,x=h,O=f,I=d,S=p,R=g,B=w,C=m,_=y,F=b,U=v,L=E;for(let t=0;t<8;t+=2)N^=Gn(A+_|0,7),S^=Gn(N+A|0,9),_^=Gn(S+N|0,13),A^=Gn(_+S|0,18),R^=Gn(x+k|0,7),F^=Gn(R+x|0,9),k^=Gn(F+R|0,13),x^=Gn(k+F|0,18),U^=Gn(B+O|0,7),T^=Gn(U+B|0,9),O^=Gn(T+U|0,13),B^=Gn(O+T|0,18),P^=Gn(L+C|0,7),I^=Gn(P+L|0,9),C^=Gn(I+P|0,13),L^=Gn(C+I|0,18),k^=Gn(A+P|0,7),T^=Gn(k+A|0,9),P^=Gn(T+k|0,13),A^=Gn(P+T|0,18),O^=Gn(x+N|0,7),I^=Gn(O+x|0,9),N^=Gn(I+O|0,13),x^=Gn(N+I|0,18),C^=Gn(B+R|0,7),S^=Gn(C+B|0,9),R^=Gn(S+C|0,13),B^=Gn(R+S|0,18),_^=Gn(L+U|0,7),F^=Gn(_+L|0,9),U^=Gn(F+_|0,13),L^=Gn(U+F|0,18);s[i++]=o+A|0,s[i++]=a+k|0,s[i++]=c+T|0,s[i++]=l+P|0,s[i++]=u+N|0,s[i++]=h+x|0,s[i++]=f+O|0,s[i++]=d+I|0,s[i++]=p+S|0,s[i++]=g+R|0,s[i++]=w+B|0,s[i++]=m+C|0,s[i++]=y+_|0,s[i++]=b+F|0,s[i++]=v+U|0,s[i++]=E+L|0}function zn(t,e,r,n,s){let i=n+0,o=n+16*s;for(let n=0;n<16;n++)r[o+n]=t[e+16*(2*s-1)+n];for(let n=0;n0&&(o+=16),$n(r,i,t,e+=16,r,o)}function Wn(t,e,r){const n=tr({dkLen:32,asyncTick:10,maxmem:1073742848},r),{N:s,r:i,p:o,dkLen:a,asyncTick:c,maxmem:l,onProgress:u}=n;if(Ye(s),Ye(i),Ye(o),Ye(a),Ye(c),Ye(l),void 0!==u&&"function"!=typeof u)throw new Error("progressCb should be function");const h=128*i,f=h/4;if(s<=1||0!=(s&s-1)||s>=2**(h/8)||s>2**32)throw new Error("Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32");if(o<0||o>137438953440/h)throw new Error("Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)");if(a<0||a>137438953440)throw new Error("Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32");const d=h*(s+o);if(d>l)throw new Error(`Scrypt: parameters too large, ${d} (128 * r * (N + p)) > ${l} (maxmem)`);const p=sr(fr,t,e,{c:1,dkLen:h*o}),g=He(p),w=He(new Uint8Array(h*s)),m=He(new Uint8Array(h));let y=()=>{};if(u){const t=2*s*o,e=Math.max(Math.floor(t/1e4),1);let r=0;y=()=>{r++,!u||r%e&&r!==t||u(r/t)}}return{N:s,r:i,p:o,dkLen:a,blockSize32:f,V:w,B32:g,B:p,tmp:m,blockMixCb:y,asyncTick:c}}function Hn(t,e,r,n,s){const i=sr(fr,t,r,{c:1,dkLen:e});return r.fill(0),n.fill(0),s.fill(0),i}let Vn=!1,Kn=!1;const Jn=async function(t,e,r,n,s,i,o){return await async function(t,e,r){const{N:n,r:s,p:i,dkLen:o,blockSize32:a,V:c,B32:l,B:u,tmp:h,blockMixCb:f,asyncTick:d}=Wn(t,e,r);for(let t=0;t{zn(c,r,c,r+=a,s),f()})),zn(c,(n-1)*a,l,e,s),f(),await qe(n,d,(t=>{const r=l[e+a-16]%n;for(let t=0;t>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&n[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const ds={};for(let t=0;t<10;t++)ds[String(t)]=String(t);for(let t=0;t<26;t++)ds[String.fromCharCode(65+t)]=String(10+t);function ps(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map((t=>ds[t])).join("");for(;e.length>=15;){let t=e.substring(0,15);e=parseInt(t,10)%97+e.substring(t.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}const gs=function(){const t={};for(let e=0;e<36;e++){t["0123456789abcdefghijklmnopqrstuvwxyz"[e]]=BigInt(e)}return t}();function ws(t){if("string"!=typeof t&&ls.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/)){"0x"!==t.substring(0,2)&&(t="0x"+t);const e=fs(t);return t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&ls.throwArgumentError("bad address checksum","address",t),e}if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){t.substring(2,4)!==ps(t)&&ls.throwArgumentError("bad icap checksum","address",t);let e=function(t){t=t.toLowerCase();let e=us;for(let r=0;r>=8;return e}function vs(t){if(Array.isArray(t)){let e=[];if(t.forEach((function(t){e=e.concat(vs(t))})),e.length<=55)return e.unshift(192+e.length),e;const r=bs(e.length);return r.unshift(247+r.length),r.concat(e)}const e=Array.prototype.slice.call(ys.getBytes(t,"object"));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const r=bs(e.length);return r.unshift(183+r.length),r.concat(e)}const Es="0123456789abcdef";function As(t){let e="0x";for(const r of vs(t))e+=Es[r>>4],e+=Es[15&r];return e}function ks(t){let e=t.toString(16);for(;e.length<2;)e="0"+e;return"0x"+e}function Ts(t,e,r){let n=0;for(let s=0;se+1+n&&ys.throwError("child data too short","BUFFER_OVERRUN",{buffer:t,length:n,offset:e})}return{consumed:1+n,result:s}}function Ns(t,e){0===t.length&&ys.throwError("data too short","BUFFER_OVERRUN",{buffer:t,length:0,offset:1});const r=e=>{e>t.length&&ys.throwError("data short segment too short","BUFFER_OVERRUN",{buffer:t,length:t.length,offset:e})};if(t[e]>=248){const n=t[e]-247;r(e+1+n);const s=Ts(t,e+1,n);return r(e+1+n+s),Ps(t,e,e+1+n,n+s)}if(t[e]>=192){const n=t[e]-192;return r(e+1+n),Ps(t,e,e+1,n)}if(t[e]>=184){const n=t[e]-183;r(e+1+n);const s=Ts(t,e+1,n);r(e+1+n+s);return{consumed:1+n+s,result:pe(t.slice(e+1+n,e+1+n+s))}}if(t[e]>=128){const n=t[e]-128;r(e+1+n);return{consumed:1+n,result:pe(t.slice(e+1,e+1+n))}}return{consumed:1,result:ks(t[e])}}function xs(t){const e=ys.getBytes(t,"data"),r=Ns(e,0);return r.consumed!==e.length&&ys.throwArgumentError("unexpected junk after rlp payload","data",t),r.result}function Os(t){const e=ws(t.from);let r=ls.getBigInt(t.nonce,"tx.nonce").toString(16);return r="0"===r?"0x":r.length%2?"0x0"+r:"0x"+r,ws(ye(dn(As([e,r])),12))}function Is(t,e,r){const n=ws(t),s=ls.getBytes(e,"salt"),i=ls.getBytes(r,"initCodeHash");return 32!==s.length&&ls.throwArgumentError("salt must be 32 bytes","salt",e),32!==i.length&&ls.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),ws(ye(dn(we(["0xff",n,s,i])),12))}function Ss(t){return t&&"function"==typeof t.getAddress}function Rs(t){try{return ws(t),!0}catch(t){}return!1}async function Bs(t,e){if("string"==typeof t){if(t.match(/^0x[0-9a-f]{40}$/i))return ws(t);if(null==e)return ls.throwError("ENS resolution requires a provider","UNSUPPORTED_OPERATION",{operation:"resolveName"});const r=await e.resolveName(t);return null==r||"0x0000000000000000000000000000000000000000"===r?ls.throwError("unconfigured name","UNCONFIGURED_NAME",{value:t}):ws(r)}if(Ss(t)){const e=await t.getAddress();return null==e&&ls.throwArgumentError("addressable resolved to null","target",t),ws(e)}return ls.throwArgumentError("unsupported addressable value","target",t)}var Cs,_s=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Fs=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Us={};function Ls(t,e){let r=!1;return e<0&&(r=!0,e*=-1),new js(Us,`${r?"":"u"}int${e}`,t,{signed:r,width:e})}function Ds(t,e){return new js(Us,`bytes${e||""}`,t,{size:e})}const Ms=Symbol.for("_ethers_typed");class js{constructor(t,e,r,s=null){if(Cs.set(this,void 0),t!==Us)throw new Error("private constructor");n(this,{_typedSymbol:Ms,type:e,value:r}),_s(this,Cs,s,"f"),this.format()}format(){if("array"===this.type)throw new Error("");if("dynamicArray"===this.type)throw new Error("");return"tuple"===this.type?`tuple(${this.value.map((t=>t.format())).join(",")})`:this.type}defaultValue(){return 0}minValue(){return 0}maxValue(){return 0}isBigInt(){return!!this.type.match(/^u?int[0-9]+$/)}isData(){return"bytes"===this.type.substring(0,5)}isString(){return"string"===this.type}get tupleName(){if("tuple"!==this.type)throw TypeError("not a tuple");return Fs(this,Cs,"f")}get arrayLength(){if("array"!==this.type)throw TypeError("not an array");return!0===Fs(this,Cs,"f")?-1:!1===Fs(this,Cs,"f")?this.value.length:null}static from(t,e){return new js(Us,t,e)}static uint8(t){return Ls(t,8)}static uint16(t){return Ls(t,16)}static uint24(t){return Ls(t,24)}static uint32(t){return Ls(t,32)}static uint40(t){return Ls(t,40)}static uint48(t){return Ls(t,46)}static uint56(t){return Ls(t,56)}static uint64(t){return Ls(t,64)}static uint72(t){return Ls(t,72)}static uint80(t){return Ls(t,80)}static uint88(t){return Ls(t,88)}static uint96(t){return Ls(t,96)}static uint104(t){return Ls(t,104)}static uint112(t){return Ls(t,112)}static uint120(t){return Ls(t,120)}static uint128(t){return Ls(t,128)}static uint136(t){return Ls(t,136)}static uint144(t){return Ls(t,144)}static uint152(t){return Ls(t,152)}static uint160(t){return Ls(t,160)}static uint168(t){return Ls(t,168)}static uint176(t){return Ls(t,176)}static uint184(t){return Ls(t,184)}static uint192(t){return Ls(t,192)}static uint200(t){return Ls(t,200)}static uint208(t){return Ls(t,208)}static uint216(t){return Ls(t,216)}static uint224(t){return Ls(t,224)}static uint232(t){return Ls(t,232)}static uint240(t){return Ls(t,240)}static uint248(t){return Ls(t,248)}static uint256(t){return Ls(t,256)}static uint(t){return Ls(t,256)}static int8(t){return Ls(t,-8)}static int16(t){return Ls(t,-16)}static int24(t){return Ls(t,-24)}static int32(t){return Ls(t,-32)}static int40(t){return Ls(t,-40)}static int48(t){return Ls(t,-46)}static int56(t){return Ls(t,-56)}static int64(t){return Ls(t,-64)}static int72(t){return Ls(t,-72)}static int80(t){return Ls(t,-80)}static int88(t){return Ls(t,-88)}static int96(t){return Ls(t,-96)}static int104(t){return Ls(t,-104)}static int112(t){return Ls(t,-112)}static int120(t){return Ls(t,-120)}static int128(t){return Ls(t,-128)}static int136(t){return Ls(t,-136)}static int144(t){return Ls(t,-144)}static int152(t){return Ls(t,-152)}static int160(t){return Ls(t,-160)}static int168(t){return Ls(t,-168)}static int176(t){return Ls(t,-176)}static int184(t){return Ls(t,-184)}static int192(t){return Ls(t,-192)}static int200(t){return Ls(t,-200)}static int208(t){return Ls(t,-208)}static int216(t){return Ls(t,-216)}static int224(t){return Ls(t,-224)}static int232(t){return Ls(t,-232)}static int240(t){return Ls(t,-240)}static int248(t){return Ls(t,-248)}static int256(t){return Ls(t,-256)}static int(t){return Ls(t,-256)}static bytes(t){return Ds(t)}static bytes1(t){return Ds(t,1)}static bytes2(t){return Ds(t,2)}static bytes3(t){return Ds(t,3)}static bytes4(t){return Ds(t,4)}static bytes5(t){return Ds(t,5)}static bytes6(t){return Ds(t,6)}static bytes7(t){return Ds(t,7)}static bytes8(t){return Ds(t,8)}static bytes9(t){return Ds(t,9)}static bytes10(t){return Ds(t,10)}static bytes11(t){return Ds(t,11)}static bytes12(t){return Ds(t,12)}static bytes13(t){return Ds(t,13)}static bytes14(t){return Ds(t,14)}static bytes15(t){return Ds(t,15)}static bytes16(t){return Ds(t,16)}static bytes17(t){return Ds(t,17)}static bytes18(t){return Ds(t,18)}static bytes19(t){return Ds(t,19)}static bytes20(t){return Ds(t,20)}static bytes21(t){return Ds(t,21)}static bytes22(t){return Ds(t,22)}static bytes23(t){return Ds(t,23)}static bytes24(t){return Ds(t,24)}static bytes25(t){return Ds(t,25)}static bytes26(t){return Ds(t,26)}static bytes27(t){return Ds(t,27)}static bytes28(t){return Ds(t,28)}static bytes29(t){return Ds(t,29)}static bytes30(t){return Ds(t,30)}static bytes31(t){return Ds(t,31)}static bytes32(t){return Ds(t,32)}static address(t){return new js(Us,"address",t)}static bool(t){return new js(Us,"bool",!!t)}static string(t){return new js(Us,"string",t)}static array(t,e){throw new Error("not implemented yet")}static tuple(t,e){throw new Error("not implemented yet")}static overrides(t){return new js(Us,"overrides",Object.assign({},t))}static isTyped(t){return t&&t._typedSymbol===Ms}static dereference(t,e){if(js.isTyped(t)){if(t.type!==e)throw new Error(`invalid type: expecetd ${e}, got ${t.type}`);return t.value}return t}}Cs=new WeakMap;class Gs extends $e{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){let r=js.dereference(e,"string");try{r=ws(r)}catch(t){return this._throwError(t.message,e)}return t.writeValue(r)}decode(t){return ws(kt(t.readValue(),20))}}class $s extends $e{constructor(t){super(t.name,t.type,"_",t.dynamic),this.coder=t}defaultValue(){return this.coder.defaultValue()}encode(t,e){return this.coder.encode(t,e)}decode(t){return this.coder.decode(t)}}function zs(t,e,r){let n=[];if(Array.isArray(r))n=r;else if(r&&"object"==typeof r){let t={};n=e.map((e=>{const n=e.localName;return n||P.throwError("cannot encode object for signature with missing names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:r}),t[n]&&P.throwError("cannot encode object for signature with duplicate names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:r}),t[n]=!0,r[n]}))}else P.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&P.throwArgumentError("types/value length mismatch","tuple",r);let s=new ze,i=new ze,o=[];e.forEach(((t,e)=>{let r=n[e];if(t.dynamic){let e=i.length;t.encode(i,r);let n=s.writeUpdatableValue();o.push((t=>{n(t+e)}))}else t.encode(s,r)})),o.forEach((t=>{t(s.length)}));let a=t.appendWriter(s);return a+=t.appendWriter(i),a}function Ws(t,e){let r=[],n=[],s=t.subReader(0);return e.forEach((e=>{let i=null;if(e.dynamic){let r=t.readIndex(),n=s.subReader(r);try{i=e.decode(n)}catch(t){if(u(t,"BUFFER_OVERRUN"))throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}}else try{i=e.decode(t)}catch(t){if(u(t,"BUFFER_OVERRUN"))throw t;i=t,i.baseType=e.name,i.name=e.localName,i.type=e.type}if(null==i)throw new Error("investigate");r.push(i),n.push(e.localName||null)})),je.fromItems(r,n)}class Hs extends $e{constructor(t,e,r){super("array",t.type+"["+(e>=0?e:"")+"]",r,-1===e||t.dynamic),n(this,{coder:t,length:e})}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let r=0;rt.dataLength&&P.throwError("insufficient data length","BUFFER_OVERRUN",{buffer:t.bytes,offset:e*Ue,length:t.dataLength}));let r=[];for(let t=0;tt||r<-(t+Qs))&&this._throwError("value out-of-bounds",e)}else(rIt(n,8*this.size))&&this._throwError("value out-of-bounds",e);return r=It(Ot(r,8*this.size),8*this.size),this.signed&&(r=Ot(xt(r,8*this.size),256)),t.writeValue(r)}decode(t){let e=It(t.readValue(),8*this.size);return this.signed&&(e=xt(e,8*this.size)),e}}const ri=new T("@ethersproject/strings@6.0.0-beta.2");var ni,si;function ii(e,r,n,s,i){if(e===t.Utf8ErrorReason.BAD_PREFIX||e===t.Utf8ErrorReason.UNEXPECTED_CONTINUE){let t=0;for(let e=r+1;e>6==2;e++)t++;return t}return e===t.Utf8ErrorReason.OVERRUN?n.length-r-1:0}t.UnicodeNormalizationForm=void 0,(ni=t.UnicodeNormalizationForm||(t.UnicodeNormalizationForm={})).current="",ni.NFC="NFC",ni.NFD="NFD",ni.NFKC="NFKC",ni.NFKD="NFKD",t.Utf8ErrorReason=void 0,(si=t.Utf8ErrorReason||(t.Utf8ErrorReason={})).UNEXPECTED_CONTINUE="unexpected continuation byte",si.BAD_PREFIX="bad codepoint prefix",si.OVERRUN="string overrun",si.MISSING_CONTINUE="missing continuation byte",si.OUT_OF_RANGE="out of UTF-8 range",si.UTF16_SURROGATE="UTF-16 surrogate",si.OVERLONG="overlong representation";const oi=Object.freeze({error:function(t,e,r,n,s){return ri.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)},ignore:ii,replace:function(e,r,n,s,i){return e===t.Utf8ErrorReason.OVERLONG?(s.push(null!=i?i:-1),0):(s.push(65533),ii(e,r,n))}});function ai(e,r){null==r&&(r=oi.error);const n=ri.getBytes(e,"bytes"),s=[];let i=0;for(;i>7==0){s.push(e);continue}let o=null,a=null;if(192==(224&e))o=1,a=127;else if(224==(240&e))o=2,a=2047;else{if(240!=(248&e)){i+=r(128==(192&e)?t.Utf8ErrorReason.UNEXPECTED_CONTINUE:t.Utf8ErrorReason.BAD_PREFIX,i-1,n,s);continue}o=3,a=65535}if(i-1+o>=n.length){i+=r(t.Utf8ErrorReason.OVERRUN,i-1,n,s);continue}let c=e&(1<<8-o-1)-1;for(let e=0;e1114111?i+=r(t.Utf8ErrorReason.OUT_OF_RANGE,i-1-o,n,s,c):c>=55296&&c<=57343?i+=r(t.Utf8ErrorReason.UTF16_SURROGATE,i-1-o,n,s,c):c<=a?i+=r(t.Utf8ErrorReason.OVERLONG,i-1-o,n,s,c):s.push(c))}return s}function ci(e,r=t.UnicodeNormalizationForm.current){r!=t.UnicodeNormalizationForm.current&&(ri.assertNormalize(r),e=e.normalize(r));let n=[];for(let t=0;t>6|192),n.push(63&r|128);else if(55296==(64512&r)){t++;const s=e.charCodeAt(t);if(t>=e.length||56320!=(64512&s))throw new Error("invalid utf-8 string");const i=65536+((1023&r)<<10)+(1023&s);n.push(i>>18|240),n.push(i>>12&63|128),n.push(i>>6&63|128),n.push(63&i|128)}else n.push(r>>12|224),n.push(r>>6&63|128),n.push(63&r|128)}return new Uint8Array(n)}function li(t){const e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function ui(t,e){return'"'+ai(t,e).map((t=>{if(t<256){switch(t){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(t>=32&&t<127)return String.fromCharCode(t)}return t<=65535?li(t):li(55296+((t-=65536)>>10&1023))+li(56320+(1023&t))})).join("")+'"'}function hi(t){return t.map((t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t))))).join("")}function fi(t,e){return hi(ai(t,e))}function di(e,r=t.UnicodeNormalizationForm.current){return ai(ci(e,r))}function pi(t){const e=ci(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return Ae(e,32)}function gi(t){const e=ri.getBytes(t,"bytes");if(32!==e.length)throw new Error("invalid bytes32 - not 32 bytes long");if(0!==e[31])throw new Error("invalid bytes32 string - no null terminator");let r=31;for(;0===e[r-1];)r--;return fi(e.slice(0,r))}function wi(t,e){const r=e||function(t){return[parseInt(t,16)]};let n=0,s={};return t.split(",").forEach((t=>{let e=t.split(":");n+=parseInt(e[0],16),s[n]=r(e[1])})),s}function mi(t){let e=0;return t.split(",").map((t=>{let r=t.split("-");1===r.length?r[1]="0":""===r[1]&&(r[1]="1");let n=e+parseInt(r[0],16);return e=parseInt(r[1],16),{l:n,h:e}}))}function yi(t,e){let r=0;for(let n=0;n=r&&t<=r+s.h&&(t-r)%(s.d||1)==0){if(s.e&&-1!==s.e.indexOf(t-r))continue;return s}}return null}const bi=mi("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),vi="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map((t=>parseInt(t,16))),Ei=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],Ai=wi("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),ki=wi("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),Ti=wi("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",(function(t){if(t.length%4!=0)throw new Error("should not happen; bad data");let e=[];for(let r=0;r{if(vi.indexOf(t)>=0)return[];if(t>=65024&&t<=65039)return[];let e=function(t){const e=yi(t,Ei);if(e){if(null==e.s)throw new Error("should not happenl bad range");return[t+e.s]}const r=Ai[t];if(r)return r;const n=ki[t];return n?[t+n[0]]:Ti[t]||null}(t);return e||[t]})),r=n.reduce(((t,e)=>(e.forEach((e=>{t.push(e)})),t)),[]),r=di(hi(r),t.UnicodeNormalizationForm.NFKC),r.forEach((t=>{yi(t,Pi)&&ri.throwArgumentError("STRINGPREP_CONTAINS_PROHIBITED","value",e)})),r.forEach((t=>{yi(t,bi)&&ri.throwArgumentError("STRINGPREP_CONTAINS_UNASSIGNED","value",e)}));let s=hi(r);return"-"!==s.substring(0,1)&&"--"!==s.substring(2,4)&&"-"!==s.substring(s.length-1)||ri.throwArgumentError("invalid hyphen","value",e),s.length>63&&ri.throwArgumentError("too long","value",e),s}class xi extends Ks{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,ci(js.dereference(e,"string")))}decode(t){return fi(super.decode(t))}}class Oi extends $e{constructor(t,e){let r=!1;const s=[];t.forEach((t=>{t.dynamic&&(r=!0),s.push(t.type)}));super("tuple","tuple("+s.join(",")+")",e,r),n(this,{coders:Object.freeze(t.slice())})}defaultValue(){const t=[];this.coders.forEach((e=>{t.push(e.defaultValue())}));const e=this.coders.reduce(((t,e)=>{const r=e.localName;return r&&(t[r]||(t[r]=0),t[r]++),t}),{});return this.coders.forEach(((r,n)=>{let s=r.localName;s&&1===e[s]&&("length"===s&&(s="_length"),null==t[s]&&(t[s]=t[n]))})),Object.freeze(t)}encode(t,e){const r=js.dereference(e,"tuple");return zs(t,this.coders,r)}decode(t){return Ws(t,this.coders)}}var Ii,Si,Ri=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Bi=new RegExp(/^bytes([0-9]*)$/),Ci=new RegExp(/^(u?int)([0-9]*)$/);Ii=new WeakSet,Si=function t(e){if(e.isArray())return new Hs(Ri(this,Ii,"m",t).call(this,e.arrayChildren),e.arrayLength,e.name);if(e.isTuple())return new Oi(e.components.map((e=>Ri(this,Ii,"m",t).call(this,e))),e.name);switch(e.baseType){case"address":return new Gs(e.name);case"bool":return new Vs(e.name);case"string":return new xi(e.name);case"bytes":return new Js(e.name);case"":return new Ys(e.name)}let r=e.type.match(Ci);if(r){let t=parseInt(r[2]||"256");return(0===t||t>256||t%8!=0)&&P.throwArgumentError("invalid "+r[1]+" bit length","param",e),new ei(t/8,"int"===r[1],e.name)}if(r=e.type.match(Bi),r){let t=parseInt(r[1]);return(0===t||t>32)&&P.throwArgumentError("invalid bytes length","param",e),new qs(t,e.name)}return P.throwArgumentError("invalid type","type",e.type)};const _i=new class{constructor(){Ii.add(this)}getDefaultValue(t){const e=t.map((t=>Ri(this,Ii,"m",Si).call(this,at.from(t))));return new Oi(e,"_").defaultValue()}encode(t,e){P.assertArgumentCount(e.length,t.length,"types/values length mismatch");const r=t.map((t=>Ri(this,Ii,"m",Si).call(this,at.from(t)))),n=new Oi(r,"_"),s=new ze;return n.encode(s,e),s.data}decode(t,e,r){const n=t.map((t=>Ri(this,Ii,"m",Si).call(this,at.from(t))));return new Oi(n,"_").decode(new We(e,r))}};function Fi(t){return dn(ci(t))}const Ui=new T("@ethersproject/hash@6.0.0-beta.4"),Li=new Uint8Array(32);Li.fill(0);const Di=new RegExp("^((.*)\\.)?([^.]+)$");function Mi(t){try{const e=t.split(".");for(let t=0;t{""===e&&Ui.throwArgumentError("invalid DNS name; missing component","name",t);const r=ci("_"+Ni(e));return r[0]=r.length-1,r})))+"00"}const $i="Ethereum Signed Message:\n";function zi(t){return"string"==typeof t&&(t=ci(t)),dn(we([ci($i),ci(String(t.length)),t]))}const Wi=new RegExp("^bytes([0-9]+)$"),Hi=new RegExp("^(u?int)([0-9]*)$"),Vi=new RegExp("^(.*)\\[([0-9]*)\\]$");function Ki(t,e,r){switch(t){case"address":return r?Ui.getBytes(Ee(e,32)):Ui.getBytes(e);case"string":return ci(e);case"bytes":return Ui.getBytes(e);case"bool":return e=e?"0x01":"0x00",r?Ui.getBytes(Ee(e,32)):Ui.getBytes(e)}let n=t.match(Hi);if(n){let s=parseInt(n[2]||"256");return n[2]&&String(s)!==n[2]||s%8!=0||0===s||s>256?Ui.throwArgumentError("invalid number type","type",t):(r&&(s=256),e=Ot(e,s),Ui.getBytes(Ee(e,s/8)))}if(n=t.match(Wi),n){const s=parseInt(n[1]);return String(s)!==n[1]||0===s||s>32?Ui.throwArgumentError("invalid bytes type","type",t):me(e)!==s?Ui.throwArgumentError(`invalid value for ${t}`,"value",e):r?Ui.getBytes(Ae(e,32)):e}if(n=t.match(Vi),n&&Array.isArray(e)){const r=n[1];parseInt(n[2]||String(e.length))!=e.length&&Ui.throwArgumentError(`invalid array length for ${t}`,"value",e);const s=[];return e.forEach((function(t){s.push(Ki(r,t,!0))})),Ui.getBytes(we(s))}return Ui.throwArgumentError("invalid type","type",t)}function Ji(t,e){t.length!=e.length&&Ui.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);const r=[];return t.forEach((function(t,n){r.push(Ki(t,e[n]))})),pe(we(r))}function qi(t,e){return dn(Ji(t,e))}function Xi(t,e){return os(Ji(t,e))}var Yi,Zi,Qi,to,eo,ro=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},no=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const so=new Uint8Array(32);so.fill(0);const io=BigInt(-1),oo=BigInt(0),ao=BigInt(1),co=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const lo=kt(ao,32),uo=kt(oo,32),ho={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},fo=["name","version","chainId","verifyingContract","salt"];function po(t){return function(e){return"string"!=typeof e&&Ui.throwArgumentError(`invalid domain value for ${JSON.stringify(t)}`,`domain.${t}`,e),e}}const go={name:po("name"),version:po("version"),chainId:function(t){return Ui.getBigInt(t,"domain.chainId")},verifyingContract:function(t){try{return ws(t).toLowerCase()}catch(t){}return Ui.throwArgumentError('invalid domain value "verifyingContract"',"domain.verifyingContract",t)},salt:function(t){const e=Ui.getBytes(t,"domain.salt");return 32!==e.length&&Ui.throwArgumentError('invalid domain value "salt"',"domain.salt",t),pe(e)}};function wo(t){{const e=t.match(/^(u?)int(\d*)$/);if(e){const r=""===e[1],n=parseInt(e[2]||"256");(n%8!=0||n>256||e[2]&&e[2]!==String(n))&&Ui.throwArgumentError("invalid numeric width","type",t);const s=It(co,r?n-1:n),i=r?(s+ao)*io:oo;return function(e){const r=Ui.getBigInt(e,"value");return(rs)&&Ui.throwArgumentError(`value out-of-bounds for ${t}`,"value",r),kt(Ot(r,256),32)}}}{const e=t.match(/^bytes(\d+)$/);if(e){const r=parseInt(e[1]);return(0===r||r>32||e[1]!==String(r))&&Ui.throwArgumentError("invalid bytes width","type",t),function(e){return le(e).length!==r&&Ui.throwArgumentError(`invalid length for ${t}`,"value",e),function(t){const e=le(t),r=e.length%32;return r?we([e,so.slice(r)]):pe(e)}(e)}}}switch(t){case"address":return function(t){return Ee(ws(t),32)};case"bool":return function(t){return t?lo:uo};case"bytes":return function(t){return dn(t)};case"string":return function(t){return Fi(t)}}return null}function mo(t,e){return`${t}(${e.map((({name:t,type:e})=>e+" "+t)).join(",")})`}class yo{constructor(t){Yi.add(this),Zi.set(this,void 0),Qi.set(this,void 0),to.set(this,void 0),ro(this,Zi,JSON.stringify(t),"f"),ro(this,Qi,new Map,"f"),ro(this,to,new Map,"f");const e=new Map,r=new Map,s=new Map;Object.keys(t).forEach((t=>{e.set(t,new Set),r.set(t,[]),s.set(t,new Set)}));for(const n in t){const s=new Set;for(const i of t[n]){s.has(i.name)&&Ui.throwArgumentError(`duplicate variable name ${JSON.stringify(i.name)} in ${JSON.stringify(n)}`,"types",t),s.add(i.name);const o=i.type.match(/^([^\x5b]*)(\x5b|$)/)[1]||null;o===n&&Ui.throwArgumentError(`circular type reference to ${JSON.stringify(o)}`,"types",t);wo(o)||(r.has(o)||Ui.throwArgumentError(`unknown type ${JSON.stringify(o)}`,"types",t),r.get(o).push(n),e.get(n).add(o))}}const i=Array.from(r.keys()).filter((t=>0===r.get(t).length));0===i.length?Ui.throwArgumentError("missing primary type","types",t):i.length>1&&Ui.throwArgumentError(`ambiguous primary types or unused types: ${i.map((t=>JSON.stringify(t))).join(", ")}`,"types",t),n(this,{primaryType:i[0]}),function n(i,o){o.has(i)&&Ui.throwArgumentError(`circular type reference to ${JSON.stringify(i)}`,"types",t),o.add(i);for(const t of e.get(i))if(r.has(t)){n(t,o);for(const e of o)s.get(e).add(t)}o.delete(i)}(this.primaryType,new Set);for(const[e,r]of s){const n=Array.from(r);n.sort(),no(this,Qi,"f").set(e,mo(e,t[e])+n.map((e=>mo(e,t[e]))).join(""))}}get types(){return JSON.parse(no(this,Zi,"f"))}getEncoder(t){let e=no(this,to,"f").get(t);return e||(e=no(this,Yi,"m",eo).call(this,t),no(this,to,"f").set(t,e)),e}encodeType(t){const e=no(this,Qi,"f").get(t);return e||Ui.throwArgumentError(`unknown type: ${JSON.stringify(t)}`,"name",t)}encodeData(t,e){return this.getEncoder(t)(e)}hashStruct(t,e){return dn(this.encodeData(t,e))}encode(t){return this.encodeData(this.primaryType,t)}hash(t){return this.hashStruct(this.primaryType,t)}_visit(t,e,r){if(wo(t))return r(t,e);const n=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(n){const t=n[1],s=parseInt(n[3]);return s>=0&&e.length!==s&&Ui.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e),e.map((e=>this._visit(t,e,r)))}const s=this.types[t];return s?s.reduce(((t,{name:n,type:s})=>(t[n]=this._visit(s,e[n],r),t)),{}):Ui.throwArgumentError(`unknown type: ${t}`,"type",t)}visit(t,e){return this._visit(this.primaryType,t,e)}static from(t){return new yo(t)}static getPrimaryType(t){return yo.from(t).primaryType}static hashStruct(t,e,r){return yo.from(e).hashStruct(t,r)}static hashDomain(t){const e=[];for(const r in t){const n=ho[r];n||Ui.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(r)}`,"domain",t),e.push({name:r,type:n})}return e.sort(((t,e)=>fo.indexOf(t.name)-fo.indexOf(e.name))),yo.hashStruct("EIP712Domain",{EIP712Domain:e},t)}static encode(t,e,r){return we(["0x1901",yo.hashDomain(t),yo.from(e).hash(r)])}static hash(t,e,r){return dn(yo.encode(t,e,r))}static async resolveNames(t,e,r,n){t=Object.assign({},t);const s={};t.verifyingContract&&!se(t.verifyingContract,20)&&(s[t.verifyingContract]="0x");const i=yo.from(e);i.visit(r,((t,e)=>("address"!==t||se(e,20)||(s[e]="0x"),e)));for(const t in s)s[t]=await n(t);return t.verifyingContract&&s[t.verifyingContract]&&(t.verifyingContract=s[t.verifyingContract]),{domain:t,value:r=i.visit(r,((t,e)=>"address"===t&&s[e]?s[e]:e))}}static getPayload(t,e,r){yo.hashDomain(t);const n={},s=[];fo.forEach((e=>{const r=t[e];null!=r&&(n[e]=go[e](r),s.push({name:e,type:ho[e]}))}));const i=yo.from(e),o=Object.assign({},e);return o.EIP712Domain?Ui.throwArgumentError("types must not contain EIP712Domain type","types.EIP712Domain",e):o.EIP712Domain=s,i.encode(r),{types:o,domain:n,primaryType:i.primaryType,message:i.visit(r,((t,e)=>{if(t.match(/^bytes(\d*)/))return pe(Ui.getBytes(e));if(t.match(/^u?int/))return Ui.getBigInt(e).toString();switch(t){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return"string"!=typeof e&&Ui.throwArgumentError("invalid string","value",e),e}return Ui.throwArgumentError("unsupported type","type",t)}))}}}Zi=new WeakMap,Qi=new WeakMap,to=new WeakMap,Yi=new WeakSet,eo=function(t){{const e=wo(t);if(e)return e}const e=t.match(/^(.*)(\x5b(\d*)\x5d)$/);if(e){const t=e[1],r=this.getEncoder(t),n=parseInt(e[3]);return e=>{n>=0&&e.length!==n&&Ui.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",e);let s=e.map(r);return no(this,Qi,"f").has(t)&&(s=s.map(dn)),dn(we(s))}}const r=this.types[t];if(r){const e=Fi(no(this,Qi,"f").get(t));return t=>{const n=r.map((({name:e,type:r})=>{const n=this.getEncoder(r)(t[e]);return no(this,Qi,"f").has(r)?dn(n):n}));return n.unshift(e),we(n)}}return Ui.throwArgumentError(`unknown type: ${t}`,"type",t)};var bo,vo,Eo,Ao,ko,To,Po,No=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},xo=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Oo{constructor(t,e,r){const s=t.name,i=t.format();n(this,{fragment:t,name:s,signature:i,topic:e,args:r})}}class Io{constructor(t,e,r,s){const i=t.name,o=t.format();n(this,{fragment:t,name:i,args:r,signature:o,selector:e,value:s})}}class So{constructor(t,e,r){const s=t.name,i=t.format();n(this,{fragment:t,name:s,args:r,signature:i,selector:e})}}class Ro{constructor(t){n(this,{hash:t,_isIndexed:!0})}static isIndexed(t){return!(!t||!t._isIndexed)}}const Bo={0:"generic panic",1:"assert(false)",17:"arithmetic overflow",18:"division or modulo by zero",33:"enum overflow",34:"invalid encoded storage byte array accessed",49:"out-of-bounds array access; popping on an empty array",50:"out-of-bounds access of an array or bytesN",65:"out of memory",81:"uninitialized function"},Co={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:t=>`reverted with reason string ${JSON.stringify(t)}`},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"],reason:t=>{let e="unknown panic code";return t>=0&&t<=255&&Bo[t.toString()]&&(e=Bo[t.toString()]),`reverted with panic code 0x${t.toString(16)} (${e})`}}};class _o{constructor(t){bo.add(this),vo.set(this,void 0),Eo.set(this,void 0),Ao.set(this,void 0),ko.set(this,void 0);let e=[];e="string"==typeof t?JSON.parse(t):t,No(this,Ao,new Map,"f"),No(this,vo,new Map,"f"),No(this,Eo,new Map,"f"),n(this,{fragments:Object.freeze(e.map((t=>lt.from(t))).filter((t=>null!=t)))}),No(this,ko,this.getAbiCoder(),"f"),this.fragments.forEach((t=>{let e;switch(t.type){case"constructor":return this.deploy?void P.warn("duplicate definition - constructor"):void n(this,{deploy:t});case"function":e=xo(this,Ao,"f");break;case"event":e=xo(this,Eo,"f");break;case"error":e=xo(this,vo,"f");break;default:return}const r=t.format();e.has(r)?P.warn("duplicate definition - "+r):e.set(r,t)})),this.deploy||n(this,{deploy:pt.fromString("constructor()")})}format(t){t||(t=B.full),t===B.sighash&&P.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map((e=>e.format(t)));return t===B.json?JSON.stringify(e.map((t=>JSON.parse(t)))):e}getAbiCoder(){return _i}getFunctionName(t){return xo(this,bo,"m",To).call(this,t,null,!1).name}getFunction(t,e){return xo(this,bo,"m",To).call(this,t,e||null,!0)}getEventName(t){return xo(this,bo,"m",Po).call(this,t,null,!1).name}getEvent(t,e){return xo(this,bo,"m",Po).call(this,t,e||null,!0)}getError(t,e){if(se(t)){const e=t.toLowerCase();for(const t of xo(this,vo,"f").values())if(e===this.getSelector(t))return t;P.throwArgumentError("no matching error","selector",t)}if(-1===t.indexOf("(")){const e=[];for(const[r,n]of xo(this,vo,"f"))r.split("(")[0]===t&&e.push(n);return 0===e.length?P.throwArgumentError("no matching error","name",t):e.length>1&&P.throwArgumentError("multiple matching errors","name",t),e[0]}const r=xo(this,vo,"f").get(ft.fromString(t).format());return r||P.throwArgumentError("no matching error","signature",t)}getSelector(t){return ye(Fi(t.format()),0,4)}getEventTopic(t){return Fi(t.format())}_decodeParams(t,e){return xo(this,ko,"f").decode(t,e)}_encodeParams(t,e){return xo(this,ko,"f").encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),ye(e,0,4)!==this.getSelector(t)&&P.throwArgumentError(`data signature does not match error ${t.name}.`,"data",e),this._decodeParams(t.inputs,ye(e,4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),we([this.getSelector(t),this._encodeParams(t.inputs,e||[])])}decodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),ye(e,0,4)!==this.getSelector(t)&&P.throwArgumentError(`data signature does not match function ${t.name}.`,"data",e),this._decodeParams(t.inputs,ye(e,4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),we([this.getSelector(t),this._encodeParams(t.inputs,e||[])])}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let r="invalid length for result data";const n=le(e);if(n.length%32==0)try{return xo(this,ko,"f").decode(t.outputs,n)}catch(t){r="could not decode result data"}return P.throwError(r,"BAD_DATA",{value:pe(n),info:{method:t.name,signature:t.format()}})}makeError(t,e,r){"string"==typeof t&&(t=this.getFunction(t));const n=P.getBytes(e);let s,i,o,a;if(r)try{s=xo(this,ko,"f").decode(t.inputs,r.data||"0x")}catch(t){console.log(t)}let c="unknown reason";if(0===n.length)c="missing error reason";else if(n.length%32==4){const t=pe(n.slice(0,4)),e=Co[t];if(e)try{o=e.name,a=e.signature,i=xo(this,ko,"f").decode(e.inputs,n.slice(4)),c=e.reason(...i)}catch(t){console.log(t)}else{c="unknown custom error";try{const e=this.getError(t);o=e.name,a=e.format(),c=`custom error: ${a}`;try{i=xo(this,ko,"f").decode(e.inputs,n.slice(4))}catch(t){c=`custom error: ${a} (coult not decode error data)`}}catch(t){console.log(t)}}}return P.makeError("call revert exception","CALL_EXCEPTION",{data:pe(n),transaction:null,method:t.name,signature:t.format(),args:s,errorArgs:i,errorName:o,errorSignature:a,reason:c})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),pe(xo(this,ko,"f").encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&P.throwError("too many arguments for "+t.format(),"UNEXPECTED_ARGUMENT",{count:e.length,expectedCount:t.inputs.length});const r=[];t.anonymous||r.push(this.getEventTopic(t));const n=(t,e)=>"string"===t.type?Fi(e):"bytes"===t.type?dn(pe(e)):("address"===t.type&&xo(this,ko,"f").encode(["address"],[e]),Ee(pe(e),32));for(e.forEach(((e,s)=>{const i=t.inputs[s];i.indexed?null==e?r.push(null):"array"===i.baseType||"tuple"===i.baseType?P.throwArgumentError("filtering with tuples or arrays not supported","contract."+i.name,e):Array.isArray(e)?r.push(e.map((t=>n(i,t)))):r.push(n(i,e)):null!=e&&P.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+i.name,e)}));r.length&&null===r[r.length-1];)r.pop();return r}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const r=[],n=[],s=[];return t.anonymous||r.push(this.getEventTopic(t)),e.length!==t.inputs.length&&P.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach(((t,i)=>{const o=e[i];if(t.indexed)if("string"===t.type)r.push(Fi(o));else if("bytes"===t.type)r.push(dn(o));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");r.push(xo(this,ko,"f").encode([t.type],[o]))}else n.push(t),s.push(o)})),{data:xo(this,ko,"f").encode(n,s),topics:r}}decodeEventLog(t,e,r){if("string"==typeof t&&(t=this.getEvent(t)),null!=r&&!t.anonymous){const e=this.getEventTopic(t);se(r[0],32)&&r[0].toLowerCase()===e||P.throwArgumentError("fragment/topic mismatch","topics[0]",r[0]),r=r.slice(1)}const n=[],s=[],i=[];t.inputs.forEach(((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(n.push(at.fromObject({type:"bytes32",name:t.name})),i.push(!0)):(n.push(t),i.push(!1)):(s.push(t),i.push(!1))}));const o=null!=r?xo(this,ko,"f").decode(n,we(r)):null,a=xo(this,ko,"f").decode(s,e,!0),c=[],l=[];let u=0,h=0;return t.inputs.forEach(((t,e)=>{let r=null;if(t.indexed)if(null==o)r=new Ro(null);else if(i[e])r=new Ro(o[h++]);else try{r=o[h++]}catch(t){r=t}else try{r=a[u++]}catch(t){r=t}c.push(r),l.push(t.name||null)})),je.fromItems(c,l)}parseTransaction(t){const e=P.getBytes(t.data,"tx.data"),r=P.getBigInt(null!=t.value?t.value:0,"tx.value"),n=this.getFunction(pe(e.slice(0,4)));if(!n)return null;const s=xo(this,ko,"f").decode(n.inputs,e.slice(4));return new Io(n,this.getSelector(n),s,r)}parseLog(t){const e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new Oo(e,this.getEventTopic(e),this.decodeEventLog(e,t.data,t.topics))}parseError(t){const e=pe(t),r=this.getError(ye(e,0,4));if(!r)return null;const n=xo(this,ko,"f").decode(r.inputs,ye(e,4));return new So(r,this.getSelector(r),n)}static from(t){return t instanceof _o?t:"string"==typeof t?new _o(JSON.parse(t)):"function"==typeof t.format?new _o(t.format(B.json)):new _o(t)}}vo=new WeakMap,Eo=new WeakMap,Ao=new WeakMap,ko=new WeakMap,bo=new WeakSet,To=function(t,e,r){if(se(t)){const e=t.toLowerCase();for(const t of xo(this,Ao,"f").values())if(e===this.getSelector(t))return t;P.throwArgumentError("no matching function","selector",t)}if(-1===t.indexOf("(")){const n=[];for(const[e,r]of xo(this,Ao,"f"))e.split("(")[0]===t&&n.push(r);if(e){const t=e.length>0?e[e.length-1]:null;let r=e.length,s=!0;js.isTyped(t)&&"overrides"===t.type&&(s=!1,r--);for(let t=n.length-1;t>=0;t--){const e=n[t].inputs.length;e===r||s&&e===r-1||n.splice(t,1)}for(let t=n.length-1;t>=0;t--){const r=n[t].inputs;for(let s=0;s=r.length){if("overrides"===e[s].type)continue;n.splice(t,1);break}if(e[s].type!==r[s].baseType){n.splice(t,1);break}}}}if(1===n.length&&e&&e.length!==n[0].inputs.length){const t=e[e.length-1];(null==t||Array.isArray(t)||"object"!=typeof t)&&n.splice(0,1)}if(0===n.length)P.throwArgumentError("no matching function","name",t);else if(n.length>1&&r){const e=n.map((t=>JSON.stringify(t.format()))).join(", ");P.throwArgumentError(`multiple matching functions (i.e. ${e})`,"name",t)}return n[0]}const n=xo(this,Ao,"f").get(gt.fromString(t).format());return n||P.throwArgumentError("no matching function","signature",t)},Po=function(t,e,r){if(se(t)){const e=t.toLowerCase();for(const t of xo(this,Eo,"f").values())if(e===this.getEventTopic(t))return t;P.throwArgumentError("no matching event","eventTopic",t)}if(-1===t.indexOf("(")){const n=[];for(const[e,r]of xo(this,Eo,"f"))e.split("(")[0]===t&&n.push(r);if(e){for(let t=n.length-1;t>=0;t--)n[t].inputs.length=0;t--){const r=n[t].inputs;for(let s=0;s1&&r&&P.throwArgumentError("multiple matching events","name",t),n[0]}const n=xo(this,Eo,"f").get(dt.fromString(t).format());return n||P.throwArgumentError("no matching event","signature",t)};const Fo=new T("@ethersproject/web@6.0.0-beta.3");var Uo,Lo,Do=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Mo=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class jo{constructor(t,e,r,n,s){Uo.set(this,void 0),Lo.set(this,void 0),Do(this,Uo,{statusCode:t,statusMessage:e,headers:Object.freeze(Object.assign({},Object.keys(r).reduce(((t,e)=>(t[e.toLowerCase()]=r[e],t)),{}))),body:null==n?null:new Uint8Array(n),request:s||null},"f"),Do(this,Lo,{message:""},"f")}toString(){const t=c(Mo(this,Uo,"f"),"body");return``}get statusCode(){return c(Mo(this,Uo,"f"),"statusCode")}get statusMessage(){return c(Mo(this,Uo,"f"),"statusMessage")}get headers(){return c(Mo(this,Uo,"f"),"headers")}get body(){const t=c(Mo(this,Uo,"f"),"body");return null==t?null:new Uint8Array(t)}get bodyText(){try{const t=c(Mo(this,Uo,"f"),"body");return null==t?"":fi(t)}catch(t){return Fo.throwError("response body is not valid UTF-8 data","UNSUPPORTED_OPERATION",{operation:"bodyText",info:{response:this}})}}get bodyJson(){try{return JSON.parse(this.bodyText)}catch(t){return Fo.throwError("response body is not valid JSON","UNSUPPORTED_OPERATION",{operation:"bodyJson",info:{response:this}})}}[(Uo=new WeakMap,Lo=new WeakMap,Symbol.iterator)](){const t=this.headers,e=Object.keys(t);let r=0;return{next:()=>{if(r=200&&this.statusCode<300}assertOk(){if(this.ok())return;let{message:t,error:e}=Mo(this,Lo,"f");""===t&&(t=`server response ${this.statusCode} ${this.statusMessage}`),Fo.throwError(t,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e})}}async function Go(t,e){const r=t.url.split(":")[0].toLowerCase();"http"!==r&&"https"!==r&&Fo.throwError(`unsupported protocol ${r}`,"UNSUPPORTED_OPERATION",{info:{protocol:r},operation:"request"}),t.credentials&&!t.allowInsecureAuthentication&&Fo.throwError("insecure authorized connections unsupported","UNSUPPORTED_OPERATION",{operation:"request"});const n={method:t.method,headers:new Headers(Array.from(t)),body:t.body||void 0},s=await fetch(t.url,n),i={};s.headers.forEach(((t,e)=>{i[e.toLowerCase()]=t}));const o=new Uint8Array(await s.arrayBuffer());return new jo(s.status,s.statusText,i,o,t)}var $o,zo=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Wo=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Ho(t,e,r){if(typeof t!==e)throw new Error(`invalid ${r}`);return t}class Vo{constructor(t){$o.set(this,void 0),zo(this,$o,{allowInsecure:!1,gzip:!1,headers:{},method:"",timeout:300,url:Ho(t,"string","url")},"f")}get url(){return c(Wo(this,$o,"f"),"url")}set url(t){l(Wo(this,$o,"f"),"url",Ho(t,"string","url"))}get body(){const t=c(Wo(this,$o,"f"),"body");return null==t?null:this.isFrozen()?new Uint8Array(t):t}set body(t){if(null==t)l(Wo(this,$o,"f"),"body",void 0),l(Wo(this,$o,"f"),"bodyType",void 0);else if("string"==typeof t)l(Wo(this,$o,"f"),"body",ci(t)),l(Wo(this,$o,"f"),"bodyType","text/plain");else if(t instanceof Uint8Array)l(Wo(this,$o,"f"),"body",t),l(Wo(this,$o,"f"),"bodyType","application/octet-stream");else{if("object"!=typeof t)throw new Error("invalid body");l(Wo(this,$o,"f"),"body",ci(JSON.stringify(t))),l(Wo(this,$o,"f"),"bodyType","application/json")}}hasBody(){return null!=c(Wo(this,$o,"f"),"body")}get method(){const t=c(Wo(this,$o,"f"),"method");return t?t.toUpperCase():this.body?"POST":"GET"}set method(t){null==t&&(t=""),l(Wo(this,$o,"f"),"method",Ho(t,"string","method"))}get headers(){const t=Object.assign({},c(Wo(this,$o,"f"),"headers")),e=c(Wo(this,$o,"f"),"bodyType");return this.credentials,this.allowGzip&&(t["accept-encoding"]="gzip"),null==t["content-type"]&&e&&(t["content-type"]=e),this.body&&(t["content-length"]=String(this.body.length)),Object.freeze(t)}getHeader(t){return this.headers[t.toLowerCase()]}setHeader(t,e){const r=c(Wo(this,$o,"f"),"headers");l(Wo(this,$o,"f"),"headers",r),r[Ho(t,"string","key").toLowerCase()]=String(e)}clearHeaders(){l(Wo(this,$o,"f"),"headers",{})}[($o=new WeakMap,Symbol.iterator)](){const t=this.headers,e=Object.keys(t);let r=0;return{next:()=>{if(r ${JSON.stringify(t)})`});const n=new Vo(t);return n.method="GET",n.allowGzip=this.allowGzip,n.timeout=this.timeout,l(Wo(n,$o,"f"),"body",c(Wo(this,$o,"f"),"body")),l(Wo(n,$o,"f"),"headers",Object.assign({},c(Wo(this,$o,"f"),"headers"))),l(Wo(n,$o,"f"),"bodyType",c(Wo(this,$o,"f"),"bodyType")),n}clone(){const t=new Vo(this.url);l(Wo(t,$o,"f"),"method",c(Wo(this,$o,"f"),"method"));const e=c(Wo(this,$o,"f"),"body");return l(Wo(t,$o,"f"),"body",null==e?void 0:new Uint8Array(e)),l(Wo(t,$o,"f"),"bodyType",c(Wo(this,$o,"f"),"bodyType")),l(Wo(t,$o,"f"),"headers",Object.assign({},c(Wo(this,$o,"f"),"headers"))),l(Wo(t,$o,"f"),"creds",c(Wo(this,$o,"f"),"creds")),this.allowGzip&&(t.allowGzip=!0),t.timeout=this.timeout,this.allowInsecureAuthentication&&(t.allowInsecureAuthentication=!0),t}freeze(){const t=c(Wo(this,$o,"f"),"body");return null!=t&&l(Wo(this,$o,"f"),"body",new Uint8Array(t)),Object.freeze(Wo(this,$o,"f").headers),Object.freeze(Wo(this,$o,"f")),this}isFrozen(){return Object.isFrozen(Wo(this,$o,"f"))}}async function Ko(t){return new Promise((e=>{setTimeout(e,t)}))}function Jo(){return(new Date).getTime()}let qo=!1;async function Xo(t){const e="string"==typeof t?{request:new Vo(t)}:t instanceof Vo?{request:t}:Object.assign({},t);if(null==e.request)return Fo.throwArgumentError("missing request","connection",t);let r=e.request.clone().freeze();switch(e.request.url.split(":")[0]){case"data":{const t=r.url.match(/^data:([^;:]*)?(;base64)?,(.*)$/i);if(t)try{const e={"content-type":t[1]?t[1]:"text/plain"},n=t[2]?he(t[3]):ci(t[3].replace(/%([0-9a-f][0-9a-f])/gi,((t,e)=>String.fromCharCode(parseInt(e,16)))));return new jo(200,"OK",e,n,r.clone())}catch(t){return new jo(400,"BAD REQUEST (invalid base64 encoded data)",{},null,r.clone())}return new jo(500,"INTERNAL SERVER ERROR (unsupported dara URI)",{},null,r.clone())}case"ipfs":case"ipns":case"ar":throw new Error("not implemented yet");case"http":case"https":break;default:throw new Error("unsupported scheme")}const n=null!=e.throttleLimit?e.throttleLimit:12;if(!Number.isInteger(n)||n<1)return Fo.throwArgumentError("invalid throttleLimit","connection",t);const s=null!=e.throttleSlotInterval?e.throttleSlotInterval:100;if(!Number.isInteger(s)||n<0)return Fo.throwArgumentError("invalid throttleSlotInterval","connection",t);const i=null!=e.throttleRetry?e.throttleRetry:null;if(i&&"function"!=typeof i)return Fo.throwArgumentError("invalid throttleRetry callback","connection",t);const o=e.preflightRequest||null;if(o&&"function"!=typeof o)return Fo.throwArgumentError("invalid preflightRequest callback","connection",t);const a=e.processResponse||null;if(a&&"function"!=typeof a)return Fo.throwArgumentError("invalid processResponse callback","connection",t);const c=Jo();let l=null;for(let t=0;t32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function la(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}function ua(t){const e=[];let r=0;for(let n=0;nYo.getBigInt(t)===na)).catch((t=>{if("CALL_EXCEPTION"===t.code)return!1;throw ea(this,Qo,null,"f"),t})),"f"),await ra(this,Qo,"f")}async _fetch(t,e="0x"){const r=we([t,ji(this.name),e]),n={to:this.address,enableCcipRead:!0,data:r};let s=!1;await this.supportsWildcard()&&(s=!0,n.data=we(["0x9061b923",ua([Gi(this.name),r])]));try{let t=await this.provider.call(n);return Yo.getBytes(t).length%32==4?Yo.throwError("resolver threw error","CALL_EXCEPTION",{transaction:n,data:t}):s?oa(t,0):t}catch(t){if("CALL_EXCEPTION"!==t.code)throw t}return null}async getAddress(t=60){if(60===t)try{const t=await this._fetch("0x3b3b57de");if("0x"===t||t===ia)return null;return(await this.provider.getNetwork()).formatter.callAddress(t)}catch(t){if("CALL_EXCEPTION"===t.code)return null;throw t}let e=null;for(const r of this.provider.plugins)if(r instanceof fa&&r.supportsCoinType(t)){e=r;break}if(null==e)return null;const r=oa(await this._fetch("0xf1cb7e06",ca(t))||"0x",0);if(null==r||"0x"===r)return null;const n=await e.encodeAddress(t,r);return null!=n?n:Yo.throwError("invalid coin data","UNSUPPORTED_OPERATION",{operation:`getAddress(${t})`,info:{coinType:t,data:r}})}async getText(t){let e=ci(t);const r=Yo.getBytes(we([ca(64),ca(e.length),e])),n=oa(await this._fetch("0x59d1d43c",la(r))||"0x",0);return null==n||"0x"===n?null:fi(n)}async getContentHash(){const t=oa(await this._fetch("0xbc1c58d1")||"0x",0);if(null==t||"0x"===t)return null;const e=t.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const t="e3010170"===e[1]?"ipfs":"ipns",r=parseInt(e[4],16);if(e[5].length===2*r)return`${t}://${Yt("0x"+e[2])}`}const r=t.match(/^0xe40101fa011b20([0-9a-f]*)$/);return r&&64===r[1].length?`bzz://${r[1]}`:Yo.throwError("invalid or unsupported content hash data","UNSUPPORTED_OPERATION",{operation:"getContentHash()",info:{data:t}})}async getAvatar(){return(await this._getAvatar()).url}async _getAvatar(){const t=[{type:"name",value:this.name}];try{const e=await this.getText("avatar");if(null==e)throw t.push({type:"!avatar",value:""}),new Error("!avatar");t.push({type:"avatar",value:e});for(let r=0;rwa.throwArgumentError(e,"signature",t);if("string"==typeof t){const r=wa.getBytes(t,"signature");if(64===r.length){const t=pe(r.slice(0,32)),e=r.slice(32,64),n=128&e[0]?28:27;return e[0]&=127,new Oa(Na,t,pe(e),n)}if(65!==me(t)){const n=pe(t.slice(0,32)),s=r.slice(32,64);128&s[0]&&e("non-canonical s");const i=Oa.getNormalizedV(r[64]);return new Oa(Na,n,pe(s),i)}return e("invlaid raw signature length")}if(t instanceof Oa)return t.clone();const r=t.r;null==r&&e("missing r"),se(r,32)||e("invalid r");const n=function(t,r){if(null!=t)return se(t,32)||e("invalid s"),t;if(null!=r){se(r,32)||e("invalid yParityAndS");const t=wa.getBytes(r);return t[0]&=127,pe(t)}return e("missing s")}(t.s,t.yParityAndS);128&wa.getBytes(n)[0]&&e("non-canonical s");const{networkV:s,v:i}=function(t,r,n){if(null!=t){const e=wa.getBigInt(t);return{networkV:e>=Pa?e:void 0,v:Oa.getNormalizedV(e)}}if(null!=r)return se(r,32)||e("invalid yParityAndS"),{v:128&wa.getBytes(r)[0]?28:27};if(null!=n){switch(n){case 0:return{v:27};case 1:return{v:28}}return e("invalid yParity")}return e("missing v")}(t.v,t.yParityAndS,t.yParity),o=new Oa(Na,r,n,i);return s&&l(ba(o,ma,"f"),"networkV",s),"yParity"in t&&t.yParity!==o.yParity?e("yParity mismatch"):"yParityAndS"in t&&t.yParityAndS!==o.yParityAndS&&e("yParityAndS mismatch"),o}} +/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */const Ia=BigInt(0),Sa=BigInt(1),Ra=BigInt(2),Ba=BigInt(3),Ca=BigInt(8),_a=Ra**BigInt(256),Fa={a:Ia,b:BigInt(7),P:_a-Ra**BigInt(32)-BigInt(977),n:_a-BigInt("432420386565659656852420866394968145599"),h:Sa,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee")};function Ua(t){const{a:e,b:r}=Fa,n=ec(t*t),s=ec(n*t);return ec(s+e*t+r)}const La=Fa.a===Ia;class Da{constructor(t,e,r){this.x=t,this.y=e,this.z=r}static fromAffine(t){if(!(t instanceof ja))throw new TypeError("JacobianPoint#fromAffine: expected Point");return new Da(t.x,t.y,Sa)}static toAffineBatch(t){const e=function(t,e=Fa.P){const r=new Array(t.length),n=nc(t.reduce(((t,n,s)=>n===Ia?t:(r[s]=t,ec(t*n,e))),Sa),e);return t.reduceRight(((t,n,s)=>n===Ia?t:(r[s]=ec(t*r[s],e),ec(t*n,e))),n),r}(t.map((t=>t.z)));return t.map(((t,r)=>t.toAffine(e[r])))}static normalizeZ(t){return Da.toAffineBatch(t).map(Da.fromAffine)}equals(t){if(!(t instanceof Da))throw new TypeError("JacobianPoint expected");const{x:e,y:r,z:n}=this,{x:s,y:i,z:o}=t,a=ec(n**Ra),c=ec(o**Ra),l=ec(e*c),u=ec(s*a),h=ec(ec(r*o)*c),f=ec(ec(i*n)*a);return l===u&&h===f}negate(){return new Da(this.x,ec(-this.y),this.z)}double(){const{x:t,y:e,z:r}=this,n=ec(t**Ra),s=ec(e**Ra),i=ec(s**Ra),o=ec(Ra*(ec((t+s)**Ra)-n-i)),a=ec(Ba*n),c=ec(a**Ra),l=ec(c-Ra*o),u=ec(a*(o-l)-Ca*i),h=ec(Ra*e*r);return new Da(l,u,h)}add(t){if(!(t instanceof Da))throw new TypeError("JacobianPoint expected");const{x:e,y:r,z:n}=this,{x:s,y:i,z:o}=t;if(s===Ia||i===Ia)return this;if(e===Ia||r===Ia)return t;const a=ec(n**Ra),c=ec(o**Ra),l=ec(e*c),u=ec(s*a),h=ec(ec(r*o)*c),f=ec(ec(i*n)*a),d=ec(u-l),p=ec(f-h);if(d===Ia)return p===Ia?this.double():Da.ZERO;const g=ec(d**Ra),w=ec(d*g),m=ec(l*g),y=ec(p**Ra-w-Ra*m),b=ec(p*(m-y)-h*w),v=ec(n*o*d);return new Da(y,b,v)}subtract(t){return this.add(t.negate())}multiplyUnsafe(t){let e=tc(t);const r=Da.ZERO;if(e===Ia)return r;if(e===Sa)return this;if(!La){let t=r,n=this;for(;e>Ia;)e&Sa&&(t=t.add(n)),n=n.double(),e>>=Sa;return t}let{k1neg:n,k1:s,k2neg:i,k2:o}=oc(e),a=r,c=r,l=this;for(;s>Ia||o>Ia;)s&Sa&&(a=a.add(l)),o&Sa&&(c=c.add(l)),l=l.double(),s>>=Sa,o>>=Sa;return n&&(a=a.negate()),i&&(c=c.negate()),c=new Da(ec(c.x*Fa.beta),c.y,c.z),a.add(c)}precomputeWindow(t){const e=La?128/t+1:256/t+1,r=[];let n=this,s=n;for(let i=0;i>=u,o>a&&(o-=l,t+=Sa),0===o){let t=n[r];e%2&&(t=t.negate()),i=i.add(t)}else{let t=n[r+Math.abs(o)-1];o<0&&(t=t.negate()),s=s.add(t)}}return{p:s,f:i}}multiply(t,e){let r,n,s=tc(t);if(La){const{k1neg:t,k1:i,k2neg:o,k2:a}=oc(s);let{p:c,f:l}=this.wNAF(i,e),{p:u,f:h}=this.wNAF(a,e);t&&(c=c.negate()),o&&(u=u.negate()),u=new Da(ec(u.x*Fa.beta),u.y,u.z),r=c.add(u),n=l.add(h)}else{const{p:t,f:i}=this.wNAF(s,e);r=t,n=i}return Da.normalizeZ([r,n])[0]}toAffine(t=nc(this.z)){const{x:e,y:r,z:n}=this,s=t,i=ec(s*s),o=ec(i*s),a=ec(e*i),c=ec(r*o);if(ec(n*s)!==Sa)throw new Error("invZ was invalid");return new ja(a,c)}}Da.BASE=new Da(Fa.Gx,Fa.Gy,Sa),Da.ZERO=new Da(Ia,Sa,Ia);const Ma=new WeakMap;class ja{constructor(t,e){this.x=t,this.y=e}_setWindowSize(t){this._WINDOW_SIZE=t,Ma.delete(this)}static fromCompressedHex(t){const e=32===t.length,r=Za(e?t:t.subarray(1));if(!lc(r))throw new Error("Point is not on curve");let n=function(t){const{P:e}=Fa,r=BigInt(6),n=BigInt(11),s=BigInt(22),i=BigInt(23),o=BigInt(44),a=BigInt(88),c=t*t*t%e,l=c*c*t%e,u=rc(l,Ba)*l%e,h=rc(u,Ba)*l%e,f=rc(h,Ra)*c%e,d=rc(f,n)*f%e,p=rc(d,s)*d%e,g=rc(p,o)*p%e,w=rc(g,a)*g%e,m=rc(w,o)*p%e,y=rc(m,Ba)*l%e,b=rc(y,i)*d%e,v=rc(b,r)*c%e;return rc(v,Ra)}(Ua(r));const s=(n&Sa)===Sa;if(e)s&&(n=ec(-n));else{1==(1&t[0])!==s&&(n=ec(-n))}const i=new ja(r,n);return i.assertValidity(),i}static fromUncompressedHex(t){const e=Za(t.subarray(1,33)),r=Za(t.subarray(33,65)),n=new ja(e,r);return n.assertValidity(),n}static fromHex(t){const e=Qa(t),r=e.length,n=e[0];if(32===r||33===r&&(2===n||3===n))return this.fromCompressedHex(e);if(65===r&&4===n)return this.fromUncompressedHex(e);throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${r}`)}static fromPrivateKey(t){return ja.BASE.multiply(hc(t))}static fromSignature(t,e,r){const n=function(t){const{n:e}=Fa,r=8*t.length-256;let n=Za(t);r>0&&(n>>=BigInt(r));n>=e&&(n-=e);return n}(t=Qa(t)),{r:s,s:i}=function(t){if(t instanceof za)return t.assertValidity(),t;try{return za.fromDER(t)}catch(e){return za.fromCompact(t)}}(e);if(0!==r&&1!==r)throw new Error("Cannot recover signature: invalid recovery bit");if(n===Ia)throw new Error("Cannot recover signature: msgHash cannot be 0");const o=1&r?"03":"02",a=ja.fromHex(o+Ja(s)),{n:c}=Fa,l=nc(s,c),u=ec(-n*l,c),h=ec(i*l,c),f=ja.BASE.multiplyAndAddUnsafe(a,u,h);if(!f)throw new Error("Cannot recover signature: point at infinify");return f.assertValidity(),f}toRawBytes(t=!1){return Ya(this.toHex(t))}toHex(t=!1){const e=Ja(this.x);if(t){return`${this.y&Sa?"03":"02"}${e}`}return`04${e}${Ja(this.y)}`}toHexX(){return this.toHex(!0).slice(2)}toRawX(){return this.toRawBytes(!0).slice(1)}assertValidity(){const t="Point is not on elliptic curve",{x:e,y:r}=this;if(!lc(e)||!lc(r))throw new Error(t);const n=ec(r*r);if(ec(n-Ua(e))!==Ia)throw new Error(t)}equals(t){return this.x===t.x&&this.y===t.y}negate(){return new ja(this.x,ec(-this.y))}double(){return Da.fromAffine(this).double().toAffine()}add(t){return Da.fromAffine(this).add(Da.fromAffine(t)).toAffine()}subtract(t){return this.add(t.negate())}multiply(t){return Da.fromAffine(this).multiply(t,this).toAffine()}multiplyAndAddUnsafe(t,e,r){const n=Da.fromAffine(this).multiply(e),s=Da.fromAffine(t).multiplyUnsafe(r),i=n.add(s);return i.equals(Da.ZERO)?void 0:i.toAffine()}}function Ga(t){return Number.parseInt(t[0],16)>=8?"00"+t:t}function $a(t){if(t.length<2||2!==t[0])throw new Error(`Invalid signature integer tag: ${Ka(t)}`);const e=t[1],r=t.subarray(2,e+2);if(!e||r.length!==e)throw new Error("Invalid signature integer: wrong length");if(0===r[0]&&r[1]<=127)throw new Error("Invalid signature integer: trailing length");return{data:Za(r),left:t.subarray(e+2)}}ja.BASE=new ja(Fa.Gx,Fa.Gy),ja.ZERO=new ja(Ia,Ia);class za{constructor(t,e){this.r=t,this.s=e,this.assertValidity()}static fromCompact(t){const e=Ha(t),r="Signature.fromCompact";if("string"!=typeof t&&!e)throw new TypeError(`${r}: Expected string or Uint8Array`);const n=e?Ka(t):t;if(128!==n.length)throw new Error(`${r}: Expected 64-byte hex`);return new za(Xa(n.slice(0,64)),Xa(n.slice(64,128)))}static fromDER(t){const e=Ha(t);if("string"!=typeof t&&!e)throw new TypeError("Signature.fromDER: Expected string or Uint8Array");const{r:r,s:n}=function(t){if(t.length<2||48!=t[0])throw new Error(`Invalid signature tag: ${Ka(t)}`);if(t[1]!==t.length-2)throw new Error("Invalid signature: incorrect length");const{data:e,left:r}=$a(t.subarray(2)),{data:n,left:s}=$a(r);if(s.length)throw new Error(`Invalid signature: left bytes after parsing: ${Ka(s)}`);return{r:e,s:n}}(e?t:Ya(t));return new za(r,n)}static fromHex(t){return this.fromDER(t)}assertValidity(){const{r:t,s:e}=this;if(!cc(t))throw new Error("Invalid Signature: r must be 0 < r < n");if(!cc(e))throw new Error("Invalid Signature: s must be 0 < s < n")}hasHighS(){const t=Fa.n>>Sa;return this.s>t}normalizeS(){return this.hasHighS()?new za(this.r,Fa.n-this.s):this}toDERRawBytes(t=!1){return Ya(this.toDERHex(t))}toDERHex(t=!1){const e=Ga(qa(this.s));if(t)return e;const r=Ga(qa(this.r)),n=qa(r.length/2),s=qa(e.length/2);return`30${qa(r.length/2+e.length/2+4)}02${n}${r}02${s}${e}`}toRawBytes(){return this.toDERRawBytes()}toHex(){return this.toDERHex()}toCompactRawBytes(){return Ya(this.toCompactHex())}toCompactHex(){return Ja(this.r)+Ja(this.s)}}function Wa(...t){if(!t.every(Ha))throw new Error("Uint8Array list expected");if(1===t.length)return t[0];const e=t.reduce(((t,e)=>t+e.length),0),r=new Uint8Array(e);for(let e=0,n=0;ee.toString(16).padStart(2,"0")));function Ka(t){if(!(t instanceof Uint8Array))throw new Error("Expected Uint8Array");let e="";for(let r=0;r_a)throw new Error("Expected number < 2^256");return t.toString(16).padStart(64,"0")}function qa(t){const e=t.toString(16);return 1&e.length?`0${e}`:e}function Xa(t){if("string"!=typeof t)throw new TypeError("hexToNumber: expected string, got "+typeof t);return BigInt(`0x${t}`)}function Ya(t){if("string"!=typeof t)throw new TypeError("hexToBytes: expected string, got "+typeof t);if(t.length%2)throw new Error("hexToBytes: received invalid unpadded hex"+t.length);const e=new Uint8Array(t.length/2);for(let r=0;r0)return BigInt(t);if("bigint"==typeof t&&cc(t))return t;throw new TypeError("Expected valid private scalar: 0 < scalar < curve.n")}function ec(t,e=Fa.P){const r=t%e;return r>=Ia?r:e+r}function rc(t,e){const{P:r}=Fa;let n=t;for(;e-- >Ia;)n*=n,n%=r;return n}function nc(t,e=Fa.P){if(t===Ia||e<=Ia)throw new Error(`invert: expected positive integers, got n=${t} mod=${e}`);let r=ec(t,e),n=e,s=Ia,i=Sa;for(;r!==Ia;){const t=n%r,e=s-i*(n/r);n=r,r=t,s=i,i=e}if(n!==Sa)throw new Error("invert: does not exist");return ec(s,e)}const sc=(t,e)=>(t+e/Ra)/e,ic=Ra**BigInt(128);function oc(t){const{n:e}=Fa,r=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-Sa*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=r,o=sc(i*t,e),a=sc(-n*t,e);let c=ec(t-o*r-a*s,e),l=ec(-o*n-a*i,e);const u=c>ic,h=l>ic;if(u&&(c=e-c),h&&(l=e-l),c>ic||l>ic)throw new Error("splitScalarEndo: Endomorphism failed, k="+t);return{k1neg:u,k1:c,k2neg:h,k2:l}}class ac{constructor(){this.v=new Uint8Array(32).fill(1),this.k=new Uint8Array(32).fill(0),this.counter=0}hmac(...t){return bc.hmacSha256(this.k,...t)}hmacSync(...t){if("function"!=typeof bc.hmacSha256Sync)throw new Error("utils.hmacSha256Sync is undefined, you need to set it");const e=bc.hmacSha256Sync(this.k,...t);if(e instanceof Promise)throw new Error("To use sync sign(), ensure utils.hmacSha256 is sync");return e}incr(){if(this.counter>=1e3)throw new Error("Tried 1,000 k values for sign(), all were invalid");this.counter+=1}async reseed(t=new Uint8Array){this.k=await this.hmac(this.v,Uint8Array.from([0]),t),this.v=await this.hmac(this.v),0!==t.length&&(this.k=await this.hmac(this.v,Uint8Array.from([1]),t),this.v=await this.hmac(this.v))}reseedSync(t=new Uint8Array){this.k=this.hmacSync(this.v,Uint8Array.from([0]),t),this.v=this.hmacSync(this.v),0!==t.length&&(this.k=this.hmacSync(this.v,Uint8Array.from([1]),t),this.v=this.hmacSync(this.v))}async generate(){return this.incr(),this.v=await this.hmac(this.v),this.v}generateSync(){return this.incr(),this.v=this.hmacSync(this.v),this.v}}function cc(t){return Ia0)e=BigInt(t);else if("string"==typeof t){if(64!==t.length)throw new Error("Expected 32 bytes of private key");e=Xa(t)}else{if(!Ha(t))throw new TypeError("Expected valid private key");if(32!==t.length)throw new Error("Expected 32 bytes of private key");e=Za(t)}if(!cc(e))throw new Error("Expected private key: 0 < key < n");return e}function fc(t){const e=Ha(t),r="string"==typeof t,n=(e||r)&&t.length;return e?33===n||65===n:r?66===n||130===n:t instanceof ja}function dc(t,e,r=!1){if(fc(t))throw new TypeError("getSharedSecret: first arg must be private key");if(!fc(e))throw new TypeError("getSharedSecret: second arg must be public key");const n=(s=e)instanceof ja?(s.assertValidity(),s):ja.fromHex(s);var s;return n.assertValidity(),n.multiply(hc(t)).toRawBytes(r)}function pc(t){return Za(t.length>32?t.slice(0,32):t)}function gc(t){const e=pc(t),r=ec(e,Fa.n);return wc(r{if((t=Qa(t)).length<40||t.length>1024)throw new Error("Expected 40-1024 bytes of private key as per FIPS 186");const e=ec(Za(t),Fa.n);if(e===Ia||e===Sa)throw new Error("Invalid private key");return function(t){return Ya(Ja(t))}(e)},randomBytes:(t=32)=>{if(yc.web)return yc.web.getRandomValues(new Uint8Array(t));throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>bc.hashToPrivateKey(bc.randomBytes(40)),bytesToHex:Ka,mod:ec,sha256:async t=>{if(yc.web){const e=await yc.web.subtle.digest("SHA-256",t.buffer);return new Uint8Array(e)}throw new Error("The environment doesn't have sha256 function")},hmacSha256:async(t,...e)=>{if(yc.web){const r=await yc.web.subtle.importKey("raw",t,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]),n=Wa(...e),s=await yc.web.subtle.sign("HMAC",r,n);return new Uint8Array(s)}throw new Error("The environment doesn't have hmac-sha256 function")},sha256Sync:void 0,hmacSha256Sync:void 0,precompute(t=8,e=ja.BASE){const r=e===ja.BASE?e:new ja(e.x,e.y);return r._setWindowSize(t),r.multiply(Ba),r}};var vc,Ec=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Ac=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};bc.hmacSha256Sync=function(t,...e){return le(Hr("sha256",t,we(e)))};class kc{constructor(t){vc.set(this,void 0),wa.assertArgument(32===me(t),"invalid private key length","privateKey","[REDACTED]"),Ec(this,vc,pe(t),"f")}get privateKey(){return Ac(this,vc,"f")}get publicKey(){return kc.computePublicKey(Ac(this,vc,"f"))}get compressedPublicKey(){return kc.computePublicKey(Ac(this,vc,"f"),!0)}sign(t){wa.assertArgument(32===me(t),"invalid digest length","digest",t);const[e,r]=mc(le(t),le(Ac(this,vc,"f")),{recovered:!0,canonical:!0}),n=za.fromHex(e);return Oa.from({r:kt("0x"+n.r.toString(16),32),s:kt("0x"+n.s.toString(16),32),v:r?28:27}).freeze()}computeShardSecret(t){const e=kc.computePublicKey(t);return pe(dc(le(Ac(this,vc,"f")),e))}static computePublicKey(t,e){let r=wa.getBytes(t,"key");if(32===r.length){return pe(function(t,e=!1){return ja.fromPrivateKey(t).toRawBytes(e)}(r,!!e))}if(64===r.length){const t=new Uint8Array(65);t[0]=4,t.set(r,1),r=t}return pe(ja.fromHex(r).toRawBytes(e))}static recoverPublicKey(t,e){const r=Oa.from(e),n=za.fromCompact(le(we([r.r,r.s]))).toDERRawBytes(),s=function(t,e,r,n=!1){return ja.fromSignature(t,e,r).toRawBytes(n)}(le(t),n,r.yParity);return null!=s?pe(s):wa.throwArgumentError("invalid signautre for digest","signature",e)}static _addPoints(t,e,r){const n=ja.fromHex(kc.computePublicKey(t).substring(2)),s=ja.fromHex(kc.computePublicKey(e).substring(2));return"0x"+n.add(s).toHex(!!r)}}function Tc(t,e){return{address:ws(t),storageKeys:(e||[]).map(((t,e)=>{if(32!==me(t))throw new Error("");return t.toLowerCase()}))}}function Pc(t){if(Array.isArray(t))return t.map(((t,e)=>{if(Array.isArray(t)){if(t.length>2)throw new Error("");return Tc(t[0],t[1])}return Tc(t.address,t.storageKeys)}));const e=Object.keys(t).map((e=>{const r=t[e].reduce(((t,e)=>(t[e]=!0,t)),{});return Tc(e,Object.keys(r).sort())}));return e.sort(((t,e)=>t.address.localeCompare(e.address))),e}function Nc(t){return ws(dn("0x"+kc.computePublicKey(t,!1).substring(4)).substring(26))}function xc(t,e){return Nc(kc.recoverPublicKey(t,e))}vc=new WeakMap;const Oc=new T("@ethersproject/transaction@6.0.0-beta.2");var Ic,Sc=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Rc=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Bc=BigInt(0),Cc=BigInt(2),_c=BigInt(27),Fc=BigInt(28),Uc=BigInt(35),Lc=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");function Dc(t){return"0x"===t?null:ws(t)}function Mc(t,e){try{return pe(t)}catch(r){return Oc.throwArgumentError("invalid data",e,t)}}function jc(t,e){try{return Pc(t)}catch(r){return Oc.throwArgumentError("invalid accessList",e,t)}}function Gc(t,e){return"0x"===t?0:Oc.getNumber(t,e)}function $c(t,e){if("0x"===t)return Bc;const r=Oc.getBigInt(t,e);return r>Lc&&Oc.throwArgumentError("value exceeds uint size",e,r),r}function zc(t,e){const r=Oc.getBigInt(t,"value"),n=Tt(r);return n.length>32&&Oc.throwArgumentError("value too large",`tx.${e}`,r),n}function Wc(t){return Pc(t).map((t=>[t.address,t.storageKeys]))}function Hc(t,e){const r=[zc(t.nonce||0,"nonce"),zc(t.gasPrice||0,"gasPrice"),zc(t.gasLimit||0,"gasLimit"),null!=t.to?ws(t.to):"0x",zc(t.value||0,"value"),t.data||"0x"];let n=Bc;if(null!=t.chainId)n=Oc.getBigInt(t.chainId,"tx.chainId"),e&&null!=e.networkV&&e.legacyChainId!==n&&Oc.throwArgumentError("tx.chainId/sig.v mismatch","sig",e);else if(e){const t=e.legacyChainId;null!=t&&(n=t)}if(!e)return n!==Bc&&(r.push(Tt(n)),r.push("0x"),r.push("0x")),As(r);let s=BigInt(27+e.yParity);return n!==Bc?s=Oa.getChainIdV(n,e.v):BigInt(e.v)!==s&&Oc.throwArgumentError("tx.chainId/sig.v mismatch","sig",e),r.push(Tt(s)),r.push(Tt(e.r)),r.push(Tt(e.s)),As(r)}function Vc(t,e,r){let n;try{if(n=Gc(e[0],"yParity"),0!==n&&1!==n)throw new Error("bad yParity")}catch(t){return Oc.throwArgumentError("invalid yParity","yParity",e[0])}const s=Ee(e[1],32),i=Ee(e[2],32),o=Oa.from({r:s,s:i,yParity:n});t.signature=o}function Kc(t,e){const r=[zc(t.chainId||0,"chainId"),zc(t.nonce||0,"nonce"),zc(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),zc(t.maxFeePerGas||0,"maxFeePerGas"),zc(t.gasLimit||0,"gasLimit"),null!=t.to?ws(t.to):"0x",zc(t.value||0,"value"),t.data||"0x",Wc(t.accessList||[])];return e&&(r.push(zc(e.yParity,"yParity")),r.push(Tt(e.r)),r.push(Tt(e.s))),we(["0x02",As(r)])}function Jc(t,e){const r=[zc(t.chainId||0,"chainId"),zc(t.nonce||0,"nonce"),zc(t.gasPrice||0,"gasPrice"),zc(t.gasLimit||0,"gasLimit"),null!=t.to?ws(t.to):"0x",zc(t.value||0,"value"),t.data||"0x",Wc(t.accessList||[])];return e&&(r.push(zc(e.yParity,"recoveryParam")),r.push(Tt(e.r)),r.push(Tt(e.s))),we(["0x01",As(r)])}class qc{constructor(){Ic.set(this,void 0),Sc(this,Ic,{type:null,to:null,nonce:0,gasLimit:BigInt(0),gasPrice:null,maxPriorityFeePerGas:null,maxFeePerGas:null,data:"0x",value:BigInt(0),chainId:BigInt(0),sig:null,accessList:null},"f")}get type(){return c(Rc(this,Ic,"f"),"type")}get typeName(){switch(this.type){case 0:return"legacy";case 1:return"eip-2930";case 2:return"eip-1559"}return null}set type(t){switch(t){case null:l(Rc(this,Ic,"f"),"type",null);break;case 0:case"legacy":l(Rc(this,Ic,"f"),"type",0);break;case 1:case"berlin":case"eip-2930":l(Rc(this,Ic,"f"),"type",1);break;case 2:case"london":case"eip-1559":l(Rc(this,Ic,"f"),"type",2);break;default:throw new Error("unsupported transaction type")}}get to(){return c(Rc(this,Ic,"f"),"to")}set to(t){l(Rc(this,Ic,"f"),"to",null==t?null:ws(t))}get nonce(){return c(Rc(this,Ic,"f"),"nonce")}set nonce(t){l(Rc(this,Ic,"f"),"nonce",Oc.getNumber(t,"value"))}get gasLimit(){return c(Rc(this,Ic,"f"),"gasLimit")}set gasLimit(t){l(Rc(this,Ic,"f"),"gasLimit",Oc.getBigInt(t))}get gasPrice(){const t=c(Rc(this,Ic,"f"),"gasPrice");return null!=t||0!==this.type&&1!==this.type?t:Bc}set gasPrice(t){l(Rc(this,Ic,"f"),"gasPrice",null==t?null:Oc.getBigInt(t,"gasPrice"))}get maxPriorityFeePerGas(){const t=c(Rc(this,Ic,"f"),"maxPriorityFeePerGas");return null==t&&2===this.type?Bc:t}set maxPriorityFeePerGas(t){l(Rc(this,Ic,"f"),"maxPriorityFeePerGas",null==t?null:Oc.getBigInt(t,"maxPriorityFeePerGas"))}get maxFeePerGas(){const t=c(Rc(this,Ic,"f"),"maxFeePerGas");return null==t&&2===this.type?Bc:t}set maxFeePerGas(t){l(Rc(this,Ic,"f"),"maxFeePerGas",null==t?null:Oc.getBigInt(t,"maxFeePerGas"))}get data(){return c(Rc(this,Ic,"f"),"data")}set data(t){l(Rc(this,Ic,"f"),"data",pe(t))}get value(){return c(Rc(this,Ic,"f"),"value")}set value(t){l(Rc(this,Ic,"f"),"value",Oc.getBigInt(t,"value"))}get chainId(){return c(Rc(this,Ic,"f"),"chainId")}set chainId(t){l(Rc(this,Ic,"f"),"chainId",Oc.getBigInt(t))}get signature(){return c(Rc(this,Ic,"f"),"sig")||null}set signature(t){l(Rc(this,Ic,"f"),"sig",null==t?null:Oa.from(t))}get accessList(){const t=c(Rc(this,Ic,"f"),"accessList")||null;return null!=t||1!==this.type&&2!==this.type?t:[]}set accessList(t){l(Rc(this,Ic,"f"),"accessList",null==t?null:Pc(t))}get hash(){if(null==this.signature)throw new Error("cannot hash unsigned transaction; maybe you meant .unsignedHash");return dn(this.serialized)}get unsignedHash(){return dn(this.unsignedSerialized)}get from(){return null==this.signature?null:xc(this.unsignedSerialized,this.signature)}get fromPublicKey(){return null==this.signature?null:""}isSigned(){return null!=this.signature}get serialized(){if(null==this.signature)throw new Error("cannot serialize unsigned transaction; maybe you meant .unsignedSerialized");const t=this.inferTypes();if(1!==t.length)throw new Error("cannot determine transaction type; specify type manually");switch(t[0]){case 0:return Hc(this,this.signature);case 1:return Jc(this,this.signature);case 2:return Kc(this,this.signature)}throw new Error("unsupported type")}get unsignedSerialized(){const t=this.inferTypes();if(1!==t.length)throw new Error("cannot determine transaction type; specify type manually");switch(t[0]){case 0:return Hc(this);case 1:return Jc(this);case 2:return Kc(this)}throw new Error("unsupported type")}inferTypes(){const t=null!=this.gasPrice,e=null!=this.maxFeePerGas||null!=this.maxPriorityFeePerGas,r=null!=this.accessList;if(null!=this.maxFeePerGas&&null!=this.maxPriorityFeePerGas&&this.maxFeePerGas(Object.freeze(t.storageKeys),Object.freeze(t)))))),Object.freeze(Rc(this,Ic,"f")),this}isFrozen(){return Object.isFrozen(Rc(this,Ic,"f"))}static from(t){if("string"==typeof t){const e=le(t);if(e[0]>=127)return qc.from(function(t){const e=xs(t);if(!Array.isArray(e)||9!==e.length&&6!==e.length)return Oc.throwArgumentError("invalid field count for legacy transaction","data",t);const r={type:0,nonce:Gc(e[0],"nonce"),gasPrice:$c(e[1],"gasPrice"),gasLimit:$c(e[2],"gasLimit"),to:Dc(e[3]),value:$c(e[4],"value"),data:Mc(e[5],"dta"),chainId:Bc};if(6===e.length)return r;const n=$c(e[6],"v"),s=$c(e[7],"r"),i=$c(e[8],"s");if(s===Bc&&i===Bc)r.chainId=n;else{let s=(n-Uc)/Cc;sFc)&&Oc.throwArgumentError("non-canonical legacy v","v",e[6]),r.signature=Oa.from({r:Ee(e[7],32),s:Ee(e[8],32),v:n}),r.hash=dn(t)}return r}(e));switch(e[0]){case 1:return qc.from(function(t){const e=xs(Oc.getBytes(t).slice(1));(!Array.isArray(e)||8!==e.length&&11!==e.length)&&Oc.throwArgumentError("invalid field count for transaction type: 1","data",pe(t));const r={type:1,chainId:$c(e[0],"chainId"),nonce:Gc(e[1],"nonce"),gasPrice:$c(e[2],"gasPrice"),gasLimit:$c(e[3],"gasLimit"),to:Dc(e[4]),value:$c(e[5],"value"),data:Mc(e[6],"data"),accessList:jc(e[7],"accessList")};return 8===e.length||(r.hash=dn(t),Vc(r,e.slice(8))),r}(e));case 2:return qc.from(function(t){const e=xs(Oc.getBytes(t).slice(1));(!Array.isArray(e)||9!==e.length&&12!==e.length)&&Oc.throwArgumentError("invalid field count for transaction type: 2","data",pe(t));const r=$c(e[2],"maxPriorityFeePerGas"),n=$c(e[3],"maxFeePerGas"),s={type:2,chainId:$c(e[0],"chainId"),nonce:Gc(e[1],"nonce"),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:$c(e[4],"gasLimit"),to:Dc(e[5]),value:$c(e[6],"value"),data:Mc(e[7],"data"),accessList:jc(e[8],"accessList")};return 9===e.length||(s.hash=dn(t),Vc(s,e.slice(9))),s}(e))}throw new Error("unsupported transaction type")}const e=new qc;if(null!=t.type&&(e.type=t.type),null!=t.to&&(e.to=t.to),null!=t.nonce&&(e.nonce=t.nonce),null!=t.gasLimit&&(e.gasLimit=t.gasLimit),null!=t.gasPrice&&(e.gasPrice=t.gasPrice),null!=t.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=t.maxPriorityFeePerGas),null!=t.maxFeePerGas&&(e.maxFeePerGas=t.maxFeePerGas),null!=t.data&&(e.data=t.data),null!=t.value&&(e.value=t.value),null!=t.chainId&&(e.chainId=t.chainId),null!=t.signature&&(e.signature=Oa.from(t.signature)),null!=t.accessList&&(e.accessList=t.accessList),null!=t.hash){if(!e.isSigned())throw new Error("unsigned transaction cannot have a hashs");if(e.hash!==t.hash)throw new Error("hash mismatch")}if(null!=t.from){if(!e.isSigned())throw new Error("unsigned transaction cannot have a from");if(e.from.toLowerCase()!==(t.from||"").toLowerCase())throw new Error("from mismatch")}return e}}Ic=new WeakMap;var Xc,Yc,Zc=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Qc=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function tl(t){return null==t?null:t}function el(t){return null==t?null:t.toString()}class rl{constructor(t,e,r){n(this,{gasPrice:tl(t),maxFeePerGas:tl(e),maxPriorityFeePerGas:tl(r)})}toJSON(){const{gasPrice:t,maxFeePerGas:e,maxPriorityFeePerGas:r}=this;return{_type:"FeeData",gasPrice:el(t),maxFeePerGas:el(e),maxPriorityFeePerGas:el(r)}}}class nl{constructor(t,e){Xc.set(this,void 0),null==e&&(e=ul),Zc(this,Xc,Object.freeze(t.transactions.map((t=>{if("string"!=typeof t&&t.provider!==e)throw new Error("provider mismatch");return t}))),"f"),n(this,{provider:e,hash:tl(t.hash),number:t.number,timestamp:t.timestamp,parentHash:t.parentHash,nonce:t.nonce,difficulty:t.difficulty,gasLimit:t.gasLimit,gasUsed:t.gasUsed,miner:t.miner,extraData:t.extraData,baseFeePerGas:tl(t.baseFeePerGas)})}get transactions(){return Qc(this,Xc,"f")}toJSON(){const{baseFeePerGas:t,difficulty:e,extraData:r,gasLimit:n,gasUsed:s,hash:i,miner:o,nonce:a,number:c,parentHash:l,timestamp:u,transactions:h}=this;return{_type:"Block",baseFeePerGas:el(t),difficulty:el(e),extraData:r,gasLimit:el(n),gasUsed:el(s),hash:i,miner:o,nonce:a,number:c,parentHash:l,timestamp:u,transactions:h}}[(Xc=new WeakMap,Symbol.iterator)](){let t=0;return{next:()=>t{if(e!==t.provider)throw new Error("provider mismatch");return t}))),"f"),n(this,{provider:e,to:t.to,from:t.from,contractAddress:t.contractAddress,hash:t.hash,index:t.index,blockHash:t.blockHash,blockNumber:t.blockNumber,logsBloom:t.logsBloom,gasUsed:t.gasUsed,cumulativeGasUsed:t.cumulativeGasUsed,gasPrice:t.effectiveGasPrice||t.gasPrice,byzantium:t.byzantium,status:t.status,root:t.root})}get logs(){return Qc(this,Yc,"f")}toJSON(){const{to:t,from:e,contractAddress:r,hash:n,index:s,blockHash:i,blockNumber:o,logsBloom:a,logs:c,byzantium:l,status:u,root:h}=this;return{_type:"TransactionReceipt",blockHash:i,blockNumber:o,byzantium:l,contractAddress:r,cumulativeGasUsed:el(this.cumulativeGasUsed),from:e,gasPrice:el(this.gasPrice),gasUsed:el(this.gasUsed),hash:n,index:s,logs:c,logsBloom:a,root:h,status:u,to:t}}get length(){return this.logs.length}[(Yc=new WeakMap,Symbol.iterator)](){let t=0;return{next:()=>tthis.hash(t))),new nl(r,e)}blockWithTransactions(t,e){throw new Error}transactionRequest(t,e){return pl(this,hl,"f").transactionRequest(t)}transactionResponse(t,e){null==(t=Object.assign({},t)).data&&null!=t.input&&(t.data=t.input),null==t.gasLimit&&t.gas&&(t.gasLimit=t.gas),t=pl(this,hl,"f").transactionResponse(t);const r=Oa.from({r:t.r,s:t.s,v:t.v});return t.signature=r,null==t.chainId&&(t.chainId=r.legacyChainId),new ol(t,e)}log(t,e){const r=this.object({address:this.address,blockHash:this.hash,blockNumber:this.number,data:this.data,index:this.number,removed:this.boolean,topics:this.topics,transactionHash:this.hash,transactionIndex:this.number},{index:["logIndex"]})(t);return new sl(r,e)}receipt(t,e){const r=this.object({blockHash:this.hash,blockNumber:this.number,contractAddress:this.allowNull(this.address),cumulativeGasUsed:this.bigNumber,from:this.address,gasUsed:this.bigNumber,logs:this.arrayOf((t=>this.log(t,e))),logsBloom:this.data,root:this.allowNull(this.data),status:this.allowNull(this.number),to:this.address,gasPrice:this.allowNull(this.bigNumber),hash:this.hash,index:this.number,type:this.allowNull(this.number,0)},{hash:["transactionHash"],gasPrice:["effectiveGasPrice"],index:["transactionIndex"]})(t);if(null!=r.root)if(r.root.length<=4){const t=parseInt(r.root);if(0!==t&&1!==t)return Yo.throwError("invalid alt-root-status","BAD_DATA",{value:r.root});if(null!=r.status&&r.status!==t)return Yo.throwError("alt-root-status/status mismatch","BAD_DATA",{value:{root:r.root,status:r.status}});r.status=t,delete r.root}else if(!se(r.root,32))return Yo.throwError("invalid receipt root hash","BAD_DATA",{value:r.root});return new il(r,e)}topics(t){return pl(this,hl,"f").topics(t)}filter(t){return pl(this,hl,"f").filter(t)}filterLog(t){return console.log("ME",t),null}transaction(t){throw new Error}accessList(t){return Pc(t)}allowFalsish(t,e){return r=>r?t.call(this,r):e}allowNull(t,e){return r=>null==r?e:t.call(this,r)}arrayOf(t){return e=>{if(!Array.isArray(e))throw new Error("not an array");return e.map((e=>t.call(this,e)))}}bigNumber(t){return Yo.getBigInt(t,"value")}uint256(t){const e=this.bigNumber(t);return(e<0||e>gl)&&Yo.throwArgumentError("invalid uint256","value",t),e}boolean(t){switch(t){case!0:case"true":return!0;case!1:case"false":return!1}return Yo.throwArgumentError(`invalid boolean; ${JSON.stringify(t)}`,"value",t)}_hexstring(t){return null==t&&(t=!1),function(e){if(se(e,t))return e.toLowerCase();throw new Error("bad hexstring")}}data(t){return null==me(t)&&Yo.throwArgumentError("","value",t),t}hash(t){return 32!==me(t)&&Yo.throwArgumentError("","value",t),pl(this,hl,"f").data(t)}number(t){return Yo.getNumber(t)}object(t,e){return r=>{const n={};for(const s in t){let i=s;if(e&&s in e&&!(i in r))for(const t of e[s])if(t in r){i=t;break}try{const e=t[s].call(this,r[i]);void 0!==e&&(n[s]=e)}catch(t){const e=t instanceof Error?t.message:"not-an-error";Yo.throwError(`invalid value for value.${s} (${e})`,"BAD_DATA",{value:r})}}return n}}storageSlot(t){return kt(Yo.getBigInt(t),32)}}hl=new WeakMap,fl=new WeakMap;class yl{constructor(t){n(this,{name:t})}clone(){return new yl(this.name)}validate(t){return this}}class bl extends yl{constructor(t=0,e){super(`org.ethers.plugins.gas-cost#${t||0}`);const r={effectiveBlock:t};function s(t,n){let s=(e||{})[t];null==s&&(s=n),"number"!=typeof s&&Yo.throwArgumentError(`invalud value for ${t}`,"costs",e),r[t]=s}s("txBase",21e3),s("txCreate",32e3),s("txDataZero",4),s("txDataNonzero",16),s("txAccessListStorageKey",1900),s("txAccessListAddress",2400),n(this,r)}clone(){return new bl(this.effectiveBlock,this)}}class vl extends yl{constructor(t,e){super("org.ethers.plugins.ens"),n(this,{address:t||"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",targetNetwork:null==e?1:e})}clone(){return new vl(this.address,this.targetNetwork)}validate(t){return t.formatter.address(this.address),this}}class El extends yl{constructor(t){super("org.ethers.plugins.max-priority-fee"),n(this,{priorityFee:Yo.getBigInt(t)})}async getPriorityFee(t){return this.priorityFee}clone(){return new El(this.priorityFee)}}var Al,kl=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Tl=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Pl=new Map,Nl=new ml;class xl{constructor(t,e,r){Al.set(this,void 0);const n=Yo.getBigInt(e);null==r&&(r=Nl);const s=new Map;kl(this,Al,{name:t,chainId:n,formatter:r,plugins:s},"f")}toJSON(){return{name:this.name,chainId:this.chainId}}get name(){return c(Tl(this,Al,"f"),"name")}set name(t){l(Tl(this,Al,"f"),"name",t)}get chainId(){return c(Tl(this,Al,"f"),"chainId")}set chainId(t){l(Tl(this,Al,"f"),"chainId",Yo.getBigInt(t,"chainId"))}get formatter(){return c(Tl(this,Al,"f"),"formatter")}set formatter(t){l(Tl(this,Al,"f"),"formatter",t)}get plugins(){return Array.from(Tl(this,Al,"f").plugins.values())}attachPlugin(t){if(this.isFrozen())throw new Error("frozen");if(Tl(this,Al,"f").plugins.get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return Tl(this,Al,"f").plugins.set(t.name,t.validate(this)),this}getPlugin(t){return Tl(this,Al,"f").plugins.get(t)||null}getPlugins(t){return this.plugins.filter((e=>e.name.split("#")[0]===t))}clone(){const t=new xl(this.name,this.chainId,this.formatter);return this.plugins.forEach((e=>{t.attachPlugin(e.clone())})),t}freeze(){return Object.freeze(Tl(this,Al,"f")),this}isFrozen(){return Object.isFrozen(Tl(this,Al,"f"))}computeIntrinsicGas(t){const e=this.getPlugin("org.ethers.gas-cost")||new bl;let r=e.txBase;if(null==t.to&&(r+=e.txCreate),t.data)for(let n=2;n{this._poll(t,Hl(this,_l,"f"))}),"f")}async _poll(t,e){throw new Error("sub-classes must override this")}start(){Hl(this,Fl,"f").call(this,-2),Hl(this,_l,"f").on("block",Hl(this,Fl,"f"))}stop(){Hl(this,_l,"f").off("block",Hl(this,Fl,"f"))}pause(t){this.stop()}resume(){this.start()}}_l=new WeakMap,Fl=new WeakMap;class ql extends Jl{constructor(t,e){super(t),Ul.set(this,void 0),Wl(this,Ul,Vl(e),"f")}async _poll(t,e){throw new Error("@TODO")}}Ul=new WeakMap;class Xl extends Jl{constructor(t,e){super(t),Ll.set(this,void 0),Wl(this,Ll,e,"f")}async _poll(t,e){const r=await e.getTransactionReceipt(Hl(this,Ll,"f"));r&&e.emit(Hl(this,Ll,"f"),r)}}Ll=new WeakMap;class Yl{constructor(t,e){Dl.add(this),Ml.set(this,void 0),jl.set(this,void 0),Gl.set(this,void 0),$l.set(this,void 0),Wl(this,Ml,t,"f"),Wl(this,jl,Vl(e),"f"),Wl(this,Gl,Hl(this,Dl,"m",zl).bind(this),"f"),Wl(this,$l,-2,"f")}start(){-2===Hl(this,$l,"f")&&Hl(this,Ml,"f").getBlockNumber().then((t=>{Wl(this,$l,t,"f")})),Hl(this,Ml,"f").on("block",Hl(this,Gl,"f"))}stop(){Hl(this,Ml,"f").off("block",Hl(this,Gl,"f"))}pause(t){this.stop(),t&&Wl(this,$l,-2,"f")}resume(){this.start()}}Ml=new WeakMap,jl=new WeakMap,Gl=new WeakMap,$l=new WeakMap,Dl=new WeakSet,zl=async function(t){if(-2===Hl(this,$l,"f"))return;const e=Vl(Hl(this,jl,"f"));e.fromBlock=Hl(this,$l,"f")+1,e.toBlock=t;const r=await Hl(this,Ml,"f").getLogs(e);if(0!==r.length){Wl(this,$l,t,"f");for(const t of r)Hl(this,Ml,"f").emit(Hl(this,jl,"f"),t)}else Hl(this,$l,"f"){if("bigint"==typeof e)return`bigint:${e.toString()}`;if("string"==typeof e)return e.toLowerCase();if("object"==typeof e&&!Array.isArray(e)){const t=Object.keys(e);return t.sort(),t.reduce(((t,r)=>(t[r]=e[r],t)),{})}return e}))}class mu{constructor(t){n(this,{name:t})}start(){}stop(){}pause(t){}resume(){}}function yu(t){return(t=Array.from(new Set(t).values())).sort(),t}async function bu(t,e){if(null==t)throw new Error("invalid event");if(Array.isArray(t)&&(t={topics:t}),"string"==typeof t)switch(t){case"block":case"pending":case"debug":case"network":return{type:t,tag:t}}if(se(t,32)){const e=t.toLowerCase();return{type:"transaction",tag:wu("tx",{hash:e}),hash:e}}if(t.orphan){const e=t;return{type:"orphan",tag:wu("orphan",e),filter:(r=e,JSON.parse(JSON.stringify(r)))}}var r;if(t.address||t.topics){const r=t,n={topics:(r.topics||[]).map((t=>null==t?null:Array.isArray(t)?yu(t.map((t=>t.toLowerCase()))):t.toLowerCase()))};if(r.address){const t=[],s=[],i=r=>{se(r)?t.push(r):s.push((async()=>{t.push(await Bs(r,e))})())};Array.isArray(r.address)?r.address.forEach(i):i(r.address),s.length&&await Promise.all(s),n.address=yu(t.map((t=>t.toLowerCase())))}return{filter:n,tag:wu("event",n),type:"event"}}return Yo.throwArgumentError("unknown ProviderEvent","event",t)}function vu(){return(new Date).getTime()}class Eu{constructor(t){if(Zl.add(this),Ql.set(this,void 0),tu.set(this,void 0),eu.set(this,void 0),ru.set(this,void 0),nu.set(this,void 0),su.set(this,void 0),iu.set(this,void 0),ou.set(this,void 0),au.set(this,void 0),"any"===t)du(this,nu,!0,"f"),du(this,ru,null,"f");else if(t){const e=xl.from(t);du(this,nu,!1,"f"),du(this,ru,Promise.resolve(e),"f"),setTimeout((()=>{this.emit("network",e,null)}),0)}else du(this,nu,!1,"f"),du(this,ru,null,"f");du(this,su,new Map,"f"),du(this,Ql,new Map,"f"),du(this,tu,new Map,"f"),du(this,eu,null,"f"),du(this,iu,0,"f"),du(this,ou,new Map,"f"),du(this,au,!1,"f")}get provider(){return this}get plugins(){return Array.from(pu(this,tu,"f").values())}attachPlugin(t){if(pu(this,tu,"f").get(t.name))throw new Error(`cannot replace existing plugin: ${t.name} `);return pu(this,tu,"f").set(t.name,t.validate(this)),this}getPlugin(t){return pu(this,tu,"f").get(t)||null}set disableCcipRead(t){du(this,au,!!t,"f")}get disableCcipRead(){return pu(this,au,"f")}async ccipReadFetch(t,e,r){if(this.disableCcipRead||0===r.length||null==t.to)return null;const n=t.to.toLowerCase(),s=e.toLowerCase(),i=[];for(let e=0;e=400&&u.statusCode<500)return Yo.throwError(`response not found during CCIP fetch: ${l}`,"OFFCHAIN_FAULT",{reason:"404_MISSING_RESOURCE",transaction:t,info:{url:o,errorMessage:l}});i.push(l)}return Yo.throwError(`error encountered during CCIP fetch: ${i.map((t=>JSON.stringify(t))).join(", ")}`,"OFFCHAIN_FAULT",{reason:"500_SERVER_ERROR",transaction:t,info:{urls:r,errorMessages:i}})}_wrapTransaction(t,e,r){return t}_detectNetwork(){return Yo.throwError("sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(t){return Yo.throwError(`unsupported method: ${t.method}`,"UNSUPPORTED_OPERATION",{operation:t.method,info:t})}async getBlockNumber(){return Yo.getNumber(await pu(this,Zl,"m",cu).call(this,{method:"getBlockNumber"}),"%response")}async _getAddress(t){return"string"==typeof t?t:await t.getAddress()}async _getBlockTag(t){const e=await this.getNetwork();if("number"==typeof t&&Number.isSafeInteger(t)&&t<0){let r=await this.getBlockNumber();return r+=t,r<0&&(r=0),e.formatter.blockTag(r)}return e.formatter.blockTag(t)}async getNetwork(){if(null==pu(this,ru,"f")){const t=this._detectNetwork().then((t=>(this.emit("network",t,null),t)),(e=>{throw pu(this,ru,"f")===t&&du(this,ru,null,"f"),e}));return du(this,ru,t,"f"),await t}const t=pu(this,ru,"f"),[e,r]=await Promise.all([t,this._detectNetwork()]);return e.chainId!==r.chainId&&(pu(this,nu,"f")?(this.emit("network",r,e),pu(this,ru,"f")===t&&du(this,ru,Promise.resolve(r),"f")):Yo.throwError(`network changed: ${e.chainId} => ${r.chainId} `,"NETWORK_ERROR",{event:"changed"})),e.clone().freeze()}async getFeeData(){const{block:t,gasPrice:r}=await e({block:this.getBlock("latest"),gasPrice:(async()=>{try{const t=await pu(this,Zl,"m",cu).call(this,{method:"getGasPrice"});return Yo.getBigInt(t,"%response")}catch(t){}return null})()});let n=null,s=null;if(t&&t.baseFeePerGas){s=BigInt("1500000000");const e=(await this.getNetwork()).getPlugin("org.ethers.plugins.max-priority-fee");e&&(s=await e.getPriorityFee(this)),n=t.baseFeePerGas*gu+s}return new rl(r,n,s)}async _getTransaction(t){const r=await this.getNetwork(),n=Object.assign({},t,await e({to:t.to?Bs(t.to,this):void 0,from:t.from?Bs(t.from,this):void 0}));return r.formatter.transactionRequest(n)}async estimateGas(t){const e=await this._getTransaction(t);return Yo.getBigInt(await pu(this,Zl,"m",cu).call(this,{method:"estimateGas",transaction:e}),"%response")}async call(t){const{tx:r,blockTag:n}=await e({tx:this._getTransaction(t),blockTag:this._getBlockTag(t.blockTag)});return pu(this,Zl,"m",lu).call(this,r,n,t.enableCcipRead?0:-1)}async getBalanceOf(t,r){const{address:n,blockTag:s}=await e({address:Bs(t),blockTag:this._getBlockTag(r)});return Yo.getBigInt(await pu(this,Zl,"m",cu).call(this,{method:"getBalance",address:n,blockTag:s}),"%response")}async getTransactionCountOf(t,r){const{address:n,blockTag:s}=await e({address:Bs(t),blockTag:this._getBlockTag(r)});return Yo.getNumber(await pu(this,Zl,"m",cu).call(this,{method:"getTransactionCount",address:n,blockTag:s}),"%response")}async getCode(t,r){const{address:n,blockTag:s}=await e({address:Bs(t),blockTag:this._getBlockTag(r)});return pe(await pu(this,Zl,"m",cu).call(this,{method:"getCode",address:n,blockTag:s}))}async getStorageAt(t,r,n){const s=Yo.getBigInt(r),{address:i,blockTag:o}=await e({address:Bs(t),blockTag:this._getBlockTag(n)});return pe(await pu(this,Zl,"m",cu).call(this,{method:"getStorageAt",address:i,position:s,blockTag:o}))}async broadcastTransaction(t){throw new Error}async getBlock(t){const e=(await this.getNetwork()).formatter,r=await pu(this,Zl,"m",uu).call(this,t,!1);return null==r?null:e.block(r,this)}async getBlockWithTransactions(t){const e=(await this.getNetwork()).formatter,r=pu(this,Zl,"m",uu).call(this,t,!0);return null==r?null:e.blockWithTransactions(r,this)}async getTransaction(t){const e=(await this.getNetwork()).formatter,r=await pu(this,Zl,"m",cu).call(this,{method:"getTransaction",hash:t});return e.transactionResponse(r,this)}async getTransactionReceipt(t){const e=(await this.getNetwork()).formatter,r=await pu(this,Zl,"m",cu).call(this,{method:"getTransactionReceipt",hash:t});if(null==r)return null;if(null==r.gasPrice&&null==r.effectiveGasPrice){const e=await pu(this,Zl,"m",cu).call(this,{method:"getTransaction",hash:t});r.effectiveGasPrice=e.gasPrice}return e.receipt(r,this)}async _getFilter(t){const r=(t.topics||[]).map((t=>null==t?null:Array.isArray(t)?yu(t.map((t=>t.toLowerCase()))):t.toLowerCase())),n="blockHash"in t?t.blockHash:void 0,s={};t.address&&(Array.isArray(t.address)?s.address=Promise.all(t.address.map((t=>Bs(t,this)))):s.address=Bs(t.address,this));const i=e=>{null!=t[e]&&(s[e]=this._getBlockTag(t[e]))};i("fromBlock"),i("toBlock");const o=await e(s);if(Array.isArray(o.address)&&o.address.sort(),o.topics=r,n){if(t.fromBlock||t.toBlock)throw new Error("invalid filter");o.blockHash=n}return o}async getLogs(t){const{network:r,filter:n}=await e({network:this.getNetwork(),filter:this._getFilter(t)});return(await pu(this,Zl,"m",cu).call(this,{method:"getLogs",filter:n})).map((t=>r.formatter.log(t,this)))}_getProvider(t){return Yo.throwError("provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(t){return await ga.fromName(this,t)}async getAvatar(t){const e=await this.getResolver(t);return e?await e.getAvatar():null}async resolveName(t){if("string"!=typeof t){const e=await t.getAddress();return null==e?Yo.throwArgumentError("Addressable returned no address","name",t):e}{const e=await this.getResolver(t);if(e)return await e.getAddress()}return null}async lookupAddress(t){throw new Error}async waitForTransaction(t,e=1,r){return 0===e?this.getTransactionReceipt(t):new Promise((async(n,s)=>{let i=null;const o=async r=>{try{const s=await this.getTransactionReceipt(t);if(null!=s&&r-s.blockNumber+1>=e)return n(s),this.off("block",o),void(i&&(clearTimeout(i),i=null))}catch(t){console.log("EEE",t)}this.once("block",o)};null!=r&&(i=setTimeout((()=>{null!=i&&(i=null,this.off("block",o),s(Yo.makeError("timeout","TIMEOUT",{reason:"timeout"})))}),r)),o(await this.getBlockNumber())}))}async waitForBlock(t){throw new Error}_clearTimeout(t){const e=pu(this,ou,"f").get(t);e&&(e.timer&&clearTimeout(e.timer),pu(this,ou,"f").delete(t))}_setTimeout(t,e=0){var r,n;const s=(du(this,iu,(n=pu(this,iu,"f"),r=n++,n),"f"),r),i=()=>{pu(this,ou,"f").delete(s),t()};if(this.paused)pu(this,ou,"f").set(s,{timer:null,func:i,time:e});else{const t=setTimeout(i,e);pu(this,ou,"f").set(s,{timer:t,func:i,time:vu()})}return s}_forEachSubscriber(t){for(const e of pu(this,Ql,"f").values())t(e.subscriber)}_getSubscriber(t){switch(t.type){case"debug":case"network":return new mu(t.type);case"block":return new Kl(this);case"event":return new Yl(this,t.filter);case"transaction":return new Xl(this,t.hash);case"orphan":return new ql(this,t.filter)}throw new Error(`unsupported event: ${t.type}`)}_recoverSubscriber(t,e){for(const r of pu(this,Ql,"f").values())if(r.subscriber===t){r.started&&r.subscriber.stop(),r.subscriber=e,r.started&&e.start(),null!=pu(this,eu,"f")&&e.pause(pu(this,eu,"f"));break}}async on(t,e){const r=await pu(this,Zl,"m",fu).call(this,t);return r.listeners.push({listener:e,once:!1}),r.started||(r.subscriber.start(),r.started=!0,null!=pu(this,eu,"f")&&r.subscriber.pause(pu(this,eu,"f"))),this}async once(t,e){const r=await pu(this,Zl,"m",fu).call(this,t);return r.listeners.push({listener:e,once:!0}),r.started||(r.subscriber.start(),r.started=!0,null!=pu(this,eu,"f")&&r.subscriber.pause(pu(this,eu,"f"))),this}async emit(t,...e){const r=await pu(this,Zl,"m",hu).call(this,t,e);if(!r)return!1;const n=r.listeners.length;return r.listeners=r.listeners.filter((({listener:r,once:n})=>{const s=new a(this,n?null:r,t);try{r.call(this,...e,s)}catch(t){}return!n})),n>0}async listenerCount(t){if(t){const e=await pu(this,Zl,"m",hu).call(this,t);return e?e.listeners.length:0}let e=0;for(const{listeners:t}of pu(this,Ql,"f").values())e+=t.length;return e}async listeners(t){if(t){const e=await pu(this,Zl,"m",hu).call(this,t);return e?e.listeners.map((({listener:t})=>t)):[]}let e=[];for(const{listeners:t}of pu(this,Ql,"f").values())e=e.concat(t.map((({listener:t})=>t)));return e}async off(t,e){const r=await pu(this,Zl,"m",hu).call(this,t);if(!r)return this;if(e){const t=r.listeners.map((({listener:t})=>t)).indexOf(e);t>=0&&r.listeners.splice(t,1)}return e&&0!==r.listeners.length||(r.started&&r.subscriber.stop(),pu(this,Ql,"f").delete(r.tag)),this}async removeAllListeners(t){if(t){const{tag:e,started:r,subscriber:n}=await pu(this,Zl,"m",fu).call(this,t);r&&n.stop(),pu(this,Ql,"f").delete(e)}else for(const[t,{started:e,subscriber:r}]of pu(this,Ql,"f"))e&&r.stop(),pu(this,Ql,"f").delete(t);return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return this.off(t,e)}async shutdown(){this.removeAllListeners();for(const t of pu(this,ou,"f").keys())this._clearTimeout(t)}get paused(){return null!=pu(this,eu,"f")}pause(t){if(null!=pu(this,eu,"f")){if(pu(this,eu,"f")==!!t)return;return Yo.throwError("cannot change pause type; resume first","UNSUPPORTED_OPERATION",{operation:"pause"})}this._forEachSubscriber((e=>e.pause(t))),du(this,eu,!!t,"f");for(const t of pu(this,ou,"f").values())t.timer&&clearTimeout(t.timer),t.time=vu()-t.time}resume(){if(null!=pu(this,eu,"f")){this._forEachSubscriber((t=>t.resume())),du(this,eu,null,"f");for(const t of pu(this,ou,"f").values()){let e=t.time;e<0&&(e=0),t.time=vu(),setTimeout(t.func,e)}}}}function Au(t,e){try{const r=ku(t,e);if(r)return fi(r)}catch(t){}return null}function ku(t,e){if("0x"===t)return null;try{const r=Yo.getNumber(ye(t,e,e+32)),n=Yo.getNumber(ye(t,r,r+32));return ye(t,r+32,r+32+n)}catch(t){}return null}function Tu(t){const e=Tt(t);if(e.length>32)throw new Error("internal; should not happen");const r=new Uint8Array(32);return r.set(e,32-e.length),r}function Pu(t){if(t.length%32==0)return t;const e=new Uint8Array(32*Math.ceil(t.length/32));return e.set(t),e}Ql=new WeakMap,tu=new WeakMap,eu=new WeakMap,ru=new WeakMap,nu=new WeakMap,su=new WeakMap,iu=new WeakMap,ou=new WeakMap,au=new WeakMap,Zl=new WeakSet,cu=async function(t){const e=wu(t.method,t);let r=pu(this,su,"f").get(e);return r||(r=this._perform(t),pu(this,su,"f").set(e,r),setTimeout((()=>{pu(this,su,"f").get(e)===r&&pu(this,su,"f").delete(e)}),250)),await r},lu=async function t(e,r,n){n>=10&&Yo.throwError("CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},e,{blockTag:r,enableCcipRead:!0})});const s=e;try{return pe(await this._perform({method:"call",transaction:s,blockTag:r}))}catch(e){if(!this.disableCcipRead&&h(e)&&n>=0&&"latest"===r&&null!=s.to&&"0x556f1830"===ye(e.data,0,4)){const i=e.data,o=await Bs(s.to,this);let a;try{a=function(t){const e={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};if(me(t)<160)throw new Error("insufficient OffchainLookup data");const r=ye(t,0,32);if(ye(r,0,12)!==ye(Ou,0,12))throw new Error("corrupt OffchainLookup sender");e.sender=ye(r,12);try{const r=[],n=Yo.getNumber(ye(t,32,64)),s=Yo.getNumber(ye(t,n,n+32)),i=ye(t,n+32);for(let t=0;te[t])),e}(ye(e.data,4))}catch(t){return Yo.throwError(t.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:s,info:{data:i}})}if(a.sender.toLowerCase()!==o.toLowerCase())return Yo.throwError("CCIP Read sender mismatch","CALL_EXCEPTION",{data:i,transaction:s,errorSignature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",errorName:"OffchainLookup",errorArgs:a.errorArgs});const c=await this.ccipReadFetch(s,a.calldata,a.urls);return null==c?Yo.throwError("CCIP Read failed to fetch data","OFFCHAIN_FAULT",{reason:"FETCH_FAILED",transaction:s,info:{data:e.data,errorArgs:a.errorArgs}}):pu(this,Zl,"m",t).call(this,{to:o,data:we([a.selector,xu([c,a.extraData])])},r,n+1)}throw e}},uu=async function(t,e){const r=(await this.getNetwork()).formatter;return se(t,32)?await pu(this,Zl,"m",cu).call(this,{method:"getBlock",blockHash:t,includeTransactions:e}):await pu(this,Zl,"m",cu).call(this,{method:"getBlock",blockTag:r.blockTag(t),includeTransactions:e})},hu=async function(t,e){let r=await bu(t,this);return"event"===r.type&&e&&e.length>0&&!0===e[0].removed&&(r=await bu({orphan:"drop-log",log:e[0]},this)),pu(this,Ql,"f").get(r.tag)||null},fu=async function(t){const e=await bu(t,this),r=e.tag;let n=pu(this,Ql,"f").get(r);if(!n){n={subscriber:this._getSubscriber(e),tag:r,addressableMap:new WeakMap,nameMap:new Map,started:!1,listeners:[]},pu(this,Ql,"f").set(r,n)}return n};const Nu=new Uint8Array([]);function xu(t){const e=[];let r=0;for(let n=0;nnull==t?Yo.throwArgumentError("transaction to ENS name not configured","tx.to",n.to):t))),null!=n.from){const t=n.from;n.from=Promise.all([this.getAddress(),this.resolveName(t)]).then((([t,e])=>e&&t.toLowerCase()===e.toLowerCase()?t:Yo.throwArgumentError("transaction from mismatch","tx.from",e)))}return null==n.nonce&&(n.nonce=this.getTransactionCount()),n=e(n),null==n.gasLimit&&(n.gasLimit=r.estimateGas(n)),n=e(n),await e(n)}async resolveName(t){const e=Fu(this,Iu,"m",Su).call(this,"resolveName");return await e.resolveName(t)}async sendTransaction(t){const e=Fu(this,Iu,"m",Su).call(this,"sendTransaction"),r=qc.from(await this.populateTransaction(t));return await e.broadcastTransaction(await this.signTransaction(r))}}Iu=new WeakSet,Su=function(t){return this.provider?this.provider:Yo.throwError("missing provider","UNSUPPORTED_OPERATION",{operation:t})},Ru=async function(t){const e=[];if(null!=(t=Object.assign({},t)).from){const r=t.from;e.push(Promise.all([this.getAddress(),this.resolveName(r)]).then((([e,r])=>{r&&e.toLowerCase()===r.toLowerCase()||Yo.throwArgumentError("transaction from mismatch","tx.from",r),t.from=e})))}return await Promise.all(e),t};class Du extends Lu{constructor(t,e){super(e),Bu.add(this),n(this,{address:t})}async getAddress(){return this.address}connect(t){return new Du(this.address,t)}async signTransaction(t){Fu(this,Bu,"m",Cu).call(this,"transactions","signTransaction")}async signMessage(t){Fu(this,Bu,"m",Cu).call(this,"messages","signMessage")}async signTypedData(t,e,r){Fu(this,Bu,"m",Cu).call(this,"typed-data","signTypedData")}}Bu=new WeakSet,Cu=function(t,e){return Yo.throwError(`VoidSigner cannot sign ${t}`,"UNSUPPORTED_OPERATION",{operation:e})};class Mu extends Lu{constructor(t){super(t.provider),_u.set(this,void 0),Uu(this,_u,t,"f")}async getAddress(){return await Fu(this,_u,"f").getAddress()}connect(t){return new Mu(Fu(this,_u,"f").connect(t))}async signTransaction(t){return await Fu(this,_u,"f").signTransaction(t)}async sendTransaction(t){return await Fu(this,_u,"f").sendTransaction(t)}async signMessage(t){return await Fu(this,_u,"f").signMessage(t)}async signTypedData(t,e,r){return await Fu(this,_u,"f").signTypedData(t,e,r)}}_u=new WeakMap;const ju=new Set;function Gu(t){ju.has(t)||(ju.add(t),console.log("========= NOTICE ========="),console.log(`Request-Rate Exceeded for ${t} (this message will not be repeated)`),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}var $u,zu,Wu,Hu,Vu,Ku,Ju,qu,Xu=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Yu=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Zu{constructor(t){$u.add(this),zu.set(this,void 0),Wu.set(this,void 0),Hu.set(this,void 0),Vu.set(this,void 0),Xu(this,zu,t,"f"),Xu(this,Wu,null,"f"),Xu(this,Hu,Yu(this,$u,"m",Ku).bind(this),"f"),Xu(this,Vu,null,"f")}_subscribe(t){throw new Error("subclasses must override this")}_emitResults(t,e){throw new Error("subclasses must override this")}_recover(t){throw new Error("subclasses must override this")}start(){Yu(this,$u,"m",Ku).call(this,-2)}stop(){Yu(this,$u,"m",Ju).call(this),Yu(this,zu,"f").off("block",Yu(this,Hu,"f"))}pause(t){t&&Yu(this,$u,"m",Ju).call(this),Yu(this,zu,"f").off("block",Yu(this,Hu,"f"))}resume(){this.start()}}zu=new WeakMap,Wu=new WeakMap,Hu=new WeakMap,Vu=new WeakMap,$u=new WeakSet,Ku=async function(t){try{null==Yu(this,Wu,"f")&&Xu(this,Wu,this._subscribe(Yu(this,zu,"f")),"f");const t=await Yu(this,Wu,"f");if(null==t)return void Yu(this,zu,"f")._recoverSubscriber(this,this._recover(Yu(this,zu,"f")));const e=await Yu(this,zu,"f").getNetwork();if(Yu(this,Vu,"f")||Xu(this,Vu,e,"f"),Yu(this,Vu,"f").chainId!==e.chainId)throw new Error("chaid changed");const r=await Yu(this,zu,"f").send("eth_getFilterChanges",[t]);await this._emitResults(Yu(this,zu,"f"),r)}catch(t){console.log("@TODO",t)}Yu(this,zu,"f").once("block",Yu(this,Hu,"f"))},Ju=function(){const t=Yu(this,Wu,"f");t&&(Xu(this,Wu,null,"f"),t.then((t=>{Yu(this,zu,"f").send("eth_uninstallFilter",[t])})))};class Qu extends Zu{constructor(t,e){var r;super(t),qu.set(this,void 0),Xu(this,qu,(r=e,JSON.parse(JSON.stringify(r))),"f")}_recover(t){return new Yl(t,Yu(this,qu,"f"))}async _subscribe(t){const e=await t.send("eth_newFilter",[Yu(this,qu,"f")]);return console.log("____SUB",e),e}async _emitResults(t,e){const r=await t.getNetwork();for(const n of e){const e=r.formatter.log(n,t);t.emit(Yu(this,qu,"f"),e)}}}qu=new WeakMap;class th extends Zu{async _subscribe(t){return await t.send("eth_newPendingTransactionFilter",[])}async _emitResults(t,e){const r=await t.getNetwork();for(const n of e)t.emit("pending",r.formatter.hash(n))}}var eh,rh,nh,sh,ih=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},oh=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const ah="bigint,boolean,function,number,string,symbol".split(/,/g);function ch(t){if(null==t||ah.indexOf(typeof t)>=0)return t;if("function"==typeof t.getAddress)return t;if(Array.isArray(t))return t.map(ch);if("object"==typeof t)return Object.keys(t).reduce(((e,r)=>(e[r]=t[r],e)),{});throw new Error(`should not happen: ${t} (${typeof t})`)}function lh(t){return t?t.toLowerCase():t}const uh={polling:!1,batchMaxSize:1<<20,batchStallTime:250};class hh{constructor(t,e){n(this,{provider:t,address:e})}connect(t){return Yo.throwError("cannot reconnect JsonRpcSigner","UNSUPPORTED_OPERATION",{operation:"signer.connect"})}async getAddress(){return this.address}async getNetwork(){return await this.provider.getNetwork()}async getFeeData(){return await this.provider.getFeeData()}async estimateGas(t){return await this.provider.estimateGas(t)}async call(t){return await this.provider.call(t)}async resolveName(t){return await this.provider.resolveName(t)}async getBalance(t){return await this.provider.getBalanceOf(this.address)}async getTransactionCount(t){return await this.provider.getTransactionCountOf(this.address)}async sendUncheckedTransaction(t){const e=ch(t),r=[];if(e.from){const n=e.from;r.push((async()=>{const r=await Bs(n,this.provider);null!=r&&r.toLowerCase()===this.address.toLowerCase()||Yo.throwArgumentError("from address mismatch","transaction",t),e.from=r})())}else e.from=this.address;if(null==e.gasLimit&&r.push((async()=>{e.gasLimit=await this.provider.estimateGas(Object.assign(Object.assign({},e),{from:this.address}))})()),null!=e.to){const t=e.to;r.push((async()=>{e.to=await Bs(t,this.provider)})())}r.length&&await Promise.all(r);const n=this.provider.getRpcTransaction(e);return this.provider.send("eth_sendTransaction",[n])}async sendTransaction(t){const e=await this.provider.getBlockNumber(),r=await this.sendUncheckedTransaction(t);return await new Promise(((t,n)=>{const s=[1e3,100],i=async()=>{const n=await this.provider.getTransaction(r);null==n?this.provider._setTimeout((()=>{i()}),s.pop()||4e3):t(this.provider._wrapTransaction(n,r,e))};i()}))}async signTransaction(t){const e=ch(t);if(e.from){const r=await Bs(e.from,this.provider);if(null==r||r.toLowerCase()!==this.address.toLowerCase())return Yo.throwArgumentError("from address mismatch","transaction",t);e.from=r}else e.from=this.address;const r=this.provider.getRpcTransaction(e);return await this.provider.send("eth_sign_Transaction",[r])}async signMessage(t){const e="string"==typeof t?ci(t):t;return await this.provider.send("personal_sign",[pe(e),this.address.toLowerCase()])}async signTypedData(t,e,r){const n=ch(r),s=await yo.resolveNames(t,e,n,(async t=>{const e=await Bs(t);return null==e?Yo.throwArgumentError("TypedData does not support null address","value",t):e}));return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(yo.getPayload(s.domain,e,s.value))])}async unlock(t){return this.provider.send("personal_unlockAccount",[this.address.toLowerCase(),t,null])}async _legacySignMessage(t){const e="string"==typeof t?ci(t):t;return await this.provider.send("eth_sign",[this.address.toLowerCase(),pe(e)])}}class fh extends Eu{constructor(t){super(t),eh.set(this,void 0),rh.set(this,void 0),ih(this,eh,1,"f"),ih(this,rh,Object.assign({},uh),"f")}_getOptions(t){return oh(this,rh,"f")[t]}_setOptions(t){for(const e in t){const r=e,n=t[r];if(typeof n!=typeof oh(this,rh,"f")[r])return Yo.throwArgumentError("invalid option value",`options.${r}`,n)}for(const e in t){const r=e;oh(this,rh,"f")[r]=t[r]}}prepareRequest(t,e){var r,n;return{method:t,params:e,id:(ih(this,eh,(n=oh(this,eh,"f"),r=n++,n),"f"),r),jsonrpc:"2.0"}}async send(t,e){throw new Error("sub-class must implement this")}async getSigner(t=0){const e=await this.getNetwork(),r=await this.send("eth_accounts",[]);if("number"==typeof t){if(t>r.length)throw new Error("no such account");return new hh(this,r[t])}t=e.formatter.address(t);for(const t of r)if(e.formatter.address(t)===t)return new hh(this,t);throw new Error("invalid account")}async _detectNetwork(){return xl.from(Yo.getBigInt(await this._perform({method:"chainId"})))}_getSubscriber(t){return"pending"===t.type?new th(this):"event"===t.type?new Qu(this,t.filter):"orphan"===t.type&&"drop-log"===t.filter.orphan?new mu("orphan"):super._getSubscriber(t)}getRpcTransaction(t){const e={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach((r=>{if(null==t[r])return;let n=r;"gasLimit"===r&&(n="gas"),e[n]=ge(t[r])})),["from","to","data"].forEach((r=>{null!=t[r]&&(e[r]=pe(t[r]))})),t.accessList&&(e.accessList=Pc(t.accessList)),e}getRpcRequest(t){switch(t.method){case"chainId":return{method:"eth_chainId",args:[]};case"getBlockNumber":return{method:"eth_blockNumber",args:[]};case"getGasPrice":return{method:"eth_gasPrice",args:[]};case"getBalance":return{method:"eth_getBalance",args:[lh(t.address),t.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[lh(t.address),t.blockTag]};case"getCode":return{method:"eth_getCode",args:[lh(t.address),t.blockTag]};case"getStorageAt":return{method:"eth_getStorageAt",args:[lh(t.address),"0x"+t.position.toString(16),t.blockTag]};case"sendTransaction":return{method:"eth_sendRawTransaction",args:[t.signedTransaction]};case"getBlock":if("blockTag"in t)return{method:"eth_getBlockByNumber",args:[t.blockTag,!!t.includeTransactions]};if("blockHash"in t)return{method:"eth_getBlockByHash",args:[t.blockHash,!!t.includeTransactions]};break;case"getTransaction":return{method:"eth_getTransactionByHash",args:[t.hash]};case"getTransactionReceipt":return{method:"eth_getTransactionReceipt",args:[t.hash]};case"call":return{method:"eth_call",args:[this.getRpcTransaction(t.transaction),t.blockTag]};case"estimateGas":return{method:"eth_estimateGas",args:[this.getRpcTransaction(t.transaction)]};case"getLogs":return t.filter&&null!=t.filter.address&&(Array.isArray(t.filter.address)?t.filter.address=t.filter.address.map(lh):t.filter.address=lh(t.filter.address)),{method:"eth_getLogs",args:[t.filter]}}return null}getRpcError(t,e,r){if("eth_call"===t){const t=gh(r);return t?Yo.makeError("execution reverted during JSON-RPC call","CALL_EXCEPTION",{data:t.data,transaction:e[0]}):Yo.makeError("missing revert data during JSON-RPC call","CALL_EXCEPTION",{data:"0x",transaction:e[0],info:{error:r}})}const n=JSON.stringify(function(t){const e=[];return wh(t,e),e}(r));return n.match(/insufficient funds|base fee exceeds gas limit/)?Yo.makeError("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e[0]}):n.match(/nonce/)&&n.match(/too low/)?Yo.makeError("nonce has already been used","NONCE_EXPIRED",{transaction:e[0]}):n.match(/replacement transaction/)&&n.match(/underpriced/)?Yo.makeError("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e[0]}):n.match(/only replay-protected/)?Yo.makeError("legacy pre-eip-155 transactions not supported","UNSUPPORTED_OPERATION",{operation:t,info:{transaction:e[0]}}):"estimateGas"===t&&n.match(/gas required exceeds allowance|always failing transaction|execution reverted/)?Yo.makeError("cannot estimate gas; transaction may fail or may require manual gas limit","UNPREDICTABLE_GAS_LIMIT",{transaction:e[0]}):r}async _perform(t){if("call"===t.method||"estimateGas"===t.method){let e=t.transaction;if(e&&null!=e.type&&Yo.getBigInt(e.type)&&null==e.maxFeePerGas&&null==e.maxPriorityFeePerGas){const r=await this.getFeeData();null==r.maxFeePerGas&&null==r.maxPriorityFeePerGas&&(t=Object.assign({},t,{transaction:Object.assign({},e,{type:void 0})}))}}const e=this.getRpcRequest(t);if(null!=e){this.emit("debug",{type:"sendRequest",request:e});try{const t=await this.send(e.method,e.args);return this.emit("debug",{type:"getResponse",result:t}),t}catch(t){throw this.emit("debug",{type:"getError",error:t}),this.getRpcError(e.method,e.args,t)}}return super._perform(t)}}eh=new WeakMap,rh=new WeakMap;class dh extends fh{constructor(t,e){null==t&&(t="http://localhost:8545"),super(e),nh.set(this,void 0),sh.set(this,void 0),"string"==typeof t?ih(this,nh,{request:new Vo(t)},"f"):(ih(this,nh,Object.assign({},t),"f"),oh(this,nh,"f").request=oh(this,nh,"f").request.clone()),ih(this,sh,4e3,"f")}async send(t,e){var r;r=e,e=JSON.parse(JSON.stringify(r));const n=Object.assign({},oh(this,nh,"f"));n.request=n.request.clone(),n.request.body=this.prepareRequest(t,e);const s=await Xo(n);s.assertOk();const i=s.bodyJson;return"error"in i?Yo.throwError("error from JSON-RPC","UNKNOWN_ERROR",{result:i}):i.result}get pollingInterval(){return oh(this,sh,"f")}set pollingInterval(t){if(!Number.isInteger(t)||t<0)throw new Error("invalid interval");ih(this,sh,t,"f"),this._forEachSubscriber((t=>{(function(t){return t&&"number"==typeof t.pollingInterval})(t)&&(t.pollingInterval=oh(this,sh,"f"))}))}}nh=new WeakMap,sh=new WeakMap;class ph extends dh{constructor(t,e){super(t,e),n(this,{network:e})}async _detectNetwork(){return this.network}}function gh(t){if(null==t)return null;if("string"==typeof t.message&&t.message.match("reverted")&&se(t.data))return{message:t.message,data:t.data};if("object"==typeof t){for(const e in t){const r=gh(t[e]);if(r)return r}return null}if("string"==typeof t)try{return gh(JSON.parse(t))}catch(t){}return null}function wh(t,e){if(null!=t){if("string"==typeof t.message&&e.push(t.message),"object"==typeof t)for(const r in t)wh(t[r],e);if("string"==typeof t)try{return wh(JSON.parse(t),e)}catch(t){}}}const mh="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";class yh extends ph{constructor(t="homestead",e){const r=xl.from(t);null==e&&(e=mh);super(yh.getConnection(r,e),r),n(this,{apiKey:e}),super._setOptions({polling:!0})}_getProvider(t){try{return new yh(t,this.apiKey)}catch(t){}return super._getProvider(t)}static getConnection(t,e){null==e&&(e=mh);const r=new Vo(`https://${function(t){switch(t){case"homestead":return"rpc.ankr.com/eth";case"matic":return"rpc.ankr.com/polygon";case"arbitrum":return"rpc.ankr.com/arbitrum"}return Yo.throwArgumentError("unsupported network","network",t)}(t.name)}/${e}`);r.allowGzip=!0;return{request:r,throttleRetry:async(t,r,n)=>(e===mh&&Gu("AnkrProvider"),!0)}}isCommunityResource(){return this.apiKey===mh}}const bh="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class vh extends ph{constructor(t="homestead",e){const r=xl.from(t);null==e&&(e=bh),super(vh.getConnection(r,e),r),n(this,{apiKey:e})}_getProvider(t){try{return new vh(t,this.apiKey)}catch(t){}return super._getProvider(t)}isCommunityResource(){return this.apiKey===bh}static getConnection(t,e){null==e&&(e=bh);const r=new Vo(`https://${function(t){switch(t){case"homestead":return"eth-mainnet.alchemyapi.io";case"ropsten":return"eth-ropsten.alchemyapi.io";case"rinkeby":return"eth-rinkeby.alchemyapi.io";case"goerli":return"eth-goerli.alchemyapi.io";case"kovan":return"eth-kovan.alchemyapi.io";case"matic":return"polygon-mainnet.g.alchemy.com";case"maticmum":return"polygon-mumbai.g.alchemy.com";case"arbitrum":return"arb-mainnet.g.alchemy.com";case"arbitrum-rinkeby":return"arb-rinkeby.g.alchemy.com";case"optimism":return"opt-mainnet.g.alchemy.com";case"optimism-kovan":return"opt-kovan.g.alchemy.com"}return Yo.throwArgumentError("unsupported network","network",t)}(t.name)}/v2/${e}`);r.allowGzip=!0;return{request:r,throttleRetry:async(t,r,n)=>(e===bh&&Gu("alchemy"),!0)}}}class Eh extends ph{constructor(t="homestead"){const e=xl.from(t);if("homestead"!==e.name)return Yo.throwArgumentError("unsupported network","network",t);super("https://cloudflare-eth.com/",e)}}const Ah="9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB",kh="org.ethers.plugins.etherscan";class Th extends Eu{constructor(t,e){super();const r=xl.from(t);if(null==e){const t=r.getPlugin(kh);e=t?t.communityApiKey:Ah}n(this,{apiKey:e,network:r}),this.getBaseUrl()}getBaseUrl(){const t=this.network.getPlugin(kh);if(t)return t.baseUrl;switch(this.network.name){case"homestead":return"https://api.etherscan.io";case"ropsten":return"https://api-ropsten.etherscan.io";case"rinkeby":return"https://api-rinkeby.etherscan.io";case"kovan":return"https://api-kovan.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io"}return Yo.throwArgumentError("unsupported network","network",this.network)}getUrl(t,e){const r=Object.keys(e).reduce(((t,r)=>{const n=e[r];return null!=n&&(t+=`&${r}=${n}`),t}),""),n=this.apiKey?`&apikey=${this.apiKey}`:"";return`${this.getBaseUrl()}/api?module=${t}${r}${n}`}getPostUrl(){return`${this.getBaseUrl()}/api`}getPostData(t,e){return e.module=t,e.apikey=this.apiKey,e}async detectNetwork(){return this.network}async fetch(t,e,r){const n=r?this.getPostUrl():this.getUrl(t,e),s=r?this.getPostData(t,e):null,i=new Vo(n),o={request:i,throttleSlotInterval:1e3,processResponse:async(e,r)=>{const n=r.hasBody()?JSON.parse(fi(r.body)):{},s=("string"==typeof n.result?n.result:"").toLowerCase().indexOf("rate limit")>=0;return"proxy"===t?n&&0==n.status&&"NOTOK"==n.message&&s&&r.throwThrottleError(n.result):s&&r.throwThrottleError(n.result),r}};s&&(i.setHeader("content-type","application/x-www-form-urlencoded; charset=UTF-8"),i.body=Object.keys(s).map((t=>`${t}=${s[t]}`)).join("&"));const a=await Xo(o);if(a.assertOk(),!a.hasBody())throw new Error;const c=JSON.parse(fi(a.body));if("proxy"===t){if("2.0"!=c.jsonrpc){const t=new Error("invalid response");throw t.result=JSON.stringify(c),t}if(c.error){const t=new Error(c.error.message||"unknown error");throw c.error.code&&(t.code=c.error.code),c.error.data&&(t.data=c.error.data),t}return c.result}if(0==c.status&&("No records found"===c.message||"No transactions found"===c.message))return c.result;if(1!=c.status||"OK"!=c.message){const t=new Error("invalid response");throw t.result=JSON.stringify(c),t}return c.result}_getTransactionPostData(t){const e={};for(let r in t){if(null==t[r])continue;let n=t[r];"type"===r&&0===n||(n={type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[r]?ge(pe(n)):"accessList"===r?"["+this.network.formatter.accessList(n).map((t=>`{address:"${t.address}",storageKeys:["${t.storageKeys.join('","')}"]}`)).join(",")+"]":pe(n),e[r]=n)}return e}_checkError(t,e,r){throw e}async _detectNetwork(){return this.network}async _perform(t){switch(t.method){case"chainId":return this.network.chainId;case"getBlockNumber":return this.fetch("proxy",{action:"eth_blockNumber"});case"getGasPrice":return this.fetch("proxy",{action:"eth_gasPrice"});case"getBalance":return this.fetch("account",{action:"balance",address:t.address,tag:t.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:t.address,tag:t.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:t.address,tag:t.blockTag});case"getStorageAt":return this.fetch("proxy",{action:"eth_getStorageAt",address:t.address,position:t.position,tag:t.blockTag});case"sendTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:t.signedTransaction},!0).catch((e=>this._checkError(t,e,t.signedTransaction)));case"getBlock":return"blockTag"in t?this.fetch("proxy",{action:"eth_getBlockByNumber",tag:t.blockTag,boolean:t.includeTransactions?"true":"false"}):Yo.throwError("getBlock by blockHash not supported by Etherscan","UNSUPPORTED_OPERATION",{operation:"getBlock(blockHash)"});case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:t.hash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:t.hash});case"call":{if("latest"!==t.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const e=this._getTransactionPostData(t.transaction);e.module="proxy",e.action="eth_call";try{return await this.fetch("proxy",e,!0)}catch(e){return this._checkError(t,e,t.transaction)}}case"estimateGas":{const e=this._getTransactionPostData(t.transaction);e.module="proxy",e.action="eth_estimateGas";try{return await this.fetch("proxy",e,!0)}catch(e){return this._checkError(t,e,t.transaction)}}}return super._perform(t)}async getNetwork(){return this.network}async getEtherPrice(){return"homestead"!==this.network.name?0:parseFloat((await this.fetch("stats",{action:"ethprice"})).ethusd)}isCommunityResource(){const t=this.network.getPlugin(kh);return t?t.communityApiKey===this.apiKey:Ah===this.apiKey}}const Ph="84842078b09946638c03157f83405213";class Nh extends ph{constructor(t="homestead",e,r){const s=xl.from(t);null==e&&(e=Ph),null==r&&(r=null);super(Nh.getConnection(s,e,r),s),n(this,{projectId:e,projectSecret:r})}_getProvider(t){try{return new Nh(t,this.projectId,this.projectSecret)}catch(t){}return super._getProvider(t)}static getConnection(t,e,r){null==e&&(e=Ph),null==r&&(r=null);const n=new Vo(`https://${function(t){switch(t){case"homestead":return"mainnet.infura.io";case"ropsten":return"ropsten.infura.io";case"rinkeby":return"rinkeby.infura.io";case"kovan":return"kovan.infura.io";case"goerli":return"goerli.infura.io";case"matic":return"polygon-mainnet.infura.io";case"maticmum":return"polygon-mumbai.infura.io";case"optimism":return"optimism-mainnet.infura.io";case"optimism-kovan":return"optimism-kovan.infura.io";case"arbitrum":return"arbitrum-mainnet.infura.io";case"arbitrum-rinkeby":return"arbitrum-rinkeby.infura.io"}return Yo.throwArgumentError("unsupported network","network",t)}(t.name)}/v3/${e}`);n.allowGzip=!0,r&&n.setCredentials("",r);return{request:n,throttleRetry:async(t,r,n)=>(e===Ph&&Gu("InfuraProvider"),!0)}}isCommunityResource(){return this.projectId===Ph}}const xh={homestead:"6004bcd10040261633ade990",ropsten:"6004bd4d0040261633ade991",rinkeby:"6004bda20040261633ade994",goerli:"6004bd860040261633ade992"};function Oh(t,e,r,n){n=!!n;let s=!1,i=e;return null==i?(i=xh[t.name],null==i&&Yo.throwArgumentError("network does not support default applicationId","applicationId",e),n=!0,s=!0):i===xh[t.name]&&(n=!0,s=!0),null==r&&(r=null),{applicationId:i,applicationSecretKey:r,community:s,loadBalancer:n}}class Ih extends ph{constructor(t="homestead",e,r,s){const i=xl.from(t),{applicationId:o,applicationSecretKey:a,loadBalancer:c}=Oh(i,e,r,s);super(Ih.getConnection(i,o,a,c),i),n(this,{applicationId:o,applicationSecretKey:a,loadBalancer:c})}static getConnection(t,e,r,n){const{applicationId:s,applicationSecretKey:i,community:o,loadBalancer:a}=Oh(t,e,r,n);let c=`https://${function(t){switch(t){case"homestead":return"eth-mainnet.gateway.pokt.network";case"ropsten":return"eth-ropsten.gateway.pokt.network";case"rinkeby":return"eth-rinkeby.gateway.pokt.network";case"goerli":return"eth-goerli.gateway.pokt.network"}return Yo.throwArgumentError("unsupported network","network",t)}(t.name)}/v1/`;a&&(c+="lb/"),c+=s;const l=new Vo(c);l.allowGzip=!0,i&&l.setCredentials("",i);return{request:l,throttleRetry:async(t,e,r)=>(o&&Gu("PocketProvider"),!0)}}isCommunityResource(){return this.applicationId===xh[this.network.name]}}var Sh,Rh,Bh,Ch,_h,Fh,Uh,Lh,Dh,Mh=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},jh=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Gh=BigInt("1"),$h=BigInt("2");function zh(){return(new Date).getTime()}const Wh={stallTimeout:400,priority:1,weight:1},Hh={blockNumber:-2,requests:0,lateResponses:0,errorResponses:0,outOfSync:-1,unsupportedEvents:0,rollingDuration:0,score:0,_network:null,_updateNumber:null,_totalTime:0};function Vh(t,e,r){switch(r.method){case"chainId":case"getGasPrice":case"getBalance":case"estimateGas":return Yo.getBigInt(e).toString();case"getBlockNumber":case"getTransactionCount":return Yo.getNumber(e).toString();case"getCode":case"getStorageAt":case"call":return pe(e);case"getBlock":return r.includeTransactions?JSON.stringify(t.formatter.blockWithTransactions(e)):JSON.stringify(t.formatter.block(e));case"getTransaction":return JSON.stringify(t.formatter.transactionResponse(e));case"getTransactionReceipt":return JSON.stringify(t.formatter.receipt(e));case"getLogs":return JSON.stringify(e.map((e=>t.formatter.log(e))))}return Yo.throwError("unsupported method","UNSUPPORTED_OPERATION",{operation:`_perform(${JSON.stringify(r.method)})`})}function Kh(t,e){const r=new Map;for(const{result:t,normal:n,weight:s}of e){const e=r.get(n)||{result:t,weight:0};e.weight+=s,r.set(n,e)}let n,s=0;for(const{weight:e,result:i}of r.values())e>=t&&e>s&&(s=e,n=i);return n}function Jh(t){const e=t.map((t=>BigInt(t.result)));e.sort(((t,e)=>tt?1:0));const r=e.length/2;return e.length%2?e[r]:(e[r-1]+e[r]+Gh)/$h}class qh extends Eu{constructor(t,e){super(e),Sh.add(this),Rh.set(this,void 0),Bh.set(this,void 0),Ch.set(this,void 0),Mh(this,Rh,t.map((t=>t instanceof Eu?Object.assign({provider:t},Wh,Hh):Object.assign({},Wh,t,Hh))),"f"),Mh(this,Bh,-2,"f"),Mh(this,Ch,null,"f"),this.quorum=2,this.eventQuorum=1,this.eventWorkers=1,this.quorum>jh(this,Rh,"f").reduce(((t,e)=>t+e.weight),0)&&Yo.throwArgumentError("quorum exceed provider wieght","quorum",this.quorum)}get providerConfigs(){return jh(this,Rh,"f").slice()}async _detectNetwork(){return xl.from(Yo.getBigInt(await this._perform({method:"chainId"}))).freeze()}async _perform(t){await jh(this,Sh,"m",Uh).call(this);const e=new Set;for(let r=0;r0;e--){const r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}}(e),e.sort(((t,e)=>e.priority-t.priority));for(const r of e)if(-1===t.indexOf(r))return r;return null},Fh=function(t,e){const r=jh(this,Sh,"m",_h).call(this,Array.from(t).map((t=>t.config)));if(null==r)return null;const n={},s={config:r,result:n,didBump:!1,done:!1,perform:null,staller:null},i=zh();return s.perform=(async()=>{try{r.requests++,n.result=await r.provider._perform(e)}catch(t){r.errorResponses++,n.error=t}s.done&&r.lateResponses++;const t=zh()-i;r._totalTime+=t,r.rollingDuration=.95*r.rollingDuration+.05*t,s.perform=null})(),s.staller=(async()=>{var t;await(t=r.stallTimeout,new Promise((e=>{setTimeout(e,t)}))),s.staller=null})(),t.add(s),s},Uh=async function(){let t=jh(this,Ch,"f");if(!t){const e=[];jh(this,Rh,"f").forEach((t=>{e.push(async function(t,e){for(;t.blockNumber<0||t.blockNumber{const e=await t.provider.getBlockNumber();e>t.blockNumber&&(t.blockNumber=e),t._updateNumber=null})()),await t._updateNumber,t.outOfSync++}(t,0)),e.push((async()=>{t._network=await t.provider.getNetwork()})())})),Mh(this,Ch,t=(async()=>{await Promise.all(e);let t=null;for(const e of jh(this,Rh,"f")){const r=e._network;null==t?t=r.chainId:r.chainId!==t&&Yo.throwError("cannot mix providers on different networks","UNSUPPORTED_OPERATION",{operation:"new FallbackProvider"})}})(),"f")}await t},Lh=async function(t,e){const r=[];for(const n of t)if("result"in n.result){const t=n.result.result;r.push({result:t,normal:Vh(n.config._network,t,e),weight:n.config.weight})}if(!(r.reduce(((t,e)=>t+e.weight),0)({result:t.blockNumber,normal:Yo.getNumber(t.blockNumber).toString(),weight:t.weight})))),"%internal"));Mh(this,Bh,t,"f")}const t=function(t,e){if(1===t)return Yo.getNumber(Jh(e),"%internal");const r=new Map,n=(t,e)=>{const n=r.get(t)||{result:t,weight:0};n.weight+=e,r.set(t,n)};for(const{weight:t,result:r}of e){const e=Yo.getNumber(r);n(e-1,t),n(e,t),n(e+1,t)}let s,i=0;for(const{weight:e,result:n}of r.values())e>=t&&(e>i||null!=s&&e===i&&n>s)&&(i=e,s=n);return s}(this.quorum,r);if(void 0===t)return;return t>jh(this,Bh,"f")&&Mh(this,Bh,t,"f"),jh(this,Bh,"f")}case"getGasPrice":case"estimateGas":return Jh(r);case"getBlock":return"blockTag"in e&&"pending"===e.blockTag?r[0].result:Kh(this.quorum,r);case"chainId":case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"getTransaction":case"getTransactionReceipt":case"getLogs":case"call":return Kh(this.quorum,r);case"sendTransaction":throw new Error("TODO")}return Yo.throwError("unsupported method","UNSUPPORTED_OPERATION",{operation:`_perform(${JSON.stringify(e.method)})`})}},Dh=async function t(e,r){if(0===e.size)throw new Error("no runners?!");const n=[];let s=0;for(const t of e)t.perform&&n.push(t.perform),t.staller?n.push(t.staller):t.didBump||(t.didBump=!0,s++);const i=await jh(this,Sh,"m",Lh).call(this,e,r);if(void 0!==i){if(i instanceof Error)throw i;return i}for(let t=0;t(uf(this,Yh,"f")._register(t,this),t))),"f")}stop(){uf(this,Qh,"f").then((t=>{uf(this,Yh,"f").send("eth_unsubscribe",[t])})),lf(this,Qh,null,"f")}pause(t){t||Yo.throwError("preserve logs while paused not supported by SocketSubscriber yet","UNSUPPORTED_OPERATION",{operation:"pause(false)"}),lf(this,tf,!!t,"f")}resume(){lf(this,tf,null,"f")}_handleMessage(t){if(null!=uf(this,Qh,"f")&&null===uf(this,tf,"f")){let e=uf(this,ef,"f");e=null==e?this._emit(uf(this,Yh,"f"),t):e.then((async()=>{await this._emit(uf(this,Yh,"f"),t)})),lf(this,ef,e.then((()=>{uf(this,ef,"f")===e&&lf(this,ef,null,"f")})),"f")}}async _emit(t,e){throw new Error("sub-classes must implemente this; _emit")}}Yh=new WeakMap,Zh=new WeakMap,Qh=new WeakMap,tf=new WeakMap,ef=new WeakMap;class ff extends hf{constructor(t){super(t,["newHeads"])}async _emit(t,e){t.emit("block",parseInt(e.number))}}class df extends hf{constructor(t){super(t,["newPendingTransactions"])}async _emit(t,e){t.emit("pending",e)}}class pf extends hf{constructor(t,e){super(t,["logs",e]),rf.set(this,void 0),nf.set(this,void 0),lf(this,rf,JSON.stringify(e),"f"),lf(this,nf,t.getNetwork().then((t=>t.formatter)),"f")}get logFilter(){return JSON.parse(uf(this,rf,"f"))}async _emit(t,e){const r=await uf(this,nf,"f");t.emit(uf(this,rf,"f"),r.log(e,t))}}rf=new WeakMap,nf=new WeakMap;class gf extends fh{constructor(t){super(t),sf.set(this,void 0),of.set(this,void 0),af.set(this,void 0),cf.set(this,void 0),lf(this,sf,new Map,"f"),lf(this,of,!1,"f"),lf(this,af,new Map,"f"),lf(this,cf,new Map,"f")}_getSubscriber(t){switch(t.type){case"close":return new mu("close");case"block":return new ff(this);case"pending":return new df(this);case"event":return new pf(this,t.filter);case"orphan":if("drop-log"===t.filter.orphan)return new mu("drop-log")}return super._getSubscriber(t)}_register(t,e){uf(this,af,"f").set(t,e);const r=uf(this,cf,"f").get(t);if(r){for(const t of r)e._handleMessage(t);uf(this,cf,"f").delete(t)}}async send(t,e){const r=this.prepareRequest(t,e),n=new Promise(((t,e)=>{uf(this,sf,"f").set(r.id,{payload:r,resolve:t,reject:e})}));return uf(this,of,"f")&&await this._write(JSON.stringify(r)),await n}async _start(){if(!uf(this,of,"f")){lf(this,of,!0,"f");for(const{payload:t}of uf(this,sf,"f").values())await this._write(JSON.stringify(t))}}async _processMessage(t){const e=JSON.parse(t);if("id"in e){const t=uf(this,sf,"f").get(e.id);if(!t)return void console.log("Weird... Response for not a thing we sent");if(uf(this,sf,"f").delete(e.id),"error"in e){const{message:r,code:n,data:s}=e.error,i=Yo.makeError(r||"unkonwn error","SERVER_ERROR",{request:`ws:${JSON.stringify(t.payload)}`,info:{code:n,data:s}});t.reject(i)}else t.resolve(e.result)}else if("eth_subscription"===e.method){const t=e.params.subscription,r=uf(this,af,"f").get(t);if(r)r._handleMessage(e.params.result);else{let r=uf(this,cf,"f").get(t);null==r&&(r=[],uf(this,cf,"f").set(t,r)),r.push(e.params.result)}}}async _write(t){throw new Error("sub-classes must override this")}}sf=new WeakMap,of=new WeakMap,af=new WeakMap,cf=new WeakMap;var wf,mf=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},yf=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class bf extends gf{constructor(t,e){super(e),wf.set(this,void 0),mf(this,wf,"string"==typeof t?new Xh(t):t,"f"),this.websocket.onopen=()=>{this._start()},this.websocket.onmessage=t=>{this._processMessage(t.data)}}get websocket(){return yf(this,wf,"f")}async _write(t){this.websocket.send(t)}}function vf(t,e){if(null==e&&(e={}),"string"==typeof t&&t.match(/^https?:/))return new dh(t);if("string"==typeof t&&t.match(/^wss?:/)||(r=t)&&"function"==typeof r.send&&"function"==typeof r.close)return new bf(t);var r;const n=[];if("-"!==e.alchemy)try{n.push(new vh(t,e.alchemy))}catch(t){console.log(t)}if("-"!==e.ankr)try{n.push(new yh(t,e.ankr))}catch(t){console.log(t)}if("-"!==e.cloudflare)try{n.push(new Eh(t))}catch(t){console.log(t)}if("-"!==e.etherscan)try{n.push(new Th(t,e.etherscan))}catch(t){console.log(t)}if("-"!==e.infura)try{let r,s=e.infura;"object"==typeof s&&(r=s.projectSecret,s=s.projectId),n.push(new Nh(t,s,r))}catch(t){console.log(t)}if("-"!==e.pocket)try{let r,s,i=e.pocket;"object"==typeof i&&(s=!!i.loadBalancer,r=i.secretKey,i=i.appId),n.push(new Ih(t,i,r,s))}catch(t){console.log(t)}if(0===n.length)throw new Error("TODO");return 1===n.length?n[0]:new qh(n)}wf=new WeakMap;const Ef=void 0;var Af,kf,Tf=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Pf=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class Nf extends sl{constructor(t,e,r){super(t,t.provider);n(this,{args:e.decodeEventLog(r,t.data,t.topics),fragment:r,interface:e})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}}class xf extends il{constructor(t,e,r){super(r,e),Af.set(this,void 0),Tf(this,Af,t,"f")}get logs(){return super.logs.map((t=>{const e=t.topics.length?Pf(this,Af,"f").getEvent(t.topics[0]):null;return e?new Nf(t,Pf(this,Af,"f"),e):t}))}}Af=new WeakMap;class Of extends ol{constructor(t,e,r){super(r,e),kf.set(this,void 0),Tf(this,kf,t,"f")}async wait(t){const e=await super.wait();return null==e?null:new xf(Pf(this,kf,"f"),this.provider,e)}}kf=new WeakMap;class If extends a{constructor(t,e,r,s,i){super(t,e,r);const o=new Nf(i,t.interface,s);n(this,{args:t.interface.decodeEventLog(s,o.data,o.topics),fragment:s,log:o})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}async getBlock(){return await this.log.getBlock()}async getTransaction(){return await this.log.getTransaction()}async getTransactionReceipt(){return await this.log.getTransactionReceipt()}}const Sf=new T("@ethersproject/contract@6.0.0-beta.4");var Rf,Bf=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Cf=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function _f(t){return t&&"function"==typeof t.resolveName}class Ff{constructor(t,e,r){if(Rf.set(this,void 0),n(this,{fragment:e}),e.inputs.lengtht.walkAsync(r[e],((t,e)=>"address"===t?Bs(e,i):e)))));return t.interface.encodeFilterTopics(e,n)}(),"f")}getTopicFilter(){return Cf(this,Rf,"f")}}function Uf(t,e){return null==t?null:"function"==typeof t[e]?t:t.provider&&"function"==typeof t.provider[e]?t.provider:null}function Lf(t){return null==t?null:t.provider||null}async function Df(t){const e=function(t){const e={};t.to&&(e.to=t.to),t.from&&(e.from=t.from),t.data&&(e.data=pe(t.data));const r="chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value".split(/,/);for(const n in r)n in t&&null!=t[n]&&(e[n]=Yo.getBigInt(t[n],`request.${n}`));const n="type,nonce".split(/,/);for(const r in n)r in t&&null!=t[r]&&(e[r]=Yo.getNumber(t[r],`request.${r}`));return t.accessList&&(e.accessList=Pc(t.accessList)),"blockTag"in t&&(e.blockTag=t.blockTag),"enableCcipRead"in t&&(e.enableCcipReadEnabled=!!t.enableCcipRead),"customData"in t&&(e.customData=t.customData),e}(js.dereference(t,"overrides"));return e.to?Sf.throwArgumentError("cannot override to","overrides.to",e.to):e.data&&Sf.throwArgumentError("cannot override data","overrides.data",e.data),e.from&&(e.from=await Bs(e.from)),e}Rf=new WeakMap;class Mf extends(function(){return Function}()){constructor(t,e){super(),n(this,{name:t.interface.getFunctionName(e),_contract:t,_key:e});return new Proxy(this,{apply:async(t,e,r)=>t.getFragment(...r).constant?await t.staticCall(...r):await t.send(...r)})}get fragment(){return this._contract.interface.getFunction(this._key)}getFragment(...t){return this._contract.interface.getFunction(this._key,t)}async populateTransaction(...t){const r=this.getFragment(...t);let n={};if(r.inputs.length+1===t.length&&(n=await Df(t.pop())),r.inputs.length!==t.length)throw new Error("internal error: fragment inputs doesn't match arguments; should not happen");const s=await async function(t,e,r){const n=Uf(t,"resolveName"),s=_f(n)?n:null;return await Promise.all(e.map(((t,e)=>t.walkAsync(r[e],((t,e)=>"address"===t?Bs(e,s):e)))))}(this._contract.runner,r.inputs,t);return Object.assign({},n,await e({to:this._contract.getAddress(),data:this._contract.interface.encodeFunctionData(r,s)}))}async staticCall(...t){const e=await this.staticCallResult(...t);return 1===e.length?e[0]:e}async send(...t){const e=this._contract.runner;if(!(r=e)||"function"!=typeof r.sendTransaction)return Sf.throwError("contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});var r;const n=await e.sendTransaction(await this.populateTransaction(...t)),s=Lf(this._contract.runner);return new Of(this._contract.interface,s,n)}async estimateGas(...t){const e=Uf(this._contract.runner,"estimateGas");return(r=e)&&"function"==typeof r.estimateGas?await e.estimateGas(await this.populateTransaction(...t)):Sf.throwError("contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"});var r}async staticCallResult(...t){const e=Uf(this._contract.runner,"call");if(!(r=e)||"function"!=typeof r.call)return Sf.throwError("contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});var r;const n=this.getFragment(...t),s=await this.populateTransaction(...t);let i="0x";try{i=await e.call(s)}catch(t){if(h(t))throw this._contract.interface.makeError(n,t.data,s);throw t}return this._contract.interface.decodeFunctionResult(n,i)}}class jf extends(function(){return Function}()){constructor(t,e){return super(),n(this,{name:t.interface.getEventName(e),_contract:t,_key:e}),new Proxy(this,{apply:async(e,r,n)=>new Ff(t,e.getFragment(...n),n)})}get fragment(){return this._contract.interface.getEvent(this._key)}getFragment(...t){return this._contract.interface.getEvent(this._key,t)}}const Gf=Symbol.for("_ethersInternal_contract"),$f=new WeakMap;function zf(t){return $f.get(t[Gf])}async function Wf(t,e){let r,n;if(Array.isArray(e))r=t.interface.getEvent(e[0]),n=e;else if("string"==typeof e)r=t.interface.getEvent(e),n=[t.interface.getEventTopic(r)];else if((s=e)&&"object"==typeof s&&"getTopicFilter"in s&&"function"==typeof s.getTopicFilter&&s.fragment)r=e.fragment,n=await e.getTopicFilter();else{if(!("fragment"in e))throw console.log(e),new Error("TODO");r=e.fragment,n=[t.interface.getEventTopic(r)]}var s;n=n.map((t=>{return null==t?null:Array.isArray(t)?(e=t.map((t=>t.toLowerCase())),(e=Array.from(new Set(e).values())).sort(),e):t.toLowerCase();var e}));return{fragment:r,tag:n.map((t=>null==t?"null":Array.isArray(t)?t.join("|"):t)).join("&"),topics:n}}async function Hf(t,e){const{subs:r}=zf(t);return r.get((await Wf(t,e)).tag)||null}async function Vf(t,e){const r=Lf(t.runner);if(!r)return Sf.throwError("contract runner does not support subscribing","UNSUPPORTED_OPERATION",{operation:"on"});const{fragment:n,tag:s,topics:i}=await Wf(t,e),{addr:o,subs:a}=zf(t);let c=a.get(s);if(!c){const l={address:o||t,topics:i},u=r=>{const s=new If(t,null,e,n,r);Jf(t,e,s.args,s)};let h=!1;c={tag:s,listeners:[],start:()=>{h||(r.on(l,u),h=!0)},stop:()=>{h&&(r.off(l,u),h=!1)}},a.set(s,c)}return c}let Kf=Promise.resolve();async function Jf(t,e,r,n){try{await Kf}catch(t){}const s=async function(t,e,r,n){await Kf;const s=await Hf(t,e);if(!s)return!1;const i=s.listeners.length;return s.listeners=s.listeners.filter((({listener:s,once:i})=>{const o=r.slice();n&&o.push(new If(t,i?null:s,e,n.fragment,n.log));try{s.call(t,...o)}catch(t){}return!i})),i>0}(t,e,r,n);return Kf=s,await s}const qf=["then"];class Xf{constructor(t,e,r=null,s){let i;n(this,{target:t,runner:r,interface:_o.from(e)}),Object.defineProperty(this,Gf,{value:{}});let o=null,a=null;if(s){const t=Lf(r);a=new Of(this.interface,t,s)}let c=new Map;if("string"==typeof t)if(se(t))o=t,i=Promise.resolve(t);else{const e=Uf(r,"resolveName");if(!_f(e))throw Sf.makeError("contract runner does not support name resolution","UNSUPPORTED_OPERATION",{operation:"resolveName"});i=e.resolveName(t).then((t=>{if(null==t)throw new Error("TODO");return zf(this).addr=t,t}))}else i=t.getAddress().then((t=>{if(null==t)throw new Error("TODO");return zf(this).addr=t,t}));var l,u;l=this,u={addrPromise:i,addr:o,deployTx:a,subs:c},$f.set(l[Gf],u);const h=new Proxy({},{get:(t,e,r)=>{if(qf.indexOf(e)>=0)return Reflect.get(t,e,r);const n=String(e),s=this.getEvent(n);if(s)return s;throw new Error(`unknown contract event: ${n}`)}});return n(this,{filters:h}),new Proxy(this,{get:(t,e,r)=>{if(e in t||qf.indexOf(e)>=0)return Reflect.get(t,e,r);const n=String(e),s=t.getFunction(n);if(s)return s;throw new Error(`unknown contract method: ${n}`)}})}async getAddress(){return await zf(this).addrPromise}async getDeployedCode(){const t=Lf(this.runner);if(!t)return Sf.throwError("runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"getDeployedCode"});const e=await t.getCode(await this.getAddress());return"0x"===e?null:e}async waitForDeployment(){const t=this.deploymentTransaction();if(t)return await t.wait(),this;if(null!=await this.getDeployedCode())return this;const e=Lf(this.runner);return null==e?Sf.throwError("contract runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"waitForDeployment"}):new Promise(((t,r)=>{const n=async()=>{try{if(null!=await this.getDeployedCode())return t(this);e.once("block",n)}catch(t){r(t)}};n()}))}deploymentTransaction(){return zf(this).deployTx}getFunction(t){return"string"!=typeof t&&(t=t.format()),new Mf(this,t)}getEvent(t){return"string"!=typeof t&&(t=t.format()),new jf(this,t)}async queryTransaction(t){throw new Error("@TODO")}async queryFilter(t,e=0,r="latest"){const{addr:n,addrPromise:s}=zf(this),i=n||await s,{fragment:o,topics:a}=await Wf(this,t),c={address:i,topics:a,fromBlock:e,toBlock:r},l=Lf(this.runner);return l?(await l.getLogs(c)).map((t=>new Nf(t,this.interface,o))):Sf.throwError("contract runner does not have a provider","UNSUPPORTED_OPERATION",{operation:"queryFilter"})}async on(t,e){const r=await Vf(this,t);return r.listeners.push({listener:e,once:!1}),r.start(),this}async once(t,e){const r=await Vf(this,t);return r.listeners.push({listener:e,once:!0}),r.start(),this}async emit(t,...e){return await Jf(this,t,e,null)}async listenerCount(t){if(t){const e=await Hf(this,t);return e?e.listeners.length:0}const{subs:e}=zf(this);let r=0;for(const{listeners:t}of e.values())r+=t.length;return r}async listeners(t){if(t){const e=await Hf(this,t);return e?e.listeners.map((({listener:t})=>t)):[]}const{subs:e}=zf(this);let r=[];for(const{listeners:t}of e.values())r=r.concat(t.map((({listener:t})=>t)));return r}async off(t,e){const r=await Hf(this,t);if(!r)return this;if(e){const t=r.listeners.map((({listener:t})=>t)).indexOf(e);t>=0&&r.listeners.splice(t,1)}return null!=e&&0!==r.listeners.length||(r.stop(),zf(this).subs.delete(r.tag)),this}async removeAllListeners(t){if(t){const e=await Hf(this,t);if(!e)return this;e.stop(),zf(this).subs.delete(e.tag)}else{const{subs:t}=zf(this);for(const{tag:e,stop:r}of t.values())r(),t.delete(e)}return this}async addListener(t,e){return await this.on(t,e)}async removeListener(t,e){return await this.off(t,e)}static buildClass(t){return class extends Xf{constructor(e,r=null){super(e,t,r)}}}static from(t,e,r=null){return new this(t,e,r)}}class Yf extends(function(){return Xf}()){}const Zf=" !#$%&'()*+,-./<=>?@[]^_`{|}~",Qf=/^[a-z]*$/i;function td(t,e){let r=97;return t.reduce(((t,n)=>(n===e?r++:n.match(Qf)?t.push(String.fromCharCode(r)+n):(r=97,t.push(n)),t)),[])}function ed(t){if("0"!==t[0])throw TypeError("unsupported auwl data");return function(t,e){for(let r=Zf.length-1;r>=0;r--)t=t.split(Zf[r]).join(e.substring(2*r,2*r+2));const r=[],n=t.replace(/(:|([0-9])|([A-Z][a-z]*))/g,((t,e,n,s)=>{if(n)for(let t=parseInt(n);t>=0;t--)r.push(";");else r.push(e.toLowerCase());return""}));if(n)throw new Error(`leftovers: ${JSON.stringify(n)}`);return td(td(r,";"),":")}(t.substring(1+2*Zf.length),t.substring(1,1+2*Zf.length))}const rd=new T("@ethersproject/wordlists@6.0.0-beta.2");class nd{constructor(t){n(this,{locale:t})}split(t){return t.toLowerCase().split(/ +/g)}join(t){return t.join(" ")}}var sd,id,od,ad,cd,ld=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},ud=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class hd extends nd{constructor(t,e,r){super(t),sd.add(this),id.set(this,void 0),od.set(this,void 0),ad.set(this,void 0),ld(this,id,e,"f"),ld(this,od,r,"f"),ld(this,ad,null,"f")}get _data(){return ud(this,id,"f")}_decodeWords(){return ed(ud(this,id,"f"))}getWord(t){const e=ud(this,sd,"m",cd).call(this);return(t<0||t>=e.length)&&rd.throwArgumentError(`invalid word index: ${t}`,"index",t),e[t]}getWordIndex(t){return ud(this,sd,"m",cd).call(this).indexOf(t)}}id=new WeakMap,od=new WeakMap,ad=new WeakMap,sd=new WeakSet,cd=function(){if(null==ud(this,ad,"f")){const t=this._decodeWords();if(Fi(t.join("\n")+"\n")!==ud(this,od,"f"))throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);ld(this,ad,t,"f")}return ud(this,ad,"f")};const fd=new class extends hd{constructor(){super("en","0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-EgSe0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-PM&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryFN Noc|PutQuirySSue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurEAyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOgAyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NNGradeHoldOnP Set1BOng::Rd3Ar~ow9UUngU`:3BraRo9NeO","0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60")}},dd=new T("@ethersproject/wallet@6.0.0-beta.5"),pd=Object.freeze({en:fd});var gd,wd=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},md=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class yd extends hd{constructor(t,e,r,n){super(t,e,n),gd.set(this,void 0),wd(this,gd,r,"f")}get _accent(){return md(this,gd,"f")}_decodeWords(){return function(t,e){let r=ed(t).join(",");return e.split(/,/g).forEach((t=>{const e=t.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);if(!e)throw new Error("internal error parsing accents");let n=0;const s=function(t,e){const r=(1<=t;){const e=s>>i-t;s&=(1<(0==--s[n]&&(e=String.fromCharCode(e.charCodeAt(0),i),n++),e)))})),r.split(",")}(this._data,this._accent)}}function bd(t){return(1<24)&&dd.throwArgumentError("invalid mnemonic length","mnemonic","[ REDACTED ]");const n=le(new Uint8Array(Math.ceil(11*r.length/8)));let s=0;for(let t=0;t>3]|=1<<7-s%8),s++}const i=32*r.length/3,o=bd(r.length/3);return(le(os(n.slice(0,i/8)))[0]&o)!==(n[n.length-1]&o)&&dd.throwArgumentError("invalid mnemonic checksum","mnemonic","[ REDACTED ]"),pe(n.slice(0,i/8))}function Ed(t,e=fd){(t.length%4||t.length<16||t.length>32)&&dd.throwArgumentError("invalid entropy size","entropy","[ REDACTED ]"),null==e&&(e=fd);const r=[0];let n=11;for(let e=0;e8?(r[r.length-1]<<=8,r[r.length-1]|=t[e],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[e]>>8-n,r.push(t[e]&((1<<8-n)-1&255)),n+=3);const s=t.length/4,i=parseInt(os(t).substring(2,4),16)&bd(s);return r[r.length-1]<<=s,r[r.length-1]|=i>>8-s,e.join(r.map((t=>e.getWord(t))))}gd=new WeakMap;const Ad={};class kd{constructor(t,e,r,s,i){null==s&&(s=""),null==i&&(i=fd),dd.assertPrivate(t,Ad,"Mnemonic"),n(this,{phrase:r,password:s,wordlist:i,entropy:e})}computeSeed(){const e=ci("mnemonic"+this.password,t.UnicodeNormalizationForm.NFKD);return Un(ci(this.phrase,t.UnicodeNormalizationForm.NFKD),e,2048,64,"sha512")}static fromPhrase(t,e,r){const n=vd(t,r);return t=Ed(dd.getBytes(n),r),new kd(Ad,n,t,e,r)}static fromEntropy(t,e,r){const n=dd.getBytes(t,"entropy"),s=Ed(n,r);return new kd(Ad,pe(n),s,e,r)}static entropyToPhrase(t,e){return Ed(dd.getBytes(t,"entropy"),e)}static phraseToEntropy(t,e){return vd(t,e)}static isValidMnemonic(t,e){try{return vd(t,e),!0}catch(t){}return!1}}var Td,Pd=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Nd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class xd extends Lu{constructor(t,e){super(e),Td.set(this,void 0),Pd(this,Td,t,"f");n(this,{address:Nc(this.signingKey.publicKey)})}get signingKey(){return Nd(this,Td,"f")}get privateKey(){return this.signingKey.privateKey}async getAddress(){return this.address}connect(t){return new xd(Nd(this,Td,"f"),t)}async signTransaction(t){const r=Object.assign({},t,await e({to:t.to?Bs(t.to,this.provider):void 0,from:t.from?Bs(t.from,this.provider):void 0}));null!=r.from&&(ws(r.from)!==this.address&&dd.throwArgumentError("transaction from address mismatch","tx.from",t.from),delete r.from);const n=qc.from(r);return n.signature=this.signingKey.sign(n.unsignedHash),n.serialized}async signMessage(t){return this.signingKey.sign(zi(t)).serialized}async signTypedData(t,e,r){const n=await yo.resolveNames(t,e,r,(async t=>{if(null==this.provider)return dd.throwError("cannot resolve ENS names without a provider","UNSUPPORTED_OPERATION",{operation:"resolveName",info:{name:t}});const e=await this.provider.resolveName(t);return null==e?dd.throwError("unconfigured ENS name","UNCONFIGURED_NAME",{value:t}):e}));return this.signingKey.sign(yo.hash(n.domain,e,n.value)).serialized}}Td=new WeakMap;var Od,Id,Sd,Rd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)},Bd=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r};const Cd="m/44'/60'/0'/0/0",_d=new Uint8Array([66,105,116,99,111,105,110,32,115,101,101,100]),Fd=2147483648,Ud=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");function Ld(t,e){let r="";for(;t;)r="0123456789abcdef"[t%16]+r,t=Math.trunc(t/16);for(;r.length<2*e;)r="0"+r;return"0x"+r}function Dd(t){const e=dd.getBytes(t);return Yt(we([e,ye(os(os(e)),0,4)]))}const Md={};function jd(t,e,r,n){const s=new Uint8Array(37);if(t&Fd){if(null==n)return dd.throwError("cannot derive child of neutered node","UNSUPPORTED_OPERATION",{operation:"deriveChild"});s.set(le(n),1)}else s.set(le(r));for(let e=24;e>=0;e-=8)s[33+(e>>3)]=t>>24-e&255;const i=le(Hr("sha512",e,s));return{IL:i.slice(0,32),IR:i.slice(32)}}function Gd(t,e){const r=e.split("/");if(0===r.length||"m"===r[0]&&0!==t.depth)throw new Error("invalid path - "+e);"m"===r[0]&&r.shift();let n=t;for(let t=0;t=Fd)throw new Error("invalid path index - "+e);n=n.deriveChild(Fd+t)}else{if(!e.match(/^[0-9]+$/))throw new Error("invalid path component - "+e);{const t=parseInt(e);if(t>=Fd)throw new Error("invalid path index - "+e);n=n.deriveChild(t)}}}return n}class $d extends xd{constructor(t,e,r,s,i,o,a,c,l){super(e,l),dd.assertPrivate(t,Md,"HDNodeWallet"),n(this,{publicKey:e.compressedPublicKey});n(this,{parentFingerprint:r,fingerprint:ye(Bn(os(this.publicKey)),0,4),chainCode:s,path:i,index:o,depth:a}),n(this,{mnemonic:c})}connect(t){return new $d(Md,this.signingKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.mnemonic,t)}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return Dd(we(["0x0488ADE4",Ld(this.depth,1),this.parentFingerprint,Ld(this.index,4),this.chainCode,we(["0x00",this.privateKey])]))}hasPath(){return null!=this.path}neuter(){return new zd(Md,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.provider)}deriveChild(t){const e=dd.getNumber(t,"index");if(e>4294967295)throw new Error("invalid index - "+String(e));let r=this.path;r&&(r+="/"+(2147483647&e),e&Fd&&(r+="'"));const{IR:n,IL:s}=jd(e,this.chainCode,this.publicKey,this.privateKey),i=new kc(kt((Et(s)+BigInt(this.privateKey))%Ud,32));return new $d(Md,i,this.fingerprint,pe(n),r,e,this.depth+1,this.mnemonic,this.provider)}derivePath(t){return Gd(this,t)}static fromSeed(t){return Rd($d,Od,"m",Id).call($d,t,null)}static fromPhrase(t,e="",r=Cd,n=fd){r||(r=Cd);const s=kd.fromPhrase(t,e,n);return Rd($d,Od,"m",Id).call($d,s.computeSeed(),s).derivePath(r)}static fromMnemonic(t,e=Cd){return e||(e=Cd),Rd($d,Od,"m",Id).call($d,t.computeSeed(),t).derivePath(e)}static fromExtendedKey(t){const e=le(Zt(t));82===e.length&&Dd(e.slice(0,78))===t||dd.throwArgumentError("invalid extended key","extendedKey","[ REDACTED ]");const r=e[4],n=pe(e.slice(5,9)),s=parseInt(pe(e.slice(9,13)).substring(2),16),i=pe(e.slice(13,45)),o=e.slice(45,78);switch(pe(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":{const t=pe(o);return new zd(Md,Nc(t),t,n,i,null,s,r,null)}case"0x0488ade4":case"0x04358394 ":if(0!==o[0])break;return new $d(Md,new kc(o.slice(1)),n,i,null,s,r,null,null)}return dd.throwArgumentError("invalid extended key prefix","extendedKey","[ REDACTED ]")}static createRandom(t="",e=Cd,r=fd){e||(e=Cd);const n=kd.fromEntropy(jn(16),t,r);return Rd($d,Od,"m",Id).call($d,n.computeSeed(),n).derivePath(e)}}Od=$d,Id=function(t,e){const r=dd.getBytes(t,"seed");if(r.length<16||r.length>64)throw new Error("invalid seed");const n=le(Hr("sha512",_d,r)),s=new kc(pe(n.slice(0,32)));return new $d(Md,s,"0x00000000",pe(n.slice(32)),"m",0,0,e,null)};class zd extends Du{constructor(t,e,r,s,i,o,a,c,l){super(e,l),dd.assertPrivate(t,Md,"HDNodeVoidWallet"),n(this,{publicKey:r});n(this,{publicKey:r,fingerprint:ye(Bn(os(r)),0,4),parentFingerprint:s,chainCode:i,path:o,index:a,depth:c})}connect(t){return new zd(Md,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,t)}get extendedKey(){if(this.depth>=256)throw new Error("Depth too large!");return Dd(we(["0x0488B21E",Ld(this.depth,1),this.parentFingerprint,Ld(this.index,4),this.chainCode,this.publicKey]))}hasPath(){return null!=this.path}deriveChild(t){const e=dd.getNumber(t,"index");if(e>4294967295)throw new Error("invalid index - "+String(e));let r=this.path;r&&(r+="/"+(2147483647&e),e&Fd&&(r+="'"));const{IR:n,IL:s}=jd(e,this.chainCode,this.publicKey,null),i=kc._addPoints(s,this.publicKey,!0),o=Nc(i);return new zd(Md,o,i,this.fingerprint,pe(n),r,e,this.depth+1,this.provider)}derivePath(t){return Gd(this,t)}}class Wd{constructor(t,e="",r="m/44'/60'/0'/0",n=fd){Sd.set(this,void 0),Bd(this,Sd,$d.fromPhrase(t,e,r,n),"f")}getSigner(t=0){return Rd(this,Sd,"f").deriveChild(t)}}function Hd(t){const e=dd.getNumber(t,"index");return(e<0||e>=Fd)&&dd.throwArgumentError("invalid account index","index",e),`m/44'/60'/${e}'/0/0`} +/*! MIT License. Copyright 2015-2022 Richard Moore . See LICENSE.txt. */Sd=new WeakMap;var Vd,Kd,Jd,qd=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Xd=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};const Yd={16:10,24:12,32:14},Zd=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],Qd=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],tp=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],ep=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],rp=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],np=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],sp=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],ip=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],op=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],ap=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],cp=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],lp=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],up=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],hp=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],fp=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function dp(t){const e=[];for(let r=0;r>2,Xd(this,Jd,"f")[i][t%4]=s[t],Xd(this,Kd,"f")[e-i][t%4]=s[t];let o,a=0,c=n;for(;c>16&255]<<24^Qd[o>>8&255]<<16^Qd[255&o]<<8^Qd[o>>24&255]^Zd[a]<<24,a+=1,8!=n)for(let t=1;t>8&255]<<8^Qd[o>>16&255]<<16^Qd[o>>24&255]<<24;for(let t=n/2+1;t>2,i=c%4,Xd(this,Jd,"f")[t][i]=s[l],Xd(this,Kd,"f")[e-t][i]=s[l++],c++}for(let t=1;t>24&255]^up[o>>16&255]^hp[o>>8&255]^fp[255&o]}get key(){return Xd(this,Vd,"f").slice()}encrypt(t){if(16!=t.length)throw new TypeError("invalid plaintext size (must be 16 bytes)");const e=Xd(this,Jd,"f").length-1,r=[0,0,0,0];let n=dp(t);for(let t=0;t<4;t++)n[t]^=Xd(this,Jd,"f")[0][t];for(let t=1;t>24&255]^rp[n[(e+1)%4]>>16&255]^np[n[(e+2)%4]>>8&255]^sp[255&n[(e+3)%4]]^Xd(this,Jd,"f")[t][e];n=r.slice()}const s=new Uint8Array(16);let i=0;for(let t=0;t<4;t++)i=Xd(this,Jd,"f")[e][t],s[4*t]=255&(Qd[n[t]>>24&255]^i>>24),s[4*t+1]=255&(Qd[n[(t+1)%4]>>16&255]^i>>16),s[4*t+2]=255&(Qd[n[(t+2)%4]>>8&255]^i>>8),s[4*t+3]=255&(Qd[255&n[(t+3)%4]]^i);return s}decrypt(t){if(16!=t.length)throw new TypeError("invalid ciphertext size (must be 16 bytes)");const e=Xd(this,Kd,"f").length-1,r=[0,0,0,0];let n=dp(t);for(let t=0;t<4;t++)n[t]^=Xd(this,Kd,"f")[0][t];for(let t=1;t>24&255]^op[n[(e+3)%4]>>16&255]^ap[n[(e+2)%4]>>8&255]^cp[255&n[(e+1)%4]]^Xd(this,Kd,"f")[t][e];n=r.slice()}const s=new Uint8Array(16);let i=0;for(let t=0;t<4;t++)i=Xd(this,Kd,"f")[e][t],s[4*t]=255&(tp[n[t]>>24&255]^i>>24),s[4*t+1]=255&(tp[n[(t+3)%4]>>16&255]^i>>16),s[4*t+2]=255&(tp[n[(t+2)%4]>>8&255]^i>>8),s[4*t+3]=255&(tp[255&n[(t+1)%4]]^i);return s}}Vd=new WeakMap,Kd=new WeakMap,Jd=new WeakMap;class gp{constructor(t,e,r){if(r&&!(this instanceof r))throw new Error(`${t} must be instantiated with "new"`);Object.defineProperties(this,{aes:{enumerable:!0,value:new pp(e)},name:{enumerable:!0,value:t}})}}var wp,mp,yp=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},bp=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};class vp extends gp{constructor(t,e){if(super("ECC",t,vp),wp.set(this,void 0),mp.set(this,void 0),e){if(e.length%16)throw new TypeError("invalid iv size (must be 16 bytes)");yp(this,wp,new Uint8Array(e),"f")}else yp(this,wp,new Uint8Array(16),"f");yp(this,mp,this.iv,"f")}get iv(){return new Uint8Array(bp(this,wp,"f"))}encrypt(t){if(t.length%16)throw new TypeError("invalid plaintext size (must be multiple of 16 bytes)");const e=new Uint8Array(t.length);for(let r=0;rNumber.MAX_SAFE_INTEGER)throw new TypeError("invalid counter initial integer value");for(let e=15;e>=0;--e)Pp(this,kp,"f")[e]=t%256,t=Math.floor(t/256)}setCounterBytes(t){if(16!==t.length)throw new TypeError("invalid counter initial Uint8Array value length");Pp(this,kp,"f").set(t)}increment(){for(let t=15;t>=0;t--){if(255!==Pp(this,kp,"f")[t]){Pp(this,kp,"f")[t]++;break}Pp(this,kp,"f")[t]=0}}encrypt(t){var e,r;const n=new Uint8Array(t);for(let t=0;t16)throw new TypeError("PKCS#7 padding byte out of range");const r=t.length-e;for(let n=0;n{setTimeout((()=>{e()}),t)}))}var Up,Lp=window&&window.__classPrivateFieldSet||function(t,e,r,n,s){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(t,r):s?s.value=r:e.set(t,r),r},Dp=window&&window.__classPrivateFieldGet||function(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)};function Mp(t){try{if(!t||!se(t.privateKey,32))return null;const e=t.privateKey;return kc.computePublicKey(e)!==t.publicKey?null:new kc(e)}catch(t){console.log(t)}return null}function jp(t){return new Promise((e=>{setTimeout((()=>{e()}),t)}))}class Gp extends xd{constructor(t,e){let r=null,n=null;if("string"==typeof t&&(r=new kc(t)),null==r){const e=function(t){try{if(!t||!t.signingKey)return null;const e=Mp(t.signingKey);return null==e||Nc(e.publicKey)!==t.address||t.mnemonic&&$d.fromMnemonic(t.mnemonic).privateKey!==e.privateKey?null:t}catch(t){console.log(t)}return null}(t);e&&(r=e.signingKey,n=e.mnemonic||null)}if(null==r){const e=function(t){try{return null==t||"string"!=typeof t.phrase||"string"!=typeof t.password||null==t.wordlist?null:$d.fromPhrase(t.phrase,t.password,null,t.wordlist)}catch(t){console.log(t)}return null}(t);e&&(r=e.signingKey,n=e.mnemonic||null)}null==r&&(r=Mp(t)),null==r&&dd.throwArgumentError("invalid key","key","[ REDACTED ]"),super(r,e),Up.set(this,void 0),Lp(this,Up,n,"f")}get mnemonic(){return Dp(this,Up,"f")}connect(t){return new Gp(this,t)}async encrypt(t,e,r){throw new Error("TODO")}encryptSync(t,e){throw new Error("TODO")}static async fromEncryptedJson(t,e,r){let n=null;if(Bp(t))n=await async function(t,e,r){const n=JSON.parse(t),s=Op(e),i=_p(n);if("pbkdf2"===i.name){r&&(r(0),await Fp(0));const{salt:t,count:e,dkLen:o,algorithm:a}=i,c=Un(s,t,e,o,a);return r&&(r(1),await Fp(0)),Cp(n,c)}if("scrypt"===i.name){const{salt:t,N:e,r:o,p:a,dkLen:c}=i;return Cp(n,await Zn(s,t,e,o,a,c,r))}throw new Error("unreachable")}(t,e,r);else{if(!Sp(t))return dd.throwArgumentError("invalid JSON wallet","json","[ REDACTED ]");r&&(r(0),await jp(0)),n=Rp(t,e),r&&(r(1),await jp(0))}const s=new Gp(n.privateKey);return s.address!==n.address&&dd.throwArgumentError("address/privateKey mismatch","json","[ REDACTED ]"),s}static fromEncryptedJsonSync(t,e){let r=null;if(Bp(t))r=function(t,e){const r=JSON.parse(t),n=Op(e),s=_p(r);if("pbkdf2"===s.name){const{salt:t,count:e,dkLen:i,algorithm:o}=s;return Cp(r,Un(n,t,e,i,o))}if("scrypt"===s.name){const{salt:t,N:e,r:i,p:o,dkLen:a}=s;return Cp(r,Qn(n,t,e,i,o,a))}throw new Error("unreachable")}(t,e);else{if(!Sp(t))return dd.throwArgumentError("invalid JSON wallet","json","[ REDACTED ]");r=Rp(t,e)}const n=new Gp(r.privateKey);return n.address!==r.address&&dd.throwArgumentError("address/privateKey mismatch","json","[ REDACTED ]"),n}static createRandom(t,e,r){return new Gp(kd.fromEntropy(jn(16),e,r),t)}static fromMnemonic(t,e){return new Gp(t,e)}static fromPhrase(t,e,r="",n){return new Gp(kd.fromPhrase(t,r,n),e)}}Up=new WeakMap;const $p="ethers@6.0.0-beta.6";var zp=Object.freeze({__proto__:null,Interface:_o,getAddress:ws,getIcapAddress:ms,getCreateAddress:Os,getCreate2Address:Is,isAddressable:Ss,isAddress:Rs,resolveAddress:Bs,arrayify:le,decodeBase64:he,encodeBase64:fe,isHexString:se,isBytesLike:ie,concat:we,dataLength:me,dataSlice:ye,stripZerosLeft:be,hexlify:pe,quantity:ge,zeroPadBytes:Ae,zeroPadValue:Ee,BaseContract:Xf,Contract:Yf,ContractEventPayload:If,ContractTransactionReceipt:xf,ContractTransactionResponse:Of,EventLog:Nf,computeHmac:Hr,keccak256:dn,ripemd160:Bn,sha256:os,sha512:as,pbkdf2:Un,scrypt:Zn,scryptSync:Qn,randomBytes:jn,lock:cs,messagePrefix:$i,id:Fi,hashMessage:zi,isValidName:Mi,namehash:ji,dnsEncode:Gi,solidityPacked:Ji,solidityPackedKeccak256:qi,solidityPackedSha256:Xi,TypedDataEncoder:yo,isError:u,isCallException:h,Logger:T,formatFixed:jt,parseFixed:Gt,fromTwos:xt,toTwos:Ot,mask:It,toArray:Tt,toBigInt:Et,toHex:kt,toNumber:At,decodeBase58:Zt,encodeBase58:Yt,formatEther:re,parseEther:ne,formatUnits:te,parseUnits:ee,FixedFormat:$t,FixedNumber:zt,defineProperties:n,resolveProperties:e,getStore:c,setStore:l,dummyProvider:ul,getDefaultProvider:vf,showThrottleMessage:Gu,AbstractProvider:Eu,UnmanagedSubscriber:mu,AbstractSigner:Lu,VoidSigner:Du,WrappedSigner:Mu,EnsResolver:ga,Formatter:ml,NetworkPlugin:yl,GasCostPlugin:bl,EnsPlugin:vl,MaxPriorityFeePlugin:El,Network:xl,Block:nl,FeeData:rl,Log:sl,TransactionReceipt:il,TransactionResponse:ol,FallbackProvider:qh,JsonRpcProvider:dh,JsonRpcSigner:hh,StaticJsonRpcProvider:ph,AlchemyProvider:vh,AnkrProvider:yh,CloudflareProvider:Eh,EtherscanProvider:Th,InfuraProvider:Nh,PocketProvider:Ih,IpcSocketProvider:Ef,SocketProvider:gf,WebSocketProvider:bf,encodeRlp:As,decodeRlp:xs,Signature:Oa,SigningKey:kc,formatBytes32String:pi,parseBytes32String:gi,nameprep:Ni,_toEscapedUtf8String:ui,toUtf8Bytes:ci,toUtf8CodePoints:di,toUtf8String:fi,get UnicodeNormalizationForm(){return t.UnicodeNormalizationForm},Utf8ErrorFuncs:oi,get Utf8ErrorReason(){return t.Utf8ErrorReason},accessListify:Pc,computeAddress:Nc,recoverAddress:xc,Transaction:qc,defaultPath:Cd,getAccountPath:Hd,HDNodeWallet:$d,HDNodeVoidWallet:zd,HDNodeWalletManager:Wd,Mnemonic:kd,Wallet:Gp,fetchData:Xo,FetchRequest:Vo,FetchResponse:jo,wordlists:pd,Wordlist:nd,WordlistOwl:hd,WordlistOwlA:yd,version:$p});t.AbstractProvider=Eu,t.AbstractSigner=Lu,t.AlchemyProvider=vh,t.AnkrProvider=yh,t.BaseContract=Xf,t.Block=nl,t.CloudflareProvider=Eh,t.Contract=Yf,t.ContractEventPayload=If,t.ContractTransactionReceipt=xf,t.ContractTransactionResponse=Of,t.EnsPlugin=vl,t.EnsResolver=ga,t.EtherscanProvider=Th,t.EventLog=Nf,t.FallbackProvider=qh,t.FeeData=rl,t.FetchRequest=Vo,t.FetchResponse=jo,t.FixedFormat=$t,t.FixedNumber=zt,t.Formatter=ml,t.GasCostPlugin=bl,t.HDNodeVoidWallet=zd,t.HDNodeWallet=$d,t.HDNodeWalletManager=Wd,t.InfuraProvider=Nh,t.Interface=_o,t.IpcSocketProvider=Ef,t.JsonRpcProvider=dh,t.JsonRpcSigner=hh,t.Log=sl,t.Logger=T,t.MaxPriorityFeePlugin=El,t.Mnemonic=kd,t.Network=xl,t.NetworkPlugin=yl,t.PocketProvider=Ih,t.Signature=Oa,t.SigningKey=kc,t.SocketProvider=gf,t.StaticJsonRpcProvider=ph,t.Transaction=qc,t.TransactionReceipt=il,t.TransactionResponse=ol,t.TypedDataEncoder=yo,t.UnmanagedSubscriber=mu,t.Utf8ErrorFuncs=oi,t.VoidSigner=Du,t.Wallet=Gp,t.WebSocketProvider=bf,t.Wordlist=nd,t.WordlistOwl=hd,t.WordlistOwlA=yd,t.WrappedSigner=Mu,t._toEscapedUtf8String=ui,t.accessListify=Pc,t.arrayify=le,t.computeAddress=Nc,t.computeHmac=Hr,t.concat=we,t.dataLength=me,t.dataSlice=ye,t.decodeBase58=Zt,t.decodeBase64=he,t.decodeRlp=xs,t.defaultPath=Cd,t.defineProperties=n,t.dnsEncode=Gi,t.dummyProvider=ul,t.encodeBase58=Yt,t.encodeBase64=fe,t.encodeRlp=As,t.ethers=zp,t.fetchData=Xo,t.formatBytes32String=pi,t.formatEther=re,t.formatFixed=jt,t.formatUnits=te,t.fromTwos=xt,t.getAccountPath=Hd,t.getAddress=ws,t.getCreate2Address=Is,t.getCreateAddress=Os,t.getDefaultProvider=vf,t.getIcapAddress=ms,t.getStore=c,t.hashMessage=zi,t.hexlify=pe,t.id=Fi,t.isAddress=Rs,t.isAddressable=Ss,t.isBytesLike=ie,t.isCallException=h,t.isError=u,t.isHexString=se,t.isValidName=Mi,t.keccak256=dn,t.lock=cs,t.mask=It,t.messagePrefix=$i,t.namehash=ji,t.nameprep=Ni,t.parseBytes32String=gi,t.parseEther=ne,t.parseFixed=Gt,t.parseUnits=ee,t.pbkdf2=Un,t.quantity=ge,t.randomBytes=jn,t.recoverAddress=xc,t.resolveAddress=Bs,t.resolveProperties=e,t.ripemd160=Bn,t.scrypt=Zn,t.scryptSync=Qn,t.setStore=l,t.sha256=os,t.sha512=as,t.showThrottleMessage=Gu,t.solidityPacked=Ji,t.solidityPackedKeccak256=qi,t.solidityPackedSha256=Xi,t.stripZerosLeft=be,t.toArray=Tt,t.toBigInt=Et,t.toHex=kt,t.toNumber=At,t.toTwos=Ot,t.toUtf8Bytes=ci,t.toUtf8CodePoints=di,t.toUtf8String=fi,t.version=$p,t.wordlists=pd,t.zeroPadBytes=Ae,t.zeroPadValue=Ee,Object.defineProperty(t,"__esModule",{value:!0})})); //# sourceMappingURL=ethers.umd.min.js.map diff --git a/packages/ethers/dist/ethers.umd.min.js.map b/packages/ethers/dist/ethers.umd.min.js.map index a95b22394..3b46fbdd1 100644 --- a/packages/ethers/dist/ethers.umd.min.js.map +++ b/packages/ethers/dist/ethers.umd.min.js.map @@ -1 +1 @@ -{"version":3,"file":"ethers.umd.min.js","sources":["../../properties/lib/properties.js","../../properties/lib/events.js","../../properties/lib/storage.js","../../logger/lib/errors.js","../../logger/lib/logger.js","../../logger/lib/_version.js","../../abi/lib/_version.js","../../abi/lib/logger.js","../../abi/lib/fragments.js","../../math/lib/_version.js","../../math/lib/logger.js","../../math/lib/convert.js","../../math/lib/maths.js","../../math/lib/fixednumber.js","../../math/lib/base58.js","../../math/lib/units.js","../../bytes/lib/check.js","../../bytes/lib/_version.js","../../bytes/lib/logger.js","../../bytes/lib/array.js","../../bytes/lib/base64.js","../../bytes/lib/hex.js","../../bytes/lib/data.js","../../bytes/lib/pad.js","../../abi/lib/coders/abstract-coder.js","../../../node_modules/@noble/hashes/esm/utils.js","../../../node_modules/@noble/hashes/esm/hmac.js","../../../node_modules/@noble/hashes/esm/pbkdf2.js","../../../node_modules/@noble/hashes/esm/_sha2.js","../../../node_modules/@noble/hashes/esm/sha256.js","../../../node_modules/@noble/hashes/esm/_u64.js","../../../node_modules/@noble/hashes/esm/sha512.js","../../crypto/lib/_version.js","../../crypto/lib/logger.js","../../crypto/lib/crypto-browser.js","../../crypto/lib/hmac.js","../../../node_modules/@noble/hashes/esm/sha3.js","../../crypto/lib/keccak.js","../../../node_modules/@noble/hashes/esm/ripemd160.js","../../crypto/lib/ripemd160.js","../../crypto/lib/pbkdf2.js","../../crypto/lib/random.js","../../../node_modules/@noble/hashes/esm/scrypt.js","../../crypto/lib/scrypt.js","../../crypto/lib/sha2.js","../../crypto/lib/index.js","../../address/lib/_version.js","../../address/lib/logger.js","../../address/lib/address.js","../../rlp/lib/_version.js","../../rlp/lib/logger.js","../../rlp/lib/encode.js","../../rlp/lib/decode.js","../../address/lib/contract-address.js","../../address/lib/checks.js","../../abi/lib/typed.js","../../abi/lib/coders/address.js","../../abi/lib/coders/anonymous.js","../../abi/lib/coders/array.js","../../abi/lib/coders/boolean.js","../../abi/lib/coders/bytes.js","../../abi/lib/coders/fixed-bytes.js","../../abi/lib/coders/null.js","../../abi/lib/coders/number.js","../../strings/lib/_version.js","../../strings/lib/logger.js","../../strings/lib/utf8.js","../../strings/lib/bytes32.js","../../strings/lib/idna.js","../../abi/lib/coders/string.js","../../abi/lib/coders/tuple.js","../../abi/lib/abi-coder.js","../../hash/lib/id.js","../../hash/lib/_version.js","../../hash/lib/logger.js","../../hash/lib/namehash.js","../../hash/lib/message.js","../../hash/lib/solidity.js","../../hash/lib/typed-data.js","../../abi/lib/interface.js","../../web/lib/_version.js","../../web/lib/logger.js","../../web/lib/response.js","../../web/lib/get-url-browser.js","../../web/lib/request.js","../../web/lib/fetch-data.js","../../providers/lib/_version.js","../../providers/lib/logger.js","../../providers/lib/ens-resolver.js","../../signing-key/lib/_version.js","../../signing-key/lib/logger.js","../../signing-key/lib/signature.js","../../../node_modules/@noble/secp256k1/lib/esm/index.js","../../signing-key/lib/signing-key.js","../../transaction/lib/accesslist.js","../../transaction/lib/address.js","../../transaction/lib/_version.js","../../transaction/lib/logger.js","../../transaction/lib/transaction.js","../../providers/lib/provider.js","../../providers/lib/formatter.js","../../providers/lib/plugins-network.js","../../providers/lib/network.js","../../providers/lib/subscriber-polling.js","../../providers/lib/abstract-provider.js","../../providers/lib/abstract-signer.js","../../providers/lib/community.js","../../providers/lib/subscriber-filterid.js","../../providers/lib/provider-jsonrpc.js","../../providers/lib/provider-ankr.js","../../providers/lib/provider-alchemy.js","../../providers/lib/provider-cloudflare.js","../../providers/lib/provider-etherscan.js","../../providers/lib/provider-infura.js","../../providers/lib/provider-pocket.js","../../providers/lib/provider-fallback.js","../../providers/lib/shuffle.js","../../providers/lib/ws-browser.js","../../providers/lib/provider-socket.js","../../providers/lib/provider-websocket.js","../../providers/lib/default-provider.js","../../providers/lib/common-networks.js","../../providers/lib/provider-ipcsocket-browser.js","../../contract/lib/wrappers.js","../../contract/lib/_version.js","../../contract/lib/logger.js","../../contract/lib/contract.js","../../wordlists/lib/decode-owl.js","../../wordlists/lib/_version.js","../../wordlists/lib/logger.js","../../wordlists/lib/wordlist.js","../../wordlists/lib/wordlist-owl.js","../../wordlists/lib/lang-en.js","../../wallet/lib/logger.js","../../wallet/lib/_version.js","../../wordlists/lib/wordlists-en.js","../../wordlists/lib/wordlist-owla.js","../../wordlists/lib/decode-owla.js","../../wordlists/lib/bit-reader.js","../../wallet/lib/mnemonic.js","../../wallet/lib/base-wallet.js","../../wallet/lib/hdwallet.js","../../../node_modules/aes-js/lib/aes.js","../../../node_modules/aes-js/lib/mode.js","../../../node_modules/aes-js/lib/mode-cbc.js","../../../node_modules/aes-js/lib/mode-cfb.js","../../../node_modules/aes-js/lib/mode-ctr.js","../../wallet/lib/utils.js","../../wallet/lib/json-crowdsale.js","../../../node_modules/aes-js/lib/padding.js","../../../node_modules/aes-js/lib/mode-ofb.js","../../wallet/lib/json-keystore.js","../../wallet/lib/wallet.js","../lib/_version.js"],"sourcesContent":["//import type { BigNumber, BigNumberish } from \"./big-number\";\n//import type { Bytes, BytesLike } from \"./bytes\";\n//import type { Signature, SignatureLike } from \"./signature\";\n/*\nexport type Loose = T extends BigNumber ? BigNumberish:\n T extends number ? BigNumberish:\n T extends Bytes ? BytesLike:\n T extends Signature ? SignatureLike:\n T;\nexport type LooseObject = { [P in keyof T]?: Loose; };\n*/\n//export type Deferrable = T | Promise;\n/*\nexport type DeferrableObject = {\n [ P in keyof T ]: Deferrable\n};\n*/\n/*\nexport type Frozen = Readonly<{\n [ P in keyof T ]: T[P] extends Freezable ? Frozen: T[P];\n}>;\n\nexport interface Freezable {\n clone(): T;\n freeze(): Frozen;\n isFrozen(): boolean;\n}\n*/\n/*\nconst _data: WeakMap = new WeakMap();\n\nexport class Data implements Freezable {\n #props: {\n data: Uint8Array\n };\n\n [ index: number ]: number;\n\n constructor(lengthOrData: number | Uint8Array) {\n if (typeof(lengthOrData) === \"number\") {\n _data[this] = new Uint8Array(lengthOrData);\n } else {\n _data[this] = lengthOrData;\n }\n\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return Reflect.get(target, prop, receiver); }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n throw new Error(\"\");\n }\n return data[index];\n },\n\n set: (target, prop, value, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return false; }\n\n if (value < 0 || value > 255 || value % 1) { return false; }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n return false;\n }\n\n data[index] = value;\n\n return true;\n },\n });\n }\n\n toString(): string {\n return this.slice().toString();\n }\n\n slice(): Uint8Array {\n return _data.get(this).slice();\n }\n\n clone(): Data {\n return new Data(this.slice());\n }\n\n freeze(): Frozen {\n //Object.freeze(this.#props);\n return this;\n }\n\n isFrozen(): boolean {\n return Object.isFrozen(this.#props);\n }\n}\nconst d = new Data(4);\nconsole.log(d.toString());\nd[0] = 45;\nconsole.log(d.toString());\n*/\n/*\nexport type DeferrableObject = {\n [ P in keyof T ]: Deferrable\n};\n*/\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n/*\nexport type IsCancelled = () => Promise;\n\nexport function createPromise(resolve: (isCancelled: IsCancelled, (result: T) => void) => void, reject: (error: Error) => void, isCancelled: IsCancelled): CancellablePromise {\n let cancelled = false;\n\n const promise = new Promise((resolve, reject) => {\n \n });\n\n (>promise).cancel = function() {\n cancelled = true;\n };\n\n return (>promise);\n}\n*/\n/*\nexport class A implements Freezable {\n foo: number;\n constructor(foo: number) {\n this.foo = foo;\n }\n freeze(): Frozen {\n Object.freeze(this);\n return this;\n }\n clone(): A {\n return new A(this.foo);\n }\n}\n\nexport class B implements Freezable {\n a: A;\n constructor(a: A) {\n this.a = a;\n }\n freeze(): Frozen {\n this.a.freeze();\n Object.freeze(this);\n return this;\n }\n clone(): B {\n return new B(this.a);\n }\n}\n\nexport function test() {\n const a = new A(123);\n const b = new B(a);\n b.a = new A(234);\n const b2 = b.freeze();\n b2.a.foo = 123; // = a;\n}\n*/\nfunction checkType(value, type) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n throw new Error(\"invalid value for type\");\n}\nexport function defineProperties(target, values, types, defaults) {\n for (let key in values) {\n let value = values[key];\n const fallback = (defaults ? defaults[key] : undefined);\n if (fallback !== undefined) {\n value = fallback;\n }\n else {\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type);\n }\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _EventPayload_listener;\nimport { defineProperties } from \"./properties.js\";\nexport class EventPayload {\n constructor(emitter, listener, filter) {\n _EventPayload_listener.set(this, void 0);\n __classPrivateFieldSet(this, _EventPayload_listener, listener, \"f\");\n defineProperties(this, { emitter, filter });\n }\n async removeListener() {\n if (__classPrivateFieldGet(this, _EventPayload_listener, \"f\") == null) {\n return;\n }\n await this.emitter.off(this.filter, __classPrivateFieldGet(this, _EventPayload_listener, \"f\"));\n }\n}\n_EventPayload_listener = new WeakMap();\n//# sourceMappingURL=events.js.map","export function getStore(store, key) {\n return store[key];\n}\nexport function setStore(store, key, value) {\n if (Object.isFrozen(store)) {\n throw new Error(\"frozen object is immuatable; cannot set \" + key);\n }\n store[key] = value;\n}\n//# sourceMappingURL=storage.js.map","//export type TransactionReceipt {\n//}\n/**\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, errors.CALL_EXCEPTION)) {\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n//# sourceMappingURL=errors.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Logger_instances, _Logger_getBytes, _Logger_log;\nimport { version } from \"./_version.js\";\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\n;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nlet _globalLogger = null;\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\nfunction defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true, writable: false, value,\n });\n}\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\n// The type of error to use for various error codes\nconst ErrorConstructors = {};\nErrorConstructors.INVALID_ARGUMENT = TypeError;\nErrorConstructors.NUMERIC_FAULT = RangeError;\nErrorConstructors.BUFFER_OVERRUN = RangeError;\nexport class Logger {\n constructor(version) {\n _Logger_instances.add(this);\n defineReadOnly(this, \"version\", version || \"_\");\n }\n makeError(message, code, info) {\n {\n const details = [];\n if (info) {\n for (const key in info) {\n const value = (info[key]);\n try {\n details.push(key + \"=\" + JSON.stringify(value));\n }\n catch (error) {\n details.push(key + \"=[could not serialize object]\");\n }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${this.version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n const create = ErrorConstructors[code] || Error;\n const error = (new create(message));\n defineReadOnly(error, \"code\", code);\n if (info) {\n for (const key in info) {\n defineReadOnly(error, key, (info[key]));\n }\n }\n return error;\n }\n throwError(message, code, info) {\n throw this.makeError(message, code, info);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, \"INVALID_ARGUMENT\", {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, info) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code || \"UNKNOWN_ERROR\", info);\n }\n assertArgument(condition, message, name, value) {\n return this.assert(condition, message, \"INVALID_ARGUMENT\", {\n argument: name,\n value\n });\n }\n assertIntegerArgument(name, value, lower, upper) {\n let message = null;\n if (typeof (value) !== \"number\") {\n message = \"expected a number\";\n }\n else if (!Number.isInteger(value)) {\n message = \"invalid integer\";\n }\n else if ((lower != null && value < lower) || (upper != null && value > upper)) {\n message = \"value is out of range\";\n }\n if (message) {\n this.throwArgumentError(message, name, value);\n }\n }\n assertSafeUint53(value, message) {\n this.assertArgument((typeof (value) === \"number\"), \"invalid number\", \"value\", value);\n if (message == null) {\n message = \"value not safe\";\n }\n const operation = \"assertSafeInteger\";\n this.assert((value >= 0 && value < 0x1fffffffffffff), message, \"NUMERIC_FAULT\", {\n operation, fault: \"out-of-safe-range\", value\n });\n this.assert((value % 1) === 0, message, \"NUMERIC_FAULT\", {\n operation, fault: \"non-integer\", value\n });\n }\n assertNormalize(form) {\n if (_normalizeForms.indexOf(form) === -1) {\n this.throwError(\"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n }\n }\n assertPrivate(givenGuard, guard, className = \"\") {\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n this.throwError(`private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n }\n assertArgumentCount(count, expectedCount, message = \"\") {\n if (message) {\n message = \": \" + message;\n }\n this.assert((count >= expectedCount), \"missing arguemnt\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n this.assert((count >= expectedCount), \"too many arguemnts\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n }\n getBytes(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, false);\n }\n getBytesCopy(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, true);\n }\n getNumber(value, name) {\n switch (typeof (value)) {\n case \"bigint\":\n if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return Number(value);\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return value;\n case \"string\":\n try {\n return this.getNumber(BigInt(value), name);\n }\n catch (e) {\n this.throwArgumentError(`invalid numeric string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid numeric value\", name || \"value\", value);\n }\n getBigInt(value, name) {\n switch (typeof (value)) {\n case \"bigint\": return value;\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return BigInt(value);\n case \"string\":\n try {\n return BigInt(value);\n }\n catch (e) {\n this.throwArgumentError(`invalid BigNumberish string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid BigNumberish value\", name || \"value\", value);\n }\n debug(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.DEBUG, args);\n }\n info(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.INFO, args);\n }\n warn(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.WARNING, args);\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setLogLevel(logLevel) {\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_Logger_instances = new WeakSet(), _Logger_getBytes = function _Logger_getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x([0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n return this.throwArgumentError(\"invalid BytesLike value\", name || \"value\", value);\n}, _Logger_log = function _Logger_log(logLevel, args) {\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]) {\n return;\n }\n console.log.apply(console, args);\n};\nLogger.LogLevels = LogLevel;\n//# sourceMappingURL=logger.js.map","export const version = \"@ethersproject/logger@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","export const version = \"@ethersproject/abi@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TokenString_instances, _TokenString_offset, _TokenString_tokens, _TokenString_subTokenString, _ParamType_instances, _ParamType_walkAsync;\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n;\nexport var FormatType;\n(function (FormatType) {\n // Bare formatting, as is needed for computing a sighash of an event or function\n FormatType[\"sighash\"] = \"sighash\";\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n FormatType[\"minimal\"] = \"minimal\";\n // Human-Readable with nice spacing, including all names\n FormatType[\"full\"] = \"full\";\n // JSON-format a la Solidity\n FormatType[\"json\"] = \"json\";\n})(FormatType || (FormatType = {}));\n;\n// [ \"a\", \"b\" ] => { \"a\": 1, \"b\": 1 }\nfunction setify(items) {\n const result = new Set();\n items.forEach((k) => result.add(k));\n return Object.freeze(result);\n}\n// Visibility Keywords\nconst _kwVisib = \"constant external internal payable private public pure view\";\nconst KwVisib = setify(_kwVisib.split(\" \"));\nconst _kwTypes = \"constructor error event function struct\";\nconst KwTypes = setify(_kwTypes.split(\" \"));\nconst _kwModifiers = \"calldata memory storage payable indexed\";\nconst KwModifiers = setify(_kwModifiers.split(\" \"));\nconst _kwOther = \"tuple returns\";\n// All Keywords\nconst _keywords = [_kwTypes, _kwModifiers, _kwOther, _kwVisib].join(\" \");\nconst Keywords = setify(_keywords.split(\" \"));\n// Single character tokens\nconst SimpleTokens = {\n \"(\": \"OPEN_PAREN\", \")\": \"CLOSE_PAREN\",\n \"[\": \"OPEN_BRACKET\", \"]\": \"CLOSE_BRACKET\",\n \",\": \"COMMA\", \"@\": \"AT\"\n};\n// Parser regexes to consume the next token\nconst regexWhitespace = new RegExp(\"^(\\\\s*)\");\nconst regexNumber = new RegExp(\"^([0-9]+)\");\nconst regexIdentifier = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)\");\nconst regexType = new RegExp(\"^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))\");\nexport class TokenString {\n constructor(tokens) {\n _TokenString_instances.add(this);\n _TokenString_offset.set(this, void 0);\n _TokenString_tokens.set(this, void 0);\n __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\");\n __classPrivateFieldSet(this, _TokenString_tokens, tokens.slice(), \"f\");\n }\n get offset() { return __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n get length() { return __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length - __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n clone() { return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\")); }\n reset() { __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\"); }\n // Pops and returns the value of the next token, if it is a keyword in allowed; throws if out of tokens\n popKeyword(allowed) {\n const top = this.peek();\n if (top.type !== \"KEYWORD\" || !allowed.has(top.text)) {\n throw new Error(`expected keyword ${top.text}`);\n }\n return this.pop().text;\n }\n // Pops and returns the value of the next token if it is `type`; throws if out of tokens\n popType(type) {\n if (this.peek().type !== type) {\n throw new Error(`expected ${type}; got ${JSON.stringify(this.peek())}`);\n }\n return this.pop().text;\n }\n // Pops and returns a \"(\" TOKENS \")\"\n popParen() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = __classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, top.match + 1);\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Pops and returns the items within \"(\" ITEM1 \",\" ITEM2 \",\" ... \")\"\n popParams() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = [];\n while (__classPrivateFieldGet(this, _TokenString_offset, \"f\") < top.match - 1) {\n const link = this.peek().linkNext;\n result.push(__classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, link));\n __classPrivateFieldSet(this, _TokenString_offset, link, \"f\");\n }\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Returns the top Token, throwing if out of tokens\n peek() {\n if (__classPrivateFieldGet(this, _TokenString_offset, \"f\") >= __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length) {\n throw new Error(\"out-of-bounds\");\n }\n return __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[__classPrivateFieldGet(this, _TokenString_offset, \"f\")];\n }\n // Returns the next value, if it is a keyword in `allowed`\n peekKeyword(allowed) {\n const top = this.peekType(\"KEYWORD\");\n return (top != null && allowed.has(top)) ? top : null;\n }\n // Returns the value of the next token if it is `type`\n peekType(type) {\n if (this.length === 0) {\n return null;\n }\n const top = this.peek();\n return (top.type === type) ? top.text : null;\n }\n // Returns the next token; throws if out of tokens\n pop() {\n var _a;\n const result = this.peek();\n __classPrivateFieldSet(this, _TokenString_offset, (_a = __classPrivateFieldGet(this, _TokenString_offset, \"f\"), _a++, _a), \"f\");\n return result;\n }\n toString() {\n const tokens = [];\n for (let i = __classPrivateFieldGet(this, _TokenString_offset, \"f\"); i < __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length; i++) {\n const token = __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[i];\n tokens.push(`${token.type}:${token.text}`);\n }\n return ``;\n }\n}\n_TokenString_offset = new WeakMap(), _TokenString_tokens = new WeakMap(), _TokenString_instances = new WeakSet(), _TokenString_subTokenString = function _TokenString_subTokenString(from = 0, to = 0) {\n return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\").slice(from, to).map((t) => {\n return Object.freeze(Object.assign({}, t, {\n match: (t.match - from),\n linkBack: (t.linkBack - from),\n linkNext: (t.linkNext - from),\n }));\n return t;\n }));\n};\nexport function lex(text) {\n const tokens = [];\n const throwError = (message) => {\n const token = (offset < text.length) ? JSON.stringify(text[offset]) : \"$EOI\";\n throw new Error(`invalid token ${token} at ${offset}: ${message}`);\n };\n let brackets = [];\n let commas = [];\n let offset = 0;\n while (offset < text.length) {\n // Strip off any leading whitespace\n let cur = text.substring(offset);\n let match = cur.match(regexWhitespace);\n if (match) {\n offset += match[1].length;\n cur = text.substring(offset);\n }\n const token = { depth: brackets.length, linkBack: -1, linkNext: -1, match: -1, type: \"\", text: \"\", offset, value: -1 };\n tokens.push(token);\n let type = (SimpleTokens[cur[0]] || \"\");\n if (type) {\n token.type = type;\n token.text = cur[0];\n offset++;\n if (type === \"OPEN_PAREN\") {\n brackets.push(tokens.length - 1);\n commas.push(tokens.length - 1);\n }\n else if (type == \"CLOSE_PAREN\") {\n if (brackets.length === 0) {\n throwError(\"no matching open bracket\");\n }\n token.match = brackets.pop();\n (tokens[token.match]).match = tokens.length - 1;\n token.depth--;\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n }\n else if (type === \"COMMA\") {\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n commas.push(tokens.length - 1);\n }\n else if (type === \"OPEN_BRACKET\") {\n token.type = \"BRACKET\";\n }\n else if (type === \"CLOSE_BRACKET\") {\n // Remove the CLOSE_BRACKET\n let suffix = tokens.pop().text;\n if (tokens.length > 0 && tokens[tokens.length - 1].type === \"NUMBER\") {\n const value = tokens.pop().text;\n suffix = value + suffix;\n (tokens[tokens.length - 1]).value = logger.getNumber(value);\n }\n if (tokens.length === 0 || tokens[tokens.length - 1].type !== \"BRACKET\") {\n throw new Error(\"missing opening bracket\");\n }\n (tokens[tokens.length - 1]).text += suffix;\n }\n continue;\n }\n match = cur.match(regexIdentifier);\n if (match) {\n token.text = match[1];\n offset += token.text.length;\n if (Keywords.has(token.text)) {\n token.type = \"KEYWORD\";\n continue;\n }\n if (token.text.match(regexType)) {\n token.type = \"TYPE\";\n continue;\n }\n token.type = \"ID\";\n continue;\n }\n match = cur.match(regexNumber);\n if (match) {\n token.text = match[1];\n token.type = \"NUMBER\";\n offset += token.text.length;\n continue;\n }\n throw new Error(`unexpected token ${JSON.stringify(cur[0])} at position ${offset}`);\n }\n return new TokenString(tokens.map((t) => Object.freeze(t)));\n}\n// Check only one of `allowed` is in `set`\nfunction allowSingle(set, allowed) {\n let included = [];\n for (const key in allowed.keys()) {\n if (set.has(key)) {\n included.push(key);\n }\n }\n if (included.length > 1) {\n throw new Error(`conflicting types: ${included.join(\", \")}`);\n }\n}\n// Functions to process a Solidity Signature TokenString from left-to-right for...\n// ...the name with an optional type, returning the name\nfunction consumeName(type, tokens) {\n if (tokens.peekKeyword(KwTypes)) {\n const keyword = tokens.pop().text;\n if (keyword !== type) {\n throw new Error(`expected ${type}, got ${keyword}`);\n }\n }\n return tokens.popType(\"ID\");\n}\n// ...all keywords matching allowed, returning the keywords\nfunction consumeKeywords(tokens, allowed) {\n const keywords = new Set();\n while (true) {\n const keyword = tokens.peekType(\"KEYWORD\");\n if (keyword == null || (allowed && !allowed.has(keyword))) {\n break;\n }\n tokens.pop();\n if (keywords.has(keyword)) {\n throw new Error(`duplicate keywords: ${JSON.stringify(keyword)}`);\n }\n keywords.add(keyword);\n }\n return Object.freeze(keywords);\n}\n// ...all visibility keywords, returning the coalesced mutability\nfunction consumeMutability(tokens) {\n let modifiers = consumeKeywords(tokens, KwVisib);\n // Detect conflicting modifiers\n allowSingle(modifiers, setify(\"constant payable nonpayable\".split(\" \")));\n allowSingle(modifiers, setify(\"pure view payable nonpayable\".split(\" \")));\n // Process mutability states\n if (modifiers.has(\"view\")) {\n return \"view\";\n }\n if (modifiers.has(\"pure\")) {\n return \"pure\";\n }\n if (modifiers.has(\"payable\")) {\n return \"payable\";\n }\n if (modifiers.has(\"nonpayable\")) {\n return \"nonpayable\";\n }\n // Process legacy `constant` last\n if (modifiers.has(\"constant\")) {\n return \"view\";\n }\n return \"nonpayable\";\n}\n// ...a parameter list, returning the ParamType list\nfunction consumeParams(tokens, allowIndexed) {\n return tokens.popParams().map((t) => ParamType.fromTokens(t, allowIndexed));\n}\n// ...a gas limit, returning a BigNumber or null if none\nfunction consumeGas(tokens) {\n if (tokens.peekType(\"AT\")) {\n tokens.pop();\n if (tokens.peekType(\"NUMBER\")) {\n return logger.getBigInt(tokens.pop().text);\n }\n throw new Error(\"invalid gas\");\n }\n return null;\n}\nfunction consumeEoi(tokens) {\n if (tokens.length) {\n throw new Error(`unexpected tokens: ${tokens.toString()}`);\n }\n}\nconst regexArrayType = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nfunction verifyBasicType(type) {\n const match = type.match(regexType);\n if (!match) {\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n }\n if (type === \"uint\") {\n return \"uint256\";\n }\n if (type === \"int\") {\n return \"int256\";\n }\n if (match[2]) {\n // bytesXX\n const length = parseInt(match[2]);\n if (length === 0 || length > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"type\", type);\n }\n }\n else if (match[3]) {\n // intXX or uintXX\n const size = parseInt(match[3]);\n if (size === 0 || size > 256 || size % 8) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n }\n return type;\n}\n// Make the Fragment constructors effectively private\nconst _guard = {};\nconst internal = Symbol.for(\"_ethers_internal\");\nconst ParamTypeInternal = \"_ParamTypeInternal\";\nexport class ParamType {\n constructor(guard, name, type, baseType, indexed, components, arrayLength, arrayChildren) {\n _ParamType_instances.add(this);\n logger.assertPrivate(guard, _guard, \"ParamType\");\n Object.defineProperty(this, internal, { value: ParamTypeInternal });\n if (components) {\n components = Object.freeze(components.slice());\n }\n if (baseType === \"array\") {\n if (arrayLength == null || arrayChildren == null) {\n throw new Error(\"\");\n }\n }\n else if (arrayLength != null || arrayChildren != null) {\n throw new Error(\"\");\n }\n if (baseType === \"tuple\") {\n if (components == null) {\n throw new Error(\"\");\n }\n }\n else if (components != null) {\n throw new Error(\"\");\n }\n defineProperties(this, {\n name, type, baseType, indexed, components, arrayLength, arrayChildren\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 = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n let result = {\n type: ((this.baseType === \"tuple\") ? \"tuple\" : this.type),\n name: (this.name || undefined)\n };\n if (typeof (this.indexed) === \"boolean\") {\n result.indexed = this.indexed;\n }\n if (this.isTuple()) {\n result.components = this.components.map((c) => JSON.parse(c.format(format)));\n }\n return JSON.stringify(result);\n }\n let result = \"\";\n // Array\n if (this.isArray()) {\n result += this.arrayChildren.format(format);\n result += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n }\n else {\n if (this.isTuple()) {\n if (format !== FormatType.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map((comp) => comp.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n }\n else {\n result += this.type;\n }\n }\n if (format !== FormatType.sighash) {\n if (this.indexed === true) {\n result += \" indexed\";\n }\n if (format === FormatType.full && this.name) {\n result += \" \" + this.name;\n }\n }\n return result;\n }\n static isArray(value) {\n return value && (value.baseType === \"array\");\n }\n isArray() {\n return (this.baseType === \"array\");\n }\n isTuple() {\n return (this.baseType === \"tuple\");\n }\n isIndexable() {\n return (this.indexed != null);\n }\n walk(value, process) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v) => (this.arrayChildren.walk(v, process)));\n }\n if (this.isTuple()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid tuple value\");\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v, i) => (this.components[i].walk(v, process)));\n }\n return process(this.type, value);\n }\n async walkAsync(value, process) {\n const promises = [];\n const result = [value];\n __classPrivateFieldGet(this, _ParamType_instances, \"m\", _ParamType_walkAsync).call(this, promises, value, process, (value) => {\n result[0] = value;\n });\n if (promises.length) {\n await Promise.all(promises);\n }\n return result[0];\n }\n static from(obj, allowIndexed) {\n if (ParamType.isParamType(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n return ParamType.fromTokens(lex(obj), allowIndexed);\n }\n if (obj instanceof TokenString) {\n return ParamType.fromTokens(obj, allowIndexed);\n }\n const name = obj.name;\n if (name && (typeof (name) !== \"string\" || !name.match(regexIdentifier))) {\n logger.throwArgumentError(\"invalid name\", \"obj.name\", name);\n }\n let indexed = obj.indexed;\n if (indexed != null) {\n if (!allowIndexed) {\n logger.throwArgumentError(\"parameter cannot be indexed\", \"obj.indexed\", obj.indexed);\n }\n indexed = !!indexed;\n }\n let type = obj.type;\n let arrayMatch = type.match(regexArrayType);\n if (arrayMatch) {\n const arrayLength = arrayMatch[2];\n const arrayChildren = ParamType.from({\n type: arrayMatch[1],\n components: obj.components\n });\n return new ParamType(_guard, name, type, \"array\", indexed, null, arrayLength, arrayChildren);\n }\n if (type.substring(0, 5) === \"tuple(\" || type[0] === \"(\") {\n const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;\n const tuple = new ParamType(_guard, name, type, \"tuple\", indexed, comps, null, null);\n // @TODO: use lexer to validate and normalize type\n return tuple;\n }\n type = verifyBasicType(obj.type);\n return new ParamType(_guard, name, type, type, indexed, null, null, null);\n }\n static fromObject(obj, allowIndexed) {\n throw new Error(\"@TODO\");\n }\n static fromTokens(tokens, allowIndexed) {\n let type = \"\", baseType = \"\";\n let comps = null;\n if (consumeKeywords(tokens, setify([\"tuple\"])).has(\"tuple\") || tokens.peekType(\"OPEN_PAREN\")) {\n // Tuple\n baseType = \"tuple\";\n comps = tokens.popParams().map((t) => ParamType.from(t));\n type = `tuple(${comps.map((c) => c.format()).join(\",\")})`;\n }\n else {\n // Normal\n type = verifyBasicType(tokens.popType(\"TYPE\"));\n baseType = type;\n }\n // Check for Array\n let arrayChildren = null;\n let arrayLength = null;\n while (tokens.length && tokens.peekType(\"BRACKET\")) {\n const bracket = tokens.pop(); //arrays[i];\n arrayChildren = new ParamType(_guard, \"\", type, baseType, null, comps, arrayLength, arrayChildren);\n arrayLength = bracket.value;\n type += bracket.text;\n baseType = \"array\";\n comps = null;\n }\n let indexed = null;\n const keywords = consumeKeywords(tokens, KwModifiers);\n if (keywords.has(\"indexed\")) {\n if (!allowIndexed) {\n throw new Error(\"\");\n }\n indexed = true;\n }\n const name = (tokens.peekType(\"ID\") ? tokens.pop().text : \"\");\n if (tokens.length) {\n throw new Error(\"leftover tokens\");\n }\n return new ParamType(_guard, name, type, baseType, indexed, comps, arrayLength, arrayChildren);\n }\n static isParamType(value) {\n return (value && value[internal] === ParamTypeInternal);\n }\n}\n_ParamType_instances = new WeakSet(), _ParamType_walkAsync = function _ParamType_walkAsync(promises, value, process, setValue) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const childType = this.arrayChildren;\n const result = value.slice();\n result.forEach((value, index) => {\n __classPrivateFieldGet(childType, _ParamType_instances, \"m\", _ParamType_walkAsync).call(childType, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n if (this.isTuple()) {\n const components = this.components;\n // Convert the object into an array\n let result;\n if (Array.isArray(value)) {\n result = value.slice();\n }\n else {\n if (value == null || typeof (value) !== \"object\") {\n throw new Error(\"invlaid tuple value\");\n }\n result = components.map((param) => {\n if (!param.name) {\n throw new Error(\"cannot use object value with unnamed components\");\n }\n if (!(param.name in value)) {\n throw new Error(`missing value for component ${param.name}`);\n }\n return value[param.name];\n });\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n result.forEach((value, index) => {\n var _a;\n __classPrivateFieldGet((_a = components[index]), _ParamType_instances, \"m\", _ParamType_walkAsync).call(_a, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n const result = process(this.type, value);\n if (result.then) {\n promises.push((async function () { setValue(await result); })());\n }\n else {\n setValue(result);\n }\n};\nexport var FragmentType;\n(function (FragmentType) {\n FragmentType[\"constructor\"] = \"constructor\";\n FragmentType[\"error\"] = \"error\";\n FragmentType[\"event\"] = \"event\";\n FragmentType[\"function\"] = \"function\";\n FragmentType[\"struct\"] = \"struct\";\n})(FragmentType || (FragmentType = {}));\n;\nexport class Fragment {\n constructor(guard, type, inputs) {\n logger.assertPrivate(guard, _guard, \"Fragment\");\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { type, inputs });\n }\n static from(obj) {\n if (typeof (obj) === \"string\") {\n return this.fromString(obj);\n }\n if (obj instanceof TokenString) {\n return this.fromTokens(obj);\n }\n if (typeof (obj) === \"object\") {\n return this.fromObject(obj);\n }\n throw new Error(`unsupported type: ${obj}`);\n }\n static fromObject(obj) {\n switch (obj.type) {\n case \"constructor\": return ConstructorFragment.fromObject(obj);\n case \"error\": return ErrorFragment.fromObject(obj);\n case \"event\": return EventFragment.fromObject(obj);\n case \"function\": return FunctionFragment.fromObject(obj);\n case \"struct\": return StructFragment.fromObject(obj);\n }\n throw new Error(\"not implemented yet\");\n }\n static fromString(text) {\n try {\n Fragment.from(JSON.parse(text));\n }\n catch (e) { }\n return Fragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const type = tokens.popKeyword(KwTypes);\n switch (type) {\n case \"constructor\": return ConstructorFragment.fromTokens(tokens);\n case \"error\": return ErrorFragment.fromTokens(tokens);\n case \"event\": return EventFragment.fromTokens(tokens);\n case \"function\": return FunctionFragment.fromTokens(tokens);\n case \"struct\": return StructFragment.fromTokens(tokens);\n }\n throw new Error(`unsupported type: ${type}`);\n }\n /*\n static fromTokens(tokens: TokenString): Fragment {\n const assertDone = () => {\n if (tokens.length) { throw new Error(`unexpected tokens: ${ tokens.toString() }`); }\n });\n\n const type = (tokens.length && tokens.peek().type === \"KEYWORD\") ? tokens.peek().text: \"unknown\";\n\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens, type === \"event\");\n\n switch (type) {\n case \"event\": case \"struct\":\n assertDone();\n }\n\n }\n */\n static isConstructor(value) {\n return (value && value.type === \"constructor\");\n }\n static isError(value) {\n return (value && value.type === \"error\");\n }\n static isEvent(value) {\n return (value && value.type === \"event\");\n }\n static isFunction(value) {\n return (value && value.type === \"function\");\n }\n static isStruct(value) {\n return (value && value.type === \"struct\");\n }\n}\nexport class NamedFragment extends Fragment {\n constructor(guard, type, name, inputs) {\n super(guard, type, inputs);\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { name });\n }\n}\nfunction joinParams(format, params) {\n return \"(\" + params.map((p) => p.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n}\nexport class ErrorFragment extends NamedFragment {\n constructor(guard, name, inputs) {\n super(guard, FragmentType.error, name, inputs);\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"error\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n return result.join(\" \");\n }\n static fromString(text) {\n return ErrorFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new ErrorFragment(_guard, name, inputs);\n }\n}\nexport class EventFragment extends NamedFragment {\n constructor(guard, name, inputs, anonymous) {\n super(guard, FragmentType.event, name, inputs);\n defineProperties(this, { anonymous });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"event\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash && this.anonymous) {\n result.push(\"anonymous\");\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return EventFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"event\", tokens);\n const inputs = consumeParams(tokens, true);\n const anonymous = !!consumeKeywords(tokens, setify([\"anonymous\"])).has(\"anonymous\");\n consumeEoi(tokens);\n return new EventFragment(_guard, name, inputs, anonymous);\n }\n}\nexport class ConstructorFragment extends Fragment {\n constructor(guard, type, inputs, payable, gas) {\n super(guard, type, inputs);\n defineProperties(this, { payable, gas });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", \"UNSUPPORTED_OPERATION\", {\n operation: \"format(sighash)\"\n });\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: (this.payable ? \"payable\" : \"undefined\"),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [`constructor${joinParams(format, this.inputs)}`];\n result.push((this.payable) ? \"payable\" : \"nonpayable\");\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return ConstructorFragment.fromTokens(lex(text));\n }\n static fromObject(obj) {\n throw new Error(\"TODO\");\n }\n static fromTokens(tokens) {\n consumeKeywords(tokens, setify([\"constructor\"]));\n const inputs = consumeParams(tokens);\n const payable = !!consumeKeywords(tokens, setify([\"payable\"])).has(\"payable\");\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new ConstructorFragment(_guard, FragmentType.constructor, inputs, payable, gas);\n }\n}\nexport class FunctionFragment extends NamedFragment {\n constructor(guard, name, stateMutability, inputs, outputs, gas) {\n super(guard, FragmentType.function, name, inputs);\n outputs = Object.freeze(outputs.slice());\n const constant = (stateMutability === \"view\" || stateMutability === \"pure\");\n const payable = (stateMutability === \"payable\");\n defineProperties(this, { constant, gas, outputs, payable, stateMutability });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format))),\n outputs: this.outputs.map((o) => JSON.parse(o.format(format))),\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"function\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash) {\n if (this.stateMutability !== \"nonpayable\") {\n result.push(this.stateMutability);\n }\n if (this.outputs && this.outputs.length) {\n result.push(\"returns\");\n result.push(joinParams(format, this.outputs));\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return FunctionFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"function\", tokens);\n const inputs = consumeParams(tokens);\n const mutability = consumeMutability(tokens);\n let outputs = [];\n if (consumeKeywords(tokens, setify([\"returns\"])).has(\"returns\")) {\n outputs = consumeParams(tokens);\n }\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new FunctionFragment(_guard, name, mutability, inputs, outputs, gas);\n }\n}\nexport class StructFragment extends NamedFragment {\n format() {\n throw new Error(\"@TODO\");\n }\n static fromString(text) {\n return StructFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"struct\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new StructFragment(_guard, FragmentType.struct, name, inputs);\n }\n}\n//# sourceMappingURL=fragments.js.map","export const version = \"@ethersproject/math@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\nconst nibbles = \"0123456789abcdef\";\nconst BN_0 = BigInt(0);\n// Converts a value to a BigInt, including big endian data\nexport function toBigInt(_value) {\n if (_value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of _value) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return logger.getBigInt(_value, \"value\");\n}\nexport function toNumber(_value) {\n const value = toBigInt(_value);\n if (value < -maxValue || value > maxValue) {\n logger.throwArgumentError(\"overflow\", \"value\", _value);\n }\n return Number(value);\n}\n// Converts value to hex, optionally padding on the left to width bytes\nexport function toHex(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n let result = value.toString(16);\n if (_width == null) {\n // Ensure the value is of even length\n if (result.length % 2) {\n result = \"0\" + result;\n }\n }\n else {\n const width = logger.getNumber(_width, \"width\");\n if (width * 2 < result.length) {\n throw new Error(`value ${value} exceeds width ${width}`);\n }\n // Pad the value to the required width\n while (result.length < (width * 2)) {\n result = \"0\" + result;\n }\n }\n return \"0x\" + result;\n}\nexport function toArray(_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n//# sourceMappingURL=convert.js.map","import { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\n// Convert a value from a twos-compliment value\nexport function fromTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n // Top bit set; treat as a negative value\n if (value >> (width - BN_1)) {\n const mask = (BN_1 << width) - BN_1;\n return -(((~value) & mask) + BN_1);\n }\n return value;\n}\n// Convert value to a twos-compliment value\nexport function toTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n if (value < BN_0) {\n const mask = (BN_1 << width) - BN_1;\n return ((~(-value)) & mask) + BN_1;\n }\n return value;\n}\nexport function mask(_value, _bits) {\n const value = logger.getBigInt(_value, \"value\");\n const bits = logger.getBigInt(_bits, \"bits\");\n return value & ((BN_1 << bits) - BN_1);\n}\n//# sourceMappingURL=maths.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FixedNumber_instances, _FixedNumber_value, _FixedNumber_checkFormat;\nimport { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nimport { fromTwos, toTwos } from \"./maths.js\";\nconst _constructorGuard = {};\n//const Zero = BigInt(0);\nconst NegativeOne = BigInt(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, \"NUMERIC_FAULT\", params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\" || decimals < 0 || decimals > 256 || decimals % 1) {\n logger.throwArgumentError(\"invalid decimal length\", \"decimals\", decimals);\n }\n return BigInt(\"1\" + zeros.substring(0, decimals));\n}\nexport function formatFixed(_value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n let value = logger.getBigInt(_value, \"value\");\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n const multiplierStr = String(multiplier);\n const negative = (value < 0);\n if (negative) {\n value *= NegativeOne;\n }\n let fraction = String(value % multiplier);\n // Make sure there are enough place-holders\n while (fraction.length < multiplierStr.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n while (fraction.length > 1 && fraction.substring(fraction.length - 1) === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n let result = String(value / multiplier);\n if (multiplierStr.length !== 1) {\n result += \".\" + fraction;\n }\n if (negative) {\n result = \"-\" + result;\n }\n return result;\n}\nexport function parseFixed(value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\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 let whole = (comps[0] || \"0\"), fraction = (comps[1] || \"0\");\n // Trim trialing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > String(multiplier).length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < String(multiplier).length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigInt(whole);\n const fractionValue = BigInt(fraction);\n let wei = (wholeValue * multiplier) + fractionValue;\n if (negative) {\n wei *= NegativeOne;\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n return logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\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 if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n _FixedNumber_instances.add(this);\n //#hex: string;\n _FixedNumber_value.set(this, void 0);\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.format = FixedFormat.from(format);\n //this.#hex = hex;\n __classPrivateFieldSet(this, _FixedNumber_value, value, \"f\");\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n addUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a + b, this.format.decimals, this.format);\n }\n subUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a - b, this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * b) / this.format._multiplier, this.format.decimals, this.format);\n }\n divUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * this.format._multiplier) / b, this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0.0\" || __classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0\");\n }\n isNegative() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\")[0] === \"-\");\n }\n toString() { return __classPrivateFieldGet(this, _FixedNumber_value, \"f\"); }\n toHexString(_width) {\n throw new Error(\"TODO\");\n /*\n return toHex();\n if (width == null) { return this.#hex; }\n\n const width = logger.getNumeric(_width);\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n\n const hex = BigNumber.from(this.#hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return zeroPadLeft(hex, width / 8);\n */\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), format);\n }\n static fromValue(value, decimals = 0, format = \"fixed\") {\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format = \"fixed\") {\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric < 0) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n const hex = (function () {\n if (fixedFormat.signed) {\n return toHex(toTwos(numeric, fixedFormat.width));\n }\n return toHex(numeric, fixedFormat.width / 8);\n })();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(_value, format = \"fixed\") {\n const value = logger.getBytes(_value, \"value\");\n const fixedFormat = FixedFormat.from(format);\n if (value.length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = toBigInt(value);\n if (fixedFormat.signed) {\n numeric = fromTwos(numeric, fixedFormat.width);\n }\n const hex = toHex(toTwos(numeric, (fixedFormat.signed ? 0 : 1) + fixedFormat.width));\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (value instanceof Uint8Array) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== \"INVALID_ARGUMENT\") {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\n_FixedNumber_value = new WeakMap(), _FixedNumber_instances = new WeakSet(), _FixedNumber_checkFormat = function _FixedNumber_checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n};\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","import { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nconst Alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nlet Lookup = null;\nfunction getAlpha(letter) {\n if (Lookup == null) {\n Lookup = {};\n for (let i = 0; i < Alphabet.length; i++) {\n Lookup[Alphabet[i]] = BigInt(i);\n }\n }\n const result = Lookup[letter];\n if (result == null) {\n logger.throwArgumentError(`invalid base58 value`, \"letter\", letter);\n }\n return result;\n}\nconst BN_0 = BigInt(0);\nconst BN_58 = BigInt(58);\nexport function encodeBase58(_value) {\n let value = toBigInt(logger.getBytes(_value));\n let result = \"\";\n while (value) {\n result = Alphabet[Number(value % BN_58)] + result;\n value /= BN_58;\n }\n return result;\n}\nexport function decodeBase58(value) {\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result *= BN_58;\n result += getAlpha(value[i]);\n }\n return toHex(result);\n}\n//# sourceMappingURL=base58.js.map","import { formatFixed, parseFixed } from \"./fixednumber.js\";\nimport { logger } from \"./logger.js\";\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\nexport function formatUnits(value, unit) {\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return formatFixed(value, (unit != null) ? unit : 18);\n}\nexport function parseUnits(value, unit) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return parseFixed(value, (unit != null) ? unit : 18);\n}\nexport function formatEther(wei) {\n return formatUnits(wei, 18);\n}\nexport function parseEther(ether) {\n return parseUnits(ether, 18);\n}\n//# sourceMappingURL=units.js.map","export function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\n//# sourceMappingURL=check.js.map","export const version = \"@ethersproject/bytes@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { isBytesLike } from \"./check.js\";\nimport { logger } from \"./logger.js\";\nlet BN_8 = null;\nlet BN_255 = null;\ntry {\n BN_8 = BigInt(\"8\");\n BN_255 = BigInt(\"255\");\n}\ncatch (error) {\n console.log(\"Unsupported bigint\", error);\n}\nfunction isHexable(value) {\n return (value && typeof (value.toHexString) === \"function\");\n}\nexport function arrayify(data) {\n if (data == null) {\n logger.throwArgumentError(\"cannot arrayify nullish\", \"data\", data);\n }\n if (typeof (data) === \"number\") {\n let v = logger.getNumber(data, \"data\");\n const result = [];\n while (v) {\n result.unshift(v & 0xff);\n v = parseInt(String(v / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (BN_8 && typeof (data) === \"bigint\") {\n const result = [];\n while (data) {\n result.unshift(Number(data & BN_255));\n data >>= BN_8;\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (isHexable(data)) {\n return arrayify(data.toHexString());\n }\n if (typeof (data) === \"string\") {\n let hex = data;\n //if (options.allowMissingPrefix && hex.substring(0, 2) !== \"0x\") {\n // hex = \"0x\" + hex;\n //}\n if (!hex.match(/^0x[0-9a-f]*$/i)) {\n throw new RangeError(`invalid hex data string (${JSON.stringify(data)})`);\n }\n const result = [];\n for (let i = 2; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return new Uint8Array(result);\n }\n if (data instanceof Uint8Array) {\n return new Uint8Array(data);\n }\n throw new TypeError(`cannot arrayify ${JSON.stringify(data)}`);\n}\nexport function _noCopyArrayify(data) {\n if (!isBytesLike(data)) {\n logger.throwArgumentError(\"invalid BytesLike value\", \"data\", data);\n } // @TODO: ArgumentE>\n if (data instanceof Uint8Array) {\n return data;\n }\n return arrayify(data);\n}\n//# sourceMappingURL=array.js.map","import { logger } from \"./logger.js\";\nexport function decodeBase64(textData) {\n return new Uint8Array(Buffer.from(textData, \"base64\"));\n}\n;\nexport function encodeBase64(data) {\n return Buffer.from(logger.getBytes(data, \"data\")).toString(\"base64\");\n}\n//# sourceMappingURL=base64.js.map","import { arrayify, _noCopyArrayify } from \"./array.js\";\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(data) {\n const bytes = _noCopyArrayify(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\nexport function quantity(value) {\n let result = hexlify(arrayify(value)).substring(2);\n while (result.substring(0, 1) === \"0\") {\n result = result.substring(1);\n }\n if (result === \"\") {\n result = \"0\";\n }\n return \"0x\" + result;\n}\n//# sourceMappingURL=hex.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { isHexString } from \"./check.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return _noCopyArrayify(data).length;\n}\nexport function dataSlice(data, start, end) {\n const bytes = _noCopyArrayify(data);\n if (end != null && end > bytes.length) {\n logger.throwError(\"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.substring(0, 2) == \"00\") {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\n//# sourceMappingURL=data.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nfunction zeroPad(data, length, left) {\n const bytes = _noCopyArrayify(data);\n if (length < bytes.length) {\n logger.throwError(\"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n }\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=pad.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Result_instances, _Result_indices, _Result_throwError, _Writer_instances, _Writer_data, _Writer_dataLength, _Writer_writeData, _Reader_instances, _Reader_data, _Reader_offset, _Reader_peekBytes;\nimport { toArray, toBigInt, toNumber } from \"@ethersproject/math\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nexport const WordSize = 32;\nconst Padding = new Uint8Array(WordSize);\n// Properties used to immediate pass through to the underlying object\n// - `then` is used to detect if an object is a Promise for await\nconst passProperties = [\"then\"];\nconst _guard = {};\nexport class Result extends Array {\n constructor(guard, items, keys) {\n logger.assertPrivate(guard, _guard, \"Result\");\n super(...items);\n _Result_instances.add(this);\n _Result_indices.set(this, void 0);\n // Name lookup table\n __classPrivateFieldSet(this, _Result_indices, new Map(), \"f\");\n if (keys) {\n keys.forEach((key, index) => {\n if (key == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _Result_indices, \"f\").has(key)) {\n (__classPrivateFieldGet(this, _Result_indices, \"f\").get(key)).push(index);\n }\n else {\n __classPrivateFieldGet(this, _Result_indices, \"f\").set(key, [index]);\n }\n });\n }\n Object.freeze(this);\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"string\") {\n if (prop.match(/^[0-9]+$/)) {\n const index = logger.getNumber(prop, \"%index\");\n if (index < 0 || index >= this.length) {\n throw new RangeError(\"out of result range\");\n }\n const item = target[index];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `index ${index}`, item);\n }\n return item;\n }\n // Pass important checks (like `then` for Promise) through\n if (prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n // Something that could be a result keyword value\n if (!(prop in target)) {\n return target.getValue(prop);\n }\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n }\n slice(start, end) {\n if (start == null) {\n start = 0;\n }\n if (end == null) {\n end = this.length;\n }\n const result = [];\n for (let i = start; i < end; i++) {\n let value;\n try {\n value = this[i];\n }\n catch (error) {\n value = error.error;\n }\n result.push(value);\n }\n return result;\n }\n getValue(name) {\n const index = __classPrivateFieldGet(this, _Result_indices, \"f\").get(name);\n if (index != null && index.length === 1) {\n const item = this[index[0]];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `property ${JSON.stringify(name)}`, item);\n }\n return item;\n }\n throw new Error(`no named parameter: ${JSON.stringify(name)}`);\n }\n static fromItems(items, keys) {\n return new Result(_guard, items, keys);\n }\n}\n_Result_indices = new WeakMap(), _Result_instances = new WeakSet(), _Result_throwError = function _Result_throwError(name, error) {\n const wrapped = new Error(`deferred error during ABI decoding triggered accessing ${name}`);\n wrapped.error = error;\n throw wrapped;\n};\nexport function checkResultErrors(result) {\n // Find the first error (if any)\n const errors = [];\n const checkErrors = function (path, object) {\n if (!Array.isArray(object)) {\n return;\n }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n try {\n checkErrors(childPath, object[key]);\n }\n catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n };\n checkErrors([], result);\n return errors;\n}\nfunction getValue(value) {\n let bytes = toArray(value);\n if (bytes.length > WordSize) {\n logger.throwError(\"value out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes,\n length: WordSize,\n offset: bytes.length\n });\n }\n if (bytes.length !== WordSize) {\n bytes = arrayify(concat([Padding.slice(bytes.length % WordSize), bytes]));\n }\n return bytes;\n}\nexport class Coder {\n constructor(name, type, localName, dynamic) {\n defineProperties(this, { name, type, localName, dynamic }, {\n name: \"string\", type: \"string\", localName: \"string\", dynamic: \"boolean\"\n });\n }\n _throwError(message, value) {\n return logger.throwArgumentError(message, this.localName, value);\n }\n}\nexport class Writer {\n constructor() {\n _Writer_instances.add(this);\n // An array of WordSize lengthed objects to concatenation\n _Writer_data.set(this, void 0);\n _Writer_dataLength.set(this, void 0);\n __classPrivateFieldSet(this, _Writer_data, [], \"f\");\n __classPrivateFieldSet(this, _Writer_dataLength, 0, \"f\");\n }\n get data() {\n return concat(__classPrivateFieldGet(this, _Writer_data, \"f\"));\n }\n get length() { return __classPrivateFieldGet(this, _Writer_dataLength, \"f\"); }\n appendWriter(writer) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, arrayify(writer.data));\n }\n // Arrayish item; pad on the right to *nearest* WordSize\n writeBytes(value) {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % WordSize;\n if (paddingOffset) {\n bytes = arrayify(concat([bytes, Padding.slice(paddingOffset)]));\n }\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, bytes);\n }\n // Numeric item; pad on the left *to* WordSize\n writeValue(value) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, getValue(value));\n }\n // Inserts a numeric place-holder, returning a callback that can\n // be used to asjust the value later\n writeUpdatableValue() {\n const offset = __classPrivateFieldGet(this, _Writer_data, \"f\").length;\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(Padding);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + WordSize, \"f\");\n return (value) => {\n __classPrivateFieldGet(this, _Writer_data, \"f\")[offset] = getValue(value);\n };\n }\n}\n_Writer_data = new WeakMap(), _Writer_dataLength = new WeakMap(), _Writer_instances = new WeakSet(), _Writer_writeData = function _Writer_writeData(data) {\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(data);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + data.length, \"f\");\n return data.length;\n};\nexport class Reader {\n constructor(data, allowLoose) {\n _Reader_instances.add(this);\n _Reader_data.set(this, void 0);\n _Reader_offset.set(this, void 0);\n defineProperties(this, { allowLoose: !!allowLoose });\n __classPrivateFieldSet(this, _Reader_data, arrayify(data), \"f\");\n __classPrivateFieldSet(this, _Reader_offset, 0, \"f\");\n }\n get data() { return hexlify(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n get dataLength() { return __classPrivateFieldGet(this, _Reader_data, \"f\").length; }\n get consumed() { return __classPrivateFieldGet(this, _Reader_offset, \"f\"); }\n get bytes() { return new Uint8Array(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n // Create a sub-reader with the same underlying data, but offset\n subReader(offset) {\n return new Reader(__classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\") + offset), this.allowLoose);\n }\n // Read bytes\n readBytes(length, loose) {\n let bytes = __classPrivateFieldGet(this, _Reader_instances, \"m\", _Reader_peekBytes).call(this, 0, length, !!loose);\n __classPrivateFieldSet(this, _Reader_offset, __classPrivateFieldGet(this, _Reader_offset, \"f\") + bytes.length, \"f\");\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n // Read a numeric values\n readValue() {\n return toBigInt(this.readBytes(WordSize));\n }\n readIndex() {\n return toNumber(this.readBytes(WordSize));\n }\n}\n_Reader_data = new WeakMap(), _Reader_offset = new WeakMap(), _Reader_instances = new WeakSet(), _Reader_peekBytes = function _Reader_peekBytes(offset, length, loose) {\n let alignedLength = Math.ceil(length / WordSize) * WordSize;\n if (__classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength > __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n if (this.allowLoose && loose && __classPrivateFieldGet(this, _Reader_offset, \"f\") + length <= __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n alignedLength = length;\n }\n else {\n logger.throwError(\"data out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: arrayify(__classPrivateFieldGet(this, _Reader_data, \"f\")),\n length: __classPrivateFieldGet(this, _Reader_data, \"f\").length,\n offset: __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength\n });\n }\n }\n return __classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\"), __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength);\n};\n//# sourceMappingURL=abstract-coder.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianess.\n// So, just to be sure not to corrupt anything.\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nexport function bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('deadbeef')\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte))\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// Currently avoid insertion of polyfills with packers (browserify/webpack/etc)\n// But setTimeout is pretty slow, maybe worth to investigate howto do minimal polyfill here\nexport const nextTick = (() => {\n const nodeRequire = typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n try {\n if (nodeRequire) {\n const { setImmediate } = nodeRequire('timers');\n return () => new Promise((resolve) => setImmediate(resolve));\n }\n }\n catch (e) { }\n return () => new Promise((resolve) => setTimeout(resolve, 0));\n})();\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\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)\n continue;\n await nextTick();\n ts += diff;\n }\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nexport function assertNumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexport function assertBool(b) {\n if (typeof b !== 'boolean') {\n throw new Error(`Expected boolean, not ${b}`);\n }\n}\nexport function assertBytes(bytes, ...lengths) {\n if (bytes instanceof Uint8Array && (!lengths.length || lengths.includes(bytes.length))) {\n return;\n }\n throw new TypeError(`Expected ${lengths} bytes, not ${typeof bytes} with length=${bytes.length}`);\n}\nexport function assertHash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n assertNumber(hash.outputLen);\n assertNumber(hash.blockLen);\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(def, _opts) {\n if (_opts !== undefined && (typeof _opts !== 'object' || !isPlainObject(_opts)))\n throw new TypeError('Options should be object or undefined');\n const opts = Object.assign(def, _opts);\n return opts;\n}\nexport function wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n return new Uint8Array(crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\n","import { assertHash, Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nclass HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (!(this.iHash instanceof Hash))\n throw new TypeError('Expected instance of class which extends utils.Hash');\n const blockLen = (this.blockLen = this.iHash.blockLen);\n this.outputLen = this.iHash.outputLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > this.iHash.blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length !== this.outputLen)\n throw new Error('HMAC: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n","import { hmac } from './hmac.js';\n// prettier-ignore\nimport { createView, toBytes, assertNumber, assertHash, checkOpts, asyncLoop } from './utils.js';\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n assertHash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n assertNumber(c);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n if (c < 1)\n throw new Error('PBKDF2: iterations (c) should be >= 1');\n const password = toBytes(_password);\n const salt = toBytes(_salt);\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n u.fill(0);\n return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n */\nexport function pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexport async function pbkdf2Async(hash, password, salt, opts) {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await asyncLoop(c - 1, asyncTick, (i) => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n","import { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n const { view, buffer, blockLen, finished } = this;\n if (finished)\n throw new Error('digest() was already called');\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 // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length < this.outputLen)\n throw new Error('_Sha2: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // NOTE: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64bit of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n this.get().forEach((v, i) => oview.setUint32(4 * i, v, isLE));\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = wrapConstructor(() => new SHA256());\n","const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\nexport function fromBig(n, le = false) {\n if (le)\n 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}\nexport function split(lst, 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}\nexport const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nexport const shrSH = (h, l, s) => h >>> s;\nexport const shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nexport const rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexport const rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexport const rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nexport const rotr32H = (h, l) => l;\nexport const rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nexport const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexport const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexport const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\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.\nexport function add(Ah, Al, Bh, Bl) {\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\nexport const add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexport const add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexport const add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexport const add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexport const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexport const add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n","import { SHA2 } from './_sha2.js';\nimport * as u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = wrapConstructor(() => new SHA512());\nexport const sha512_256 = wrapConstructor(() => new SHA512_256());\nexport const sha384 = wrapConstructor(() => new SHA384());\n","export const version = \"@ethersproject/crypto@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","/* Browser Crypto Shims */\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { pbkdf2 } from \"@noble/hashes/pbkdf2\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nimport { logger } from \"./logger.js\";\nfunction getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst anyGlobal = getGlobal();\nlet crypto = anyGlobal.crypto || anyGlobal.msCrypto;\nexport function createHash(algo) {\n switch (algo) {\n case \"sha256\": return sha256.create();\n case \"sha512\": return sha512.create();\n }\n return logger.throwArgumentError(\"invalid hashing algorithm name\", \"algorithm\", algo);\n}\nexport function createHmac(_algo, key) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid hmac algorithm\", \"algorithm\", _algo);\n }\n return hmac.create(algo, key);\n}\nexport function pbkdf2Sync(password, salt, iterations, keylen, _algo) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid pbkdf2 algorithm\", \"algorithm\", _algo);\n }\n return pbkdf2(algo, password, salt, { c: iterations, dkLen: keylen });\n}\nexport function randomBytes(length) {\n if (crypto == null) {\n return logger.throwError(\"platform does not support secure random numbers\", \"UNSUPPORTED_OPERATION\", {\n operation: \"randomBytes\"\n });\n }\n if (length <= 0 || length > 1024 || (length % 1) || length != length) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return result;\n}\n//# sourceMappingURL=crypto-browser.js.map","import { createHmac } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _computeHmac = function (algorithm, key, data) {\n return \"0x\" + createHmac(algorithm, key).update(data).digest(\"hex\");\n};\nlet __computeHmac = _computeHmac;\nexport function computeHmac(algorithm, _key, _data) {\n const key = logger.getBytes(_key, \"key\");\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__computeHmac(algorithm, key, data));\n}\ncomputeHmac._ = _computeHmac;\ncomputeHmac.lock = function () { locked = true; };\ncomputeHmac.register = function (func) {\n if (locked) {\n throw new Error(\"computeHmac is locked\");\n }\n __computeHmac = func;\n};\nObject.freeze(computeHmac);\n//# sourceMappingURL=hmac.js.map","import * as u64 from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapConstructorWithOpts, assertNumber, } from './utils.js';\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = 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)\n t ^= _1n << ((_1n << BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = u64.split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => s > 32 ? u64.rotlBH(h, l, s) : u64.rotlSH(h, l, s);\nconst rotlL = (h, l, s) => s > 32 ? u64.rotlBL(h, l, s) : u64.rotlSL(h, l, s);\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 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++)\n 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++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n 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}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n assertNumber(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 keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (this.finished)\n throw new Error('digest() was already called');\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++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n 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)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array))\n throw new Error('Keccak: invalid output buffer');\n this.finish();\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= this.blockLen)\n this.keccak();\n const take = Math.min(this.blockLen - this.posOut, len - pos);\n out.set(this.state.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n assertNumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n if (out.length < this.outputLen)\n throw new Error('Keccak: invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finish();\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) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (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}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = gen(0x06, 136, 256 / 8);\nexport const sha3_384 = gen(0x06, 104, 384 / 8);\nexport const sha3_512 = gen(0x06, 72, 512 / 8);\nexport const keccak_224 = 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 = gen(0x01, 136, 256 / 8);\nexport const keccak_384 = gen(0x01, 104, 384 / 8);\nexport const keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen !== undefined ? opts.dkLen : outputLen, true));\nexport const shake128 = genShake(0x1f, 168, 128 / 8);\nexport const shake256 = genShake(0x1f, 136, 256 / 8);\n","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\nexport function keccak256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","import { SHA2 } from './_sha2.js';\nimport { wrapConstructor } from './utils.js';\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\nconst Rho = new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = Uint8Array.from({ length: 16 }, (_, i) => i);\nconst Pi = Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n for (let j of [idxL, idxR])\n j.push(j[i].map((k) => Rho[k]));\nconst shifts = [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = new Uint32Array([0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]);\nconst Kr = new Uint32Array([0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]);\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | (word >>> (32 - shift));\n// It's called f() in spec.\nfunction f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n else if (group === 1)\n return (x & y) | (~x & z);\n else if (group === 2)\n return (x | ~y) ^ z;\n else if (group === 3)\n return (x & z) | (y & ~z);\n else\n return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst BUF = new Uint32Array(16);\nexport class RIPEMD160 extends SHA2 {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + f(group, bl, cl, dl) + BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + f(rGroup, br, cr, dr) + BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n BUF.fill(0);\n }\n destroy() {\n this.destroyed = true;\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a hash function from 1990s.\n * @param message - msg that would be hashed\n */\nexport const ripemd160 = wrapConstructor(() => new RIPEMD160());\n","import { ripemd160 as noble_ripemd160 } from \"@noble/hashes/ripemd160\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _ripemd160 = function (data) {\n return noble_ripemd160(data);\n};\nlet __ripemd160 = _ripemd160;\nexport function ripemd160(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__ripemd160(data));\n}\nripemd160._ = _ripemd160;\nripemd160.lock = function () { locked = true; };\nripemd160.register = function (func) {\n if (locked) {\n throw new TypeError(\"ripemd160 is locked\");\n }\n __ripemd160 = func;\n};\nObject.freeze(ripemd160);\n//# sourceMappingURL=ripemd160.js.map","import { pbkdf2Sync } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _pbkdf2 = function (password, salt, iterations, keylen, algo) {\n return pbkdf2Sync(password, salt, iterations, keylen, algo);\n};\nlet __pbkdf2 = _pbkdf2;\nexport function pbkdf2(_password, _salt, iterations, keylen, algo) {\n const password = logger.getBytes(_password, \"password\");\n const salt = logger.getBytes(_salt, \"salt\");\n return hexlify(__pbkdf2(password, salt, iterations, keylen, algo));\n}\npbkdf2._ = _pbkdf2;\npbkdf2.lock = function () { locked = true; };\npbkdf2.register = function (func) {\n if (locked) {\n throw new Error(\"pbkdf2 is locked\");\n }\n __pbkdf2 = func;\n};\nObject.freeze(pbkdf2);\n//# sourceMappingURL=pbkdf2.js.map","import { randomBytes as crypto_random } from \"crypto\"; /*-browser*/\nlet locked = false;\nconst _randomBytes = function (length) {\n return new Uint8Array(crypto_random(length));\n};\nlet __randomBytes = _randomBytes;\nexport function randomBytes(length) {\n return __randomBytes(length);\n}\nrandomBytes._ = _randomBytes;\nrandomBytes.lock = function () { locked = true; };\nrandomBytes.register = function (func) {\n if (locked) {\n throw new Error(\"random is locked\");\n }\n __randomBytes = func;\n};\nObject.freeze(randomBytes);\n//# sourceMappingURL=random.js.map","import { sha256 } from './sha256.js';\nimport { pbkdf2 } from './pbkdf2.js';\nimport { assertNumber, asyncLoop, checkOpts, u32 } from './utils.js';\n// RFC 7914 Scrypt KDF\n// Left rotate for uint32\nconst rotl = (a, b) => (a << b) | (a >>> (32 - b));\n// The main Scrypt loop: uses Salsa extensively.\n// Six versions of the function were tried, this is the fastest one.\n// prettier-ignore\nfunction XorAndSalsa(prev, pi, input, ii, out, oi) {\n // Based on https://cr.yp.to/salsa20.html\n // Xor blocks\n let y00 = prev[pi++] ^ input[ii++], y01 = prev[pi++] ^ input[ii++];\n let y02 = prev[pi++] ^ input[ii++], y03 = prev[pi++] ^ input[ii++];\n let y04 = prev[pi++] ^ input[ii++], y05 = prev[pi++] ^ input[ii++];\n let y06 = prev[pi++] ^ input[ii++], y07 = prev[pi++] ^ input[ii++];\n let y08 = prev[pi++] ^ input[ii++], y09 = prev[pi++] ^ input[ii++];\n let y10 = prev[pi++] ^ input[ii++], y11 = prev[pi++] ^ input[ii++];\n let y12 = prev[pi++] ^ input[ii++], y13 = prev[pi++] ^ input[ii++];\n let y14 = prev[pi++] ^ input[ii++], y15 = prev[pi++] ^ input[ii++];\n // Save state to temporary variables (salsa)\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n // Main loop (salsa)\n for (let i = 0; i < 8; i += 2) {\n x04 ^= rotl(x00 + x12 | 0, 7);\n x08 ^= rotl(x04 + x00 | 0, 9);\n x12 ^= rotl(x08 + x04 | 0, 13);\n x00 ^= rotl(x12 + x08 | 0, 18);\n x09 ^= rotl(x05 + x01 | 0, 7);\n x13 ^= rotl(x09 + x05 | 0, 9);\n x01 ^= rotl(x13 + x09 | 0, 13);\n x05 ^= rotl(x01 + x13 | 0, 18);\n x14 ^= rotl(x10 + x06 | 0, 7);\n x02 ^= rotl(x14 + x10 | 0, 9);\n x06 ^= rotl(x02 + x14 | 0, 13);\n x10 ^= rotl(x06 + x02 | 0, 18);\n x03 ^= rotl(x15 + x11 | 0, 7);\n x07 ^= rotl(x03 + x15 | 0, 9);\n x11 ^= rotl(x07 + x03 | 0, 13);\n x15 ^= rotl(x11 + x07 | 0, 18);\n x01 ^= rotl(x00 + x03 | 0, 7);\n x02 ^= rotl(x01 + x00 | 0, 9);\n x03 ^= rotl(x02 + x01 | 0, 13);\n x00 ^= rotl(x03 + x02 | 0, 18);\n x06 ^= rotl(x05 + x04 | 0, 7);\n x07 ^= rotl(x06 + x05 | 0, 9);\n x04 ^= rotl(x07 + x06 | 0, 13);\n x05 ^= rotl(x04 + x07 | 0, 18);\n x11 ^= rotl(x10 + x09 | 0, 7);\n x08 ^= rotl(x11 + x10 | 0, 9);\n x09 ^= rotl(x08 + x11 | 0, 13);\n x10 ^= rotl(x09 + x08 | 0, 18);\n x12 ^= rotl(x15 + x14 | 0, 7);\n x13 ^= rotl(x12 + x15 | 0, 9);\n x14 ^= rotl(x13 + x12 | 0, 13);\n x15 ^= rotl(x14 + x13 | 0, 18);\n }\n // Write output (salsa)\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\nfunction BlockMix(input, ii, out, oi, r) {\n // The block B is r 128-byte chunks (which is equivalent of 2r 64-byte chunks)\n let head = oi + 0;\n let tail = oi + 16 * r;\n for (let i = 0; i < 16; i++)\n out[tail + i] = input[ii + (2 * r - 1) * 16 + i]; // X ← B[2r−1]\n for (let i = 0; i < r; i++, head += 16, ii += 16) {\n // We write odd & even Yi at same time. Even: 0bXXXXX0 Odd: 0bXXXXX1\n XorAndSalsa(out, tail, input, ii, out, head); // head[i] = Salsa(blockIn[2*i] ^ tail[i-1])\n if (i > 0)\n tail += 16; // First iteration overwrites tmp value in tail\n XorAndSalsa(out, head, input, (ii += 16), out, tail); // tail[i] = Salsa(blockIn[2*i+1] ^ head[i])\n }\n}\n// Common prologue and epilogue for sync/async functions\nfunction scryptInit(password, salt, _opts) {\n // Maxmem - 1GB+1KB by default\n const opts = checkOpts({\n dkLen: 32,\n asyncTick: 10,\n maxmem: 1024 ** 3 + 1024,\n }, _opts);\n const { N, r, p, dkLen, asyncTick, maxmem, onProgress } = opts;\n assertNumber(N);\n assertNumber(r);\n assertNumber(p);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n assertNumber(maxmem);\n if (onProgress !== undefined && typeof onProgress !== 'function')\n throw new Error('progressCb should be function');\n const blockSize = 128 * r;\n const blockSize32 = blockSize / 4;\n if (N <= 1 || (N & (N - 1)) !== 0 || N >= 2 ** (blockSize / 8) || N > 2 ** 32) {\n // NOTE: we limit N to be less than 2**32 because of 32 bit variant of Integrify function\n // There is no JS engines that allows alocate more than 4GB per single Uint8Array for now, but can change in future.\n throw new Error('Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32');\n }\n if (p < 0 || p > ((2 ** 32 - 1) * 32) / blockSize) {\n throw new Error('Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)');\n }\n if (dkLen < 0 || dkLen > (2 ** 32 - 1) * 32) {\n throw new Error('Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32');\n }\n const memUsed = blockSize * (N + p);\n if (memUsed > maxmem) {\n throw new Error(`Scrypt: parameters too large, ${memUsed} (128 * r * (N + p)) > ${maxmem} (maxmem)`);\n }\n // [B0...Bp−1] ← PBKDF2HMAC-SHA256(Passphrase, Salt, 1, blockSize*ParallelizationFactor)\n // Since it has only one iteration there is no reason to use async variant\n const B = pbkdf2(sha256, password, salt, { c: 1, dkLen: blockSize * p });\n const B32 = u32(B);\n // Re-used between parallel iterations. Array(iterations) of B\n const V = u32(new Uint8Array(blockSize * N));\n const tmp = u32(new Uint8Array(blockSize));\n let blockMixCb = () => { };\n if (onProgress) {\n const totalBlockMix = 2 * N * p;\n // Invoke callback if progress changes from 10.01 to 10.02\n // Allows to draw smooth progress bar on up to 8K screen\n const callbackPer = Math.max(Math.floor(totalBlockMix / 10000), 1);\n let blockMixCnt = 0;\n blockMixCb = () => {\n blockMixCnt++;\n if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix))\n onProgress(blockMixCnt / totalBlockMix);\n };\n }\n return { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick };\n}\nfunction scryptOutput(password, dkLen, B, V, tmp) {\n const res = pbkdf2(sha256, password, B, { c: 1, dkLen });\n B.fill(0);\n V.fill(0);\n tmp.fill(0);\n return res;\n}\n/**\n * Scrypt KDF from RFC 7914.\n * @param password - pass\n * @param salt - salt\n * @param opts - parameters\n * - `N` is cpu/mem work factor (power of 2 e.g. 2**18)\n * - `r` is block size (8 is common), fine-tunes sequential memory read size and performance\n * - `p` is parallelization factor (1 is common)\n * - `dkLen` is output key length in bytes e.g. 32.\n * - `asyncTick` - (default: 10) max time in ms for which async function can block execution\n * - `maxmem` - (default: `1024 ** 3 + 1024` aka 1GB+1KB). A limit that the app could use for scrypt\n * - `onProgress` - callback function that would be executed for progress report\n * @returns Derived key\n */\nexport function scrypt(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n for (let i = 0, pos = 0; i < N - 1; i++) {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n }\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n for (let i = 0; i < N; i++) {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n }\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n/**\n * Scrypt KDF from RFC 7914.\n */\nexport async function scryptAsync(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n let pos = 0;\n await asyncLoop(N - 1, asyncTick, (i) => {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n });\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n await asyncLoop(N, asyncTick, (i) => {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n });\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n","import { scrypt as _nobleSync, scryptAsync as _nobleAsync } from \"@noble/hashes/scrypt\";\nimport { hexlify as H } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet lockedSync = false, lockedAsync = false;\nconst _scryptAsync = async function (passwd, salt, N, r, p, dkLen, onProgress) {\n return await _nobleAsync(passwd, salt, { N, r, p, dkLen, onProgress });\n};\nconst _scryptSync = function (passwd, salt, N, r, p, dkLen) {\n return _nobleSync(passwd, salt, { N, r, p, dkLen });\n};\nlet __scryptAsync = _scryptAsync;\nlet __scryptSync = _scryptSync;\nexport async function scrypt(_passwd, _salt, N, r, p, dkLen, progress) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(await __scryptAsync(passwd, salt, N, r, p, dkLen, progress));\n}\nscrypt._ = _scryptAsync;\nscrypt.lock = function () { lockedAsync = true; };\nscrypt.register = function (func) {\n if (lockedAsync) {\n throw new Error(\"scrypt is locked\");\n }\n __scryptAsync = func;\n};\nObject.freeze(scrypt);\nexport function scryptSync(_passwd, _salt, N, r, p, dkLen) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(__scryptSync(passwd, salt, N, r, p, dkLen));\n}\nscryptSync._ = _scryptSync;\nscryptSync.lock = function () { lockedSync = true; };\nscryptSync.register = function (func) {\n if (lockedSync) {\n throw new Error(\"scryptSync is locked\");\n }\n __scryptSync = func;\n};\nObject.freeze(scryptSync);\n//# sourceMappingURL=scrypt.js.map","import { createHash } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nconst _sha256 = function (data) {\n return createHash(\"sha256\").update(data).digest();\n};\nconst _sha512 = function (data) {\n return createHash(\"sha512\").update(data).digest();\n};\nlet __sha256 = _sha256;\nlet __sha512 = _sha512;\nlet locked256 = false, locked512 = false;\nexport function sha256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha256(data));\n}\nsha256._ = _sha256;\nsha256.lock = function () { locked256 = true; };\nsha256.register = function (func) {\n if (locked256) {\n throw new Error(\"sha256 is locked\");\n }\n __sha256 = func;\n};\nObject.freeze(sha256);\nexport function sha512(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha512(data));\n}\nsha512._ = _sha512;\nsha512.lock = function () { locked512 = true; };\nsha512.register = function (func) {\n if (locked512) {\n throw new Error(\"sha512 is locked\");\n }\n __sha512 = func;\n};\nObject.freeze(sha256);\n//# sourceMappingURL=sha2.js.map","// We import all these so we can export lock()\nimport { computeHmac } from \"./hmac.js\";\nimport { keccak256 } from \"./keccak.js\";\nimport { ripemd160 } from \"./ripemd160.js\";\nimport { pbkdf2 } from \"./pbkdf2.js\";\nimport { randomBytes } from \"./random.js\";\nimport { scrypt, scryptSync } from \"./scrypt.js\";\nimport { sha256, sha512 } from \"./sha2.js\";\nexport { computeHmac, randomBytes, keccak256, ripemd160, sha256, sha512, pbkdf2, scrypt, scryptSync };\nexport function lock() {\n computeHmac.lock();\n keccak256.lock();\n pbkdf2.lock();\n randomBytes.lock();\n ripemd160.lock();\n scrypt.lock();\n scryptSync.lock();\n sha256.lock();\n sha512.lock();\n}\n//# sourceMappingURL=index.js.map","export const version = \"@ethersproject/address@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { arrayify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\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 return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\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 let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\nexport function getAddress(address) {\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\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 return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\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 let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n return logger.throwArgumentError(\"invalid address\", \"address\", address);\n}\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/rlp@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { logger } from \"./logger.js\";\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n const data = Array.prototype.slice.call(logger.getBytes(object, \"object\"));\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 const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nconst nibbles = \"0123456789abcdef\";\nexport function encodeRlp(object) {\n let result = \"0x\";\n for (const v of _encode(object)) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0xf];\n }\n return result;\n}\n//# sourceMappingURL=encode.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction hexlifyByte(value) {\n let result = value.toString(16);\n while (result.length < 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length, offset\n });\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: 0, offset: 1\n });\n }\n const checkOffset = (offset) => {\n if (offset > data.length) {\n logger.throwError(\"data short segment too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: data.length, offset\n });\n }\n };\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n checkOffset(offset + 1 + length);\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\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 checkOffset(offset + 1 + length);\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlifyByte(data[offset]) };\n}\nexport function decodeRlp(_data) {\n const data = logger.getBytes(_data, \"data\");\n const decoded = _decode(data, 0);\n if (decoded.consumed !== data.length) {\n logger.throwArgumentError(\"unexpected junk after rlp payload\", \"data\", _data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=decode.js.map","import { concat, dataSlice } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { encodeRlp } from \"@ethersproject/rlp\";\nimport { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getCreateAddress(tx) {\n const from = getAddress(tx.from);\n const nonce = logger.getBigInt(tx.nonce, \"tx.nonce\");\n let nonceHex = nonce.toString(16);\n if (nonceHex === \"0\") {\n nonceHex = \"0x\";\n }\n else if (nonceHex.length % 2) {\n nonceHex = \"0x0\" + nonceHex;\n }\n else {\n nonceHex = \"0x\" + nonceHex;\n }\n return getAddress(dataSlice(keccak256(encodeRlp([from, nonceHex])), 12));\n}\nexport function getCreate2Address(_from, _salt, _initCodeHash) {\n const from = getAddress(_from);\n const salt = logger.getBytes(_salt, \"salt\");\n const initCodeHash = logger.getBytes(_initCodeHash, \"initCodeHash\");\n if (salt.length !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", _salt);\n }\n if (initCodeHash.length !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", _initCodeHash);\n }\n return getAddress(dataSlice(keccak256(concat([\"0xff\", from, salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=contract-address.js.map","import { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\n// Resolves an Ethereum address, ENS name or Addressable object,\n// throwing if the result is null; an explicit null returns null\n//export async function resolveAddress(target?: null, resolver?: null | NameResolver): Promise;\n//export async function resolveAddress(target: string | Addressable, resolver?: null | NameResolver): Promise;\n//export async function resolveAddress(target: null | undefined | string | Addressable, resolver?: null | NameResolver) {\nexport async function resolveAddress(target, resolver) {\n //if (target == null) { return null; }\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n if (resolver == null) {\n return logger.throwError(\"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n });\n }\n const result = await resolver.resolveName(target);\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n return logger.throwError(\"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n }\n return getAddress(result);\n }\n else if (isAddressable(target)) {\n const result = await target.getAddress();\n if (result == null) {\n logger.throwArgumentError(\"addressable resolved to null\", \"target\", target);\n }\n return getAddress(result);\n }\n return logger.throwArgumentError(\"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Typed_options;\nimport { defineProperties } from \"@ethersproject/properties\";\nconst _gaurd = {};\nfunction n(value, width) {\n let signed = false;\n if (width < 0) {\n signed = true;\n width *= -1;\n }\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `${signed ? \"\" : \"u\"}int${width}`, value, { signed, width });\n}\nfunction b(value, size) {\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `bytes${(size) ? size : \"\"}`, value, { size });\n}\nconst _typedSymbol = Symbol.for(\"_ethers_typed\");\nexport class Typed {\n constructor(gaurd, type, value, options = null) {\n _Typed_options.set(this, void 0);\n if (gaurd !== _gaurd) {\n throw new Error(\"private constructor\");\n }\n defineProperties(this, { _typedSymbol, type, value });\n __classPrivateFieldSet(this, _Typed_options, options, \"f\");\n // Check the value is valid\n this.format();\n }\n format() {\n if (this.type === \"array\") {\n throw new Error(\"\");\n }\n else if (this.type === \"dynamicArray\") {\n throw new Error(\"\");\n }\n else if (this.type === \"tuple\") {\n return `tuple(${this.value.map((v) => v.format()).join(\",\")})`;\n }\n return this.type;\n }\n defaultValue() {\n return 0;\n }\n minValue() {\n return 0;\n }\n maxValue() {\n return 0;\n }\n isBigInt() {\n return !!(this.type.match(/^u?int[0-9]+$/));\n }\n isData() {\n return (this.type.substring(0, 5) === \"bytes\");\n }\n isString() {\n return (this.type === \"string\");\n }\n get tupleName() {\n if (this.type !== \"tuple\") {\n throw TypeError(\"not a tuple\");\n }\n return __classPrivateFieldGet(this, _Typed_options, \"f\");\n }\n // Returns the length of this type as an array\n // - `null` indicates the length is unforced, it could be dynamic\n // - `-1` indicates the length is dynamic\n // - any other value indicates it is a static array and is its length\n get arrayLength() {\n if (this.type !== \"array\") {\n throw TypeError(\"not an array\");\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === true) {\n return -1;\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === false) {\n return (this.value).length;\n }\n return null;\n }\n static from(type, value) {\n return new Typed(_gaurd, type, value);\n }\n static uint8(v) { return n(v, 8); }\n static uint16(v) { return n(v, 16); }\n static uint24(v) { return n(v, 24); }\n static uint32(v) { return n(v, 32); }\n static uint40(v) { return n(v, 40); }\n static uint48(v) { return n(v, 46); }\n static uint56(v) { return n(v, 56); }\n static uint64(v) { return n(v, 64); }\n static uint72(v) { return n(v, 72); }\n static uint80(v) { return n(v, 80); }\n static uint88(v) { return n(v, 88); }\n static uint96(v) { return n(v, 96); }\n static uint104(v) { return n(v, 104); }\n static uint112(v) { return n(v, 112); }\n static uint120(v) { return n(v, 120); }\n static uint128(v) { return n(v, 128); }\n static uint136(v) { return n(v, 136); }\n static uint144(v) { return n(v, 144); }\n static uint152(v) { return n(v, 152); }\n static uint160(v) { return n(v, 160); }\n static uint168(v) { return n(v, 168); }\n static uint176(v) { return n(v, 176); }\n static uint184(v) { return n(v, 184); }\n static uint192(v) { return n(v, 192); }\n static uint200(v) { return n(v, 200); }\n static uint208(v) { return n(v, 208); }\n static uint216(v) { return n(v, 216); }\n static uint224(v) { return n(v, 224); }\n static uint232(v) { return n(v, 232); }\n static uint240(v) { return n(v, 240); }\n static uint248(v) { return n(v, 248); }\n static uint256(v) { return n(v, 256); }\n static uint(v) { return n(v, 256); }\n static int8(v) { return n(v, -8); }\n static int16(v) { return n(v, -16); }\n static int24(v) { return n(v, -24); }\n static int32(v) { return n(v, -32); }\n static int40(v) { return n(v, -40); }\n static int48(v) { return n(v, -46); }\n static int56(v) { return n(v, -56); }\n static int64(v) { return n(v, -64); }\n static int72(v) { return n(v, -72); }\n static int80(v) { return n(v, -80); }\n static int88(v) { return n(v, -88); }\n static int96(v) { return n(v, -96); }\n static int104(v) { return n(v, -104); }\n static int112(v) { return n(v, -112); }\n static int120(v) { return n(v, -120); }\n static int128(v) { return n(v, -128); }\n static int136(v) { return n(v, -136); }\n static int144(v) { return n(v, -144); }\n static int152(v) { return n(v, -152); }\n static int160(v) { return n(v, -160); }\n static int168(v) { return n(v, -168); }\n static int176(v) { return n(v, -176); }\n static int184(v) { return n(v, -184); }\n static int192(v) { return n(v, -192); }\n static int200(v) { return n(v, -200); }\n static int208(v) { return n(v, -208); }\n static int216(v) { return n(v, -216); }\n static int224(v) { return n(v, -224); }\n static int232(v) { return n(v, -232); }\n static int240(v) { return n(v, -240); }\n static int248(v) { return n(v, -248); }\n static int256(v) { return n(v, -256); }\n static int(v) { return n(v, -256); }\n static bytes(v) { return b(v); }\n static bytes1(v) { return b(v, 1); }\n static bytes2(v) { return b(v, 2); }\n static bytes3(v) { return b(v, 3); }\n static bytes4(v) { return b(v, 4); }\n static bytes5(v) { return b(v, 5); }\n static bytes6(v) { return b(v, 6); }\n static bytes7(v) { return b(v, 7); }\n static bytes8(v) { return b(v, 8); }\n static bytes9(v) { return b(v, 9); }\n static bytes10(v) { return b(v, 10); }\n static bytes11(v) { return b(v, 11); }\n static bytes12(v) { return b(v, 12); }\n static bytes13(v) { return b(v, 13); }\n static bytes14(v) { return b(v, 14); }\n static bytes15(v) { return b(v, 15); }\n static bytes16(v) { return b(v, 16); }\n static bytes17(v) { return b(v, 17); }\n static bytes18(v) { return b(v, 18); }\n static bytes19(v) { return b(v, 19); }\n static bytes20(v) { return b(v, 20); }\n static bytes21(v) { return b(v, 21); }\n static bytes22(v) { return b(v, 22); }\n static bytes23(v) { return b(v, 23); }\n static bytes24(v) { return b(v, 24); }\n static bytes25(v) { return b(v, 25); }\n static bytes26(v) { return b(v, 26); }\n static bytes27(v) { return b(v, 27); }\n static bytes28(v) { return b(v, 28); }\n static bytes29(v) { return b(v, 29); }\n static bytes30(v) { return b(v, 30); }\n static bytes31(v) { return b(v, 31); }\n static bytes32(v) { return b(v, 32); }\n static address(v) { return new Typed(_gaurd, \"address\", v); }\n static bool(v) { return new Typed(_gaurd, \"bool\", !!v); }\n static string(v) { return new Typed(_gaurd, \"string\", v); }\n static array(v, dynamic) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"array\", v, dynamic);\n }\n static tuple(v, name) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"tuple\", v, name);\n }\n static overrides(v) {\n return new Typed(_gaurd, \"overrides\", Object.assign({}, v));\n }\n static isTyped(value) {\n return (value && value._typedSymbol === _typedSymbol);\n }\n static dereference(value, type) {\n if (Typed.isTyped(value)) {\n if (value.type !== type) {\n throw new Error(`invalid type: expecetd ${type}, got ${value.type}`);\n }\n return value.value;\n }\n return value;\n }\n}\n_Typed_options = new WeakMap();\n//# sourceMappingURL=typed.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class AddressCoder extends Coder {\n constructor(localName) {\n super(\"address\", \"address\", localName, false);\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000\";\n }\n encode(writer, _value) {\n let value = Typed.dereference(_value, \"string\");\n try {\n value = getAddress(value);\n }\n catch (error) {\n return this._throwError(error.message, _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n return getAddress(toHex(reader.readValue(), 20));\n }\n}\n//# sourceMappingURL=address.js.map","import { Coder } from \"./abstract-coder.js\";\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n constructor(coder) {\n super(coder.name, coder.type, \"_\", coder.dynamic);\n this.coder = coder;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(writer, value) {\n return this.coder.encode(writer, value);\n }\n decode(reader) {\n return this.coder.decode(reader);\n }\n}\n//# sourceMappingURL=anonymous.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { isError } from \"@ethersproject/logger\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, Result, WordSize, Writer } from \"./abstract-coder.js\";\nimport { AnonymousCoder } from \"./anonymous.js\";\nexport function pack(writer, coders, values) {\n let arrayValues = [];\n if (Array.isArray(values)) {\n arrayValues = values;\n }\n else if (values && typeof (values) === \"object\") {\n let unique = {};\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n unique[name] = true;\n return values[name];\n });\n }\n else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n let staticWriter = new Writer();\n let dynamicWriter = new Writer();\n let updateFuncs = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n }\n else {\n coder.encode(staticWriter, value);\n }\n });\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\nexport function unpack(reader, coders) {\n let values = [];\n let keys = [];\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n coders.forEach((coder) => {\n let value = null;\n if (coder.dynamic) {\n let offset = reader.readIndex();\n let offsetReader = baseReader.subReader(offset);\n try {\n value = coder.decode(offsetReader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\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 }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n if (value == undefined) {\n throw new Error(\"investigate\");\n }\n values.push(value);\n keys.push(coder.localName || null);\n });\n return Result.fromItems(values, keys);\n}\nexport class ArrayCoder extends Coder {\n constructor(coder, length, localName) {\n const type = (coder.type + \"[\" + (length >= 0 ? length : \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n defineProperties(this, { coder, length });\n }\n defaultValue() {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n const result = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"array\");\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n let count = this.length;\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n logger.assertArgumentCount(value.length, count, \"coder array\" + (this.localName ? (\" \" + this.localName) : \"\"));\n let coders = [];\n for (let i = 0; i < value.length; i++) {\n coders.push(this.coder);\n }\n return pack(writer, coders, value);\n }\n decode(reader) {\n let count = this.length;\n if (count === -1) {\n count = reader.readIndex();\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 * WordSize > reader.dataLength) {\n logger.throwError(\"insufficient data length\", \"BUFFER_OVERRUN\", {\n buffer: reader.bytes,\n offset: count * WordSize,\n length: reader.dataLength\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) {\n coders.push(new AnonymousCoder(this.coder));\n }\n return unpack(reader, coders);\n }\n}\n//# sourceMappingURL=array.js.map","import { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class BooleanCoder extends Coder {\n constructor(localName) {\n super(\"bool\", \"bool\", localName, false);\n }\n defaultValue() {\n return false;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"bool\");\n return writer.writeValue(value ? 1 : 0);\n }\n decode(reader) {\n return !!reader.readValue();\n }\n}\n//# sourceMappingURL=boolean.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class DynamicBytesCoder extends Coder {\n constructor(type, localName) {\n super(type, type, localName, true);\n }\n defaultValue() {\n return \"0x\";\n }\n encode(writer, value) {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n decode(reader) {\n return reader.readBytes(reader.readIndex(), true);\n }\n}\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"bytes\", localName);\n }\n decode(reader) {\n return hexlify(super.decode(reader));\n }\n}\n//# sourceMappingURL=bytes.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class FixedBytesCoder extends Coder {\n constructor(size, localName) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n defineProperties(this, { size }, { size: \"number\" });\n }\n defaultValue() {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n encode(writer, _value) {\n let data = arrayify(Typed.dereference(_value, this.type));\n if (data.length !== this.size) {\n this._throwError(\"incorrect data length\", _value);\n }\n return writer.writeBytes(data);\n }\n decode(reader) {\n return hexlify(reader.readBytes(this.size));\n }\n}\n//# sourceMappingURL=fixed-bytes.js.map","import { Coder } from \"./abstract-coder.js\";\nconst Empty = new Uint8Array([]);\nexport class NullCoder extends Coder {\n constructor(localName) {\n super(\"null\", \"\", localName, false);\n }\n defaultValue() {\n return null;\n }\n encode(writer, value) {\n if (value != null) {\n this._throwError(\"not null\", value);\n }\n return writer.writeBytes(Empty);\n }\n decode(reader) {\n reader.readBytes(0);\n return null;\n }\n}\n//# sourceMappingURL=null.js.map","import { fromTwos, mask, toTwos } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, WordSize } from \"./abstract-coder.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nexport class NumberCoder extends Coder {\n constructor(size, signed, localName) {\n const name = ((signed ? \"int\" : \"uint\") + (size * 8));\n super(name, name, localName, false);\n defineProperties(this, { size, signed }, { size: \"number\", signed: \"boolean\" });\n }\n defaultValue() {\n return 0;\n }\n encode(writer, _value) {\n let value = logger.getBigInt(Typed.dereference(_value, this.type));\n // Check bounds are safe for encoding\n let maxUintValue = mask(BN_MAX_UINT256, WordSize * 8);\n if (this.signed) {\n let bounds = mask(maxUintValue, (this.size * 8) - 1);\n if (value > bounds || value < -(bounds + BN_1)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n }\n else if (value < BN_0 || value > mask(maxUintValue, this.size * 8)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n value = mask(toTwos(value, this.size * 8), this.size * 8);\n if (this.signed) {\n value = toTwos(fromTwos(value, this.size * 8), 8 * WordSize);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n let value = mask(reader.readValue(), this.size * 8);\n if (this.signed) {\n value = fromTwos(value, this.size * 8);\n }\n return value;\n }\n}\n//# sourceMappingURL=number.js.map","export const version = \"@ethersproject/strings@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\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 Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\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 Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\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) {\n break;\n }\n i++;\n }\n return i;\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 // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push((badCodepoint != null) ? badCodepoint : -1);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = logger.getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\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 }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\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 // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\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 // See above loop for invalid continuation byte\n if (res === null) {\n 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 // 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 // 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 result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\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 if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\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 return new Uint8Array(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\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 if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","import { zeroPadBytes } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nimport { toUtf8Bytes, toUtf8String } from \"./utf8.js\";\nexport function formatBytes32String(text) {\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n // Check we have room for null-termination\n if (bytes.length > 31) {\n throw new Error(\"bytes32 string must be less than 32 bytes\");\n }\n // Zero-pad (implicitly null-terminates)\n return zeroPadBytes(bytes, 32);\n}\nexport function parseBytes32String(_bytes) {\n const data = logger.getBytes(_bytes, \"bytes\");\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) {\n throw new Error(\"invalid bytes32 - not 32 bytes long\");\n }\n if (data[31] !== 0) {\n throw new Error(\"invalid bytes32 string - no null terminator\");\n }\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) {\n length--;\n }\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n//# sourceMappingURL=bytes32.js.map","import { logger } from \"./logger.js\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8.js\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"should not happen; bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, _func) {\n const func = _func || function (value) { return [parseInt(value, 16)]; };\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n const range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n if (range.s == null) {\n throw new Error(\"should not happenl bad range\");\n }\n return [codepoint + range.s];\n }\n const codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n const shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n const complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_PROHIBITED\", \"value\", value);\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_UNASSIGNED\", \"value\", value);\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n logger.throwArgumentError(\"invalid hyphen\", \"value\", value);\n }\n // IDNA: 4.2.4\n if (name.length > 63) {\n logger.throwArgumentError(\"too long\", \"value\", value);\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","import { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { Typed } from \"../typed.js\";\nimport { DynamicBytesCoder } from \"./bytes.js\";\nexport class StringCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"string\", localName);\n }\n defaultValue() {\n return \"\";\n }\n encode(writer, _value) {\n return super.encode(writer, toUtf8Bytes(Typed.dereference(_value, \"string\")));\n }\n decode(reader) {\n return toUtf8String(super.decode(reader));\n }\n}\n//# sourceMappingURL=string.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nimport { pack, unpack } from \"./array.js\";\nexport class TupleCoder extends Coder {\n constructor(coders, localName) {\n let dynamic = false;\n const types = [];\n coders.forEach((coder) => {\n if (coder.dynamic) {\n dynamic = true;\n }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n super(\"tuple\", type, localName, dynamic);\n defineProperties(this, { coders: Object.freeze(coders.slice()) });\n }\n defaultValue() {\n const values = [];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\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]) {\n accum[name] = 0;\n }\n accum[name]++;\n }\n return accum;\n }, {});\n // Add named values\n this.coders.forEach((coder, index) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) {\n return;\n }\n if (name === \"length\") {\n name = \"_length\";\n }\n if (values[name] != null) {\n return;\n }\n values[name] = values[index];\n });\n return Object.freeze(values);\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"tuple\");\n return pack(writer, this.coders, value);\n }\n decode(reader) {\n return unpack(reader, this.coders);\n }\n}\n//# sourceMappingURL=tuple.js.map","// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbiCoder_instances, _AbiCoder_getCoder;\nimport { logger } from \"./logger.js\";\nimport { Reader, Writer } from \"./coders/abstract-coder.js\";\nimport { AddressCoder } from \"./coders/address.js\";\nimport { ArrayCoder } from \"./coders/array.js\";\nimport { BooleanCoder } from \"./coders/boolean.js\";\nimport { BytesCoder } from \"./coders/bytes.js\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes.js\";\nimport { NullCoder } from \"./coders/null.js\";\nimport { NumberCoder } from \"./coders/number.js\";\nimport { StringCoder } from \"./coders/string.js\";\nimport { TupleCoder } from \"./coders/tuple.js\";\nimport { ParamType } from \"./fragments.js\";\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\nexport class AbiCoder {\n constructor() {\n _AbiCoder_instances.add(this);\n }\n getDefaultValue(types) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n encode(types, values) {\n logger.assertArgumentCount(values.length, types.length, \"types/values length mismatch\");\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n const writer = new Writer();\n coder.encode(writer, values);\n return writer.data;\n }\n decode(types, data, loose) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(new Reader(data, loose));\n }\n}\n_AbiCoder_instances = new WeakSet(), _AbiCoder_getCoder = function _AbiCoder_getCoder(param) {\n if (param.isArray()) {\n return new ArrayCoder(__classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, param.arrayChildren), param.arrayLength, param.name);\n }\n if (param.isTuple()) {\n return new TupleCoder(param.components.map((c) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, c)), param.name);\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 \"\":\n return new NullCoder(param.name);\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 // 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 return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n};\nexport const defaultAbiCoder = new AbiCoder();\n//# sourceMappingURL=abi-coder.js.map","import { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","export const version = \"@ethersproject/hash@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { nameprep, toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nconst Partition = new RegExp(\"^((.*)\\\\.)?([^.]+)$\");\nexport function isValidName(name) {\n try {\n const comps = name.split(\".\");\n for (let i = 0; i < comps.length; i++) {\n if (nameprep(comps[i]).length === 0) {\n throw new Error(\"empty\");\n }\n }\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let current = name;\n let result = Zeros;\n while (current.length) {\n const partition = current.match(Partition);\n if (partition == null || partition[2] === \"\") {\n return logger.throwArgumentError(\"invalid ENS name; missing component\", \"name\", name);\n }\n const label = toUtf8Bytes(nameprep(partition[3]));\n result = keccak256(concat([result, keccak256(label)]));\n current = partition[2] || \"\";\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid DNS name; not a string\", \"name\", name);\n }\n if (name === \"\") {\n return \"0x00\";\n }\n // @TODO: should we enforce the 255 octet limit?\n return concat(name.split(\".\").map((comp) => {\n if (comp === \"\") {\n logger.throwArgumentError(\"invalid DNS name; missing component\", \"name\", name);\n }\n // We jam in an _ prefix to fill in with the length later\n // Note: Nameprep throws if the component is over 63 bytes\n const bytes = toUtf8Bytes(\"_\" + nameprep(comp));\n bytes[0] = bytes.length - 1;\n return bytes;\n })) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","import { concat, dataLength, hexlify, zeroPadBytes, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 as _keccak256, sha256 as _sha256 } from \"@ethersproject/crypto\";\nimport { toTwos } from \"@ethersproject/math\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\nfunction _pack(type, value, isArray) {\n switch (type) {\n case \"address\":\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return logger.getBytes(value);\n case \"bool\":\n value = (!!value ? \"0x01\" : \"0x00\");\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n }\n let match = type.match(regexNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n return logger.throwArgumentError(\"invalid number type\", \"type\", type);\n }\n if (isArray) {\n size = 256;\n }\n value = toTwos(value, size);\n return logger.getBytes(zeroPadValue(value, size / 8));\n }\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n if (String(size) !== match[1] || size === 0 || size > 32) {\n return logger.throwArgumentError(\"invalid bytes type\", \"type\", type);\n }\n if (dataLength(value) !== size) {\n return logger.throwArgumentError(`invalid value for ${type}`, \"value\", value);\n }\n if (isArray) {\n return logger.getBytes(zeroPadBytes(value, 32));\n }\n return value;\n }\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(`invalid array length for ${type}`, \"value\", value);\n }\n const result = [];\n value.forEach(function (value) {\n result.push(_pack(baseType, value, true));\n });\n return logger.getBytes(concat(result));\n }\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n}\n// @TODO: Array Enum\nexport function solidityPacked(types, values) {\n if (types.length != values.length) {\n logger.throwArgumentError(\"wrong number of values; expected ${ types.length }\", \"values\", values);\n }\n const tight = [];\n types.forEach(function (type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\nexport function solidityPackedKeccak256(types, values) {\n return _keccak256(solidityPacked(types, values));\n}\nexport function solidityPackedSha256(types, values) {\n return _sha256(solidityPacked(types, values));\n}\n//# sourceMappingURL=solidity.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TypedDataEncoder_instances, _TypedDataEncoder_types, _TypedDataEncoder_fullTypes, _TypedDataEncoder_encoderCache, _TypedDataEncoder_getEncoder;\n//import { TypedDataDomain, TypedDataField } from \"@ethersproject/providerabstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { mask, toHex, toTwos } from \"@ethersproject/math\";\nimport { id } from \"./id.js\";\nimport { logger } from \"./logger.js\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst BN__1 = BigInt(-1);\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n;\n;\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return concat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = toHex(BN_1, 32);\nconst hexFalse = toHex(BN_0, 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n return logger.getBigInt(value, \"domain.chainId\");\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n const bytes = logger.getBytes(value, \"domain.salt\");\n if (bytes.length !== 32) {\n logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n return hexlify(bytes);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\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 const boundsUpper = mask(BN_MAX_UINT256, signed ? (width - 1) : width);\n const boundsLower = signed ? ((boundsUpper + BN_1) * BN__1) : BN_0;\n return function (_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < boundsLower || value > boundsUpper) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return toHex(toTwos(value, 256), 32);\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 return function (value) {\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 switch (type) {\n case \"address\": return function (value) {\n return zeroPadValue(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n _TypedDataEncoder_instances.add(this);\n _TypedDataEncoder_types.set(this, void 0);\n _TypedDataEncoder_fullTypes.set(this, void 0);\n _TypedDataEncoder_encoderCache.set(this, void 0);\n __classPrivateFieldSet(this, _TypedDataEncoder_types, JSON.stringify(types), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_fullTypes, new Map(), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_encoderCache, new Map(), \"f\");\n // Link struct types to their direct child structs\n const links = new Map();\n // Link structs to structs which contain them as a child\n const parents = new Map();\n // Link all subtypes within a given struct\n const subtypes = new Map();\n Object.keys(types).forEach((type) => {\n links.set(type, new Set());\n parents.set(type, []);\n subtypes.set(type, new Set());\n });\n for (const name in types) {\n const uniqueNames = new Set();\n for (const field of types[name]) {\n // Check each field has a unique name\n if (uniqueNames.has(field.name)) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames.add(field.name);\n // Get the base type (drop any array specifiers)\n const baseType = (field.type.match(/^([^\\x5b]*)(\\x5b|$)/))[1] || null;\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n continue;\n }\n if (!parents.has(baseType)) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents.get(baseType).push(name);\n links.get(name).add(baseType);\n }\n }\n // Deduce the primary type\n const primaryTypes = Array.from(parents.keys()).filter((n) => (parents.get(n).length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\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 defineProperties(this, { primaryType: primaryTypes[0] });\n // Check for circular type references\n function checkCircular(type, found) {\n if (found.has(type)) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found.add(type);\n for (const child of links.get(type)) {\n if (!parents.has(child)) {\n continue;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n for (const subtype of found) {\n subtypes.get(subtype).add(child);\n }\n }\n found.delete(type);\n }\n checkCircular(this.primaryType, new Set());\n // Compute each fully describe type\n for (const [name, set] of subtypes) {\n const st = Array.from(set);\n st.sort();\n __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").set(name, encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\"));\n }\n }\n get types() {\n return JSON.parse(__classPrivateFieldGet(this, _TypedDataEncoder_types, \"f\"));\n }\n getEncoder(type) {\n let encoder = __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").get(type);\n if (!encoder) {\n encoder = __classPrivateFieldGet(this, _TypedDataEncoder_instances, \"m\", _TypedDataEncoder_getEncoder).call(this, type);\n __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").set(type, encoder);\n }\n return encoder;\n }\n encodeType(name) {\n const result = __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(name);\n if (!result) {\n return logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => this._visit(subtype, v, callback));\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 return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\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 domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return concat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain, types, value, resolveName) {\n // Make a copy to isolate it from the object passed in\n domain = Object.assign({}, domain);\n // Look up all ENS names\n const ensCache = {};\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 // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = Object.assign({}, types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(logger.getBytes(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return logger.getBigInt(value).toString();\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 return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n_TypedDataEncoder_types = new WeakMap(), _TypedDataEncoder_fullTypes = new WeakMap(), _TypedDataEncoder_encoderCache = new WeakMap(), _TypedDataEncoder_instances = new WeakSet(), _TypedDataEncoder_getEncoder = function _TypedDataEncoder_getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(subtype)) {\n result = result.map(keccak256);\n }\n return keccak256(concat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(type));\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(type)) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return concat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n};\n//# sourceMappingURL=typed-data.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Interface_instances, _Interface_errors, _Interface_events, _Interface_functions, _Interface_abiCoder, _Interface_getFunction, _Interface_getEvent;\nimport { arrayify, concat, dataSlice, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { defaultAbiCoder } from \"./abi-coder.js\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder.js\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatType, Fragment, FunctionFragment, ParamType } from \"./fragments.js\";\nimport { logger } from \"./logger.js\";\nimport { Typed } from \"./typed.js\";\nexport { checkResultErrors, Result };\nexport class LogDescription {\n constructor(fragment, topic, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, signature, topic, args\n });\n }\n}\nexport class TransactionDescription {\n constructor(fragment, selector, args, value) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector, value\n });\n }\n}\nexport class ErrorDescription {\n constructor(fragment, selector, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector\n });\n }\n}\nexport class Indexed {\n constructor(hash) {\n defineProperties(this, { hash, _isIndexed: true });\n }\n static isIndexed(value) {\n return !!(value && value._isIndexed);\n }\n}\n// https://docs.soliditylang.org/en/v0.8.13/control-structures.html?highlight=panic#panic-via-assert-and-error-via-require\nconst PanicReasons = {\n \"0\": \"generic panic\",\n \"1\": \"assert(false)\",\n \"17\": \"arithmetic overflow\",\n \"18\": \"division or modulo by zero\",\n \"33\": \"enum overflow\",\n \"34\": \"invalid encoded storage byte array accessed\",\n \"49\": \"out-of-bounds array access; popping on an empty array\",\n \"50\": \"out-of-bounds access of an array or bytesN\",\n \"65\": \"out of memory\",\n \"81\": \"uninitialized function\",\n};\nconst BuiltinErrors = {\n \"0x08c379a0\": {\n signature: \"Error(string)\",\n name: \"Error\",\n inputs: [\"string\"],\n reason: (message) => {\n return `reverted with reason string ${JSON.stringify(message)}`;\n }\n },\n \"0x4e487b71\": {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n inputs: [\"uint256\"],\n reason: (code) => {\n let reason = \"unknown panic code\";\n if (code >= 0 && code <= 0xff && PanicReasons[code.toString()]) {\n reason = PanicReasons[code.toString()];\n }\n return `reverted with panic code 0x${code.toString(16)} (${reason})`;\n }\n }\n};\nexport class Interface {\n constructor(fragments) {\n _Interface_instances.add(this);\n _Interface_errors.set(this, void 0);\n _Interface_events.set(this, void 0);\n _Interface_functions.set(this, void 0);\n // #structs: Map;\n _Interface_abiCoder.set(this, void 0);\n let abi = [];\n if (typeof (fragments) === \"string\") {\n abi = JSON.parse(fragments);\n }\n else {\n abi = fragments;\n }\n __classPrivateFieldSet(this, _Interface_functions, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_errors, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_events, new Map(), \"f\");\n // this.#structs = new Map();\n defineProperties(this, {\n fragments: Object.freeze(abi.map((f) => Fragment.from(f)).filter((f) => (f != null))),\n });\n __classPrivateFieldSet(this, _Interface_abiCoder, this.getAbiCoder(), \"f\");\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket;\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 defineProperties(this, { deploy: fragment });\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = __classPrivateFieldGet(this, _Interface_functions, \"f\");\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = __classPrivateFieldGet(this, _Interface_events, \"f\");\n break;\n case \"error\":\n bucket = __classPrivateFieldGet(this, _Interface_errors, \"f\");\n break;\n default:\n return;\n }\n const signature = fragment.format();\n if (bucket.has(signature)) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n bucket.set(signature, fragment);\n });\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineProperties(this, {\n deploy: ConstructorFragment.fromString(\"constructor()\")\n });\n }\n }\n // @TODO: multi sig?\n format(format) {\n if (!format) {\n format = FormatType.full;\n }\n if (format === FormatType.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n const abi = this.fragments.map((f) => f.format(format));\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatType.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n return abi;\n }\n getAbiCoder() {\n return defaultAbiCoder;\n }\n getFunctionName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, null, false)).name;\n }\n getFunction(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, values || null, true);\n }\n getEventName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, null, false)).name;\n }\n getEvent(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, values || null, true);\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(key, values) {\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_errors, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching error\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_errors, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", key);\n }\n else if (matching.length > 1) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching errors\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_errors, \"f\").get(ErrorFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching error\", \"signature\", key);\n }\n // Get the 4-byte selector used by Solidity to identify a function\n getSelector(fragment) {\n /*\n if (typeof(fragment) === \"string\") {\n const matches: Array = [ ];\n\n try { matches.push(this.getFunction(fragment)); } catch (error) { }\n try { matches.push(this.getError(fragment)); } catch (_) { }\n\n if (matches.length === 0) {\n logger.throwArgumentError(\"unknown fragment\", \"key\", fragment);\n } else if (matches.length > 1) {\n logger.throwArgumentError(\"ambiguous fragment matches function and error\", \"key\", fragment);\n }\n\n fragment = matches[0];\n }\n */\n return dataSlice(id(fragment.format()), 0, 4);\n }\n // Get the 32-byte topic hash used by Solidity to identify an event\n getEventTopic(fragment) {\n //if (typeof(fragment) === \"string\") { fragment = this.getEvent(eventFragment); }\n return id(fragment.format());\n }\n _decodeParams(params, data) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(params, data);\n }\n _encodeParams(params, values) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(params, values);\n }\n encodeDeploy(values) {\n return this._encodeParams(this.deploy.inputs, values || []);\n }\n decodeErrorResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n encodeErrorResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match function ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n let message = \"invalid length for result data\";\n const bytes = arrayify(data);\n if ((bytes.length % 32) === 0) {\n try {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.outputs, bytes);\n }\n catch (error) {\n message = \"could not decode result data\";\n }\n }\n // Call returned data with no error, but the data is junk\n return logger.throwError(message, \"BAD_DATA\", {\n value: hexlify(bytes),\n info: { method: fragment.name, signature: fragment.format() }\n });\n }\n makeError(fragment, _data, tx) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n const data = logger.getBytes(_data);\n let args = undefined;\n if (tx) {\n try {\n args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, tx.data || \"0x\");\n }\n catch (error) {\n console.log(error);\n }\n }\n let errorArgs = undefined;\n let errorName = undefined;\n let errorSignature = undefined;\n let reason = \"unknown reason\";\n if (data.length === 0) {\n reason = \"missing error reason\";\n }\n else if ((data.length % 32) === 4) {\n const selector = hexlify(data.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n try {\n errorName = builtin.name;\n errorSignature = builtin.signature;\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(builtin.inputs, data.slice(4));\n reason = builtin.reason(...errorArgs);\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n else {\n reason = \"unknown custom error\";\n try {\n const error = this.getError(selector);\n errorName = error.name;\n errorSignature = error.format();\n reason = `custom error: ${errorSignature}`;\n try {\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(error.inputs, data.slice(4));\n }\n catch (error) {\n reason = `custom error: ${errorSignature} (coult not decode error data)`;\n }\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n }\n return logger.makeError(\"call revert exception\", \"CALL_EXCEPTION\", {\n data: hexlify(data), transaction: null,\n method: fragment.name, signature: fragment.format(), args,\n errorArgs, errorName, errorSignature, reason\n });\n }\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment, values) {\n if (typeof (functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n return hexlify(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(functionFragment.outputs, values || []));\n }\n /*\n spelunk(inputs: Array, values: ReadonlyArray, processfunc: (type: string, value: any) => Promise): Promise> {\n const promises: Array> = [ ];\n const process = function(type: ParamType, value: any): any {\n if (type.baseType === \"array\") {\n return descend(type.child\n }\n if (type. === \"address\") {\n }\n };\n \n const descend = function (inputs: Array, values: ReadonlyArray) {\n if (inputs.length !== values.length) { throw new Error(\"length mismatch\"); }\n \n };\n \n const result: Array = [ ];\n values.forEach((value, index) => {\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 */\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), \"UNEXPECTED_ARGUMENT\", {\n count: values.length,\n expectedCount: eventFragment.inputs.length\n });\n }\n const topics = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n const encodeTopic = (param, value) => {\n if (param.type === \"string\") {\n return id(value);\n }\n else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n // Check addresses are valid\n if (param.type === \"address\") {\n __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([\"address\"], [value]);\n }\n return zeroPadValue(hexlify(value), 32);\n //@TOOD should probably be return toHex(value, 32)\n };\n values.forEach((value, index) => {\n const param = eventFragment.inputs[index];\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 if (value == null) {\n topics.push(null);\n }\n else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n }\n else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n }\n else {\n topics.push(encodeTopic(param, value));\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n }\n encodeEventLog(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n const topics = [];\n const dataTypes = [];\n const dataValues = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\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 }\n else if (param.type === \"bytes\") {\n topics.push(keccak256(value));\n }\n else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n }\n else {\n topics.push(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([param.type], [value]));\n }\n }\n else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n return {\n data: __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(dataTypes, dataValues),\n topics: topics\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment, data, topics) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (topics != null && !eventFragment.anonymous) {\n const eventTopic = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== eventTopic) {\n logger.throwArgumentError(\"fragment/topic mismatch\", \"topics[0]\", topics[0]);\n }\n topics = topics.slice(1);\n }\n const indexed = [];\n const nonIndexed = [];\n const dynamic = [];\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 }\n else {\n indexed.push(param);\n dynamic.push(false);\n }\n }\n else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n const resultIndexed = (topics != null) ? __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(indexed, concat(topics)) : null;\n const resultNonIndexed = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(nonIndexed, data, true);\n //const result: (Array & { [ key: string ]: any }) = [ ];\n const values = [];\n const keys = [];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n let value = null;\n if (param.indexed) {\n if (resultIndexed == null) {\n value = new Indexed(null);\n }\n else if (dynamic[index]) {\n value = new Indexed(resultIndexed[indexedIndex++]);\n }\n else {\n try {\n value = resultIndexed[indexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n }\n else {\n try {\n value = resultNonIndexed[nonIndexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n values.push(value);\n keys.push(param.name || null);\n });\n return Result.fromItems(values, keys);\n }\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx) {\n const data = logger.getBytes(tx.data, \"tx.data\");\n const value = logger.getBigInt((tx.value != null) ? tx.value : 0, \"tx.value\");\n const fragment = this.getFunction(hexlify(data.slice(0, 4)));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, data.slice(4));\n return new TransactionDescription(fragment, this.getSelector(fragment), args, value);\n }\n // @TODO\n //parseCallResult(data: BytesLike): ??\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log) {\n const fragment = this.getEvent(log.topics[0]);\n if (!fragment || fragment.anonymous) {\n 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 return new LogDescription(fragment, this.getEventTopic(fragment), this.decodeEventLog(fragment, log.data, log.topics));\n }\n parseError(data) {\n const hexData = hexlify(data);\n const fragment = this.getError(dataSlice(hexData, 0, 4));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, dataSlice(hexData, 4));\n return new ErrorDescription(fragment, this.getSelector(fragment), args);\n }\n static from(value) {\n // Already an Interface, which is immutable\n if (value instanceof Interface) {\n return value;\n }\n // JSON\n if (typeof (value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n // Maybe an interface from an older version, or from a symlinked copy\n if (typeof (value.format) === \"function\") {\n return new Interface(value.format(FormatType.json));\n }\n // Array of fragments\n return new Interface(value);\n }\n}\n_Interface_errors = new WeakMap(), _Interface_events = new WeakMap(), _Interface_functions = new WeakMap(), _Interface_abiCoder = new WeakMap(), _Interface_instances = new WeakSet(), _Interface_getFunction = function _Interface_getFunction(key, values, forceUnique) {\n // Selector\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_functions, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching function\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_functions, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n const lastValue = (values.length > 0) ? values[values.length - 1] : null;\n let valueLength = values.length;\n let allowOptions = true;\n if (Typed.isTyped(lastValue) && lastValue.type === \"overrides\") {\n allowOptions = false;\n valueLength--;\n }\n // Remove all matches that don't have a compatible length. The args\n // may contain an overrides, so the match may have n or n - 1 parameters\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs.length;\n if (inputs !== valueLength && (!allowOptions || inputs !== valueLength - 1)) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // We are past the inputs\n if (j >= inputs.length) {\n if (values[j].type === \"overrides\") {\n continue;\n }\n matching.splice(i, 1);\n break;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n // We found a single matching signature with an overrides, but the\n // last value is something that cannot possibly be an options\n if (matching.length === 1 && values && values.length !== matching[0].inputs.length) {\n const lastArg = values[values.length - 1];\n if (lastArg == null || Array.isArray(lastArg) || typeof (lastArg) !== \"object\") {\n matching.splice(0, 1);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n logger.throwArgumentError(`multiple matching functions (i.e. ${matchStr})`, \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_functions, \"f\").get(FunctionFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching function\", \"signature\", key);\n}, _Interface_getEvent = function _Interface_getEvent(key, values, forceUnique) {\n // EventTopic\n if (isHexString(key)) {\n const eventTopic = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_events, \"f\").values()) {\n if (eventTopic === this.getEventTopic(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching event\", \"eventTopic\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_events, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n // Remove all matches that don't have a compatible length.\n for (let i = matching.length - 1; i >= 0; i--) {\n if (matching[i].inputs.length < values.length) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching events\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_events, \"f\").get(EventFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching event\", \"signature\", key);\n};\n//# sourceMappingURL=interface.js.map","export const version = \"@ethersproject/web@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchResponse_props, _FetchResponse_error;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties, getStore } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\n;\nexport class FetchResponse {\n constructor(statusCode, statusMessage, headers, body, request) {\n _FetchResponse_props.set(this, void 0);\n _FetchResponse_error.set(this, void 0);\n __classPrivateFieldSet(this, _FetchResponse_props, {\n statusCode,\n statusMessage,\n headers: Object.freeze(Object.assign({}, Object.keys(headers).reduce((accum, k) => {\n accum[k.toLowerCase()] = headers[k];\n return accum;\n }, {}))),\n body: ((body == null) ? null : new Uint8Array(body)),\n request: (request || null),\n }, \"f\");\n __classPrivateFieldSet(this, _FetchResponse_error, { message: \"\" }, \"f\");\n }\n toString() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return ``;\n }\n get statusCode() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusCode\"); }\n get statusMessage() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusMessage\"); }\n get headers() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"headers\"); }\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? null : new Uint8Array(body);\n }\n get bodyText() {\n try {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? \"\" : toUtf8String(body);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid UTF-8 data\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyText\", info: { response: this }\n });\n }\n }\n get bodyJson() {\n try {\n return JSON.parse(this.bodyText);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid JSON\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyJson\", info: { response: this }\n });\n }\n }\n [(_FetchResponse_props = new WeakMap(), _FetchResponse_error = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n makeServerError(message, error) {\n let statusMessage;\n if (!message) {\n message = `${this.statusCode} ${this.statusMessage}`;\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${message})`;\n }\n else {\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${message})`;\n }\n const response = new FetchResponse(599, statusMessage, this.headers, this.body, getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\") || undefined);\n __classPrivateFieldSet(response, _FetchResponse_error, { message, error }, \"f\");\n return response;\n }\n throwThrottleError(message, stall) {\n if (stall == null) {\n stall = 1000;\n }\n if (typeof (stall) !== \"number\" || !Number.isInteger(stall) || stall < 0) {\n logger.throwArgumentError(\"invalid stall timeout\", \"stall\", stall);\n }\n const error = new Error(message || \"throttling requests\");\n defineProperties(error, { stall, throttle: true });\n throw error;\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n hasBody() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body != null);\n }\n get request() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\"); }\n ok() {\n return (__classPrivateFieldGet(this, _FetchResponse_error, \"f\").message === \"\" && this.statusCode >= 200 && this.statusCode < 300);\n }\n assertOk() {\n if (this.ok()) {\n return;\n }\n let { message, error } = __classPrivateFieldGet(this, _FetchResponse_error, \"f\");\n if (message === \"\") {\n message = `server response ${this.statusCode} ${this.statusMessage}`;\n }\n logger.throwError(message, \"SERVER_ERROR\", {\n request: (this.request || \"unknown request\"), response: this, error\n });\n }\n}\n//# sourceMappingURL=response.js.map","import { logger } from \"./logger.js\";\nimport { FetchResponse } from \"./response.js\";\nexport async function getUrl(req, timeout) {\n const protocol = req.url.split(\":\")[0].toLowerCase();\n if (protocol !== \"http\" && protocol !== \"https\") {\n logger.throwError(`unsupported protocol ${protocol}`, \"UNSUPPORTED_OPERATION\", {\n info: { protocol },\n operation: \"request\"\n });\n }\n if (req.credentials && !req.allowInsecureAuthentication) {\n logger.throwError(\"insecure authorized connections unsupported\", \"UNSUPPORTED_OPERATION\", {\n operation: \"request\"\n });\n }\n const init = {\n method: req.method,\n headers: new Headers(Array.from(req)),\n body: req.body || undefined,\n };\n const resp = await fetch(req.url, init);\n const headers = {};\n resp.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n const body = new Uint8Array(await resp.arrayBuffer());\n return new FetchResponse(resp.status, resp.statusText, headers, body, req);\n}\n//# sourceMappingURL=get-url-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchRequest_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nfunction check(value, type, name) {\n if (typeof (value) !== type) {\n throw new Error(`invalid ${name}`);\n }\n return value;\n}\nexport class FetchRequest {\n constructor(url) {\n _FetchRequest_props.set(this, void 0);\n __classPrivateFieldSet(this, _FetchRequest_props, {\n allowInsecure: false,\n gzip: false,\n headers: {},\n method: \"\",\n timeout: 300,\n url: check(url, \"string\", \"url\")\n }, \"f\");\n }\n // URL\n get url() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\"); }\n set url(url) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\", check(url, \"string\", \"url\"));\n }\n // Body\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body == null) {\n return null;\n }\n if (this.isFrozen()) {\n return new Uint8Array(body);\n }\n return body;\n }\n set body(body) {\n if (body == null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", undefined);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", undefined);\n }\n else if (typeof (body) === \"string\") {\n // @TODO: utf8-check\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(body));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"text/plain\");\n }\n else if (body instanceof Uint8Array) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", body);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/octet-stream\");\n }\n else if (typeof (body) === \"object\") {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(JSON.stringify(body)));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/json\");\n }\n else {\n throw new Error(\"invalid body\");\n }\n }\n hasBody() {\n return (getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\") != null);\n }\n // Method (default: GET with no body, POST with a body)\n get method() {\n const method = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\");\n if (method) {\n return method.toUpperCase();\n }\n if (this.body) {\n return \"POST\";\n }\n return \"GET\";\n }\n set method(method) {\n if (method == null) {\n method = \"\";\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\", check(method, \"string\", \"method\"));\n }\n // Headers (automatically fills content-type if not explicitly set)\n get headers() {\n const headers = Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\"));\n const bodyType = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\");\n if (this.credentials) { /* TODO */ }\n ;\n if (this.allowGzip) {\n headers[\"accept-encoding\"] = \"gzip\";\n }\n if (headers[\"content-type\"] == null && bodyType) {\n headers[\"content-type\"] = bodyType;\n }\n if (this.body) {\n headers[\"content-length\"] = String(this.body.length);\n }\n return Object.freeze(headers);\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n setHeader(key, value) {\n const headers = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\");\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", headers);\n headers[check(key, \"string\", \"key\").toLowerCase()] = String(value);\n }\n clearHeaders() {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", {});\n }\n [(_FetchRequest_props = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n // Configure an Authorization header\n get credentials() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\") || null;\n }\n setCredentials(username, password) {\n if (username.match(/:/)) {\n logger.throwArgumentError(\"invalid basic authentication username\", \"username\", \"[REDACTED]\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\", `${username}:${password}`);\n // @TODO:\n //const auth = username + \":\" + password;\n //this.setHeader(\"authorization\", \"Basic \" + base64Encode(toUtf8Bytes(auth)))\n //this.setHeader(\"authorization\", \"Basic TODO:\" + auth);\n }\n // Configure the request to allow gzipped responses\n get allowGzip() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\");\n }\n set allowGzip(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\", !!value);\n }\n // Allow credentials to be sent over an insecure (non-HTTPS) channel\n get allowInsecureAuthentication() {\n return !!getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\");\n }\n set allowInsecureAuthentication(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\", check(value, \"boolean\", \"allowInsecureAuthentication\"));\n }\n // Timeout (seconds)\n get timeout() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\"); }\n set timeout(timeout) {\n timeout = check(timeout, \"number\", \"timeout\");\n if (timeout <= 0) {\n throw new Error(\"invalid timerout\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\", timeout);\n }\n redirect(location) {\n // Redirection; for now we only support absolute locataions\n const current = this.url.split(\":\")[0].toLowerCase();\n const target = location.split(\":\")[0].toLowerCase();\n if (this.method !== \"GET\" || (current === \"https\" && target === \"http\") ||\n !location.match(/^https?:/)) {\n return logger.throwError(`unsupported redirect`, \"UNSUPPORTED_OPERATION\", {\n operation: `redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(location)})`\n });\n }\n // Create a copy of this request, with a new URL\n const req = new FetchRequest(location);\n req.method = \"GET\";\n req.allowGzip = this.allowGzip;\n req.timeout = this.timeout;\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"body\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\"));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Do not forward credentials unless on the same domain; only absolute\n //req.allowInsecure = false;\n // paths are currently supported; may want a way to specify to forward?\n //setStore(req.#props, \"creds\", getStore(this.#pros, \"creds\"));\n return req;\n }\n clone() {\n const clone = new FetchRequest(this.url);\n // Preserve \"default method\" (i.e. null)\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"method\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\"));\n // Preserve \"default body\" with type, copying the Uint8Array is present\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"body\", (body == null) ? undefined : new Uint8Array(body));\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Preserve \"default headers\"\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n // Credentials is readonly, so we copy internally\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"creds\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\"));\n if (this.allowGzip) {\n clone.allowGzip = true;\n }\n clone.timeout = this.timeout;\n if (this.allowInsecureAuthentication) {\n clone.allowInsecureAuthentication = true;\n }\n return clone;\n }\n freeze() {\n // Copy the body so any changes to previous access do not modify it\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body != null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", new Uint8Array(body));\n }\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\").headers);\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n }\n}\n//# sourceMappingURL=request.js.map","import { decodeBase64 } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { getUrl } from \"./get-url.js\"; /*-browser*/\nimport { logger } from \"./logger.js\";\nimport { FetchRequest } from \"./request.js\";\nimport { FetchResponse } from \"./response.js\";\nasync function delay(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\n// @TODO: Add option for global preflightRequest?\nfunction getTime() { return (new Date()).getTime(); }\nfunction unpercent(value) {\n value = value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n });\n return toUtf8Bytes(value);\n}\nlet lockGateways = false;\nlet ipfsGateway = \"https:/\\/gateway.ipfs.io/\";\nlet arGateway = \"https:/\\/gateway.ar.io/\";\nexport async function fetchData(connection) {\n const conn = (typeof (connection) === \"string\") ? {\n request: new FetchRequest(connection)\n } : (connection instanceof FetchRequest) ? {\n request: connection\n } : Object.assign({}, connection);\n if (conn.request == null) {\n return logger.throwArgumentError(\"missing request\", \"connection\", connection);\n }\n let req = conn.request.clone().freeze();\n switch (conn.request.url.split(\":\")[0]) {\n case \"data\": {\n const match = req.url.match(/^data:([^;:]*)?(;base64)?,(.*)$/i);\n if (match) {\n try {\n const headers = {\n \"content-type\": (match[1] ? match[1] : \"text/plain\")\n };\n const body = (match[2] ? decodeBase64(match[3]) : unpercent(match[3]));\n return new FetchResponse(200, \"OK\", headers, body, req.clone());\n }\n catch (error) {\n return new FetchResponse(400, \"BAD REQUEST (invalid base64 encoded data)\", {}, null, req.clone());\n }\n }\n return new FetchResponse(500, \"INTERNAL SERVER ERROR (unsupported dara URI)\", {}, null, req.clone());\n }\n case \"ipfs\":\n case \"ipns\":\n case \"ar\":\n throw new Error(\"not implemented yet\");\n console.log(\"FF\", arGateway, ipfsGateway);\n case \"http\":\n case \"https\":\n break;\n default:\n throw new Error(\"unsupported scheme\");\n }\n const attempts = (conn.throttleLimit != null) ? conn.throttleLimit : 12;\n if (!Number.isInteger(attempts) || attempts < 1) {\n return logger.throwArgumentError(\"invalid throttleLimit\", \"connection\", connection);\n }\n const slotInterval = (conn.throttleSlotInterval != null) ? conn.throttleSlotInterval : 100;\n //logger.assertInteger(slotInterval, \"connection.throttleSlotInterval\", connection.throttleSlotInterval);\n if (!Number.isInteger(slotInterval) || attempts < 0) {\n return logger.throwArgumentError(\"invalid throttleSlotInterval\", \"connection\", connection);\n }\n const retryFunc = (conn.throttleRetry != null) ? conn.throttleRetry : null;\n if (retryFunc && typeof (retryFunc) !== \"function\") {\n return logger.throwArgumentError(\"invalid throttleRetry callback\", \"connection\", connection);\n }\n const preflightRequest = conn.preflightRequest || null;\n if (preflightRequest && typeof (preflightRequest) !== \"function\") {\n return logger.throwArgumentError(\"invalid preflightRequest callback\", \"connection\", connection);\n }\n const processResponse = conn.processResponse || null;\n if (processResponse && typeof (processResponse) !== \"function\") {\n return logger.throwArgumentError(\"invalid processResponse callback\", \"connection\", connection);\n }\n // Start time of this fetch (for timeouts)\n const t0 = getTime();\n let response = null;\n for (let a = 0; a < attempts; a++) {\n let request = req.clone();\n if (preflightRequest) {\n request = (await preflightRequest(request.freeze())).clone();\n }\n const remainingTime = getTime() - t0;\n if (remainingTime < 0) {\n return logger.throwError(\"timeout\", \"TIMEOUT\", { operation: \"request\", reason: \"timeout\", request });\n }\n response = await getUrl(request, remainingTime);\n // Retry logic (server forced)\n if (a < attempts) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Try following the redirect; the request will through if the\n // type of redirect is not supported\n try {\n req = request.redirect(response.headers.location || \"\");\n continue;\n }\n catch (error) { }\n ;\n // Things won't get any better on another attempt; abort\n return response;\n }\n else if (response.statusCode === 429) {\n if (retryFunc == null || (await retryFunc(request.freeze(), response, a))) {\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof (retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n await delay(parseInt(retryAfter));\n }\n else {\n await delay(slotInterval * Math.trunc(Math.random() * Math.pow(2, a)));\n }\n continue;\n }\n }\n }\n // Optional post-processing response; also allows trapping\n // HTTP status errors and doing \"something different\",\n // including any further throttling.\n if (processResponse) {\n try {\n return await processResponse(request, response);\n }\n catch (error) {\n // response.throwThrottleError\n if (error.throttle && typeof (error.stall) === \"number\") {\n if (a < attempts) {\n await delay(error.stall);\n continue;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\", error);\n }\n // Something went wrong during processing; throw a 5xx server error\n response.makeServerError(\"error in post-processing function\", error).assertOk();\n }\n }\n return response;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\");\n}\nfetchData.lock = function () {\n lockGateways = true;\n};\n// @TODO: Allow a master Gateway function\nfetchData.setGateway = function (gateway) {\n};\nfetchData.setIpfsGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setIpfsGateway\"\n });\n }\n ipfsGateway = gateway;\n};\nfetchData.setArGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setArGateway\"\n });\n }\n arGateway = gateway;\n};\n//# sourceMappingURL=fetch-data.js.map","export const version = \"@ethersproject/providers@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _a, _EnsResolver_supports2544, _EnsResolver_getResolver;\nimport { concat, dataSlice, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { encodeBase58, toArray, toNumber } from \"@ethersproject/math\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData } from \"@ethersproject/web\";\nimport { logger } from \"./logger.js\";\nconst BN_1 = BigInt(1);\nconst Empty = new Uint8Array([]);\nconst HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n const offset = toNumber(dataSlice(result, start, start + 32));\n const length = toNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n}\nfunction parseString(result, start) {\n try {\n const bytes = parseBytes(result, start);\n if (bytes != null) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(Empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\n// @TODO: This should use the fetch-data:ipfs gateway\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link) {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n }\n else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n }\n else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n return `https:/\\/gateway.ipfs.io/ipfs/${link}`;\n}\n;\n;\nexport class MulticoinProviderPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n validate(proivder) {\n return this;\n }\n supportsCoinType(coinType) {\n return false;\n }\n async encodeAddress(coinType, address) {\n throw new Error(\"unsupported coin\");\n }\n async decodeAddress(coinType, data) {\n throw new Error(\"unsupported coin\");\n }\n}\nconst BasicMulticoinPluginId = \"org.ethers.provider-prugins.basicmulticoin\";\nexport class BasicMulticoinProviderPlugin extends MulticoinProviderPlugin {\n constructor() {\n super(BasicMulticoinPluginId);\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];\nexport class EnsResolver {\n constructor(provider, address, name) {\n // For EIP-2544 names, the ancestor that provided the resolver\n _EnsResolver_supports2544.set(this, void 0);\n defineProperties(this, { provider, address, name });\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n }\n async supportsWildcard() {\n if (!__classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\")) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n __classPrivateFieldSet(this, _EnsResolver_supports2544, this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return (logger.getBigInt(result) === BN_1);\n }).catch((error) => {\n if (error.code === \"CALL_EXCEPTION\") {\n return false;\n }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n throw error;\n }), \"f\");\n }\n return await __classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\");\n }\n async _fetch(selector, parameters = \"0x\") {\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const addrData = concat([selector, namehash(this.name), parameters]);\n const tx = {\n to: this.address,\n enableCcipRead: true,\n data: addrData\n };\n // Wildcard support; use EIP-2544 to resolve the request\n let wrapped = false;\n if (await this.supportsWildcard()) {\n wrapped = true;\n // selector(\"resolve(bytes,bytes)\")\n tx.data = concat([\"0x9061b923\", encodeBytes([dnsEncode(this.name), addrData])]);\n }\n try {\n let data = await this.provider.call(tx);\n if ((logger.getBytes(data).length % 32) === 4) {\n return logger.throwError(\"resolver threw error\", \"CALL_EXCEPTION\", {\n transaction: tx, data\n });\n }\n if (wrapped) {\n return parseBytes(data, 0);\n }\n return data;\n }\n catch (error) {\n if (error.code !== \"CALL_EXCEPTION\") {\n throw error;\n }\n }\n return null;\n }\n async getAddress(coinType = 60) {\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n // No address\n if (result === \"0x\" || result === HashZero) {\n return null;\n }\n const network = await this.provider.getNetwork();\n return network.formatter.callAddress(result);\n }\n catch (error) {\n if (error.code === \"CALL_EXCEPTION\") {\n return null;\n }\n throw error;\n }\n }\n let coinPlugin = null;\n for (const plugin of this.provider.plugins) {\n if (!(plugin instanceof MulticoinProviderPlugin)) {\n continue;\n }\n if (plugin.supportsCoinType(coinType)) {\n coinPlugin = plugin;\n break;\n }\n }\n if (coinPlugin == null) {\n return null;\n }\n // keccak256(\"addr(bytes32,uint256\")\n const data = parseBytes((await this._fetch(\"0xf1cb7e06\", numPad(coinType))) || \"0x\", 0);\n // No address\n if (data == null || data === \"0x\") {\n return null;\n }\n // Compute the address\n const address = await coinPlugin.encodeAddress(coinType, data);\n if (address != null) {\n return address;\n }\n return logger.throwError(`invalid coin data`, \"UNSUPPORTED_OPERATION\", {\n operation: `getAddress(${coinType})`,\n info: { coinType, data }\n });\n }\n async getText(key) {\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\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 const calldata = logger.getBytes(concat([numPad(64), numPad(keyBytes.length), keyBytes]));\n const hexBytes = parseBytes((await this._fetch(\"0x59d1d43c\", bytesPad(calldata))) || \"0x\", 0);\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n return toUtf8String(hexBytes);\n }\n async getContentHash() {\n // keccak256(\"contenthash()\")\n const hexBytes = parseBytes((await this._fetch(\"0xbc1c58d1\")) || \"0x\", 0);\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n // IPFS (CID: 1, Type: 70=DAG-PB, 72=libp2p-key)\n const ipfs = hexBytes.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const scheme = (ipfs[1] === \"e3010170\") ? \"ipfs\" : \"ipns\";\n const length = parseInt(ipfs[4], 16);\n if (ipfs[5].length === length * 2) {\n return `${scheme}:/\\/${encodeBase58(\"0x\" + ipfs[2])}`;\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 && swarm[1].length === 64) {\n return `bzz:/\\/${swarm[1]}`;\n }\n return logger.throwError(`invalid or unsupported content hash data`, \"UNSUPPORTED_OPERATION\", {\n operation: \"getContentHash()\",\n info: { data: hexBytes }\n });\n }\n async getAvatar() {\n return (await this._getAvatar()).url;\n }\n async _getAvatar() {\n const linkage = [{ type: \"name\", value: 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) {\n linkage.push({ type: \"!avatar\", value: \"\" });\n throw new Error(\"!avatar\");\n }\n linkage.push({ type: \"avatar\", value: avatar });\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) {\n continue;\n }\n const scheme = match[1].toLowerCase();\n switch (scheme) {\n case \"https\":\n case \"data\":\n linkage.push({ type: \"url\", value: avatar });\n return { linkage, url: avatar };\n case \"ipfs\": {\n const url = getIpfsLink(avatar);\n linkage.push({ type: \"ipfs\", value: avatar });\n linkage.push({ type: \"url\", value: url });\n return { linkage, url };\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, value: avatar });\n // The owner of this name\n const owner = await this.getAddress();\n if (owner == null) {\n linkage.push({ type: \"!owner\", value: \"\" });\n throw new Error(\"!owner\");\n }\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) {\n linkage.push({ type: `!${scheme}caip`, value: (match[2] || \"\") });\n throw new Error(\"!caip\");\n }\n const formatter = (await this.provider.getNetwork()).formatter;\n const addr = formatter.address(comps[0]);\n const tokenId = numPad(comps[1]);\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = formatter.callAddress(await this.provider.call({\n to: addr, data: concat([\"0x6352211e\", tokenId])\n }));\n if (owner !== tokenOwner) {\n linkage.push({ type: \"!owner\", value: tokenOwner });\n throw new Error(\"!owner\");\n }\n linkage.push({ type: \"owner\", value: tokenOwner });\n }\n else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = logger.getBigInt(await this.provider.call({\n to: addr, data: concat([\"0x00fdd58e\", zeroPadValue(owner, 32), tokenId])\n }));\n if (!balance) {\n linkage.push({ type: \"!balance\", value: \"0\" });\n throw new Error(\"!balance\");\n }\n linkage.push({ type: \"balance\", value: balance.toString() });\n }\n // Call the token contract for the metadata URL\n const tx = {\n to: comps[0],\n data: concat([selector, tokenId])\n };\n let metadataUrl = parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) {\n linkage.push({ type: \"!metadata-url\", value: \"\" });\n throw new Error(\"!metadata-url\");\n }\n linkage.push({ type: \"metadata-url-base\", value: metadataUrl });\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", hexlify(tokenId).substring(2));\n linkage.push({ type: \"metadata-url-expanded\", value: metadataUrl });\n }\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n linkage.push({ type: \"metadata-url\", value: metadataUrl });\n // Get the token metadata\n let metadata = {};\n const response = await fetchData(metadataUrl);\n response.assertOk();\n try {\n metadata = response.bodyJson;\n }\n catch (error) {\n try {\n linkage.push({ type: \"!metadata\", value: response.bodyText });\n }\n catch (error) {\n const bytes = response.body;\n if (bytes) {\n linkage.push({ type: \"!metadata\", value: hexlify(bytes) });\n }\n throw error;\n }\n throw error;\n }\n if (!metadata) {\n linkage.push({ type: \"!metadata\", value: \"\" });\n throw new Error(\"!metadata\");\n }\n linkage.push({ type: \"metadata\", value: JSON.stringify(metadata) });\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof (imageUrl) !== \"string\") {\n linkage.push({ type: \"!imageUrl\", value: \"\" });\n throw new Error(\"!imageUrl\");\n }\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n }\n else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) {\n linkage.push({ type: \"!imageUrl-ipfs\", value: imageUrl });\n throw new Error(\"!imageUrl-ipfs\");\n }\n linkage.push({ type: \"imageUrl-ipfs\", value: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n linkage.push({ type: \"url\", value: imageUrl });\n return { linkage, url: imageUrl };\n }\n }\n }\n }\n catch (error) {\n console.log(\"EE\", error);\n }\n return { linkage, url: null };\n }\n static async fromName(provider, name) {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") {\n return null;\n }\n // Optimization since the eth node cannot change and does\n // not have a wildcar resolver\n if (name !== \"eth\" && currentName === \"eth\") {\n return null;\n }\n // Check the current node for a resolver\n const addr = await __classPrivateFieldGet(EnsResolver, _a, \"m\", _EnsResolver_getResolver).call(EnsResolver, provider, currentName);\n // Found a resolver!\n if (addr != null) {\n const resolver = new EnsResolver(provider, addr, name);\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) {\n return null;\n }\n return resolver;\n }\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n }\n}\n_a = EnsResolver, _EnsResolver_supports2544 = new WeakMap(), _EnsResolver_getResolver = async function _EnsResolver_getResolver(provider, name) {\n const network = await provider.getNetwork();\n const ensPlugin = network.getPlugin(\"org.ethers.plugins.ens\");\n // No ENS...\n if (!ensPlugin) {\n return logger.throwError(\"network does not support ENS\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getResolver\", info: { network: network.name }\n });\n }\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await provider.call({\n to: ensPlugin.address,\n data: concat([\"0x0178b8bf\", namehash(name)]),\n enableCcipRead: true\n });\n const addr = network.formatter.callAddress(addrData);\n if (addr === dataSlice(HashZero, 0, 20)) {\n return null;\n }\n return addr;\n }\n catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32),\n // so probably a link error\n throw error;\n }\n return null;\n};\n//# sourceMappingURL=ens-resolver.js.map","export const version = \"@ethersproject/signing-key@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Signature_props;\nimport { concat, dataLength, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n// Constants\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst _guard = {};\nconst Zero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nexport class Signature {\n constructor(guard, r, s, v) {\n _Signature_props.set(this, void 0);\n logger.assertPrivate(guard, _guard, \"Signature\");\n __classPrivateFieldSet(this, _Signature_props, { r, s, v, networkV: null }, \"f\");\n }\n get r() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\"); }\n set r(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\", hexlify(value));\n }\n get s() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\"); }\n set s(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n else if (logger.getBytes(value)[0] & 0x80) {\n logger.throwArgumentError(\"non-canonical s\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\", hexlify(value));\n }\n get v() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\"); }\n set v(value) {\n const v = logger.getNumber(value, \"value\");\n if (v !== 27 && v !== 28) {\n throw new Error(\"@TODO\");\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\", v);\n }\n get networkV() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"networkV\"); }\n get legacyChainId() {\n const v = this.networkV;\n if (v == null) {\n return null;\n }\n return Signature.getChainId(v);\n }\n get yParity() {\n if (this.v === 27) {\n return 0;\n }\n return 1;\n /*\n // When v is 0 or 1 it is the recid directly\n if (this.v.isZero()) { return 0; }\n if (this.v.eq(1)) { return 1; }\n\n // Otherwise, odd (e.g. 27) is 0 and even (e.g. 28) is 1\n return this.v.and(1).isZero() ? 1: 0;\n */\n }\n get yParityAndS() {\n // The EIP-2098 compact representation\n const yParityAndS = logger.getBytes(this.s);\n if (this.yParity) {\n yParityAndS[0] |= 0x80;\n }\n return hexlify(yParityAndS);\n }\n get compactSerialized() {\n return concat([this.r, this.yParityAndS]);\n }\n get serialized() {\n return concat([this.r, this.s, (this.yParity ? \"0x1c\" : \"0x1b\")]);\n }\n [(_Signature_props = new WeakMap(), Symbol.for('nodejs.util.inspect.custom'))]() {\n return `Signature { r: \"${this.r}\", s: \"${this.s}\", yParity: ${this.yParity}, networkV: ${this.networkV} }`;\n }\n clone() {\n const clone = new Signature(_guard, this.r, this.s, this.v);\n if (this.networkV) {\n setStore(__classPrivateFieldGet(clone, _Signature_props, \"f\"), \"networkV\", this.networkV);\n }\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n }\n toJSON() {\n const networkV = this.networkV;\n return {\n _type: \"signature\",\n networkV: ((networkV != null) ? networkV.toString() : null),\n r: this.r, s: this.s, v: this.v,\n };\n }\n static create() {\n return new Signature(_guard, Zero, Zero, 27);\n }\n // Get the chain ID from an EIP-155 v\n static getChainId(v) {\n const bv = logger.getBigInt(v, \"v\");\n // The v is not an EIP-155 v, so it is the unspecified chain ID\n if ((bv == BN_27) || (bv == BN_28)) {\n return BN_0;\n }\n // Bad value for an EIP-155 v\n if (bv < BN_35) {\n logger.throwArgumentError(\"invalid EIP-155 v\", \"v\", v);\n }\n return (bv - BN_35) / BN_2;\n }\n // Get the EIP-155 v transformed for a given chainId\n static getChainIdV(chainId, v) {\n return (logger.getBigInt(chainId) * BN_2) + BigInt(35 + v - 27);\n }\n // Convert an EIP-155 v into a normalized v\n static getNormalizedV(v) {\n const bv = logger.getBigInt(v);\n if (bv == BN_0) {\n return 27;\n }\n if (bv == BN_1) {\n return 28;\n }\n // Otherwise, EIP-155 v means odd is 27 and even is 28\n return (bv & BN_1) ? 27 : 28;\n }\n static from(sig) {\n const throwError = (message) => {\n return logger.throwArgumentError(message, \"signature\", sig);\n };\n if (typeof (sig) === \"string\") {\n const bytes = logger.getBytes(sig, \"signature\");\n if (bytes.length === 64) {\n const r = hexlify(bytes.slice(0, 32));\n const s = bytes.slice(32, 64);\n const v = (s[0] & 0x80) ? 28 : 27;\n s[0] &= 0x7f;\n return new Signature(_guard, r, hexlify(s), v);\n }\n if (dataLength(sig) !== 65) {\n const r = hexlify(sig.slice(0, 32));\n const s = bytes.slice(32, 64);\n if (s[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n const v = Signature.getNormalizedV(bytes[64]);\n return new Signature(_guard, r, hexlify(s), v);\n }\n return throwError(\"invlaid raw signature length\");\n }\n if (sig instanceof Signature) {\n return sig.clone();\n }\n // Get r\n const r = sig.r;\n if (r == null) {\n throwError(\"missing r\");\n }\n if (!isHexString(r, 32)) {\n throwError(\"invalid r\");\n }\n // Get s; by any means necessary (we check consistency below)\n const s = (function (s, yParityAndS) {\n if (s != null) {\n if (!isHexString(s, 32)) {\n throwError(\"invalid s\");\n }\n return s;\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n const bytes = logger.getBytes(yParityAndS);\n bytes[0] &= 0x7f;\n return hexlify(bytes);\n }\n return throwError(\"missing s\");\n })(sig.s, sig.yParityAndS);\n if (logger.getBytes(s)[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n // Get v; by any means necessary (we check consistency below)\n const { networkV, v } = (function (_v, yParityAndS, yParity) {\n if (_v != null) {\n const v = logger.getBigInt(_v);\n return {\n networkV: ((v >= BN_35) ? v : undefined),\n v: Signature.getNormalizedV(v)\n };\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n return { v: ((logger.getBytes(yParityAndS)[0] & 0x80) ? 28 : 27) };\n }\n if (yParity != null) {\n switch (yParity) {\n case 0: return { v: 27 };\n case 1: return { v: 28 };\n }\n return throwError(\"invalid yParity\");\n }\n return throwError(\"missing v\");\n })(sig.v, sig.yParityAndS, sig.yParity);\n const result = new Signature(_guard, r, s, v);\n if (networkV) {\n setStore(__classPrivateFieldGet(result, _Signature_props, \"f\"), \"networkV\", networkV);\n }\n // If multiple of v, yParity, yParityAndS we given, check they match\n if (\"yParity\" in sig && sig.yParity !== result.yParity) {\n throwError(\"yParity mismatch\");\n }\n else if (\"yParityAndS\" in sig && sig.yParityAndS !== result.yParityAndS) {\n throwError(\"yParityAndS mismatch\");\n }\n return result;\n }\n}\n//# sourceMappingURL=signature.js.map","/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst POW_2_256 = _2n ** BigInt(256);\nconst CURVE = {\n a: _0n,\n b: BigInt(7),\n P: POW_2_256 - _2n ** BigInt(32) - BigInt(977),\n n: POW_2_256 - BigInt('432420386565659656852420866394968145599'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n};\nexport { CURVE };\nfunction weistrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 ** _2n);\n const B = mod(Y1 ** _2n);\n const C = mod(B ** _2n);\n const D = mod(_2n * (mod((X1 + B) ** _2n) - A - C));\n const E = mod(_3n * A);\n const F = mod(E ** _2n);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H ** _2n);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r ** _2n - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n let n = normalizeScalar(scalar);\n const G = JacobianPoint.BASE;\n const P0 = JacobianPoint.ZERO;\n if (n === _0n)\n return P0;\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.ZERO;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) {\n let pr = precomputes[offset];\n if (window % 2)\n pr = pr.negate();\n f = f.add(pr);\n }\n else {\n let cached = precomputes[offset + Math.abs(wbits) - 1];\n if (wbits < 0)\n cached = cached.negate();\n p = p.add(cached);\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ = invert(this.z)) {\n const { x, y, z } = this;\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weistrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, 33));\n const y = bytesToNumber(bytes.subarray(33, 65));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n return this.fromCompressedHex(bytes);\n }\n if (len === 65 && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n msgHash = ensureBytes(msgHash);\n const h = truncateHash(msgHash);\n const { r, s } = normalizeSignature(signature);\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Cannot recover signature: invalid recovery bit');\n }\n if (h === _0n)\n throw new Error('Cannot recover signature: msgHash cannot be 0');\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(r));\n const { n } = CURVE;\n const rinv = invert(r, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.y & _1n ? '03' : '02';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weistrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nexport class Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = isUint8a(hex);\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = isUint8a(hex);\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n }\n toDERRawBytes(isCompressed = false) {\n return hexToBytes(this.toDERHex(isCompressed));\n }\n toDERHex(isCompressed = false) {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n if (isCompressed)\n return sHex;\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const rLen = numberToHexUnpadded(rHex.length / 2);\n const sLen = numberToHexUnpadded(sHex.length / 2);\n const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nfunction concatBytes(...arrays) {\n if (!arrays.every(isUint8a))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nfunction isUint8a(bytes) {\n return bytes instanceof Uint8Array;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nfunction numTo32bStr(num) {\n if (num > POW_2_256)\n throw new Error('Expected number < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n return hexToBytes(numTo32bStr(num));\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst POW_2_128 = _2n ** BigInt(128);\nfunction splitScalarEndo(k) {\n const { n } = CURVE;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n const { n } = CURVE;\n const byteLength = hash.length;\n const delta = byteLength * 8 - 256;\n let h = bytesToNumber(hash);\n if (delta > 0)\n h = h >> BigInt(delta);\n if (h >= n)\n h -= n;\n return h;\n}\nclass HmacDrbg {\n constructor() {\n this.v = new Uint8Array(32).fill(1);\n this.k = new Uint8Array(32).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n if (typeof utils.hmacSha256Sync !== 'function')\n throw new Error('utils.hmacSha256Sync is undefined, you need to set it');\n const res = utils.hmacSha256Sync(this.k, ...values);\n if (res instanceof Promise)\n throw new Error('To use sync sign(), ensure utils.hmacSha256 is sync');\n return res;\n }\n incr() {\n if (this.counter >= 1000) {\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n }\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n this.v = await this.hmac(this.v);\n return this.v;\n }\n generateSync() {\n this.incr();\n this.v = this.hmacSync(this.v);\n return this.v;\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n const k = bytesToNumber(kBytes);\n if (!isWithinCurveOrder(k))\n return;\n const { n } = CURVE;\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(invert(k, n) * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n const sig = new Signature(r, s);\n const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 64)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (isUint8a(key)) {\n if (key.length !== 32)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isPub(item) {\n const arr = isUint8a(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === 33 || len === 65;\n if (str)\n return len === 66 || len === 130;\n if (item instanceof Point)\n return true;\n return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n const hex = numTo32bStr(num);\n return hexToBytes(hex);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = utils.randomBytes(32);\n const e = ensureBytes(extraEntropy);\n if (e.length !== 32)\n throw new Error('sign: Expected 32 bytes of extra data');\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n let { sig, recovery } = recSig;\n const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n if (canonical && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n await drbg.reseed(seed);\n while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n drbg.reseedSync(seed);\n while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n if (h === _0n)\n return false;\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nasync function taggedHash(tag, ...messages) {\n const tagB = new Uint8Array(tag.split('').map((c) => c.charCodeAt(0)));\n const tagH = await utils.sha256(tagB);\n const h = await utils.sha256(concatBytes(tagH, tagH, ...messages));\n return bytesToNumber(h);\n}\nasync function createChallenge(x, P, message) {\n const rx = numTo32b(x);\n const t = await taggedHash('BIP0340/challenge', rx, P.toRawX(), message);\n return mod(t, CURVE.n);\n}\nfunction hasEvenY(point) {\n return (point.y & _1n) === _0n;\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nasync function schnorrSign(message, privateKey, auxRand = utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n const { n } = CURVE;\n const m = ensureBytes(message);\n const d0 = normalizePrivateKey(privateKey);\n const rand = ensureBytes(auxRand);\n if (rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n const P = Point.fromPrivateKey(d0);\n const d = hasEvenY(P) ? d0 : n - d0;\n const t0h = await taggedHash('BIP0340/aux', rand);\n const t = d ^ t0h;\n const k0h = await taggedHash('BIP0340/nonce', numTo32b(t), P.toRawX(), m);\n const k0 = mod(k0h, n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const R = Point.fromPrivateKey(k0);\n const k = hasEvenY(R) ? k0 : n - k0;\n const e = await createChallenge(R.x, P, m);\n const sig = new SchnorrSignature(R.x, mod(k + e * d, n)).toRawBytes();\n const isValid = await schnorrVerify(sig, m, P.toRawX());\n if (!isValid)\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n let sig;\n try {\n sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n const m = ensureBytes(message);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const e = await createChallenge(r, P, m);\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !hasEvenY(R) || R.x !== r)\n return false;\n return true;\n}\nexport const schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n if (hash.length < 40 || hash.length > 1024)\n throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n const num = mod(bytesToNumber(hash), CURVE.n);\n if (num === _0n || num === _1n)\n throw new Error('Invalid private key');\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => {\n return utils.hashToPrivateKey(utils.randomBytes(40));\n },\n bytesToHex,\n mod,\n sha256: async (message) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', message.buffer);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n return Uint8Array.from(createHash('sha256').update(message).digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n};\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SigningKey_privateKey;\nimport * as secp256k1 from \"@noble/secp256k1\";\nimport { arrayify, concat, dataLength, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac } from \"@ethersproject/crypto\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"./signature.js\";\nimport { logger } from \"./logger.js\";\n// Make noble-secp256k1 sync\nsecp256k1.utils.hmacSha256Sync = function (key, ...messages) {\n return arrayify(computeHmac(\"sha256\", key, concat(messages)));\n};\nexport class SigningKey {\n constructor(privateKey) {\n _SigningKey_privateKey.set(this, void 0);\n logger.assertArgument((dataLength(privateKey) === 32), \"invalid private key length\", \"privateKey\", \"[REDACTED]\");\n __classPrivateFieldSet(this, _SigningKey_privateKey, hexlify(privateKey), \"f\");\n }\n get privateKey() { return __classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"); }\n get publicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")); }\n get compressedPublicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"), true); }\n sign(digest) {\n logger.assertArgument((dataLength(digest) === 32), \"invalid digest length\", \"digest\", digest);\n const [sigDer, recid] = secp256k1.signSync(arrayify(digest), arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), {\n recovered: true,\n canonical: true\n });\n const sig = secp256k1.Signature.fromHex(sigDer);\n return Signature.from({\n r: toHex(\"0x\" + sig.r.toString(16), 32),\n s: toHex(\"0x\" + sig.s.toString(16), 32),\n v: (recid ? 0x1c : 0x1b)\n }).freeze();\n }\n computeShardSecret(other) {\n const pubKey = SigningKey.computePublicKey(other);\n return hexlify(secp256k1.getSharedSecret(arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), pubKey));\n }\n static computePublicKey(key, compressed) {\n let bytes = logger.getBytes(key, \"key\");\n if (bytes.length === 32) {\n const pubKey = secp256k1.getPublicKey(bytes, !!compressed);\n return hexlify(pubKey);\n }\n if (bytes.length === 64) {\n const pub = new Uint8Array(65);\n pub[0] = 0x04;\n pub.set(bytes, 1);\n bytes = pub;\n }\n const point = secp256k1.Point.fromHex(bytes);\n return hexlify(point.toRawBytes(compressed));\n }\n static recoverPublicKey(digest, signature) {\n const sig = Signature.from(signature);\n const der = secp256k1.Signature.fromCompact(arrayify(concat([sig.r, sig.s]))).toDERRawBytes();\n const pubKey = secp256k1.recoverPublicKey(arrayify(digest), der, sig.yParity);\n if (pubKey != null) {\n return hexlify(pubKey);\n }\n return logger.throwArgumentError(\"invalid signautre for digest\", \"signature\", signature);\n }\n static _addPoints(p0, p1, compressed) {\n const pub0 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p0).substring(2));\n const pub1 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p1).substring(2));\n return \"0x\" + pub0.add(pub1).toHex(!!compressed);\n }\n}\n_SigningKey_privateKey = new WeakMap();\n/*\nconst key = new SigningKey(\"0x1234567890123456789012345678901234567890123456789012345678901234\");\nconsole.log(key);\nconsole.log(key.sign(\"0x1234567890123456789012345678901234567890123456789012345678901234\"));\n{\n const privKey = \"0x1234567812345678123456781234567812345678123456781234567812345678\";\n const signingKey = new SigningKey(privKey);\n console.log(\"0\", signingKey, signingKey.publicKey, signingKey.publicKeyCompressed);\n\n let pubKey = SigningKey.computePublicKey(privKey);\n let pubKeyComp = SigningKey.computePublicKey(privKey, true);\n let pubKeyRaw = \"0x\" + SigningKey.computePublicKey(privKey).substring(4);\n console.log(\"A\", pubKey, pubKeyComp);\n\n let a = SigningKey.computePublicKey(pubKey);\n let b = SigningKey.computePublicKey(pubKey, true);\n console.log(\"B\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyComp);\n b = SigningKey.computePublicKey(pubKeyComp, true);\n console.log(\"C\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyRaw);\n b = SigningKey.computePublicKey(pubKeyRaw, true);\n console.log(\"D\", a, b);\n\n const digest = \"0x1122334411223344112233441122334411223344112233441122334411223344\";\n const sig = signingKey.sign(digest);\n console.log(\"SS\", sig, sig.r, sig.s, sig.yParity);\n\n console.log(\"R\", SigningKey.recoverPublicKey(digest, sig));\n}\n*/\n//# sourceMappingURL=signing-key.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { dataLength } from \"@ethersproject/bytes\";\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (dataLength(storageKey) !== 32) {\n //logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }>\n throw new Error(\"\");\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n //logger.throwArgumentError(\"access list expected to be [ address, storageKeys[>\n throw new Error(\"\");\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = 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//# sourceMappingURL=accesslist.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nexport function computeAddress(key) {\n const publicKey = SigningKey.computePublicKey(key, false);\n return getAddress(keccak256(\"0x\" + publicKey.substring(4)).substring(26));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(SigningKey.recoverPublicKey(digest, signature));\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/transaction@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Transaction_props;\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toArray } from \"@ethersproject/math\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { decodeRlp, encodeRlp } from \"@ethersproject/rlp\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"./accesslist.js\";\nimport { recoverAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst BN_MAX_UINT = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleData(value, param) {\n try {\n return hexlify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid data\", param, value);\n }\n}\nfunction handleAccessList(value, param) {\n try {\n return accessListify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid accessList\", param, value);\n }\n}\nfunction handleNumber(_value, param) {\n if (_value === \"0x\") {\n return 0;\n }\n return logger.getNumber(_value, param);\n}\nfunction handleUint(_value, param) {\n if (_value === \"0x\") {\n return BN_0;\n }\n const value = logger.getBigInt(_value, param);\n if (value > BN_MAX_UINT) {\n logger.throwArgumentError(\"value exceeds uint size\", param, value);\n }\n return value;\n}\nfunction formatNumber(_value, name) {\n const value = logger.getBigInt(_value, \"value\");\n const result = toArray(value);\n if (result.length > 32) {\n logger.throwArgumentError(`value too large`, `tx.${name}`, value);\n }\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _parseLegacy(data) {\n const fields = decodeRlp(data);\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 6)) {\n return logger.throwArgumentError(\"invalid field count for legacy transaction\", \"data\", data);\n }\n const tx = {\n type: 0,\n nonce: handleNumber(fields[0], \"nonce\"),\n gasPrice: handleUint(fields[1], \"gasPrice\"),\n gasLimit: handleUint(fields[2], \"gasLimit\"),\n to: handleAddress(fields[3]),\n value: handleUint(fields[4], \"value\"),\n data: handleData(fields[5], \"dta\"),\n chainId: BN_0\n };\n // Legacy unsigned transaction\n if (fields.length === 6) {\n return tx;\n }\n const v = handleUint(fields[6], \"v\");\n const r = handleUint(fields[7], \"r\");\n const s = handleUint(fields[8], \"s\");\n if (r === BN_0 && s === BN_0) {\n // EIP-155 unsigned transaction\n tx.chainId = v;\n }\n else {\n // Compute the EIP-155 chain ID (or 0 for legacy)\n let chainId = (v - BN_35) / BN_2;\n if (chainId < BN_0) {\n chainId = BN_0;\n }\n tx.chainId = chainId;\n // Signed Legacy Transaction\n if (chainId === BN_0 && (v < BN_27 || v > BN_28)) {\n logger.throwArgumentError(\"non-canonical legacy v\", \"v\", fields[6]);\n }\n tx.signature = Signature.from({\n r: zeroPadValue(fields[7], 32),\n s: zeroPadValue(fields[8], 32),\n v\n });\n tx.hash = keccak256(data);\n }\n return tx;\n}\nfunction _serializeLegacy(tx, sig) {\n const fields = [\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n ];\n let chainId = BN_0;\n if (tx.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = logger.getBigInt(tx.chainId, \"tx.chainId\");\n // We have a chainId in the tx and an EIP-155 v in the signature,\n // make sure they agree with each other\n if (sig && sig.networkV != null && sig.legacyChainId !== chainId) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n }\n else if (sig) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n const legacy = sig.legacyChainId;\n if (legacy != null) {\n chainId = legacy;\n }\n }\n // Requesting an unsigned transaction\n if (!sig) {\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== BN_0) {\n fields.push(toArray(chainId));\n fields.push(\"0x\");\n fields.push(\"0x\");\n }\n return encodeRlp(fields);\n }\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = BigInt(27 + sig.yParity);\n if (chainId !== BN_0) {\n v = Signature.getChainIdV(chainId, sig.v);\n }\n else if (BigInt(sig.v) !== v) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n fields.push(toArray(v));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n return encodeRlp(fields);\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n let yParity;\n try {\n yParity = handleNumber(fields[0], \"yParity\");\n if (yParity !== 0 && yParity !== 1) {\n throw new Error(\"bad yParity\");\n }\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid yParity\", \"yParity\", fields[0]);\n }\n const r = zeroPadValue(fields[1], 32);\n const s = zeroPadValue(fields[2], 32);\n const signature = Signature.from({ r, s, yParity });\n tx.signature = signature;\n}\nfunction _parseEip1559(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 12)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 2\", \"data\", hexlify(data));\n }\n const maxPriorityFeePerGas = handleUint(fields[2], \"maxPriorityFeePerGas\");\n const maxFeePerGas = handleUint(fields[3], \"maxFeePerGas\");\n const tx = {\n type: 2,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleUint(fields[4], \"gasLimit\"),\n to: handleAddress(fields[5]),\n value: handleUint(fields[6], \"value\"),\n data: handleData(fields[7], \"data\"),\n accessList: handleAccessList(fields[8], \"accessList\"),\n };\n // Unsigned EIP-1559 Transaction\n if (fields.length === 9) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _serializeEip1559(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(tx.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"yParity\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x02\", encodeRlp(fields)]);\n}\nfunction _parseEip2930(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 8 && fields.length !== 11)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 1\", \"data\", hexlify(data));\n }\n const tx = {\n type: 1,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n gasPrice: handleUint(fields[2], \"gasPrice\"),\n gasLimit: handleUint(fields[3], \"gasLimit\"),\n to: handleAddress(fields[4]),\n value: handleUint(fields[5], \"value\"),\n data: handleData(fields[6], \"data\"),\n accessList: handleAccessList(fields[7], \"accessList\")\n };\n // Unsigned EIP-2930 Transaction\n if (fields.length === 8) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(8), _serializeEip2930);\n return tx;\n}\nfunction _serializeEip2930(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"recoveryParam\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x01\", encodeRlp(fields)]);\n}\nexport class Transaction {\n constructor() {\n _Transaction_props.set(this, void 0);\n __classPrivateFieldSet(this, _Transaction_props, {\n type: null,\n to: null,\n nonce: 0,\n gasLimit: BigInt(0),\n gasPrice: null,\n maxPriorityFeePerGas: null,\n maxFeePerGas: null,\n data: \"0x\",\n value: BigInt(0),\n chainId: BigInt(0),\n sig: null,\n accessList: null\n }, \"f\");\n }\n // A type of null indicates the type will be populated automatically\n get type() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\"); }\n get typeName() {\n switch (this.type) {\n case 0: return \"legacy\";\n case 1: return \"eip-2930\";\n case 2: return \"eip-1559\";\n }\n return null;\n }\n set type(value) {\n switch (value) {\n case null:\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", null);\n break;\n case 0:\n case \"legacy\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 0);\n break;\n case 1:\n case \"berlin\":\n case \"eip-2930\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 1);\n break;\n case 2:\n case \"london\":\n case \"eip-1559\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 2);\n break;\n default:\n throw new Error(`unsupported transaction type`);\n }\n }\n get to() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\"); }\n set to(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\", (value == null) ? null : getAddress(value));\n }\n get nonce() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\"); }\n set nonce(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\", logger.getNumber(value, \"value\")); }\n get gasLimit() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\"); }\n set gasLimit(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\", logger.getBigInt(value)); }\n get gasPrice() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\");\n if (value == null && (this.type === 0 || this.type === 1)) {\n return BN_0;\n }\n return value;\n }\n set gasPrice(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\", (value == null) ? null : logger.getBigInt(value, \"gasPrice\"));\n }\n get maxPriorityFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxPriorityFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxPriorityFeePerGas\"));\n }\n get maxFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxFeePerGas\"));\n }\n get data() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\"); }\n set data(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\", hexlify(value)); }\n get value() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\"); }\n set value(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\", logger.getBigInt(value, \"value\"));\n }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\", logger.getBigInt(value)); }\n get signature() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\") || null; }\n set signature(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\", (value == null) ? null : Signature.from(value));\n }\n get accessList() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\") || null;\n if (value == null && (this.type === 1 || this.type === 2)) {\n return [];\n }\n return value;\n }\n set accessList(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\", (value == null) ? null : accessListify(value));\n }\n get hash() {\n if (this.signature == null) {\n throw new Error(\"cannot hash unsigned transaction; maybe you meant .unsignedHash\");\n }\n return keccak256(this.serialized);\n }\n get unsignedHash() {\n return keccak256(this.unsignedSerialized);\n }\n get from() {\n if (this.signature == null) {\n return null;\n }\n return recoverAddress(this.unsignedSerialized, this.signature);\n }\n get fromPublicKey() {\n if (this.signature == null) {\n return null;\n }\n // use ecrecover\n return \"\";\n }\n isSigned() {\n return this.signature != null;\n }\n get serialized() {\n if (this.signature == null) {\n throw new Error(\"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized\");\n }\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this, this.signature);\n case 1:\n return _serializeEip2930(this, this.signature);\n case 2:\n return _serializeEip1559(this, this.signature);\n }\n throw new Error(\"unsupported type\");\n }\n get unsignedSerialized() {\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this);\n case 1:\n return _serializeEip2930(this);\n case 2:\n return _serializeEip1559(this);\n }\n throw new Error(\"unsupported type\");\n }\n // Validates properties and lists possible types this transaction adheres to\n inferTypes() {\n // Checks that there are no conflicting properties set\n const hasGasPrice = this.gasPrice != null;\n const hasFee = (this.maxFeePerGas != null || this.maxPriorityFeePerGas != null);\n const hasAccessList = (this.accessList != null);\n //if (hasGasPrice && hasFee) {\n // throw new Error(\"transaction cannot have gasPrice and maxFeePerGas\");\n //}\n if (this.maxFeePerGas != null && this.maxPriorityFeePerGas != null) {\n if (this.maxFeePerGas < this.maxPriorityFeePerGas) {\n throw new Error(\"priorityFee cannot be more than maxFee\");\n }\n }\n //if (this.type === 2 && hasGasPrice) {\n // throw new Error(\"eip-1559 transaction cannot have gasPrice\");\n //}\n if ((this.type === 0 || this.type === 1) && hasFee) {\n throw new Error(\"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas\");\n }\n if (this.type === 0 && hasAccessList) {\n throw new Error(\"legacy transaction cannot have accessList\");\n }\n const types = [];\n // Explicit type\n if (this.type != null) {\n types.push(this.type);\n }\n else {\n if (hasFee) {\n types.push(2);\n }\n else if (hasGasPrice) {\n types.push(1);\n if (!hasAccessList) {\n types.push(0);\n }\n }\n else if (hasAccessList) {\n types.push(1);\n types.push(2);\n }\n else {\n types.push(0);\n types.push(1);\n types.push(2);\n }\n }\n types.sort();\n return types;\n }\n isLegacy() { return (this.type === 0); }\n isBerlin() { return (this.type === 1); }\n isLondon() { return (this.type === 2); }\n clone() {\n return Transaction.from(this);\n }\n freeze() {\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").sig = (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig.clone().freeze());\n }\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").accessList = Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList.map((set) => {\n Object.freeze(set.storageKeys);\n return Object.freeze(set);\n }));\n }\n Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n }\n static from(tx) {\n if (typeof (tx) === \"string\") {\n const payload = arrayify(tx);\n if (payload[0] >= 0x7f) { // @TODO: > vs >= ??\n return Transaction.from(_parseLegacy(payload));\n }\n switch (payload[0]) {\n case 1: return Transaction.from(_parseEip2930(payload));\n case 2: return Transaction.from(_parseEip1559(payload));\n }\n throw new Error(\"unsupported transaction type\");\n }\n const result = new Transaction();\n if (tx.type != null) {\n result.type = tx.type;\n }\n if (tx.to != null) {\n result.to = tx.to;\n }\n if (tx.nonce != null) {\n result.nonce = tx.nonce;\n }\n if (tx.gasLimit != null) {\n result.gasLimit = tx.gasLimit;\n }\n if (tx.gasPrice != null) {\n result.gasPrice = tx.gasPrice;\n }\n if (tx.maxPriorityFeePerGas != null) {\n result.maxPriorityFeePerGas = tx.maxPriorityFeePerGas;\n }\n if (tx.maxFeePerGas != null) {\n result.maxFeePerGas = tx.maxFeePerGas;\n }\n if (tx.data != null) {\n result.data = tx.data;\n }\n if (tx.value != null) {\n result.value = tx.value;\n }\n if (tx.chainId != null) {\n result.chainId = tx.chainId;\n }\n if (tx.signature != null) {\n result.signature = Signature.from(tx.signature);\n }\n if (tx.accessList != null) {\n result.accessList = tx.accessList;\n }\n if (tx.hash != null) {\n if (result.isSigned()) {\n if (result.hash !== tx.hash) {\n throw new Error(\"hash mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a hashs\");\n }\n }\n if (tx.from != null) {\n if (result.isSigned()) {\n if (result.from.toLowerCase() !== (tx.from || \"\").toLowerCase()) {\n throw new Error(\"from mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a from\");\n }\n }\n return result;\n }\n}\n_Transaction_props = new WeakMap();\n//# sourceMappingURL=transaction.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Block_transactions, _TransactionReceipt_logs;\n//import { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\n// -----------------------\nfunction getValue(value) {\n if (value == null) {\n return null;\n }\n return value;\n}\nfunction toJson(value) {\n if (value == null) {\n return null;\n }\n return value.toString();\n}\n// @TODO? implements Required\nexport class FeeData {\n constructor(gasPrice, maxFeePerGas, maxPriorityFeePerGas) {\n defineProperties(this, {\n gasPrice: getValue(gasPrice),\n maxFeePerGas: getValue(maxFeePerGas),\n maxPriorityFeePerGas: getValue(maxPriorityFeePerGas)\n });\n }\n toJSON() {\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = this;\n return {\n _type: \"FeeData\",\n gasPrice: toJson(gasPrice),\n maxFeePerGas: toJson(maxFeePerGas),\n maxPriorityFeePerGas: toJson(maxPriorityFeePerGas),\n };\n }\n}\n;\nexport function copyRequest(req) {\n const result = {};\n // These could be addresses, ENS names or Addressables\n if (req.to) {\n result.to = req.to;\n }\n if (req.from) {\n result.from = req.from;\n }\n if (req.data) {\n result.data = hexlify(req.data);\n }\n const bigIntKeys = \"chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value\".split(/,/);\n for (const key in bigIntKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getBigInt(req[key], `request.${key}`);\n }\n const numberKeys = \"type,nonce\".split(/,/);\n for (const key in numberKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getNumber(req[key], `request.${key}`);\n }\n if (req.accessList) {\n result.accessList = accessListify(req.accessList);\n }\n if (\"blockTag\" in req) {\n result.blockTag = req.blockTag;\n }\n if (\"enableCcipRead\" in req) {\n result.enableCcipReadEnabled = !!req.enableCcipRead;\n }\n if (\"customData\" in req) {\n result.customData = req.customData;\n }\n return result;\n}\n;\nexport class Block {\n constructor(block, provider) {\n _Block_transactions.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _Block_transactions, Object.freeze(block.transactions.map((tx) => {\n if (typeof (tx) !== \"string\" && tx.provider !== provider) {\n throw new Error(\"provider mismatch\");\n }\n return tx;\n })), \"f\");\n ;\n defineProperties(this, {\n provider,\n hash: getValue(block.hash),\n number: block.number,\n timestamp: block.timestamp,\n parentHash: block.parentHash,\n nonce: block.nonce,\n difficulty: block.difficulty,\n gasLimit: block.gasLimit,\n gasUsed: block.gasUsed,\n miner: block.miner,\n extraData: block.extraData,\n baseFeePerGas: getValue(block.baseFeePerGas)\n });\n }\n get transactions() { return __classPrivateFieldGet(this, _Block_transactions, \"f\"); }\n //connect(provider: Provider): Block {\n // return new Block(this, provider);\n //}\n toJSON() {\n const { baseFeePerGas, difficulty, extraData, gasLimit, gasUsed, hash, miner, nonce, number, parentHash, timestamp, transactions } = this;\n return {\n _type: \"Block\",\n baseFeePerGas: toJson(baseFeePerGas),\n difficulty: toJson(difficulty),\n extraData,\n gasLimit: toJson(gasLimit),\n gasUsed: toJson(gasUsed),\n hash, miner, nonce, number, parentHash, timestamp,\n transactions,\n };\n }\n [(_Block_transactions = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return {\n value: this.transactions[index++], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get length() { return this.transactions.length; }\n get date() {\n if (this.timestamp == null) {\n return null;\n }\n return new Date(this.timestamp * 1000);\n }\n async getTransaction(index) {\n const tx = this.transactions[index];\n if (tx == null) {\n throw new Error(\"no such tx\");\n }\n if (typeof (tx) === \"string\") {\n return (await this.provider.getTransaction(tx));\n }\n else {\n return tx;\n }\n }\n isMined() { return !!this.hash; }\n isLondon() { return !!this.baseFeePerGas; }\n orphanedEvent() {\n if (!this.isMined()) {\n throw new Error(\"\");\n }\n return createOrphanedBlockFilter(this);\n }\n}\nexport class Log {\n constructor(log, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n const topics = Object.freeze(log.topics.slice());\n defineProperties(this, {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n removed: log.removed,\n address: log.address,\n data: log.data,\n topics,\n index: log.index,\n transactionIndex: log.transactionIndex,\n });\n }\n //connect(provider: Provider): Log {\n // return new Log(this, provider);\n //}\n toJSON() {\n const { address, blockHash, blockNumber, data, index, removed, topics, transactionHash, transactionIndex } = this;\n return {\n _type: \"log\",\n address, blockHash, blockNumber, data, index,\n removed, topics, transactionHash, transactionIndex\n };\n }\n async getBlock() {\n return (await this.provider.getBlock(this.blockHash));\n }\n async getTransaction() {\n return (await this.provider.getTransaction(this.transactionHash));\n }\n async getTransactionReceipt() {\n return (await this.provider.getTransactionReceipt(this.transactionHash));\n }\n removedEvent() {\n return createRemovedLogFilter(this);\n }\n}\nexport class TransactionReceipt {\n constructor(tx, provider) {\n _TransactionReceipt_logs.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _TransactionReceipt_logs, Object.freeze(tx.logs.map((log) => {\n if (provider !== log.provider) {\n //return log.connect(provider);\n throw new Error(\"provider mismatch\");\n }\n return log;\n })), \"f\");\n defineProperties(this, {\n provider,\n to: tx.to,\n from: tx.from,\n contractAddress: tx.contractAddress,\n hash: tx.hash,\n index: tx.index,\n blockHash: tx.blockHash,\n blockNumber: tx.blockNumber,\n logsBloom: tx.logsBloom,\n gasUsed: tx.gasUsed,\n cumulativeGasUsed: tx.cumulativeGasUsed,\n gasPrice: (tx.effectiveGasPrice || tx.gasPrice),\n byzantium: tx.byzantium,\n status: tx.status,\n root: tx.root\n });\n }\n get logs() { return __classPrivateFieldGet(this, _TransactionReceipt_logs, \"f\"); }\n //connect(provider: Provider): TransactionReceipt {\n // return new TransactionReceipt(this, provider);\n //}\n toJSON() {\n const { to, from, contractAddress, hash, index, blockHash, blockNumber, logsBloom, logs, byzantium, status, root } = this;\n return {\n _type: \"TransactionReceipt\",\n blockHash, blockNumber, byzantium, contractAddress,\n cumulativeGasUsed: toJson(this.cumulativeGasUsed),\n from,\n gasPrice: toJson(this.gasPrice),\n gasUsed: toJson(this.gasUsed),\n hash, index, logs, logsBloom, root, status, to\n };\n }\n get length() { return this.logs.length; }\n [(_TransactionReceipt_logs = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return { value: this.logs[index++], done: false };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get fee() {\n return this.gasUsed * this.gasPrice;\n }\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.hash);\n if (tx == null) {\n throw new Error(\"TODO\");\n }\n return tx;\n }\n async confirmations() {\n return (await this.provider.getBlockNumber()) - this.blockNumber + 1;\n }\n removedEvent() {\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transction cannot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"reorderedEvent(other)\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\n;\nexport class TransactionResponse {\n constructor(tx, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n this.blockNumber = (tx.blockNumber != null) ? tx.blockNumber : null;\n this.blockHash = (tx.blockHash != null) ? tx.blockHash : null;\n this.hash = tx.hash;\n this.index = tx.index;\n this.type = tx.type;\n this.from = tx.from;\n this.to = tx.to || null;\n this.gasLimit = tx.gasLimit;\n this.nonce = tx.nonce;\n this.data = tx.data;\n this.value = tx.value;\n this.gasPrice = tx.gasPrice;\n this.maxPriorityFeePerGas = (tx.maxPriorityFeePerGas != null) ? tx.maxPriorityFeePerGas : null;\n this.maxFeePerGas = (tx.maxFeePerGas != null) ? tx.maxFeePerGas : null;\n this.chainId = tx.chainId;\n this.signature = tx.signature;\n this.accessList = (tx.accessList != null) ? tx.accessList : null;\n }\n //connect(provider: Provider): TransactionResponse {\n // return new TransactionResponse(this, provider);\n //}\n toJSON() {\n const { blockNumber, blockHash, index, hash, type, to, from, nonce, data, signature, accessList } = this;\n return {\n _type: \"TransactionReceipt\",\n accessList, blockNumber, blockHash,\n chainId: toJson(this.chainId),\n data, from,\n gasLimit: toJson(this.gasLimit),\n gasPrice: toJson(this.gasPrice),\n hash,\n maxFeePerGas: toJson(this.maxFeePerGas),\n maxPriorityFeePerGas: toJson(this.maxPriorityFeePerGas),\n nonce, signature, to, index, type,\n value: toJson(this.value),\n };\n }\n async getBlock() {\n let blockNumber = this.blockNumber;\n if (blockNumber == null) {\n const tx = await this.getTransaction();\n if (tx) {\n blockNumber = tx.blockNumber;\n }\n }\n if (blockNumber == null) {\n return null;\n }\n const block = this.provider.getBlock(blockNumber);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n return this.provider.getTransaction(this.hash);\n }\n async wait(confirms) {\n return this.provider.waitForTransaction(this.hash, confirms);\n }\n isMined() {\n return (this.blockHash != null);\n }\n isLegacy() {\n return (this.type === 0);\n }\n isBerlin() {\n return (this.type === 1);\n }\n isLondon() {\n return (this.type === 2);\n }\n removedEvent() {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\nfunction createOrphanedBlockFilter(block) {\n return { orphan: \"drop-block\", hash: block.hash, number: block.number };\n}\nfunction createReorderedTransactionFilter(tx, other) {\n return { orphan: \"reorder-transaction\", tx, other };\n}\nfunction createRemovedTransactionFilter(tx) {\n return { orphan: \"drop-transaction\", tx };\n}\nfunction createRemovedLogFilter(log) {\n return { orphan: \"drop-log\", log: {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n address: log.address,\n data: log.data,\n topics: Object.freeze(log.topics.slice()),\n index: log.index\n } };\n}\nfunction fail() {\n throw new Error(\"this provider should not be used\");\n}\nclass DummyProvider {\n get provider() { return this; }\n async getNetwork() { return fail(); }\n async getFeeData() { return fail(); }\n async estimateGas(tx) { return fail(); }\n async call(tx) { return fail(); }\n async resolveName(name) { return fail(); }\n // State\n async getBlockNumber() { return fail(); }\n // Account\n async getBalanceOf(address, blockTag) {\n return fail();\n }\n async getTransactionCountOf(address, blockTag) {\n return fail();\n }\n async getCode(address, blockTag) {\n return fail();\n }\n async getStorageAt(address, position, blockTag) {\n return fail();\n }\n // Write\n async broadcastTransaction(signedTx) { return fail(); }\n // Queries\n async getBlock(blockHashOrBlockTag) {\n return fail();\n }\n async getBlockWithTransactions(blockHashOrBlockTag) {\n return fail();\n }\n async getTransaction(hash) {\n return fail();\n }\n async getTransactionReceipt(hash) {\n return fail();\n }\n // Bloom-filter Queries\n async getLogs(filter) {\n return fail();\n }\n // ENS\n async lookupAddress(address) {\n return fail();\n }\n async waitForTransaction(hash, confirms, timeout) {\n return fail();\n }\n async waitForBlock(blockTag) {\n return fail();\n }\n // EventEmitterable\n async on(event, listener) { return fail(); }\n async once(event, listener) { return fail(); }\n async emit(event, ...args) { return fail(); }\n async listenerCount(event) { return fail(); }\n async listeners(event) { return fail(); }\n async off(event, listener) { return fail(); }\n async removeAllListeners(event) { return fail(); }\n async addListener(event, listener) { return fail(); }\n async removeListener(event, listener) { return fail(); }\n}\n// A singleton provider instance that can be used as a placeholder. This\n// allows API that have a Provider added later to not require a null check.\nexport const dummyProvider = new DummyProvider();\n//# sourceMappingURL=provider.js.map","// Belongs to Networks; requires abstract-provider\n// provider requires abstract-provider and network\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Formatter_format, _Formatter_baseBlock;\n/**\n * Formatter\n *\n * This is responsibile for converting much of the various\n * loose network values into a concrete ethers-ready value.\n *\n * For example, converting addresses to checksum addresses,\n * validating a hash is 32 bytes, and so on.\n *\n * By sub-classing this class and providing it in a custom\n * Network object this allows exotic (non-Ethereum) networks\n * to be fairly simple to adapt to ethers.\n */\nimport { getAddress, getCreateAddress } from \"@ethersproject/address\";\nimport { dataLength, dataSlice, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { Block, Log, TransactionReceipt, TransactionResponse } from \"./provider.js\";\nimport { logger } from \"./logger.js\";\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n//export type AccessListSet = { address: string, storageKeys: Array };\n//export type AccessList = Array;\n//export type AccessListish = AccessList |\n// Array<[ string, Array ]> |\n// Record>;\nfunction stringify(value) {\n if (typeof (value) !== \"string\") {\n throw new Error(\"invalid string\");\n }\n return value;\n}\nexport class Formatter {\n constructor() {\n _Formatter_format.set(this, void 0);\n _Formatter_baseBlock.set(this, void 0);\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 number = this.number.bind(this);\n const uint256 = this.uint256.bind(this);\n const topics = this.arrayOf(hash);\n __classPrivateFieldSet(this, _Formatter_format, {\n address,\n bigNumber,\n blockTag,\n data,\n hash,\n number,\n uint256,\n topics,\n filter: this.object({\n fromBlock: this.allowNull(blockTag, undefined),\n toBlock: this.allowNull(blockTag, undefined),\n blockHash: this.allowNull(hash, undefined),\n address: this.allowNull(address, undefined),\n topics: this.allowNull(topics, undefined)\n }),\n transactionRequest: this.object({\n from: this.allowNull(address),\n type: this.allowNull(number),\n to: this.allowNull(address),\n nonce: this.allowNull(number),\n gasLimit: this.allowNull(uint256),\n gasPrice: this.allowNull(uint256),\n maxFeePerGas: this.allowNull(uint256),\n maxPriorityFeePerGas: this.allowNull(uint256),\n data: this.allowNull(data),\n value: this.allowNull(uint256),\n }),\n transactionResponse: this.object({\n hash: hash,\n index: number,\n type: this.allowNull(number, 0),\n // These can be null for pending blocks\n blockHash: this.allowNull(hash),\n blockNumber: this.allowNull(number),\n // For Legacy transactions, this comes from the v\n chainId: this.allowNull(number),\n from: address,\n to: this.address,\n gasLimit: bigNumber,\n gasPrice: this.allowNull(bigNumber),\n maxFeePerGas: this.allowNull(bigNumber),\n maxPriorityFeePerGas: this.allowNull(bigNumber),\n value: bigNumber,\n data: data,\n nonce: number,\n r: hash,\n s: hash,\n v: number,\n accessList: this.allowNull(this.accessList)\n }, {\n index: [\"transactionIndex\"]\n }),\n }, \"f\");\n __classPrivateFieldSet(this, _Formatter_baseBlock, this.object({\n number: number,\n hash: this.allowNull(hash, null),\n timestamp: number,\n parentHash: hash,\n nonce: this.allowNull(stringify, \"0x0000000000000000\"),\n difficulty: bigNumber,\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n miner: this.allowNull(address, \"0x0000000000000000000000000000000000000000\"),\n extraData: stringify,\n baseFeePerGas: this.allowNull(bigNumber),\n }), \"f\");\n }\n // An address\n address(value) {\n return getAddress(value);\n }\n // An address from a call result; may be zero-padded\n callAddress(value) {\n if (dataLength(value) !== 32 || dataSlice(value, 0, 12) !== \"0x000000000000000000000000\") {\n logger.throwArgumentError(\"invalid call address\", \"value\", value);\n }\n return this.address(dataSlice(value, 12));\n }\n // An address from a transaction (e.g. { from: string, nonce: number })\n contractAddress(value) {\n return getCreateAddress({\n from: this.address(value.from),\n nonce: logger.getNumber(value.nonce, \"value.nonce\")\n });\n }\n // Block Tag\n blockTag(value) {\n if (value == null) {\n return \"latest\";\n }\n switch (value) {\n case \"earliest\":\n return \"0x0\";\n case \"latest\":\n case \"pending\":\n return value;\n }\n if (typeof (value) === \"number\" || (isHexString(value) && dataLength(value) < 32)) {\n return quantity(value);\n }\n return logger.throwArgumentError(\"invalid blockTag\", \"value\", value);\n }\n // Block objects\n block(value, provider) {\n const params = __classPrivateFieldGet(this, _Formatter_baseBlock, \"f\").call(this, value);\n params.transactions = value.transactions.map((t) => this.hash(t));\n return new Block(params, provider);\n }\n blockWithTransactions(value, provider) {\n throw new Error();\n }\n // Transactions\n transactionRequest(value, provider) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionRequest(value);\n }\n transactionResponse(value, provider) {\n value = Object.assign({}, value);\n // @TODO: Use the remap feature\n if (value.data == null && value.input != null) {\n value.data = value.input;\n }\n if (value.gasLimit == null && value.gas) {\n value.gasLimit = value.gas;\n }\n value = __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionResponse(value);\n const sig = Signature.from({ r: value.r, s: value.s, v: value.v });\n value.signature = sig;\n if (value.chainId == null) {\n value.chainId = sig.legacyChainId;\n }\n return new TransactionResponse(value, provider);\n }\n // Receipts\n log(value, provider) {\n const log = this.object({\n address: this.address,\n blockHash: this.hash,\n blockNumber: this.number,\n data: this.data,\n index: this.number,\n removed: this.boolean,\n topics: this.topics,\n transactionHash: this.hash,\n transactionIndex: this.number,\n }, {\n index: [\"logIndex\"]\n })(value);\n return new Log(log, provider);\n }\n receipt(value, provider) {\n const receipt = this.object({\n blockHash: this.hash,\n blockNumber: this.number,\n contractAddress: this.allowNull(this.address),\n cumulativeGasUsed: this.bigNumber,\n from: this.address,\n gasUsed: this.bigNumber,\n logs: this.arrayOf((v) => (this.log(v, provider))),\n logsBloom: this.data,\n root: this.allowNull(this.data),\n status: this.allowNull(this.number),\n to: this.address,\n gasPrice: this.allowNull(this.bigNumber),\n hash: this.hash,\n index: this.number,\n type: this.allowNull(this.number, 0),\n }, {\n hash: [\"transactionHash\"],\n gasPrice: [\"effectiveGasPrice\"],\n index: [\"transactionIndex\"]\n })(value);\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (receipt.root != null) {\n if (receipt.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = parseInt(receipt.root);\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (receipt.status != null && receipt.status !== value) {\n return logger.throwError(\"alt-root-status/status mismatch\", \"BAD_DATA\", {\n value: { root: receipt.root, status: receipt.status }\n });\n }\n receipt.status = value;\n delete receipt.root;\n }\n else {\n return logger.throwError(\"invalid alt-root-status\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n else if (!isHexString(receipt.root, 32)) {\n // Must be a valid bytes32\n return logger.throwError(\"invalid receipt root hash\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n //receipt.byzantium = (receipt.root == null);\n return new TransactionReceipt(receipt, provider);\n }\n // Fitlers\n topics(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").topics(value);\n }\n filter(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").filter(value);\n }\n filterLog(value) {\n console.log(\"ME\", value);\n return null;\n }\n // Converts a serialized transaction to a TransactionResponse\n transaction(value) {\n throw new Error();\n }\n // Useful utility formatters functions, which if need be use the\n // methods within the formatter to ensure internal compatibility\n // Access List; converts an AccessListish to an AccessList\n accessList(value) {\n return accessListify(value);\n }\n // Converts falsish values to a specific value, otherwise use the formatter. Calls preserve `this`.\n allowFalsish(format, ifFalse) {\n return ((value) => {\n if (!value) {\n return ifFalse;\n }\n return format.call(this, value);\n });\n }\n // Allows null, optionally replacing it with a default value. Calls preserve `this`.\n allowNull(format, ifNull) {\n return ((value) => {\n if (value == null) {\n return ifNull;\n }\n return format.call(this, value);\n });\n }\n // Requires an Array satisfying the formatter. Calls preserves `this`.\n arrayOf(format) {\n return ((array) => {\n if (!Array.isArray(array)) {\n throw new Error(\"not an array\");\n }\n return array.map((i) => format.call(this, i));\n });\n }\n // Requires a value which is a value BigNumber\n bigNumber(value) {\n return logger.getBigInt(value, \"value\");\n }\n uint256(value) {\n const result = this.bigNumber(value);\n if (result < 0 || result > BN_MAX_UINT256) {\n logger.throwArgumentError(\"invalid uint256\", \"value\", value);\n }\n return result;\n }\n // Requires a value which is a value boolean or string equivalent\n boolean(value) {\n switch (value) {\n case true:\n case \"true\":\n return true;\n case false:\n case \"false\":\n return false;\n }\n return logger.throwArgumentError(`invalid boolean; ${JSON.stringify(value)}`, \"value\", value);\n }\n // Requires a value which is a valid hexstring. If dataOrLength is true,\n // the length must be even (i.e. a datahexstring) or if it is a number,\n // specifies teh number of bytes value must represent\n _hexstring(dataOrLength) {\n if (dataOrLength == null) {\n dataOrLength = false;\n }\n return (function (value) {\n if (isHexString(value, dataOrLength)) {\n return value.toLowerCase();\n }\n throw new Error(\"bad hexstring\");\n });\n }\n data(value) {\n if (dataLength(value) == null) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return value;\n }\n // Requires a network-native hash\n hash(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").data(value);\n }\n // Requires a valid number, within the IEEE 754 safe range\n number(value) {\n return logger.getNumber(value);\n }\n // Requires an object which matches a fleet of other formatters\n // Any FormatFunc may return `undefined` to have the value omitted\n // from the result object. Calls preserve `this`.\n object(format, altNames) {\n return ((value) => {\n const result = {};\n for (const key in format) {\n let srcKey = key;\n if (altNames && key in altNames && !(srcKey in value)) {\n for (const altKey of altNames[key]) {\n if (altKey in value) {\n srcKey = altKey;\n break;\n }\n }\n }\n try {\n const nv = format[key].call(this, value[srcKey]);\n if (nv !== undefined) {\n result[key] = nv;\n }\n }\n catch (error) {\n const message = (error instanceof Error) ? error.message : \"not-an-error\";\n logger.throwError(`invalid value for value.${key} (${message})`, \"BAD_DATA\", { value });\n }\n }\n return result;\n });\n }\n // Requires a value which matches a network-native storage slot\n storageSlot(value) {\n return toHex(logger.getBigInt(value), 32);\n }\n}\n_Formatter_format = new WeakMap(), _Formatter_baseBlock = new WeakMap();\n//# sourceMappingURL=formatter.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\nconst EnsAddress = \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\";\nexport class NetworkPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n clone() {\n return new NetworkPlugin(this.name);\n }\n validate(network) {\n return this;\n }\n}\nexport class GasCostPlugin extends NetworkPlugin {\n constructor(effectiveBlock = 0, costs) {\n super(`org.ethers.plugins.gas-cost#${(effectiveBlock || 0)}`);\n const props = { effectiveBlock };\n function set(name, nullish) {\n let value = (costs || {})[name];\n if (value == null) {\n value = nullish;\n }\n if (typeof (value) !== \"number\") {\n logger.throwArgumentError(`invalud value for ${name}`, \"costs\", costs);\n }\n props[name] = value;\n }\n set(\"txBase\", 21000);\n set(\"txCreate\", 32000);\n set(\"txDataZero\", 4);\n set(\"txDataNonzero\", 16);\n set(\"txAccessListStorageKey\", 1900);\n set(\"txAccessListAddress\", 2400);\n defineProperties(this, props);\n }\n clone() {\n return new GasCostPlugin(this.effectiveBlock, this);\n }\n}\n// Networks shoudl use this plugin to specify the contract address\n// and network necessary to resolve ENS names.\nexport class EnsPlugin extends NetworkPlugin {\n constructor(address, targetNetwork) {\n super(\"org.ethers.plugins.ens\");\n defineProperties(this, {\n address: (address || EnsAddress),\n targetNetwork: ((targetNetwork == null) ? 1 : targetNetwork)\n });\n }\n clone() {\n return new EnsPlugin(this.address, this.targetNetwork);\n }\n validate(network) {\n network.formatter.address(this.address);\n return this;\n }\n}\nexport class MaxPriorityFeePlugin extends NetworkPlugin {\n constructor(priorityFee) {\n super(\"org.ethers.plugins.max-priority-fee\");\n defineProperties(this, {\n priorityFee: logger.getBigInt(priorityFee)\n });\n }\n async getPriorityFee(provider) {\n return this.priorityFee;\n }\n clone() {\n return new MaxPriorityFeePlugin(this.priorityFee);\n }\n}\n//# sourceMappingURL=plugins-network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Network_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { Formatter } from \"./formatter.js\";\nimport { logger } from \"./logger.js\";\nimport { EnsPlugin, GasCostPlugin } from \"./plugins-network.js\";\n/* * * *\n// Networks which operation against an L2 can use this plugin to\n// specify how to access L1, for the purpose of resolving ENS,\n// for example.\nexport class LayerOneConnectionPlugin extends NetworkPlugin {\n readonly provider!: Provider;\n// @TODO: Rename to ChainAccess and allow for connecting to any chain\n constructor(provider: Provider) {\n super(\"org.ethers.plugins.layer-one-connection\");\n defineProperties(this, { provider });\n }\n\n clone(): LayerOneConnectionPlugin {\n return new LayerOneConnectionPlugin(this.provider);\n }\n}\n*/\n/* * * *\nexport class PriceOraclePlugin extends NetworkPlugin {\n readonly address!: string;\n\n constructor(address: string) {\n super(\"org.ethers.plugins.price-oracle\");\n defineProperties(this, { address });\n }\n\n clone(): PriceOraclePlugin {\n return new PriceOraclePlugin(this.address);\n }\n}\n*/\n// Networks or clients with a higher need for security (such as clients\n// that may automatically make CCIP requests without user interaction)\n// can use this plugin to anonymize requests or intercept CCIP requests\n// to notify and/or receive authorization from the user\n/* * * *\nexport type FetchDataFunc = (req: Frozen) => Promise;\nexport class CcipPreflightPlugin extends NetworkPlugin {\n readonly fetchData!: FetchDataFunc;\n\n constructor(fetchData: FetchDataFunc) {\n super(\"org.ethers.plugins.ccip-preflight\");\n defineProperties(this, { fetchData });\n }\n\n clone(): CcipPreflightPlugin {\n return new CcipPreflightPlugin(this.fetchData);\n }\n}\n*/\nconst Networks = new Map();\nconst defaultFormatter = new Formatter();\nexport class Network {\n constructor(name, _chainId, formatter) {\n _Network_props.set(this, void 0);\n const chainId = logger.getBigInt(_chainId);\n if (formatter == null) {\n formatter = defaultFormatter;\n }\n const plugins = new Map();\n __classPrivateFieldSet(this, _Network_props, { name, chainId, formatter, plugins }, \"f\");\n }\n toJSON() {\n return { name: this.name, chainId: this.chainId };\n }\n get name() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\"); }\n set name(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\", value); }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\", logger.getBigInt(value, \"chainId\")); }\n get formatter() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\"); }\n set formatter(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\", value); }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _Network_props, \"f\").plugins.values());\n }\n attachPlugin(plugin) {\n if (this.isFrozen()) {\n throw new Error(\"frozen\");\n }\n if (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _Network_props, \"f\").plugins.set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(name)) || null;\n }\n // Gets a list of Plugins which match basename, ignoring any fragment\n getPlugins(basename) {\n return (this.plugins.filter((p) => (p.name.split(\"#\")[0] === basename)));\n }\n clone() {\n const clone = new Network(this.name, this.chainId, this.formatter);\n this.plugins.forEach((plugin) => {\n clone.attachPlugin(plugin.clone());\n });\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Network_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Network_props, \"f\"));\n }\n computeIntrinsicGas(tx) {\n const costs = this.getPlugin(\"org.ethers.gas-cost\") || (new GasCostPlugin());\n let gas = costs.txBase;\n if (tx.to == null) {\n gas += costs.txCreate;\n }\n if (tx.data) {\n for (let i = 2; i < tx.data.length; i += 2) {\n if (tx.data.substring(i, i + 2) === \"00\") {\n gas += costs.txDataZero;\n }\n else {\n gas += costs.txDataNonzero;\n }\n }\n }\n if (tx.accessList) {\n const accessList = this.formatter.accessList(tx.accessList);\n for (const addr in accessList) {\n gas += costs.txAccessListAddress + costs.txAccessListStorageKey * accessList[addr].storageKeys.length;\n }\n }\n return gas;\n }\n static from(network) {\n // Default network\n if (network == null) {\n return Network.from(\"homestead\");\n }\n // Canonical name or chain ID\n if (typeof (network) === \"number\") {\n network = BigInt(network);\n }\n if (typeof (network) === \"string\" || typeof (network) === \"bigint\") {\n const networkFunc = Networks.get(network);\n if (networkFunc) {\n return networkFunc();\n }\n if (typeof (network) === \"bigint\") {\n return new Network(\"unknown\", network);\n }\n logger.throwArgumentError(\"unknown network\", \"network\", network);\n }\n // Clonable with network-like abilities\n if (typeof (network.clone) === \"function\") {\n const clone = network.clone();\n //if (typeof(network.name) !== \"string\" || typeof(network.chainId) !== \"number\") {\n //}\n return clone;\n }\n // Networkish\n if (typeof (network) === \"object\") {\n if (typeof (network.name) !== \"string\" || typeof (network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network object name or chainId\", \"network\", network);\n }\n const custom = new Network((network.name), (network.chainId));\n if (network.ensAddress || network.ensNetwork != null) {\n custom.attachPlugin(new EnsPlugin(network.ensAddress, network.ensNetwork));\n }\n //if ((network).layerOneConnection) {\n // custom.attachPlugin(new LayerOneConnectionPlugin((network).layerOneConnection));\n //}\n return custom;\n }\n return logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n static register(nameOrChainId, networkFunc) {\n if (typeof (nameOrChainId) === \"number\") {\n nameOrChainId = BigInt(nameOrChainId);\n }\n const existing = Networks.get(nameOrChainId);\n if (existing) {\n logger.throwArgumentError(`conflicting network for ${JSON.stringify(existing.name)}`, \"nameOrChainId\", nameOrChainId);\n }\n Networks.set(nameOrChainId, networkFunc);\n }\n}\n_Network_props = new WeakMap();\n//# sourceMappingURL=network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PollingBlockSubscriber_instances, _PollingBlockSubscriber_provider, _PollingBlockSubscriber_poller, _PollingBlockSubscriber_interval, _PollingBlockSubscriber_blockNumber, _PollingBlockSubscriber_poll, _OnBlockSubscriber_provider, _OnBlockSubscriber_poll, _PollingOrphanSubscriber_filter, _PollingTransactionSubscriber_hash, _PollingEventSubscriber_instances, _PollingEventSubscriber_provider, _PollingEventSubscriber_filter, _PollingEventSubscriber_poller, _PollingEventSubscriber_blockNumber, _PollingEventSubscriber_poll;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport function getPollingSubscriber(provider, event) {\n if (event === \"block\") {\n return new PollingBlockSubscriber(provider);\n }\n if (isHexString(event, 32)) {\n return new PollingTransactionSubscriber(provider, event);\n }\n return logger.throwError(\"unsupported polling event\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getPollingSubscriber\", info: { event }\n });\n}\n// @TODO: refactor this\nexport class PollingBlockSubscriber {\n constructor(provider) {\n _PollingBlockSubscriber_instances.add(this);\n _PollingBlockSubscriber_provider.set(this, void 0);\n _PollingBlockSubscriber_poller.set(this, void 0);\n _PollingBlockSubscriber_interval.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingBlockSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, 4000, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\"); }\n set pollingInterval(value) { __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, value, \"f\"); }\n start() {\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber already running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).call(this);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n }\n stop() {\n if (!__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber not running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._clearTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\"));\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingBlockSubscriber_provider = new WeakMap(), _PollingBlockSubscriber_poller = new WeakMap(), _PollingBlockSubscriber_interval = new WeakMap(), _PollingBlockSubscriber_blockNumber = new WeakMap(), _PollingBlockSubscriber_instances = new WeakSet(), _PollingBlockSubscriber_poll = async function _PollingBlockSubscriber_poll() {\n const blockNumber = await __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").getBlockNumber();\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n return;\n }\n // @TODO: Put a cap on the maximum number of events per loop?\n if (blockNumber !== __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\")) {\n for (let b = __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") + 1; b <= blockNumber; b++) {\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").emit(\"block\", b);\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n};\nexport class OnBlockSubscriber {\n constructor(provider) {\n _OnBlockSubscriber_provider.set(this, void 0);\n _OnBlockSubscriber_poll.set(this, void 0);\n __classPrivateFieldSet(this, _OnBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _OnBlockSubscriber_poll, (blockNumber) => {\n this._poll(blockNumber, __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\"));\n }, \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"sub-classes must override this\");\n }\n start() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\").call(this, -2);\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n pause(dropWhilePaused) { this.stop(); }\n resume() { this.start(); }\n}\n_OnBlockSubscriber_provider = new WeakMap(), _OnBlockSubscriber_poll = new WeakMap();\nexport class PollingOrphanSubscriber extends OnBlockSubscriber {\n constructor(provider, filter) {\n super(provider);\n _PollingOrphanSubscriber_filter.set(this, void 0);\n __classPrivateFieldSet(this, _PollingOrphanSubscriber_filter, copy(filter), \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"@TODO\");\n console.log(__classPrivateFieldGet(this, _PollingOrphanSubscriber_filter, \"f\"));\n }\n}\n_PollingOrphanSubscriber_filter = new WeakMap();\nexport class PollingTransactionSubscriber extends OnBlockSubscriber {\n constructor(provider, hash) {\n super(provider);\n _PollingTransactionSubscriber_hash.set(this, void 0);\n __classPrivateFieldSet(this, _PollingTransactionSubscriber_hash, hash, \"f\");\n }\n async _poll(blockNumber, provider) {\n const tx = await provider.getTransactionReceipt(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"));\n if (tx) {\n provider.emit(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"), tx);\n }\n }\n}\n_PollingTransactionSubscriber_hash = new WeakMap();\nexport class PollingEventSubscriber {\n constructor(provider, filter) {\n _PollingEventSubscriber_instances.add(this);\n _PollingEventSubscriber_provider.set(this, void 0);\n _PollingEventSubscriber_filter.set(this, void 0);\n _PollingEventSubscriber_poller.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingEventSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingEventSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_filter, copy(filter), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_poller, __classPrivateFieldGet(this, _PollingEventSubscriber_instances, \"m\", _PollingEventSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n start() {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getBlockNumber().then((blockNumber) => {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n });\n }\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingEventSubscriber_provider = new WeakMap(), _PollingEventSubscriber_filter = new WeakMap(), _PollingEventSubscriber_poller = new WeakMap(), _PollingEventSubscriber_blockNumber = new WeakMap(), _PollingEventSubscriber_instances = new WeakSet(), _PollingEventSubscriber_poll = async function _PollingEventSubscriber_poll(blockNumber) {\n // The initial block hasn't been determined yet\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n return;\n }\n const filter = copy(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"));\n filter.fromBlock = __classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") + 1;\n filter.toBlock = blockNumber;\n const logs = await __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getLogs(filter);\n // No logs could just mean the node has not indexed them yet,\n // so we keep a sliding window of 60 blocks to keep scanning\n if (logs.length === 0) {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") < blockNumber - 60) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber - 60, \"f\");\n }\n return;\n }\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n for (const log of logs) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").emit(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"), log);\n }\n};\n//# sourceMappingURL=subscriber-polling.js.map","// @TODO\n// Event coalescence\n// When we register an event with an async value (e.g. address is a Signer\n// or ENS name), we need to add it immeidately for the Event API, but also\n// need time to resolve the address. Upon resolving the address, we need to\n// migrate the listener to the static event. We also need to maintain a map\n// of Signer/ENS name to address so we can sync respond to listenerCount.\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractProvider_instances, _AbstractProvider_subs, _AbstractProvider_plugins, _AbstractProvider_pausedState, _AbstractProvider_networkPromise, _AbstractProvider_anyNetwork, _AbstractProvider_performCache, _AbstractProvider_nextTimer, _AbstractProvider_timers, _AbstractProvider_disableCcipRead, _AbstractProvider_perform, _AbstractProvider_call, _AbstractProvider_getBlock, _AbstractProvider_hasSub, _AbstractProvider_getSub;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { concat, dataLength, dataSlice, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { toArray } from \"@ethersproject/math\";\nimport { defineProperties, EventPayload, resolveProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { EnsResolver } from \"./ens-resolver.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { FeeData } from \"./provider.js\";\nimport { PollingBlockSubscriber, PollingEventSubscriber, PollingOrphanSubscriber, PollingTransactionSubscriber } from \"./subscriber-polling.js\";\n// Constants\nconst BN_2 = BigInt(2);\nconst MAX_CCIP_REDIRECTS = 10;\nfunction getTag(prefix, value) {\n return prefix + \":\" + JSON.stringify(value, (k, v) => {\n if (typeof (v) === \"bigint\") {\n return `bigint:${v.toString()}`;\n }\n if (typeof (v) === \"string\") {\n return v.toLowerCase();\n }\n // Sort object keys\n if (typeof (v) === \"object\" && !Array.isArray(v)) {\n const keys = Object.keys(v);\n keys.sort();\n return keys.reduce((accum, key) => {\n accum[key] = v[key];\n return accum;\n }, {});\n }\n return v;\n });\n}\nexport class UnmanagedSubscriber {\n constructor(name) { defineProperties(this, { name }); }\n start() { }\n stop() { }\n pause(dropWhilePaused) { }\n resume() { }\n}\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\n// Normalize a ProviderEvent into a Subscription\n// @TODO: Make events sync if possible; like block\n//function getSyncSubscription(_event: ProviderEvent): Subscription {\n//}\nasync function getSubscription(_event, provider) {\n if (_event == null) {\n throw new Error(\"invalid event\");\n }\n // Normalize topic array info an EventFilter\n if (Array.isArray(_event)) {\n _event = { topics: _event };\n }\n if (typeof (_event) === \"string\") {\n switch (_event) {\n case \"block\":\n case \"pending\":\n case \"debug\":\n case \"network\": {\n return { type: _event, tag: _event };\n }\n }\n }\n if (isHexString(_event, 32)) {\n const hash = _event.toLowerCase();\n return { type: \"transaction\", tag: getTag(\"tx\", { hash }), hash };\n }\n if (_event.orphan) {\n const event = _event;\n // @TODO: Should lowercase and whatnot things here instead of copy...\n return { type: \"orphan\", tag: getTag(\"orphan\", event), filter: copy(event) };\n }\n if ((_event.address || _event.topics)) {\n const event = _event;\n const filter = {\n topics: ((event.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n }))\n };\n if (event.address) {\n const addresses = [];\n const promises = [];\n const addAddress = (addr) => {\n if (isHexString(addr)) {\n addresses.push(addr);\n }\n else {\n promises.push((async () => {\n addresses.push(await resolveAddress(addr, provider));\n })());\n }\n };\n if (Array.isArray(event.address)) {\n event.address.forEach(addAddress);\n }\n else {\n addAddress(event.address);\n }\n if (promises.length) {\n await Promise.all(promises);\n }\n filter.address = concisify(addresses.map((a) => a.toLowerCase()));\n }\n return { filter, tag: getTag(\"event\", filter), type: \"event\" };\n }\n return logger.throwArgumentError(\"unknown ProviderEvent\", \"event\", _event);\n}\nfunction getTime() { return (new Date()).getTime(); }\nexport function copyRequest(tx) {\n // @TODO: copy the copy from contracts and use it from this\n return tx;\n}\nexport class AbstractProvider {\n // @TODO: This should be a () => Promise so network can be\n // done when needed; or rely entirely on _detectNetwork?\n constructor(_network) {\n _AbstractProvider_instances.add(this);\n _AbstractProvider_subs.set(this, void 0);\n _AbstractProvider_plugins.set(this, void 0);\n // null=unpaused, true=paused+dropWhilePaused, false=paused\n _AbstractProvider_pausedState.set(this, void 0);\n _AbstractProvider_networkPromise.set(this, void 0);\n _AbstractProvider_anyNetwork.set(this, void 0);\n _AbstractProvider_performCache.set(this, void 0);\n _AbstractProvider_nextTimer.set(this, void 0);\n _AbstractProvider_timers.set(this, void 0);\n _AbstractProvider_disableCcipRead.set(this, void 0);\n if (_network === \"any\") {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, true, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n else if (_network) {\n const network = Network.from(_network);\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(network), \"f\");\n setTimeout(() => { this.emit(\"network\", network, null); }, 0);\n }\n else {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n __classPrivateFieldSet(this, _AbstractProvider_performCache, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_plugins, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_nextTimer, 0, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_timers, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, false, \"f\");\n }\n get provider() { return this; }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").values());\n }\n attachPlugin(plugin) {\n if (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(name)) || null;\n }\n set disableCcipRead(value) { __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, !!value, \"f\"); }\n get disableCcipRead() { return __classPrivateFieldGet(this, _AbstractProvider_disableCcipRead, \"f\"); }\n async ccipReadFetch(tx, calldata, urls) {\n if (this.disableCcipRead || urls.length === 0 || tx.to == null) {\n return null;\n }\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n const errorMessages = [];\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\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 //const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n // value.status = response.statusCode;\n // return value;\n //});\n const request = new FetchRequest(href);\n if (url.indexOf(\"{data}\") === -1) {\n request.body = { data, sender };\n }\n let errorMessage = \"unknown error\";\n const resp = await fetchData(request);\n try {\n const result = resp.bodyJson;\n if (result.data) {\n return result.data;\n }\n if (result.message) {\n errorMessage = result.message;\n }\n }\n catch (error) { }\n // 4xx indicates the result is not present; stop\n if (resp.statusCode >= 400 && resp.statusCode < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${errorMessage}`, \"OFFCHAIN_FAULT\", {\n reason: \"404_MISSING_RESOURCE\",\n transaction: tx, info: { url, errorMessage }\n });\n }\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n return logger.throwError(`error encountered during CCIP fetch: ${errorMessages.map((m) => JSON.stringify(m)).join(\", \")}`, \"OFFCHAIN_FAULT\", {\n reason: \"500_SERVER_ERROR\",\n transaction: tx, info: { urls, errorMessages }\n });\n }\n _wrapTransaction(tx, hash, blockNumber) {\n return tx;\n }\n _detectNetwork() {\n return logger.throwError(\"sub-classes must implement this\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_detectNetwork\"\n });\n }\n async _perform(req) {\n return logger.throwError(`unsupported method: ${req.method}`, \"UNSUPPORTED_OPERATION\", {\n operation: req.method,\n info: req\n });\n }\n // State\n async getBlockNumber() {\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getBlockNumber\" }), \"%response\");\n }\n async _getAddress(address) {\n if (typeof (address) === \"string\") {\n return address;\n }\n return await address.getAddress();\n }\n async _getBlockTag(blockTag) {\n const network = await this.getNetwork();\n if (typeof (blockTag) === \"number\" && Number.isSafeInteger(blockTag) && blockTag < 0) {\n //let blockNumber = await this._getApproxBlockNumber(500);\n let blockNumber = await this.getBlockNumber();\n blockNumber += blockTag;\n if (blockNumber < 0) {\n blockNumber = 0;\n }\n return network.formatter.blockTag(blockNumber);\n }\n return network.formatter.blockTag(blockTag);\n }\n async getNetwork() {\n // No explicit network was set and this is our first time\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") == null) {\n // Detect the current network (shared with all calls)\n const detectNetwork = this._detectNetwork().then((network) => {\n this.emit(\"network\", network, null);\n return network;\n }, (error) => {\n // Reset the networkPromise on failure, so we will try again\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === detectNetwork) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n throw error;\n });\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, detectNetwork, \"f\");\n return await detectNetwork;\n }\n const networkPromise = __classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\");\n const [expected, actual] = await Promise.all([\n networkPromise,\n this._detectNetwork() // The actual connected network\n ]);\n if (expected.chainId !== actual.chainId) {\n if (__classPrivateFieldGet(this, _AbstractProvider_anyNetwork, \"f\")) {\n // The \"any\" network can change, so notify listeners\n this.emit(\"network\", actual, expected);\n // Update the network if something else hasn't already changed it\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === networkPromise) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(actual), \"f\");\n }\n }\n else {\n // Otherwise, we do not allow changes to the underlying network\n logger.throwError(`network changed: ${expected.chainId} => ${actual.chainId} `, \"NETWORK_ERROR\", {\n event: \"changed\"\n });\n }\n }\n return expected.clone().freeze();\n }\n async getFeeData() {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: ((async () => {\n try {\n const gasPrice = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getGasPrice\" });\n return logger.getBigInt(gasPrice, \"%response\");\n }\n catch (error) { }\n return null;\n })())\n });\n let maxFeePerGas = null, maxPriorityFeePerGas = null;\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 maxPriorityFeePerGas = BigInt(\"1500000000\");\n // Allow a network to override their maximum priority fee per gas\n const priorityFeePlugin = (await this.getNetwork()).getPlugin(\"org.ethers.plugins.max-priority-fee\");\n if (priorityFeePlugin) {\n maxPriorityFeePerGas = await priorityFeePlugin.getPriorityFee(this);\n }\n maxFeePerGas = (block.baseFeePerGas * BN_2) + maxPriorityFeePerGas;\n }\n return new FeeData(gasPrice, maxFeePerGas, maxPriorityFeePerGas);\n }\n async _getTransaction(_request) {\n const network = await this.getNetwork();\n // Fill in any addresses\n const request = Object.assign({}, _request, await resolveProperties({\n to: (_request.to ? resolveAddress(_request.to, this) : undefined),\n from: (_request.from ? resolveAddress(_request.from, this) : undefined),\n }));\n return network.formatter.transactionRequest(request);\n }\n async estimateGas(_tx) {\n const transaction = await this._getTransaction(_tx);\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"estimateGas\", transaction\n }), \"%response\");\n }\n async call(_tx) {\n const { tx, blockTag } = await resolveProperties({\n tx: this._getTransaction(_tx),\n blockTag: this._getBlockTag(_tx.blockTag)\n });\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, tx, blockTag, _tx.enableCcipRead ? 0 : -1);\n }\n // Account\n async getBalanceOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBalance\", address, blockTag\n }), \"%response\");\n }\n async getTransactionCountOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getTransactionCount\", address, blockTag\n }), \"%response\");\n }\n async getCode(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getCode\", address, blockTag\n }));\n }\n async getStorageAt(_address, _position, _blockTag) {\n const position = logger.getBigInt(_position);\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getStorageAt\", address, position, blockTag\n }));\n }\n // Write\n async broadcastTransaction(signedTx) {\n throw new Error();\n return {};\n }\n // Queries\n async getBlock(block) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, false);\n if (params == null) {\n return null;\n }\n return format.block(params, this);\n }\n async getBlockWithTransactions(block) {\n const format = (await this.getNetwork()).formatter;\n const params = __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, true);\n if (params == null) {\n return null;\n }\n return format.blockWithTransactions(params, this);\n }\n async getTransaction(hash) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n return format.transactionResponse(params, this);\n }\n async getTransactionReceipt(hash) {\n const format = (await this.getNetwork()).formatter;\n const receipt = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransactionReceipt\", hash });\n if (receipt == null) {\n return null;\n }\n // Some backends did not backfill the effectiveGasPrice into old transactions\n // in the receipt, so we look it up manually and inject it.\n if (receipt.gasPrice == null && receipt.effectiveGasPrice == null) {\n const tx = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n receipt.effectiveGasPrice = tx.gasPrice;\n }\n return format.receipt(receipt, this);\n }\n async _getFilter(filter) {\n // Create a canonical representation of the topics\n const topics = (filter.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const blockHash = (\"blockHash\" in filter) ? filter.blockHash : undefined;\n const lookup = {};\n // Addresses could be async (ENS names or Addressables)\n if (filter.address) {\n if (Array.isArray(filter.address)) {\n lookup.address = Promise.all(filter.address.map((a) => resolveAddress(a, this)));\n }\n else {\n lookup.address = resolveAddress(filter.address, this);\n }\n }\n // Block Tags could be async (i.e. relative)\n const addBlockTag = (key) => {\n if (filter[key] == null) {\n return;\n }\n lookup[key] = this._getBlockTag(filter[key]);\n };\n addBlockTag(\"fromBlock\");\n addBlockTag(\"toBlock\");\n // Wait for all properties to resolve\n const result = await resolveProperties(lookup);\n // Make sure things are canonical\n if (Array.isArray(result.address)) {\n result.address.sort();\n }\n result.topics = topics;\n if (blockHash) {\n if (filter.fromBlock || filter.toBlock) {\n throw new Error(\"invalid filter\");\n }\n result.blockHash = blockHash;\n }\n return result;\n }\n // Bloom-filter Queries\n async getLogs(_filter) {\n const { network, filter } = await resolveProperties({\n network: this.getNetwork(),\n filter: this._getFilter(_filter)\n });\n return (await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getLogs\", filter })).map((l) => {\n return network.formatter.log(l, this);\n });\n }\n // ENS\n _getProvider(chainId) {\n return logger.throwError(\"provider cannot connect to target network\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_getProvider()\"\n });\n }\n async getResolver(name) {\n return await EnsResolver.fromName(this, name);\n }\n async getAvatar(name) {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAvatar();\n }\n return null;\n }\n async resolveName(name) {\n if (typeof (name) === \"string\") {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAddress();\n }\n }\n else {\n const address = await name.getAddress();\n if (address == null) {\n return logger.throwArgumentError(\"Addressable returned no address\", \"name\", name);\n }\n return address;\n }\n return null;\n }\n async lookupAddress(address) {\n throw new Error();\n //return \"TODO\";\n }\n async waitForTransaction(hash, confirms = 1, timeout) {\n if (confirms === 0) {\n return this.getTransactionReceipt(hash);\n }\n return new Promise(async (resolve, reject) => {\n let timer = null;\n const listener = (async (blockNumber) => {\n try {\n const receipt = await this.getTransactionReceipt(hash);\n if (receipt != null) {\n if (blockNumber - receipt.blockNumber + 1 >= confirms) {\n resolve(receipt);\n this.off(\"block\", listener);\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n return;\n }\n }\n }\n catch (error) {\n console.log(\"EEE\", error);\n }\n this.once(\"block\", listener);\n });\n if (timeout != null) {\n timer = setTimeout(() => {\n if (timer == null) {\n return;\n }\n timer = null;\n this.off(\"block\", listener);\n reject(logger.makeError(\"timeout\", \"TIMEOUT\", { reason: \"timeout\" }));\n }, timeout);\n }\n listener(await this.getBlockNumber());\n });\n }\n async waitForBlock(blockTag) {\n throw new Error();\n //return new Block({ }, this);\n }\n _clearTimeout(timerId) {\n const timer = __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").get(timerId);\n if (!timer) {\n return;\n }\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n }\n _setTimeout(_func, timeout = 0) {\n var _a, _b;\n const timerId = (__classPrivateFieldSet(this, _AbstractProvider_nextTimer, (_b = __classPrivateFieldGet(this, _AbstractProvider_nextTimer, \"f\"), _a = _b++, _b), \"f\"), _a);\n const func = () => {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n _func();\n };\n if (this.paused) {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer: null, func, time: timeout });\n }\n else {\n const timer = setTimeout(func, timeout);\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer, func, time: getTime() });\n }\n return timerId;\n }\n _forEachSubscriber(func) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n func(sub.subscriber);\n }\n }\n // Event API; sub-classes should override this; any supported\n // event filter will have been munged into an EventFilter\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"debug\":\n case \"network\":\n return new UnmanagedSubscriber(sub.type);\n case \"block\":\n return new PollingBlockSubscriber(this);\n case \"event\":\n return new PollingEventSubscriber(this, sub.filter);\n case \"transaction\":\n return new PollingTransactionSubscriber(this, sub.hash);\n case \"orphan\":\n return new PollingOrphanSubscriber(this, sub.filter);\n }\n throw new Error(`unsupported event: ${sub.type}`);\n }\n _recoverSubscriber(oldSub, newSub) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n if (sub.subscriber === oldSub) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n sub.subscriber = newSub;\n if (sub.started) {\n newSub.start();\n }\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n newSub.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n break;\n }\n }\n }\n async on(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: false });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async once(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: true });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async emit(event, ...args) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event, args);\n if (!sub) {\n return false;\n }\n ;\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const payload = new EventPayload(this, (once ? null : listener), event);\n try {\n listener.call(this, ...args, payload);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n let total = 0;\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n let result = [];\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (!listener || sub.listeners.length === 0) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const { tag, started, subscriber } = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n else {\n for (const [tag, { started, subscriber }] of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\")) {\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return this.off(event, listener);\n }\n // Sub-classes should override this to shutdown any sockets, etc.\n // but MUST call this super.shutdown.\n async shutdown() {\n // Stop all listeners\n this.removeAllListeners();\n // Shut down all tiemrs\n for (const timerId of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").keys()) {\n this._clearTimeout(timerId);\n }\n }\n get paused() { return (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null); }\n pause(dropWhilePaused) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == !!dropWhilePaused) {\n return;\n }\n return logger.throwError(\"cannot change pause type; resume first\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause\"\n });\n }\n this._forEachSubscriber((s) => s.pause(dropWhilePaused));\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, !!dropWhilePaused, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Clear the timer\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n // Remaining time needed for when we become unpaused\n timer.time = getTime() - timer.time;\n }\n }\n resume() {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == null) {\n return;\n }\n this._forEachSubscriber((s) => s.resume());\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Remaining time when we were paused\n let timeout = timer.time;\n if (timeout < 0) {\n timeout = 0;\n }\n // Start time (in cause paused, so we con compute remaininf time)\n timer.time = getTime();\n // Start the timer\n setTimeout(timer.func, timeout);\n }\n }\n}\n_AbstractProvider_subs = new WeakMap(), _AbstractProvider_plugins = new WeakMap(), _AbstractProvider_pausedState = new WeakMap(), _AbstractProvider_networkPromise = new WeakMap(), _AbstractProvider_anyNetwork = new WeakMap(), _AbstractProvider_performCache = new WeakMap(), _AbstractProvider_nextTimer = new WeakMap(), _AbstractProvider_timers = new WeakMap(), _AbstractProvider_disableCcipRead = new WeakMap(), _AbstractProvider_instances = new WeakSet(), _AbstractProvider_perform = \n// Shares multiple identical requests made during the same 250ms\nasync function _AbstractProvider_perform(req) {\n // Create a tag\n const tag = getTag(req.method, req);\n let perform = __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag);\n if (!perform) {\n perform = this._perform(req);\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").set(tag, perform);\n setTimeout(() => {\n if (__classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag) === perform) {\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").delete(tag);\n }\n }, 250);\n }\n return await perform;\n}, _AbstractProvider_call = async function _AbstractProvider_call(tx, blockTag, attempt) {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", \"OFFCHAIN_FAULT\", {\n reason: \"TOO_MANY_REDIRECTS\",\n transaction: Object.assign({}, tx, { blockTag, enableCcipRead: true })\n });\n }\n const transaction = copyRequest(tx);\n try {\n return hexlify(await this._perform({ method: \"call\", transaction, blockTag }));\n }\n catch (error) {\n // CCIP Read OffchainLookup\n if (!this.disableCcipRead && isCallException(error) && attempt >= 0 && blockTag === \"latest\" && transaction.to != null && dataSlice(error.data, 0, 4) === \"0x556f1830\") {\n const data = error.data;\n const txSender = await resolveAddress(transaction.to, this);\n // Parse the CCIP Read Arguments\n let ccipArgs;\n try {\n ccipArgs = parseOffchainLookup(dataSlice(error.data, 4));\n }\n catch (error) {\n return logger.throwError(error.message, \"OFFCHAIN_FAULT\", {\n reason: \"BAD_DATA\",\n transaction, info: { data }\n });\n }\n // Check the sender of the OffchainLookup matches the transaction\n if (ccipArgs.sender.toLowerCase() !== txSender.toLowerCase()) {\n return logger.throwError(\"CCIP Read sender mismatch\", \"CALL_EXCEPTION\", {\n data, transaction,\n errorSignature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n errorName: \"OffchainLookup\",\n errorArgs: ccipArgs.errorArgs\n });\n }\n const ccipResult = await this.ccipReadFetch(transaction, ccipArgs.calldata, ccipArgs.urls);\n if (ccipResult == null) {\n return logger.throwError(\"CCIP Read failed to fetch data\", \"OFFCHAIN_FAULT\", {\n reason: \"FETCH_FAILED\",\n transaction, info: { data: error.data, errorArgs: ccipArgs.errorArgs }\n });\n }\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, {\n to: txSender,\n data: concat([\n ccipArgs.selector, encodeBytes([ccipResult, ccipArgs.extraData])\n ]),\n }, blockTag, attempt + 1);\n }\n throw error;\n }\n}, _AbstractProvider_getBlock = async function _AbstractProvider_getBlock(block, includeTransactions) {\n const format = (await this.getNetwork()).formatter;\n if (isHexString(block, 32)) {\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockHash: block, includeTransactions\n });\n }\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockTag: format.blockTag(block), includeTransactions\n });\n}, _AbstractProvider_hasSub = async function _AbstractProvider_hasSub(event, emitArgs) {\n let sub = await getSubscription(event, this);\n // This is a log that is removing an existing log; we actually want\n // to emit an orphan event for the removed log\n if (sub.type === \"event\" && emitArgs && emitArgs.length > 0 && emitArgs[0].removed === true) {\n sub = await getSubscription({ orphan: \"drop-log\", log: emitArgs[0] }, this);\n }\n return __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(sub.tag) || null;\n}, _AbstractProvider_getSub = async function _AbstractProvider_getSub(event) {\n const subscription = await getSubscription(event, this);\n // Prevent tampering with our tag in any subclass' _getSubscriber\n const tag = subscription.tag;\n let sub = __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(tag);\n if (!sub) {\n const subscriber = this._getSubscriber(subscription);\n const addressableMap = new WeakMap();\n const nameMap = new Map();\n sub = { subscriber, tag, addressableMap, nameMap, started: false, listeners: [] };\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").set(tag, sub);\n }\n return sub;\n};\nfunction _parseString(result, start) {\n try {\n const bytes = _parseBytes(result, start);\n if (bytes) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction _parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n try {\n const offset = logger.getNumber(dataSlice(result, start, start + 32));\n const length = logger.getNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\nconst empty = new Uint8Array([]);\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\nconst zeros = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseOffchainLookup(data) {\n const result = {\n sender: \"\", urls: [], calldata: \"\", selector: \"\", extraData: \"\", errorArgs: []\n };\n if (dataLength(data) < 5 * 32) {\n throw new Error(\"insufficient OffchainLookup data\");\n }\n const sender = dataSlice(data, 0, 32);\n if (dataSlice(sender, 0, 12) !== dataSlice(zeros, 0, 12)) {\n throw new Error(\"corrupt OffchainLookup sender\");\n }\n result.sender = dataSlice(sender, 12);\n // Read the URLs from the response\n try {\n const urls = [];\n const urlsOffset = logger.getNumber(dataSlice(data, 32, 64));\n const urlsLength = logger.getNumber(dataSlice(data, urlsOffset, urlsOffset + 32));\n const urlsData = dataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n throw new Error(\"abort\");\n }\n urls.push(url);\n }\n result.urls = urls;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup urls\");\n }\n // Get the CCIP calldata to forward\n try {\n const calldata = _parseBytes(data, 64);\n if (calldata == null) {\n throw new Error(\"abort\");\n }\n result.calldata = calldata;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup calldata\");\n }\n // Get the callbackSelector (bytes4)\n if (dataSlice(data, 100, 128) !== dataSlice(zeros, 0, 28)) {\n throw new Error(\"corrupt OffchainLookup callbaackSelector\");\n }\n result.selector = dataSlice(data, 96, 100);\n // Get the extra data to send back to the contract as context\n try {\n const extraData = _parseBytes(data, 128);\n if (extraData == null) {\n throw new Error(\"abort\");\n }\n result.extraData = extraData;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup extraData\");\n }\n result.errorArgs = \"sender,urls,calldata,selector,extraData\".split(/,/).map((k) => result[k]);\n return result;\n}\n//# sourceMappingURL=abstract-provider.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AbstractSigner_instances, _AbstractSigner_checkProvider, _AbstractSigner_fromify, _VoidSigner_instances, _VoidSigner_throwUnsupported, _WrappedSigner_signer;\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class AbstractSigner {\n constructor(provider) {\n _AbstractSigner_instances.add(this);\n defineProperties(this, { provider: (provider || null) });\n }\n async getBalance(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getBalance\").getBalanceOf(await this.getAddress(), blockTag);\n }\n async getTransactionCount(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getTransactionCount\").getTransactionCountOf(await this.getAddress(), blockTag);\n }\n async estimateGas(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"estimateGas\").estimateGas(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async call(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"call\").call(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async populateTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"populateTransaction\");\n //let pop: Deferrable = Object.assign({ }, tx);\n let pop = Object.assign({}, tx);\n if (pop.to != null) {\n pop.to = provider.resolveName(pop.to).then((to) => {\n if (to == null) {\n return logger.throwArgumentError(\"transaction to ENS name not configured\", \"tx.to\", pop.to);\n }\n return to;\n });\n }\n if (pop.from != null) {\n const from = pop.from;\n pop.from = Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n return logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n return address;\n });\n }\n if (pop.nonce == null) {\n pop.nonce = this.getTransactionCount();\n }\n pop = resolveProperties(pop);\n if (pop.gasLimit == null) {\n pop.gasLimit = provider.estimateGas(pop);\n }\n pop = resolveProperties(pop);\n //@TODO: Copy logic from AbstractSigner in v5\n return await resolveProperties(pop);\n }\n async resolveName(name) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"resolveName\");\n return await provider.resolveName(name);\n }\n async sendTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"sendTransaction\");\n const txObj = Transaction.from(await this.populateTransaction(tx));\n return await provider.broadcastTransaction(await this.signTransaction(txObj));\n }\n}\n_AbstractSigner_instances = new WeakSet(), _AbstractSigner_checkProvider = function _AbstractSigner_checkProvider(operation) {\n if (this.provider) {\n return this.provider;\n }\n return logger.throwError(\"missing provider\", \"UNSUPPORTED_OPERATION\", { operation });\n}, _AbstractSigner_fromify = async function _AbstractSigner_fromify(tx) {\n tx = Object.assign({}, tx);\n const actions = [];\n if (tx.from != null) {\n const from = tx.from;\n actions.push(Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n tx.from = address;\n }));\n }\n await Promise.all(actions);\n return tx;\n};\nexport class VoidSigner extends AbstractSigner {\n constructor(address, provider) {\n super(provider);\n _VoidSigner_instances.add(this);\n defineProperties(this, { address });\n }\n async getAddress() { return this.address; }\n connect(provider) {\n return new VoidSigner(this.address, provider);\n }\n async signTransaction(tx) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"transactions\", \"signTransaction\");\n }\n async signMessage(message) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"messages\", \"signMessage\");\n }\n async signTypedData(domain, types, value) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"typed-data\", \"signTypedData\");\n }\n}\n_VoidSigner_instances = new WeakSet(), _VoidSigner_throwUnsupported = function _VoidSigner_throwUnsupported(suffix, operation) {\n return logger.throwError(`VoidSigner cannot sign ${suffix}`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n};\nexport class WrappedSigner extends AbstractSigner {\n //get provider(): null | Provider { return this.#signer.provider; }\n constructor(signer) {\n super(signer.provider);\n _WrappedSigner_signer.set(this, void 0);\n __classPrivateFieldSet(this, _WrappedSigner_signer, signer, \"f\");\n }\n async getAddress() {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").getAddress();\n }\n connect(provider) {\n return new WrappedSigner(__classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").connect(provider));\n }\n async signTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTransaction(tx);\n }\n async sendTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").sendTransaction(tx);\n }\n async signMessage(message) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signMessage(message);\n }\n async signTypedData(domain, types, value) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTypedData(domain, types, value);\n }\n}\n_WrappedSigner_signer = new WeakMap();\n//# sourceMappingURL=abstract-signer.js.map","// Show the throttle message only once\nconst shown = new Set();\nexport function showThrottleMessage(service) {\n if (shown.has(service)) {\n return;\n }\n shown.add(service);\n console.log(\"========= NOTICE =========\");\n console.log(`Request-Rate Exceeded for ${service} (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//# sourceMappingURL=community.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FilterIdSubscriber_instances, _FilterIdSubscriber_provider, _FilterIdSubscriber_filterIdPromise, _FilterIdSubscriber_poller, _FilterIdSubscriber_network, _FilterIdSubscriber_poll, _FilterIdSubscriber_teardown, _FilterIdEventSubscriber_event;\nimport { PollingEventSubscriber } from \"./subscriber-polling.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport class FilterIdSubscriber {\n constructor(provider) {\n _FilterIdSubscriber_instances.add(this);\n _FilterIdSubscriber_provider.set(this, void 0);\n _FilterIdSubscriber_filterIdPromise.set(this, void 0);\n _FilterIdSubscriber_poller.set(this, void 0);\n _FilterIdSubscriber_network.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_poller, __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, null, \"f\");\n }\n _subscribe(provider) {\n throw new Error(\"subclasses must override this\");\n }\n _emitResults(provider, result) {\n throw new Error(\"subclasses must override this\");\n }\n _recover(provider) {\n throw new Error(\"subclasses must override this\");\n }\n start() { __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).call(this, -2); }\n stop() {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n if (dropWhilePaused) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n resume() { this.start(); }\n}\n_FilterIdSubscriber_provider = new WeakMap(), _FilterIdSubscriber_filterIdPromise = new WeakMap(), _FilterIdSubscriber_poller = new WeakMap(), _FilterIdSubscriber_network = new WeakMap(), _FilterIdSubscriber_instances = new WeakSet(), _FilterIdSubscriber_poll = async function _FilterIdSubscriber_poll(blockNumber) {\n try {\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\") == null) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, this._subscribe(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")), \"f\");\n }\n const filterId = await __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterId == null) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")._recoverSubscriber(this, this._recover(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")));\n return;\n }\n const network = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").getNetwork();\n if (!__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\")) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, network, \"f\");\n }\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\").chainId !== network.chainId) {\n throw new Error(\"chaid changed\");\n }\n const result = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_getFilterChanges\", [filterId]);\n await this._emitResults(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\"), result);\n }\n catch (error) {\n console.log(\"@TODO\", error);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").once(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n}, _FilterIdSubscriber_teardown = function _FilterIdSubscriber_teardown() {\n const filterIdPromise = __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterIdPromise) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n filterIdPromise.then((filterId) => {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_uninstallFilter\", [filterId]);\n });\n }\n};\nexport class FilterIdEventSubscriber extends FilterIdSubscriber {\n constructor(provider, filter) {\n super(provider);\n _FilterIdEventSubscriber_event.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdEventSubscriber_event, copy(filter), \"f\");\n }\n _recover(provider) {\n return new PollingEventSubscriber(provider, __classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"));\n }\n async _subscribe(provider) {\n const filterId = await provider.send(\"eth_newFilter\", [__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\")]);\n console.log(\"____SUB\", filterId);\n return filterId;\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n const log = network.formatter.log(result, provider);\n provider.emit(__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"), log);\n }\n }\n}\n_FilterIdEventSubscriber_event = new WeakMap();\nexport class FilterIdPendingSubscriber extends FilterIdSubscriber {\n async _subscribe(provider) {\n return await provider.send(\"eth_newPendingTransactionFilter\", []);\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n provider.emit(\"pending\", network.formatter.hash(result));\n }\n }\n}\n//# sourceMappingURL=subscriber-filterid.js.map","// @TODO:\n// - Add the batching API\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _JsonRpcApiProvider_nextId, _JsonRpcApiProvider_options, _JsonRpcProvider_connect, _JsonRpcProvider_pollingInterval;\n// https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/ethereum/eth1.0-apis/assembled-spec/openrpc.json&uiSchema%5BappBar%5D%5Bui:splitView%5D=true&uiSchema%5BappBar%5D%5Bui:input%5D=false&uiSchema%5BappBar%5D%5Bui:examplesDropdown%5D=false\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { TypedDataEncoder } from \"@ethersproject/hash\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { AbstractProvider, UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { FilterIdEventSubscriber, FilterIdPendingSubscriber } from \"./subscriber-filterid.js\";\nimport { logger } from \"./logger.js\";\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nconst Primitive = \"bigint,boolean,function,number,string,symbol\".split(/,/g);\n//const Methods = \"getAddress,then\".split(/,/g);\nfunction deepCopy(value) {\n if (value == null || Primitive.indexOf(typeof (value)) >= 0) {\n return value;\n }\n // Keep any Addressable\n if (typeof (value.getAddress) === \"function\") {\n return value;\n }\n if (Array.isArray(value)) {\n return (value.map(deepCopy));\n }\n if (typeof (value) === \"object\") {\n return Object.keys(value).reduce((accum, key) => {\n accum[key] = value[key];\n return accum;\n }, {});\n }\n throw new Error(`should not happen: ${value} (${typeof (value)})`);\n}\nfunction getLowerCase(value) {\n if (value) {\n return value.toLowerCase();\n }\n return value;\n}\nfunction isPollable(value) {\n return (value && typeof (value.pollingInterval) === \"number\");\n}\nconst defaultOptions = {\n // Default to use filter ID (the FilterIdSubscriber will\n // fallback onto polling if subscription fails)\n polling: false,\n // Maximum batch size (in bytes)\n batchMaxSize: (1 << 20),\n // How long to wait before dispatching a new batch\n batchStallTime: 250,\n};\n// @TODO: Unchecked Signers\nexport class JsonRpcSigner {\n constructor(provider, address) {\n defineProperties(this, { provider, address });\n }\n connect(provider) {\n return logger.throwError(\"cannot reconnect JsonRpcSigner\", \"UNSUPPORTED_OPERATION\", {\n operation: \"signer.connect\"\n });\n }\n async getAddress() {\n return this.address;\n }\n async getNetwork() {\n return await this.provider.getNetwork();\n }\n async getFeeData() {\n return await this.provider.getFeeData();\n }\n async estimateGas(tx) {\n return await this.provider.estimateGas(tx);\n }\n async call(tx) {\n return await this.provider.call(tx);\n }\n async resolveName(name) {\n return await this.provider.resolveName(name);\n }\n async getBalance(blockTag) {\n return await this.provider.getBalanceOf(this.address);\n }\n async getTransactionCount(blockTag) {\n return await this.provider.getTransactionCountOf(this.address);\n }\n // Returns just the hash of the transaction after sent, which is what\n // the bare JSON-RPC API does;\n async sendUncheckedTransaction(_tx) {\n const tx = deepCopy(_tx);\n const promises = [];\n // Make sure the from matches the sender\n if (tx.from) {\n const _from = tx.from;\n promises.push((async () => {\n const from = await resolveAddress(_from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n })());\n }\n else {\n tx.from = this.address;\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 (tx.gasLimit == null) {\n promises.push((async () => {\n tx.gasLimit = await this.provider.estimateGas(Object.assign(Object.assign({}, tx), { from: this.address }));\n })());\n }\n // The address may be an ENS name or Addressable\n if (tx.to != null) {\n const _to = tx.to;\n promises.push((async () => {\n tx.to = await resolveAddress(_to, this.provider);\n })());\n }\n // Wait until all of our properties are filled in\n if (promises.length) {\n await Promise.all(promises);\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return this.provider.send(\"eth_sendTransaction\", [hexTx]);\n }\n async sendTransaction(tx) {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider.getBlockNumber();\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(tx);\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 (new Promise((resolve, reject) => {\n const timeouts = [1000, 100];\n const checkTx = async () => {\n // Try getting the transaction\n const tx = await this.provider.getTransaction(hash);\n if (tx != null) {\n resolve(this.provider._wrapTransaction(tx, hash, blockNumber));\n return;\n }\n // Wait another 4 seconds\n this.provider._setTimeout(() => { checkTx(); }, timeouts.pop() || 4000);\n };\n checkTx();\n }));\n }\n async signTransaction(_tx) {\n const tx = deepCopy(_tx);\n // Make sure the from matches the sender\n if (tx.from) {\n const from = await resolveAddress(tx.from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n return logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n }\n else {\n tx.from = this.address;\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return await this.provider.send(\"eth_sign_Transaction\", [hexTx]);\n }\n async signMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"personal_sign\", [\n hexlify(message), this.address.toLowerCase()\n ]);\n }\n async signTypedData(domain, types, _value) {\n const value = deepCopy(_value);\n // Populate any ENS names (in-place)\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (value) => {\n const address = await resolveAddress(value);\n if (address == null) {\n return logger.throwArgumentError(\"TypedData does not support null address\", \"value\", value);\n }\n return address;\n });\n return await this.provider.send(\"eth_signTypedData_v4\", [\n this.address.toLowerCase(),\n JSON.stringify(TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n }\n async unlock(password) {\n return this.provider.send(\"personal_unlockAccount\", [\n this.address.toLowerCase(), password, null\n ]);\n }\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n async _legacySignMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"eth_sign\", [\n this.address.toLowerCase(), hexlify(message)\n ]);\n }\n}\nexport class JsonRpcApiProvider extends AbstractProvider {\n constructor(network) {\n super(network);\n _JsonRpcApiProvider_nextId.set(this, void 0);\n _JsonRpcApiProvider_options.set(this, void 0);\n __classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, 1, \"f\");\n __classPrivateFieldSet(this, _JsonRpcApiProvider_options, Object.assign({}, defaultOptions), \"f\");\n }\n _getOptions(key) {\n return __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key];\n }\n _setOptions(options) {\n // Validate all the options\n for (const _key in options) {\n const key = _key;\n const value = options[key];\n if (typeof (value) !== typeof (__classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key])) {\n return logger.throwArgumentError(\"invalid option value\", `options.${key}`, value);\n }\n }\n // Update the values\n for (const _key in options) {\n const key = _key;\n __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key] = (options[key]);\n }\n }\n prepareRequest(method, params) {\n var _a, _b;\n return {\n method, params, id: (__classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, (_b = __classPrivateFieldGet(this, _JsonRpcApiProvider_nextId, \"f\"), _a = _b++, _b), \"f\"), _a), jsonrpc: \"2.0\"\n };\n }\n // Sends the payload to the backend\n //async sendPayload(payload: any): Promise {\n // throw new Error(\"sub-class must implement this\");\n //}\n async send(method, params) {\n // @TODO: This should construct and queue the payload\n throw new Error(\"sub-class must implement this\");\n }\n async getSigner(address = 0) {\n const network = await this.getNetwork();\n const accounts = await this.send(\"eth_accounts\", []);\n // Account index\n if (typeof (address) === \"number\") {\n if (address > accounts.length) {\n throw new Error(\"no such account\");\n }\n return new JsonRpcSigner(this, accounts[address]);\n }\n // Account address\n address = network.formatter.address(address);\n for (const account of accounts) {\n if (network.formatter.address(account) === account) {\n return new JsonRpcSigner(this, account);\n }\n }\n throw new Error(\"invalid account\");\n }\n // Sub-classes can override this; it detects the *actual* network we\n // are connected to\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" })));\n }\n _getSubscriber(sub) {\n // Pending Filters aren't availble via polling\n if (sub.type === \"pending\") {\n return new FilterIdPendingSubscriber(this);\n }\n if (sub.type === \"event\") {\n return new FilterIdEventSubscriber(this, sub.filter);\n }\n // Orphaned Logs are handled automatically, by the filter, since\n // logs with removed are emitted by it\n if (sub.type === \"orphan\" && sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"orphan\");\n }\n return super._getSubscriber(sub);\n }\n getRpcTransaction(tx) {\n const result = {};\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n let dstKey = key;\n if (key === \"gasLimit\") {\n dstKey = \"gas\";\n }\n result[dstKey] = quantity(tx[key]);\n });\n // Make sure addresses and data are lowercase\n [\"from\", \"to\", \"data\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n result[key] = hexlify(tx[key]);\n });\n // Normalize the access list object\n if (tx.accessList) {\n result[\"accessList\"] = accessListify(tx.accessList);\n }\n return result;\n }\n getRpcRequest(req) {\n switch (req.method) {\n case \"chainId\":\n return { method: \"eth_chainId\", args: [] };\n case \"getBlockNumber\":\n return { method: \"eth_blockNumber\", args: [] };\n case \"getGasPrice\":\n return { method: \"eth_gasPrice\", args: [] };\n case \"getBalance\":\n return {\n method: \"eth_getBalance\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getTransactionCount\":\n return {\n method: \"eth_getTransactionCount\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getCode\":\n return {\n method: \"eth_getCode\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getStorageAt\":\n return {\n method: \"eth_getStorageAt\",\n args: [\n getLowerCase(req.address),\n (\"0x\" + req.position.toString(16)),\n req.blockTag\n ]\n };\n case \"sendTransaction\":\n return {\n method: \"eth_sendRawTransaction\",\n args: [req.signedTransaction]\n };\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return {\n method: \"eth_getBlockByNumber\",\n args: [req.blockTag, !!req.includeTransactions]\n };\n }\n else if (\"blockHash\" in req) {\n return {\n method: \"eth_getBlockByHash\",\n args: [req.blockHash, !!req.includeTransactions]\n };\n }\n break;\n case \"getTransaction\":\n return {\n method: \"eth_getTransactionByHash\",\n args: [req.hash]\n };\n case \"getTransactionReceipt\":\n return {\n method: \"eth_getTransactionReceipt\",\n args: [req.hash]\n };\n case \"call\":\n return {\n method: \"eth_call\",\n args: [this.getRpcTransaction(req.transaction), req.blockTag]\n };\n case \"estimateGas\": {\n return {\n method: \"eth_estimateGas\",\n args: [this.getRpcTransaction(req.transaction)]\n };\n }\n case \"getLogs\":\n if (req.filter && req.filter.address != null) {\n if (Array.isArray(req.filter.address)) {\n req.filter.address = req.filter.address.map(getLowerCase);\n }\n else {\n req.filter.address = getLowerCase(req.filter.address);\n }\n }\n return { method: \"eth_getLogs\", args: [req.filter] };\n }\n return null;\n }\n getRpcError(method, args, error) {\n if (method === \"eth_call\") {\n const result = spelunkData(error);\n if (result) {\n // @TODO: Extract errorSignature, errorName, errorArgs, reason if\n // it is Error(string) or Panic(uint25)\n return logger.makeError(\"execution reverted during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: result.data,\n transaction: args[0]\n });\n }\n return logger.makeError(\"missing revert data during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: \"0x\", transaction: args[0], info: { error }\n });\n }\n if (method === \"eth_estimateGas\") {\n }\n const message = JSON.stringify(spelunkMessage(error));\n if (message.match(/insufficient funds|base fee exceeds gas limit/)) {\n return logger.makeError(\"insufficient funds for intrinsic transaction cost\", \"INSUFFICIENT_FUNDS\", {\n transaction: args[0]\n });\n }\n if (message.match(/nonce/) && message.match(/too low/)) {\n return logger.makeError(\"nonce has already been used\", \"NONCE_EXPIRED\", {\n transaction: args[0]\n });\n }\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction/) && message.match(/underpriced/)) {\n return logger.makeError(\"replacement fee too low\", \"REPLACEMENT_UNDERPRICED\", {\n transaction: args[0]\n });\n }\n if (message.match(/only replay-protected/)) {\n return logger.makeError(\"legacy pre-eip-155 transactions not supported\", \"UNSUPPORTED_OPERATION\", {\n operation: method, info: { transaction: args[0] }\n });\n }\n if (method === \"estimateGas\" && message.match(/gas required exceeds allowance|always failing transaction|execution reverted/)) {\n return logger.makeError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", \"UNPREDICTABLE_GAS_LIMIT\", {\n transaction: args[0]\n });\n }\n return error;\n }\n async _perform(req) {\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 (req.method === \"call\" || req.method === \"estimateGas\") {\n let tx = req.transaction;\n if (tx && tx.type != null && logger.getBigInt(tx.type)) {\n // If there are no EIP-1559 properties, it might be non-EIP-a559\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 req = Object.assign({}, req, {\n transaction: Object.assign({}, tx, { type: undefined })\n });\n }\n }\n }\n }\n const request = this.getRpcRequest(req);\n if (request != null) {\n this.emit(\"debug\", { type: \"sendRequest\", request });\n try {\n const result = await this.send(request.method, request.args);\n //console.log(\"RR\", result);\n this.emit(\"debug\", { type: \"getResponse\", result });\n return result;\n }\n catch (error) {\n this.emit(\"debug\", { type: \"getError\", error });\n throw this.getRpcError(request.method, request.args, error);\n }\n }\n return super._perform(req);\n }\n}\n_JsonRpcApiProvider_nextId = new WeakMap(), _JsonRpcApiProvider_options = new WeakMap();\nexport class JsonRpcProvider extends JsonRpcApiProvider {\n constructor(url, network) {\n if (url == null) {\n url = \"http:/\\/localhost:8545\";\n }\n super(network);\n _JsonRpcProvider_connect.set(this, void 0);\n _JsonRpcProvider_pollingInterval.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, { request: new FetchRequest(url) }, \"f\");\n }\n else {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, Object.assign({}, url), \"f\");\n __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request = __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request.clone();\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, 4000, \"f\");\n }\n async send(method, params) {\n params = copy(params);\n // Configure a POST connection for the requested method\n const connection = Object.assign({}, __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\"));\n connection.request = connection.request.clone();\n connection.request.body = this.prepareRequest(method, params);\n const response = await fetchData(connection);\n response.assertOk();\n const result = response.bodyJson;\n if (\"error\" in result) {\n return logger.throwError(\"error from JSON-RPC\", \"UNKNOWN_ERROR\", {\n result\n });\n }\n return result.result;\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\"); }\n set pollingInterval(value) {\n if (!Number.isInteger(value) || value < 0) {\n throw new Error(\"invalid interval\");\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, value, \"f\");\n this._forEachSubscriber((sub) => {\n if (isPollable(sub)) {\n sub.pollingInterval = __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\");\n }\n });\n }\n}\n_JsonRpcProvider_connect = new WeakMap(), _JsonRpcProvider_pollingInterval = new WeakMap();\n// This class should only be used when it is not possible for the\n// underlying network to change, such as with INFURA. If you are\n// using MetaMask or some other client which allows users to change\n// their network DO NOT USE THIS. Bad things will happen.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n constructor(url, network) {\n super(url, network);\n defineProperties(this, { network });\n }\n async _detectNetwork() {\n return this.network;\n }\n}\nfunction spelunkData(value) {\n if (value == null) {\n return null;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\" && value.message.match(\"reverted\") && isHexString(value.data)) {\n return { message: value.message, data: value.data };\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n const result = spelunkData(value[key]);\n if (result) {\n return result;\n }\n }\n return null;\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return spelunkData(JSON.parse(value));\n }\n catch (error) { }\n }\n return null;\n}\nfunction _spelunkMessage(value, result) {\n if (value == null) {\n return;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\") {\n result.push(value.message);\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n _spelunkMessage(value[key], result);\n }\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return _spelunkMessage(JSON.parse(value), result);\n }\n catch (error) { }\n }\n}\nfunction spelunkMessage(value) {\n const result = [];\n _spelunkMessage(value, result);\n return result;\n}\n//# sourceMappingURL=provider-jsonrpc.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth\";\n case \"matic\":\n return \"rpc.ankr.com/polygon\";\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AnkrProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const connection = AnkrProvider.getConnection(network, apiKey);\n super(connection, network);\n defineProperties(this, { apiKey });\n // Ankr does not support filterId, so we force polling\n super._setOptions({ polling: true });\n }\n _getProvider(chainId) {\n try {\n return new AnkrProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"AnkrProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=provider-ankr.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.alchemyapi.io\";\n case \"ropsten\":\n return \"eth-ropsten.alchemyapi.io\";\n case \"rinkeby\":\n return \"eth-rinkeby.alchemyapi.io\";\n case \"goerli\":\n return \"eth-goerli.alchemyapi.io\";\n case \"kovan\":\n return \"eth-kovan.alchemyapi.io\";\n case \"matic\":\n return \"polygon-mainnet.g.alchemy.com\";\n case \"maticmum\":\n return \"polygon-mumbai.g.alchemy.com\";\n case \"arbitrum\":\n return \"arb-mainnet.g.alchemy.com\";\n case \"arbitrum-rinkeby\":\n return \"arb-rinkeby.g.alchemy.com\";\n case \"optimism\":\n return \"opt-mainnet.g.alchemy.com\";\n case \"optimism-kovan\":\n return \"opt-kovan.g.alchemy.com\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AlchemyProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n super(AlchemyProvider.getConnection(network, apiKey), network);\n defineProperties(this, { apiKey });\n }\n _getProvider(chainId) {\n try {\n return new AlchemyProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v2/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"alchemy\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n}\n//# sourceMappingURL=provider-alchemy.js.map","import { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nexport class CloudflareProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\") {\n const network = Network.from(_network);\n if (network.name !== \"homestead\") {\n return logger.throwArgumentError(\"unsupported network\", \"network\", _network);\n }\n super(\"https:/\\/cloudflare-eth.com/\", network);\n }\n}\n//# sourceMappingURL=provider-cloudflare.js.map","import { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { isError } from \"@ethersproject/logger\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nif (false) {\n console.log(isHexString, isError);\n} // @TODO\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { NetworkPlugin } from \"./plugins-network.js\";\nimport { logger } from \"./logger.js\";\nconst defaultApiKey = \"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB\";\nconst EtherscanPluginId = \"org.ethers.plugins.etherscan\";\nexport class EtherscanPlugin extends NetworkPlugin {\n constructor(baseUrl, communityApiKey) {\n super(EtherscanPluginId);\n //if (communityApiKey == null) { communityApiKey = null; }\n defineProperties(this, { baseUrl, communityApiKey });\n }\n clone() {\n return new EtherscanPlugin(this.baseUrl, this.communityApiKey);\n }\n}\nexport class EtherscanProvider extends AbstractProvider {\n constructor(_network, apiKey) {\n super();\n const network = Network.from(_network);\n if (apiKey == null) {\n const plugin = network.getPlugin(EtherscanPluginId);\n if (plugin) {\n apiKey = plugin.communityApiKey;\n }\n else {\n apiKey = defaultApiKey;\n }\n }\n defineProperties(this, { apiKey, network });\n // Test that the network is supported by Etherscan\n this.getBaseUrl();\n }\n getBaseUrl() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return plugin.baseUrl;\n }\n switch (this.network.name) {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"ropsten\":\n return \"https:/\\/api-ropsten.etherscan.io\";\n case \"rinkeby\":\n return \"https:/\\/api-rinkeby.etherscan.io\";\n case \"kovan\":\n return \"https:/\\/api-kovan.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n default:\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network);\n }\n getUrl(module, params) {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${key}=${value}`;\n }\n return accum;\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${this.apiKey}` : \"\");\n return `${this.getBaseUrl()}/api?module=${module}${query}${apiKey}`;\n }\n getPostUrl() {\n return `${this.getBaseUrl()}/api`;\n }\n getPostData(module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n async detectNetwork() {\n return this.network;\n }\n async fetch(module, params, post) {\n const url = (post ? this.getPostUrl() : this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params) : null);\n /*\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n */\n const request = new FetchRequest(url);\n const connection = {\n request,\n throttleSlotInterval: 1000,\n processResponse: async (request, response) => {\n const result = response.hasBody() ? JSON.parse(toUtf8String(response.body)) : {};\n const throttle = ((typeof (result.result) === \"string\") ? result.result : \"\").toLowerCase().indexOf(\"rate limit\") >= 0;\n if (module === \"proxy\") {\n // This JSON response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && throttle) {\n response.throwThrottleError(result.result);\n }\n }\n else {\n if (throttle) {\n response.throwThrottleError(result.result);\n }\n }\n return response;\n },\n };\n if (payload) {\n request.setHeader(\"content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n request.body = Object.keys(payload).map((k) => `${k}=${payload[k]}`).join(\"&\");\n }\n const response = await fetchData(connection);\n response.assertOk();\n if (!response.hasBody()) {\n throw new Error();\n }\n /*\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n */\n const result = JSON.parse(toUtf8String(response.body));\n if (module === \"proxy\") {\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n if (result.error) {\n // @TODO: not any\n const error = new Error(result.error.message || \"unknown error\");\n if (result.error.code) {\n error.code = result.error.code;\n }\n if (result.error.data) {\n error.data = result.error.data;\n }\n throw error;\n }\n return result.result;\n }\n else {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n if (result.status != 1 || result.message != \"OK\") {\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n // if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n // error.throttleRetry = true;\n // }\n throw error;\n }\n return result.result;\n }\n }\n // The transaction has already been sanitized by the calls in Provider\n _getTransactionPostData(transaction) {\n const result = {};\n for (let key in transaction) {\n if (transaction[key] == null) {\n continue;\n }\n let value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = quantity(hexlify(value));\n }\n else if (key === \"accessList\") {\n value = \"[\" + this.network.formatter.accessList(value).map((set) => {\n return `{address:\"${set.address}\",storageKeys:[\"${set.storageKeys.join('\",\"')}\"]}`;\n }).join(\",\") + \"]\";\n }\n else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n }\n _checkError(req, error, transaction) {\n /*\n let body = \"\";\n if (isError(error, Logger.Errors.SERVER_ERROR) && error.response && error.response.hasBody()) {\n body = toUtf8String(error.response.body);\n }\n console.log(body);\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\" && body) {\n \n // Etherscan keeps changing their string\n if (body.match(/reverted/i) || body.match(/VM execution error/i)) {\n \n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n if (!isHexString(data)) { data = \"0x\"; }\n \n logger.throwError(\"call exception\", Logger.Errors.CALL_EXCEPTION, {\n error, data\n });\n }\n }\n \n // Get the message from any nested error structure\n let message = error.message;\n if (isError(error, Logger.Errors.SERVER_ERROR)) {\n if (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 }\n message = (message || \"\").toLowerCase();\n \n // \"Insufficient funds. The account you tried to send transaction from\n // does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.Errors.INSUFFICIENT_FUNDS, {\n error, transaction, info: { method }\n });\n }\n \n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.Errors.NONCE_EXPIRED, {\n error, transaction, info: { method }\n });\n }\n \n // \"Transaction gas price is too low. There is another transaction with\n // same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.Errors.REPLACEMENT_UNDERPRICED, {\n error, transaction, info: { method }\n });\n }\n \n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.Errors.UNPREDICTABLE_GAS_LIMIT, {\n error, transaction, info: { method }\n });\n }\n */\n throw error;\n }\n async _detectNetwork() {\n return this.network;\n }\n async _perform(req) {\n switch (req.method) {\n case \"chainId\":\n return this.network.chainId;\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: req.address,\n position: req.position,\n tag: req.blockTag\n });\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: req.signedTransaction\n }, true).catch((error) => {\n return this._checkError(req, error, req.signedTransaction);\n });\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: req.blockTag,\n boolean: (req.includeTransactions ? \"true\" : \"false\")\n });\n }\n return logger.throwError(\"getBlock by blockHash not supported by Etherscan\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getBlock(blockHash)\"\n });\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: req.hash\n });\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: req.hash\n });\n case \"call\": {\n if (req.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n case \"estimateGas\": {\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n /*\n case \"getLogs\": {\n // Needs to complain if more than one address is passed in\n const args: Record = { action: \"getLogs\" }\n \n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n \n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n \n if (params.filter.address) {\n args.address = params.filter.address;\n }\n \n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.Errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.Errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n \n const logs: Array = await this.fetch(\"logs\", args);\n \n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n \n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n \n log.blockHash = blocks[log.blockNumber];\n }\n \n return logs;\n }\n */\n default:\n break;\n }\n return super._perform(req);\n }\n async getNetwork() {\n return this.network;\n }\n async getEtherPrice() {\n if (this.network.name !== \"homestead\") {\n return 0.0;\n }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n }\n isCommunityResource() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return (plugin.communityApiKey === this.apiKey);\n }\n return (defaultApiKey === this.apiKey);\n }\n}\n/*\n(async function() {\n const provider = new EtherscanProvider();\n console.log(provider);\n console.log(await provider.getBlockNumber());\n / *\n provider.on(\"block\", (b) => {\n console.log(\"BB\", b);\n });\n console.log(await provider.getTransactionReceipt(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\"));\n\n provider.once(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\", (tx) => {\n console.log(\"TT\", tx);\n });\n * /\n try {\n console.log(await provider.getBlock(100));\n } catch (error) {\n console.log(error);\n }\n\n try {\n console.log(await provider.getBlock(13821768));\n } catch (error) {\n console.log(error);\n }\n\n})();\n*/\n//# sourceMappingURL=provider-etherscan.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultProjectId = \"84842078b09946638c03157f83405213\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"mainnet.infura.io\";\n case \"ropsten\":\n return \"ropsten.infura.io\";\n case \"rinkeby\":\n return \"rinkeby.infura.io\";\n case \"kovan\":\n return \"kovan.infura.io\";\n case \"goerli\":\n return \"goerli.infura.io\";\n case \"matic\":\n return \"polygon-mainnet.infura.io\";\n case \"maticmum\":\n return \"polygon-mumbai.infura.io\";\n case \"optimism\":\n return \"optimism-mainnet.infura.io\";\n case \"optimism-kovan\":\n return \"optimism-kovan.infura.io\";\n case \"arbitrum\":\n return \"arbitrum-mainnet.infura.io\";\n case \"arbitrum-rinkeby\":\n return \"arbitrum-rinkeby.infura.io\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class InfuraProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", projectId, projectSecret) {\n const network = Network.from(_network);\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const connection = InfuraProvider.getConnection(network, projectId, projectSecret);\n super(connection, network);\n defineProperties(this, { projectId, projectSecret });\n }\n _getProvider(chainId) {\n try {\n return new InfuraProvider(chainId, this.projectId, this.projectSecret);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, projectId, projectSecret) {\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v3/${projectId}`);\n request.allowGzip = true;\n if (projectSecret) {\n request.setCredentials(\"\", projectSecret);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (projectId === defaultProjectId) {\n showThrottleMessage(\"InfuraProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\n//# sourceMappingURL=provider-infura.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\n// These are load-balancer-based application IDs\nconst defaultAppIds = {\n homestead: \"6004bcd10040261633ade990\",\n ropsten: \"6004bd4d0040261633ade991\",\n rinkeby: \"6004bda20040261633ade994\",\n goerli: \"6004bd860040261633ade992\",\n};\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.gateway.pokt.network\";\n case \"ropsten\":\n return \"eth-ropsten.gateway.pokt.network\";\n case \"rinkeby\":\n return \"eth-rinkeby.gateway.pokt.network\";\n case \"goerli\":\n return \"eth-goerli.gateway.pokt.network\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nfunction normalizeApiKey(network, _appId, applicationSecretKey, loadBalancer) {\n loadBalancer = !!loadBalancer;\n let community = false;\n let applicationId = _appId;\n if (applicationId == null) {\n applicationId = defaultAppIds[network.name];\n if (applicationId == null) {\n logger.throwArgumentError(\"network does not support default applicationId\", \"applicationId\", _appId);\n }\n loadBalancer = true;\n community = true;\n }\n else if (applicationId === defaultAppIds[network.name]) {\n loadBalancer = true;\n community = true;\n }\n if (applicationSecretKey == null) {\n applicationSecretKey = null;\n }\n return { applicationId, applicationSecretKey, community, loadBalancer };\n}\nexport class PocketProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", _appId, _secretKey, _loadBalancer) {\n const network = Network.from(_network);\n const { applicationId, applicationSecretKey, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n const connection = PocketProvider.getConnection(network, applicationId, applicationSecretKey, loadBalancer);\n super(connection, network);\n defineProperties(this, { applicationId, applicationSecretKey, loadBalancer });\n }\n static getConnection(network, _appId, _secretKey, _loadBalancer) {\n const { applicationId, applicationSecretKey, community, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n let url = `https:/\\/${getHost(network.name)}/v1/`;\n if (loadBalancer) {\n url += \"lb/\";\n }\n url += applicationId;\n const request = new FetchRequest(url);\n request.allowGzip = true;\n if (applicationSecretKey) {\n request.setCredentials(\"\", applicationSecretKey);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (community) {\n showThrottleMessage(\"PocketProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.applicationId === defaultAppIds[this.network.name]);\n }\n}\n//# sourceMappingURL=provider-pocket.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FallbackProvider_instances, _FallbackProvider_configs, _FallbackProvider_height, _FallbackProvider_initialSyncPromise, _FallbackProvider_getNextConfig, _FallbackProvider_addRunner, _FallbackProvider_initialSync, _FallbackProvider_checkQuorum, _FallbackProvider_waitForQuorum;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { shuffle } from \"./shuffle.js\";\n//const BN_0 = BigInt(\"0\");\nconst BN_1 = BigInt(\"1\");\nconst BN_2 = BigInt(\"2\");\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\nfunction getTime() { return (new Date()).getTime(); }\n;\nconst defaultConfig = { stallTimeout: 400, priority: 1, weight: 1 };\nconst defaultState = {\n blockNumber: -2, requests: 0, lateResponses: 0, errorResponses: 0,\n outOfSync: -1, unsupportedEvents: 0, rollingDuration: 0, score: 0,\n _network: null, _updateNumber: null, _totalTime: 0\n};\nasync function waitForSync(config, blockNumber) {\n while (config.blockNumber < 0 || config.blockNumber < blockNumber) {\n if (!config._updateNumber) {\n config._updateNumber = (async () => {\n const blockNumber = await config.provider.getBlockNumber();\n if (blockNumber > config.blockNumber) {\n config.blockNumber = blockNumber;\n }\n config._updateNumber = null;\n })();\n }\n await config._updateNumber;\n config.outOfSync++;\n }\n}\n// Normalizes a result to a string that can be used to compare against\n// other results using normal string equality\nfunction normalize(network, value, req) {\n switch (req.method) {\n case \"chainId\":\n return logger.getBigInt(value).toString();\n case \"getBlockNumber\":\n return logger.getNumber(value).toString();\n case \"getGasPrice\":\n return logger.getBigInt(value).toString();\n case \"getBalance\":\n return logger.getBigInt(value).toString();\n case \"getTransactionCount\":\n return logger.getNumber(value).toString();\n case \"getCode\":\n return hexlify(value);\n case \"getStorageAt\":\n return hexlify(value);\n case \"getBlock\":\n if (req.includeTransactions) {\n return JSON.stringify(network.formatter.blockWithTransactions(value));\n }\n return JSON.stringify(network.formatter.block(value));\n case \"getTransaction\":\n return JSON.stringify(network.formatter.transactionResponse(value));\n case \"getTransactionReceipt\":\n return JSON.stringify(network.formatter.receipt(value));\n case \"call\":\n return hexlify(value);\n case \"estimateGas\":\n return logger.getBigInt(value).toString();\n case \"getLogs\":\n return JSON.stringify(value.map((v) => network.formatter.log(v)));\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}\n// This strategy picks the highest wieght result, as long as the weight is\n// equal to or greater than quorum\nfunction checkQuorum(quorum, results) {\n const tally = new Map();\n for (const { result, normal, weight } of results) {\n const t = tally.get(normal) || { result, weight: 0 };\n t.weight += weight;\n tally.set(normal, t);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n if (weight >= quorum && weight > bestWeight) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\n/*\nfunction getMean(results: Array): bigint {\n const total = results.reduce((a, r) => (a + BigInt(r.result)), BN_0);\n return total / BigInt(results.length);\n}\n*/\nfunction getMedian(results) {\n // Get the sorted values\n const values = results.map((r) => BigInt(r.result));\n values.sort((a, b) => ((a < b) ? -1 : (b > a) ? 1 : 0));\n const mid = values.length / 2;\n // Odd-length; take the middle value\n if (values.length % 2) {\n return values[mid];\n }\n // Even length; take the ceiling of the mean of the center two values\n return (values[mid - 1] + values[mid] + BN_1) / BN_2;\n}\nfunction getFuzzyMode(quorum, results) {\n if (quorum === 1) {\n return logger.getNumber(getMedian(results), \"%internal\");\n }\n const tally = new Map();\n const add = (result, weight) => {\n const t = tally.get(result) || { result, weight: 0 };\n t.weight += weight;\n tally.set(result, t);\n };\n for (const { weight, result } of results) {\n const r = logger.getNumber(result);\n add(r - 1, weight);\n add(r, weight);\n add(r + 1, weight);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n // Use this result, if this result meets quorum and has either:\n // - a better weight\n // - or equal weight, but the result is larger\n if (weight >= quorum && (weight > bestWeight || (bestResult != null && weight === bestWeight && result > bestResult))) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\nexport class FallbackProvider extends AbstractProvider {\n constructor(providers, network) {\n super(network);\n _FallbackProvider_instances.add(this);\n _FallbackProvider_configs.set(this, void 0);\n _FallbackProvider_height.set(this, void 0);\n _FallbackProvider_initialSyncPromise.set(this, void 0);\n __classPrivateFieldSet(this, _FallbackProvider_configs, providers.map((p) => {\n if (p instanceof AbstractProvider) {\n return Object.assign({ provider: p }, defaultConfig, defaultState);\n }\n else {\n return Object.assign({}, defaultConfig, p, defaultState);\n }\n }), \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_height, -2, \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, null, \"f\");\n this.quorum = 2; //Math.ceil(providers.length / 2);\n this.eventQuorum = 1;\n this.eventWorkers = 1;\n if (this.quorum > __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").reduce((a, c) => (a + c.weight), 0)) {\n logger.throwArgumentError(\"quorum exceed provider wieght\", \"quorum\", this.quorum);\n }\n }\n // @TOOD: Copy these and only return public values\n get providerConfigs() {\n return __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n }\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" }))).freeze();\n }\n async _perform(req) {\n await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_initialSync).call(this);\n // Bootstrap enough to meet quorum\n const running = new Set();\n for (let i = 0; i < this.quorum; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n const result = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n for (const runner of running) {\n runner.done = true;\n }\n return result;\n }\n}\n_FallbackProvider_configs = new WeakMap(), _FallbackProvider_height = new WeakMap(), _FallbackProvider_initialSyncPromise = new WeakMap(), _FallbackProvider_instances = new WeakSet(), _FallbackProvider_getNextConfig = function _FallbackProvider_getNextConfig(configs) {\n // Shuffle the states, sorted by priority\n const allConfigs = __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n shuffle(allConfigs);\n allConfigs.sort((a, b) => (b.priority - a.priority));\n for (const config of allConfigs) {\n if (configs.indexOf(config) === -1) {\n return config;\n }\n }\n return null;\n}, _FallbackProvider_addRunner = function _FallbackProvider_addRunner(running, req) {\n const config = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_getNextConfig).call(this, Array.from(running).map((r) => r.config));\n if (config == null) {\n return null;\n }\n const result = {};\n const runner = {\n config, result, didBump: false, done: false,\n perform: null, staller: null\n };\n const now = getTime();\n runner.perform = (async () => {\n try {\n config.requests++;\n result.result = await config.provider._perform(req);\n }\n catch (error) {\n config.errorResponses++;\n result.error = error;\n }\n if (runner.done) {\n config.lateResponses++;\n }\n const dt = (getTime() - now);\n config._totalTime += dt;\n config.rollingDuration = 0.95 * config.rollingDuration + 0.05 * dt;\n runner.perform = null;\n })();\n runner.staller = (async () => {\n await stall(config.stallTimeout);\n runner.staller = null;\n })();\n running.add(runner);\n return runner;\n}, _FallbackProvider_initialSync = \n// Initializes the blockNumber and network for each runner and\n// blocks until initialized\nasync function _FallbackProvider_initialSync() {\n let initialSync = __classPrivateFieldGet(this, _FallbackProvider_initialSyncPromise, \"f\");\n if (!initialSync) {\n const promises = [];\n __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").forEach((config) => {\n promises.push(waitForSync(config, 0));\n promises.push((async () => {\n config._network = await config.provider.getNetwork();\n })());\n });\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, initialSync = (async () => {\n // Wait for all providers to have a block number and network\n await Promise.all(promises);\n // Check all the networks match\n let chainId = null;\n for (const config of __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\")) {\n const network = (config._network);\n if (chainId == null) {\n chainId = network.chainId;\n }\n else if (network.chainId !== chainId) {\n logger.throwError(\"cannot mix providers on different networks\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FallbackProvider\"\n });\n }\n }\n })(), \"f\");\n }\n await initialSync;\n}, _FallbackProvider_checkQuorum = async function _FallbackProvider_checkQuorum(running, req) {\n // Get all the result objects\n const results = [];\n for (const runner of running) {\n if (\"result\" in runner.result) {\n const result = runner.result.result;\n results.push({\n result,\n normal: normalize((runner.config._network), result, req),\n weight: runner.config.weight\n });\n }\n }\n // Are there enough results to event meet quorum?\n if (results.reduce((a, r) => (a + r.weight), 0) < this.quorum) {\n return undefined;\n }\n switch (req.method) {\n case \"getBlockNumber\": {\n // We need to get the bootstrap block height\n if (__classPrivateFieldGet(this, _FallbackProvider_height, \"f\") === -2) {\n const height = Math.ceil(logger.getNumber(getMedian(__classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").map((c) => ({\n result: c.blockNumber,\n normal: logger.getNumber(c.blockNumber).toString(),\n weight: c.weight\n }))), \"%internal\"));\n __classPrivateFieldSet(this, _FallbackProvider_height, height, \"f\");\n }\n const mode = getFuzzyMode(this.quorum, results);\n if (mode === undefined) {\n return undefined;\n }\n if (mode > __classPrivateFieldGet(this, _FallbackProvider_height, \"f\")) {\n __classPrivateFieldSet(this, _FallbackProvider_height, mode, \"f\");\n }\n return __classPrivateFieldGet(this, _FallbackProvider_height, \"f\");\n }\n case \"getGasPrice\":\n case \"estimateGas\":\n return getMedian(results);\n case \"getBlock\":\n // Pending blocks are mempool dependant and already\n // quite untrustworthy\n if (\"blockTag\" in req && req.blockTag === \"pending\") {\n return results[0].result;\n }\n return checkQuorum(this.quorum, results);\n case \"chainId\":\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n case \"getLogs\":\n return checkQuorum(this.quorum, results);\n case \"call\":\n // @TODO: Check errors\n return checkQuorum(this.quorum, results);\n case \"sendTransaction\":\n throw new Error(\"TODO\");\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}, _FallbackProvider_waitForQuorum = async function _FallbackProvider_waitForQuorum(running, req) {\n if (running.size === 0) {\n throw new Error(\"no runners?!\");\n }\n // Any promises that are interesting to watch for; an expired stall\n // or a successful perform\n const interesting = [];\n //const results: Array = [ ];\n //const errors: Array = [ ];\n let newRunners = 0;\n for (const runner of running) {\n // @TODO: use runner.perfom != null\n /*\n if (\"result\" in runner.result) {\n results.push(runner.result.result);\n } else if (\"error\" in runner.result) {\n errors.push(runner.result.error);\n }\n*/\n // No responses, yet; keep an eye on it\n if (runner.perform) {\n interesting.push(runner.perform);\n }\n // Still stalling...\n if (runner.staller) {\n interesting.push(runner.staller);\n continue;\n }\n // This runner has already triggered another runner\n if (runner.didBump) {\n continue;\n }\n // Got a response (result or error) or stalled; kick off another runner\n runner.didBump = true;\n newRunners++;\n }\n // Check for quorum\n /*\n console.log({ results, errors } );\n if (results.length >= this.quorum) {\n return results[0];\n }\n\n if (errors.length >= this.quorum) {\n return errors[0];\n }\n */\n const value = await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_checkQuorum).call(this, running, req);\n if (value !== undefined) {\n if (value instanceof Error) {\n throw value;\n }\n return value;\n }\n // Add any new runners, because a staller timed out or a result\n // or error response came in.\n for (let i = 0; i < newRunners; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n if (interesting.length === 0) {\n throw new Error(\"quorum not met\");\n // return logger.throwError(\"failed to meet quorum\", \"\", {\n // });\n }\n // Wait for someone to either complete its perform or trigger a stall\n await Promise.race(interesting);\n return await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n};\n//# sourceMappingURL=provider-fallback.js.map","export function shuffle(array) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n}\n//# sourceMappingURL=shuffle.js.map","function getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst _WebSocket = getGlobal().WebSocket;\nexport { _WebSocket as WebSocket };\n//# sourceMappingURL=ws-browser.js.map","/**\n * SocketProvider\n *\n * Generic long-lived socket provider.\n *\n * Sub-classing notes\n * - a sub-class MUST call the `_start()` method once connected\n * - a sub-class MUST override the `_write(string)` method\n * - a sub-class MUST call `_processMessage(string)` for each message\n */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SocketSubscriber_provider, _SocketSubscriber_filter, _SocketSubscriber_filterId, _SocketSubscriber_paused, _SocketSubscriber_emitPromise, _SocketEventSubscriber_logFilter, _SocketEventSubscriber_formatter, _SocketProvider_callbacks, _SocketProvider_ready, _SocketProvider_subs, _SocketProvider_pending;\nimport { UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { JsonRpcApiProvider } from \"./provider-jsonrpc.js\";\nexport class SocketSubscriber {\n constructor(provider, filter) {\n _SocketSubscriber_provider.set(this, void 0);\n _SocketSubscriber_filter.set(this, void 0);\n _SocketSubscriber_filterId.set(this, void 0);\n _SocketSubscriber_paused.set(this, void 0);\n _SocketSubscriber_emitPromise.set(this, void 0);\n __classPrivateFieldSet(this, _SocketSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n get filter() { return JSON.parse(__classPrivateFieldGet(this, _SocketSubscriber_filter, \"f\")); }\n start() {\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_subscribe\", this.filter).then((filterId) => {\n ;\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\")._register(filterId, this);\n return filterId;\n }), \"f\");\n }\n stop() {\n (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\")).then((filterId) => {\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_unsubscribe\", [filterId]);\n });\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n }\n // @TODO: pause should trap the current blockNumber, unsub, and on resume use getLogs\n // and resume\n pause(dropWhilePaused) {\n if (!dropWhilePaused) {\n logger.throwError(\"preserve logs while paused not supported by SocketSubscriber yet\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause(false)\"\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_paused, !!dropWhilePaused, \"f\");\n }\n resume() {\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n }\n _handleMessage(message) {\n if (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\") == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _SocketSubscriber_paused, \"f\") === null) {\n let emitPromise = __classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\");\n if (emitPromise == null) {\n emitPromise = this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n }\n else {\n emitPromise = emitPromise.then(async () => {\n await this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, emitPromise.then(() => {\n if (__classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\") === emitPromise) {\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n }), \"f\");\n }\n }\n async _emit(provider, message) {\n throw new Error(\"sub-classes must implemente this; _emit\");\n }\n}\n_SocketSubscriber_provider = new WeakMap(), _SocketSubscriber_filter = new WeakMap(), _SocketSubscriber_filterId = new WeakMap(), _SocketSubscriber_paused = new WeakMap(), _SocketSubscriber_emitPromise = new WeakMap();\nexport class SocketBlockSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newHeads\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"block\", parseInt(message.number));\n }\n}\nexport class SocketPendingSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newPendingTransactions\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"pending\", message);\n }\n}\nexport class SocketEventSubscriber extends SocketSubscriber {\n constructor(provider, filter) {\n super(provider, [\"logs\", filter]);\n _SocketEventSubscriber_logFilter.set(this, void 0);\n _SocketEventSubscriber_formatter.set(this, void 0);\n __classPrivateFieldSet(this, _SocketEventSubscriber_logFilter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketEventSubscriber_formatter, provider.getNetwork().then((network) => network.formatter), \"f\");\n }\n get logFilter() { return JSON.parse(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\")); }\n async _emit(provider, message) {\n const formatter = await __classPrivateFieldGet(this, _SocketEventSubscriber_formatter, \"f\");\n provider.emit(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\"), formatter.log(message, provider));\n }\n}\n_SocketEventSubscriber_logFilter = new WeakMap(), _SocketEventSubscriber_formatter = new WeakMap();\nexport class SocketProvider extends JsonRpcApiProvider {\n constructor(network) {\n super(network);\n _SocketProvider_callbacks.set(this, void 0);\n _SocketProvider_ready.set(this, void 0);\n // Maps each filterId to its subscriber\n _SocketProvider_subs.set(this, void 0);\n // If any events come in before a subscriber has finished\n // registering, queue them\n _SocketProvider_pending.set(this, void 0);\n __classPrivateFieldSet(this, _SocketProvider_callbacks, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_ready, false, \"f\");\n __classPrivateFieldSet(this, _SocketProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_pending, new Map(), \"f\");\n }\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"close\":\n return new UnmanagedSubscriber(\"close\");\n case \"block\":\n return new SocketBlockSubscriber(this);\n case \"pending\":\n return new SocketPendingSubscriber(this);\n case \"event\":\n return new SocketEventSubscriber(this, sub.filter);\n case \"orphan\":\n // Handled auto-matically within AbstractProvider\n // when the log.removed = true\n if (sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"drop-log\");\n }\n }\n return super._getSubscriber(sub);\n }\n _register(filterId, subscriber) {\n __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").set(filterId, subscriber);\n const pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending) {\n for (const message of pending) {\n subscriber._handleMessage(message);\n }\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").delete(filterId);\n }\n }\n async send(method, params) {\n const payload = this.prepareRequest(method, params);\n const promise = new Promise((resolve, reject) => {\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").set(payload.id, { payload, resolve, reject });\n });\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n await this._write(JSON.stringify(payload));\n }\n return await promise;\n }\n // Sub-classes must call this once they are connected\n async _start() {\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n return;\n }\n __classPrivateFieldSet(this, _SocketProvider_ready, true, \"f\");\n for (const { payload } of __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").values()) {\n await this._write(JSON.stringify(payload));\n }\n }\n // Sub-classes must call this for each message\n async _processMessage(message) {\n const result = JSON.parse(message);\n if (\"id\" in result) {\n const promise = __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").get(result.id);\n if (!promise) {\n console.log(\"Weird... Response for not a thing we sent\");\n return;\n }\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").delete(result.id);\n if (\"error\" in result) {\n const { message, code, data } = result.error;\n const error = logger.makeError(message || \"unkonwn error\", \"SERVER_ERROR\", {\n request: `ws:${JSON.stringify(promise.payload)}`,\n info: { code, data }\n });\n promise.reject(error);\n }\n else {\n promise.resolve(result.result);\n }\n }\n else if (result.method === \"eth_subscription\") {\n const filterId = result.params.subscription;\n const subscriber = __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").get(filterId);\n if (subscriber) {\n subscriber._handleMessage(result.params.result);\n }\n else {\n let pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending == null) {\n pending = [];\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").set(filterId, pending);\n }\n pending.push(result.params.result);\n }\n }\n }\n async _write(message) {\n throw new Error(\"sub-classes must override this\");\n }\n}\n_SocketProvider_callbacks = new WeakMap(), _SocketProvider_ready = new WeakMap(), _SocketProvider_subs = new WeakMap(), _SocketProvider_pending = new WeakMap();\n//# sourceMappingURL=provider-socket.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WebSocketProvider_websocket;\nimport { WebSocket } from \"ws\"; /*-browser*/\nimport { SocketProvider } from \"./provider-socket.js\";\nexport class WebSocketProvider extends SocketProvider {\n constructor(url, network) {\n super(network);\n _WebSocketProvider_websocket.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, new WebSocket(url), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, url, \"f\");\n }\n this.websocket.onopen = () => {\n this._start();\n };\n this.websocket.onmessage = (message) => {\n this._processMessage(message.data);\n };\n }\n get websocket() { return __classPrivateFieldGet(this, _WebSocketProvider_websocket, \"f\"); }\n async _write(message) {\n this.websocket.send(message);\n }\n}\n_WebSocketProvider_websocket = new WeakMap();\n//# sourceMappingURL=provider-websocket.js.map","import { AnkrProvider } from \"./provider-ankr.js\";\nimport { AlchemyProvider } from \"./provider-alchemy.js\";\nimport { CloudflareProvider } from \"./provider-cloudflare.js\";\nimport { EtherscanProvider } from \"./provider-etherscan.js\";\nimport { InfuraProvider } from \"./provider-infura.js\";\nimport { PocketProvider } from \"./provider-pocket.js\";\nimport { FallbackProvider } from \"./provider-fallback.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nimport { WebSocketProvider } from \"./provider-websocket.js\";\nfunction isWebSocketLike(value) {\n return (value && typeof (value.send) === \"function\" &&\n typeof (value.close) === \"function\");\n}\nexport function getDefaultProvider(network, options) {\n if (options == null) {\n options = {};\n }\n if (typeof (network) === \"string\" && network.match(/^https?:/)) {\n return new JsonRpcProvider(network);\n }\n if (typeof (network) === \"string\" && network.match(/^wss?:/) || isWebSocketLike(network)) {\n return new WebSocketProvider(network);\n }\n const providers = [];\n if (options.alchemy !== \"-\") {\n try {\n providers.push(new AlchemyProvider(network, options.alchemy));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.ankr !== \"-\") {\n try {\n providers.push(new AnkrProvider(network, options.ankr));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.cloudflare !== \"-\") {\n try {\n providers.push(new CloudflareProvider(network));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.etherscan !== \"-\") {\n try {\n providers.push(new EtherscanProvider(network, options.etherscan));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.infura !== \"-\") {\n try {\n let projectId = options.infura;\n let projectSecret = undefined;\n if (typeof (projectId) === \"object\") {\n projectSecret = projectId.projectSecret;\n projectId = projectId.projectId;\n }\n providers.push(new InfuraProvider(network, projectId, projectSecret));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.pocket !== \"-\") {\n try {\n let appId = options.pocket;\n let secretKey = undefined;\n let loadBalancer = undefined;\n if (typeof (appId) === \"object\") {\n loadBalancer = !!appId.loadBalancer;\n secretKey = appId.secretKey;\n appId = appId.appId;\n }\n providers.push(new PocketProvider(network, appId, secretKey, loadBalancer));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (providers.length === 0) {\n throw new Error(\"TODO\");\n }\n if (providers.length === 1) {\n return providers[0];\n }\n return new FallbackProvider(providers);\n}\n//# sourceMappingURL=default-provider.js.map","import { EnsPlugin, GasCostPlugin, MaxPriorityFeePlugin } from \"./plugins-network.js\";\nimport { EtherscanPlugin } from \"./provider-etherscan.js\";\nimport { Network as _Network } from \"./network.js\";\n// See: https://chainlist.org\nfunction injectCommonNetworks(Network) {\n /// Register popular Ethereum networks\n function registerEth(name, chainId, options) {\n const func = function () {\n const network = new Network(name, chainId);\n // We use 0 to disable ENS\n if (options.ensNetwork != null) {\n network.attachPlugin(new EnsPlugin(null, options.ensNetwork));\n }\n if (options.priorityFee) {\n network.attachPlugin(new MaxPriorityFeePlugin(options.priorityFee));\n }\n if (options.etherscan) {\n const { url, apiKey } = options.etherscan;\n network.attachPlugin(new EtherscanPlugin(url, apiKey));\n }\n network.attachPlugin(new GasCostPlugin());\n return network;\n };\n // Register the network by name and chain ID\n Network.register(name, func);\n Network.register(chainId, func);\n if (options.altNames) {\n options.altNames.forEach((name) => {\n Network.register(name, func);\n });\n }\n }\n registerEth(\"homestead\", 1, { ensNetwork: 1, altNames: [\"mainnet\"] });\n registerEth(\"ropsten\", 3, { ensNetwork: 3 });\n registerEth(\"rinkeby\", 4, { ensNetwork: 4 });\n registerEth(\"goerli\", 5, { ensNetwork: 5 });\n registerEth(\"kovan\", 42, { ensNetwork: 42 });\n registerEth(\"classic\", 61, {});\n registerEth(\"classicKotti\", 6, {});\n registerEth(\"xdai\", 100, { ensNetwork: 1 });\n // Polygon has a 35 gwei maxPriorityFee requirement\n registerEth(\"matic\", 137, {\n ensNetwork: 1,\n priorityFee: 35000000000,\n etherscan: {\n apiKey: \"W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7\",\n url: \"https:/\\/api.polygonscan.com/\"\n }\n });\n registerEth(\"maticMumbai\", 80001, {\n priorityFee: 35000000000,\n etherscan: {\n apiKey: \"W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7\",\n url: \"https:/\\/api-testnet.polygonscan.com/\"\n }\n });\n registerEth(\"bnb\", 56, {\n ensNetwork: 1,\n etherscan: {\n apiKey: \"EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9\",\n url: \"http:/\\/api.bscscan.com\"\n }\n });\n registerEth(\"bnbt\", 97, {\n etherscan: {\n apiKey: \"EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9\",\n url: \"http:/\\/api-testnet.bscscan.com\"\n }\n });\n return Network;\n}\nconst Network = injectCommonNetworks(_Network);\nexport { Network };\n//# sourceMappingURL=common-networks.js.map","const IpcSocketProvider = undefined;\nexport { IpcSocketProvider };\n//# sourceMappingURL=provider-ipcsocket-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ContractTransactionReceipt_interface, _ContractTransactionResponse_interface;\nimport { defineProperties, EventPayload } from \"@ethersproject/properties\";\nimport { Log, TransactionReceipt, TransactionResponse } from \"@ethersproject/providers\";\nexport class EventLog extends Log {\n constructor(log, iface, fragment) {\n super(log, log.provider);\n const args = iface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, interface: iface });\n }\n get eventName() { return this.fragment.name; }\n get eventSignature() { return this.fragment.format(); }\n}\nexport class ContractTransactionReceipt extends TransactionReceipt {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionReceipt_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionReceipt_interface, iface, \"f\");\n }\n get logs() {\n return super.logs.map((log) => {\n const fragment = log.topics.length ? __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\").getEvent(log.topics[0]) : null;\n if (fragment) {\n return new EventLog(log, __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\"), fragment);\n }\n else {\n return log;\n }\n });\n }\n}\n_ContractTransactionReceipt_interface = new WeakMap();\nexport class ContractTransactionResponse extends TransactionResponse {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionResponse_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionResponse_interface, iface, \"f\");\n }\n async wait(confirms) {\n const receipt = await super.wait();\n if (receipt == null) {\n return null;\n }\n return new ContractTransactionReceipt(__classPrivateFieldGet(this, _ContractTransactionResponse_interface, \"f\"), this.provider, receipt);\n }\n}\n_ContractTransactionResponse_interface = new WeakMap();\nexport class ContractEventPayload extends EventPayload {\n constructor(contract, listener, filter, fragment, _log) {\n super(contract, listener, filter);\n const log = new EventLog(_log, contract.interface, fragment);\n const args = contract.interface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, log });\n }\n get eventName() {\n return this.fragment.name;\n }\n get eventSignature() {\n return this.fragment.format();\n }\n async getBlock() {\n return await this.log.getBlock();\n }\n async getTransaction() {\n return await this.log.getTransaction();\n }\n async getTransactionReceipt() {\n return await this.log.getTransactionReceipt();\n }\n}\n//# sourceMappingURL=wrappers.js.map","export const version = \"@ethersproject/contract@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PreparedTopicFilter_filter;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { Interface, Typed } from \"@ethersproject/abi\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { copyRequest } from \"@ethersproject/providers\";\nimport { ContractEventPayload, ContractTransactionResponse, EventLog } from \"./wrappers.js\";\nimport { logger } from \"./logger.js\";\nfunction canCall(value) {\n return (value && typeof (value.call) === \"function\");\n}\nfunction canEstimate(value) {\n return (value && typeof (value.estimateGas) === \"function\");\n}\nfunction canResolve(value) {\n return (value && typeof (value.resolveName) === \"function\");\n}\nfunction canSend(value) {\n return (value && typeof (value.sendTransaction) === \"function\");\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\nclass PreparedTopicFilter {\n constructor(contract, fragment, args) {\n _PreparedTopicFilter_filter.set(this, void 0);\n defineProperties(this, { fragment });\n if (fragment.inputs.length < args.length) {\n throw new Error(\"too many arguments\");\n }\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(contract.runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n __classPrivateFieldSet(this, _PreparedTopicFilter_filter, (async function () {\n const resolvedArgs = await Promise.all(fragment.inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n return contract.interface.encodeFilterTopics(fragment, resolvedArgs);\n })(), \"f\");\n }\n getTopicFilter() {\n return __classPrivateFieldGet(this, _PreparedTopicFilter_filter, \"f\");\n }\n}\n_PreparedTopicFilter_filter = new WeakMap();\n// A = Arguments passed in as a tuple\n// R = The result type of the call (i.e. if only one return type,\n// the qualified type, otherwise Result)\n// D = The type the default call will return (i.e. R for view/pure,\n// TransactionResponse otherwise)\n//export interface ContractMethod = Array, R = any, D extends R | ContractTransactionResponse = ContractTransactionResponse> {\nfunction _WrappedMethodBase() {\n return Function;\n}\nfunction getRunner(value, feature) {\n if (value == null) {\n return null;\n }\n if (typeof (value[feature]) === \"function\") {\n return value;\n }\n if (value.provider && typeof (value.provider[feature]) === \"function\") {\n return value.provider;\n }\n return null;\n}\nfunction getProvider(value) {\n if (value == null) {\n return null;\n }\n return value.provider || null;\n}\nexport async function copyOverrides(arg) {\n // Create a shallow copy (we'll deep-ify anything needed during normalizing)\n const overrides = copyRequest(Typed.dereference(arg, \"overrides\"));\n // Some sanity checking; these are what these methods adds\n //if ((overrides).to) {\n if (overrides.to) {\n logger.throwArgumentError(\"cannot override to\", \"overrides.to\", overrides.to);\n }\n else if (overrides.data) {\n logger.throwArgumentError(\"cannot override data\", \"overrides.data\", overrides.data);\n }\n // Resolve any from\n if (overrides.from) {\n overrides.from = await resolveAddress(overrides.from);\n }\n return overrides;\n}\nexport async function resolveArgs(_runner, inputs, args) {\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(_runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n return await Promise.all(inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n}\nclass WrappedMethod extends _WrappedMethodBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getFunctionName(key),\n _contract: contract, _key: key\n });\n const proxy = new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n const fragment = target.getFragment(...args);\n if (fragment.constant) {\n return await target.staticCall(...args);\n }\n return await target.send(...args);\n },\n });\n return proxy;\n }\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n get fragment() {\n return this._contract.interface.getFunction(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getFunction(this._key, args);\n }\n async populateTransaction(...args) {\n const fragment = this.getFragment(...args);\n // If an overrides was passed in, copy it and normalize the values\n let overrides = {};\n if (fragment.inputs.length + 1 === args.length) {\n overrides = await copyOverrides(args.pop());\n }\n if (fragment.inputs.length !== args.length) {\n throw new Error(\"internal error: fragment inputs doesn't match arguments; should not happen\");\n }\n const resolvedArgs = await resolveArgs(this._contract.runner, fragment.inputs, args);\n return Object.assign({}, overrides, await resolveProperties({\n to: this._contract.getAddress(),\n data: this._contract.interface.encodeFunctionData(fragment, resolvedArgs)\n }));\n }\n async staticCall(...args) {\n const result = await this.staticCallResult(...args);\n if (result.length === 1) {\n return result[0];\n }\n return result;\n }\n async send(...args) {\n const runner = this._contract.runner;\n if (!canSend(runner)) {\n return logger.throwError(\"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", {\n operation: \"sendTransaction\"\n });\n }\n const tx = await runner.sendTransaction(await this.populateTransaction(...args));\n const provider = getProvider(this._contract.runner);\n return new ContractTransactionResponse(this._contract.interface, provider, tx);\n }\n async estimateGas(...args) {\n const runner = getRunner(this._contract.runner, \"estimateGas\");\n if (!canEstimate(runner)) {\n return logger.throwError(\"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", {\n operation: \"estimateGas\"\n });\n }\n return await runner.estimateGas(await this.populateTransaction(...args));\n }\n async staticCallResult(...args) {\n const runner = getRunner(this._contract.runner, \"call\");\n if (!canCall(runner)) {\n return logger.throwError(\"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", {\n operation: \"call\"\n });\n }\n const fragment = this.getFragment(...args);\n const tx = await this.populateTransaction(...args);\n let result = \"0x\";\n try {\n result = await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error)) {\n throw this._contract.interface.makeError(fragment, error.data, tx);\n }\n throw error;\n }\n return this._contract.interface.decodeFunctionResult(fragment, result);\n }\n}\nfunction _WrappedEventBase() {\n return Function;\n}\nclass WrappedEvent extends _WrappedEventBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getEventName(key),\n _contract: contract, _key: key\n });\n return new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n return new PreparedTopicFilter(contract, target.getFragment(...args), args);\n },\n });\n }\n // Only works on non-ambiguous keys\n get fragment() {\n return this._contract.interface.getEvent(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getEvent(this._key, args);\n }\n}\n;\n// The combination of TypeScrype, Private Fields and Proxies makes\n// the world go boom; so we hide variables with some trickery keeping\n// a symbol attached to each BaseContract which its sub-class (even\n// via a Proxy) can reach and use to look up its internal values.\nconst internal = Symbol.for(\"_ethersInternal_contract\");\nconst internalValues = new WeakMap();\nfunction setInternal(contract, values) {\n internalValues.set(contract[internal], values);\n}\nfunction getInternal(contract) {\n return internalValues.get(contract[internal]);\n}\nfunction isDeferred(value) {\n return (value && typeof (value) === \"object\" && (\"getTopicFilter\" in value) &&\n (typeof (value.getTopicFilter) === \"function\") && value.fragment);\n}\nasync function getSubTag(contract, event) {\n let fragment;\n let topics;\n if (Array.isArray(event)) {\n // Topics; e.g. `[ \"0x1234...89ab\" ]`\n fragment = contract.interface.getEvent(event[0]);\n topics = event;\n }\n else if (typeof (event) === \"string\") {\n // Event name (name or signature); `\"Transfer\"`\n fragment = contract.interface.getEvent(event);\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else if (isDeferred(event)) {\n // Deferred Topic Filter; e.g. `contract.filter.Transfer(from)`\n fragment = event.fragment;\n topics = await event.getTopicFilter();\n }\n else if (\"fragment\" in event) {\n // ContractEvent; e.g. `contract.filter.Transfer`\n fragment = event.fragment;\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else {\n console.log(event);\n throw new Error(\"TODO\");\n }\n // Normalize topics and sort TopicSets\n topics = topics.map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const tag = topics.map((t) => {\n if (t == null) {\n return \"null\";\n }\n if (Array.isArray(t)) {\n return t.join(\"|\");\n }\n return t;\n }).join(\"&\");\n return { fragment, tag, topics };\n}\nasync function hasSub(contract, event) {\n const { subs } = getInternal(contract);\n return subs.get((await getSubTag(contract, event)).tag) || null;\n}\nasync function getSub(contract, event) {\n // Make sure our runner can actually subscribe to events\n const provider = getProvider(contract.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not support subscribing\", \"UNSUPPORTED_OPERATION\", {\n operation: \"on\"\n });\n }\n const { fragment, tag, topics } = await getSubTag(contract, event);\n const { addr, subs } = getInternal(contract);\n let sub = subs.get(tag);\n if (!sub) {\n const address = (addr ? addr : contract);\n const filter = { address, topics };\n const listener = (log) => {\n const payload = new ContractEventPayload(contract, null, event, fragment, log);\n emit(contract, event, payload.args, payload);\n };\n let started = false;\n const start = () => {\n if (started) {\n return;\n }\n provider.on(filter, listener);\n started = true;\n };\n const stop = () => {\n if (!started) {\n return;\n }\n provider.off(filter, listener);\n started = false;\n };\n sub = { tag, listeners: [], start, stop };\n subs.set(tag, sub);\n }\n return sub;\n}\nasync function _emit(contract, event, args, payload) {\n await lastEmit;\n const sub = await hasSub(contract, event);\n if (!sub) {\n return false;\n }\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const passArgs = args.slice();\n if (payload) {\n passArgs.push(new ContractEventPayload(contract, (once ? null : listener), event, payload.fragment, payload.log));\n }\n try {\n listener.call(contract, ...passArgs);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n}\n// We use this to ensure one emit resolves before firing the next to\n// ensure correct ordering (note this cannot throw and just adds the\n// notice to the event queu using setTimeout).\nlet lastEmit = Promise.resolve();\nasync function emit(contract, event, args, payload) {\n try {\n await lastEmit;\n }\n catch (error) { }\n const resultPromise = _emit(contract, event, args, payload);\n lastEmit = resultPromise;\n return await resultPromise;\n}\nconst passProperties = [\"then\"];\nexport class BaseContract {\n constructor(target, abi, runner = null, _deployTx) {\n const iface = Interface.from(abi);\n defineProperties(this, { target, runner, interface: iface });\n Object.defineProperty(this, internal, { value: {} });\n let addrPromise;\n let addr = null;\n let deployTx = null;\n if (_deployTx) {\n const provider = getProvider(runner);\n deployTx = new ContractTransactionResponse(this.interface, provider, _deployTx);\n }\n let subs = new Map();\n // Resolve the target as the address\n if (typeof (target) === \"string\") {\n if (isHexString(target)) {\n addr = target;\n addrPromise = Promise.resolve(target);\n }\n else {\n const resolver = getRunner(runner, \"resolveName\");\n if (!canResolve(resolver)) {\n throw logger.makeError(\"contract runner does not support name resolution\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\"\n });\n }\n addrPromise = resolver.resolveName(target).then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n }\n else {\n addrPromise = target.getAddress().then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n // Set our private values\n setInternal(this, { addrPromise, addr, deployTx, subs });\n // Add the event filters\n const filters = new Proxy({}, {\n get: (target, _prop, receiver) => {\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = this.getEvent(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract event: ${prop}`);\n }\n });\n defineProperties(this, { filters });\n // Return a Proxy that will respond to functions\n return new Proxy(this, {\n get: (target, _prop, receiver) => {\n if (_prop in target || passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = target.getFunction(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract method: ${prop}`);\n }\n });\n }\n async getAddress() { return await getInternal(this).addrPromise; }\n async getDeployedCode() {\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getDeployedCode\"\n });\n }\n const code = await provider.getCode(await this.getAddress());\n if (code === \"0x\") {\n return null;\n }\n return code;\n }\n async waitForDeployment() {\n // We have the deployement transaction; just use that (throws if deployement fails)\n const deployTx = this.deploymentTransaction();\n if (deployTx) {\n await deployTx.wait();\n return this;\n }\n // Check for code\n const code = await this.getDeployedCode();\n if (code != null) {\n return this;\n }\n // Make sure we can subscribe to a provider event\n const provider = getProvider(this.runner);\n if (provider == null) {\n return logger.throwError(\"contract runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"waitForDeployment\"\n });\n }\n return new Promise((resolve, reject) => {\n const checkCode = async () => {\n try {\n const code = await this.getDeployedCode();\n if (code != null) {\n return resolve(this);\n }\n provider.once(\"block\", checkCode);\n }\n catch (error) {\n reject(error);\n }\n };\n checkCode();\n });\n }\n deploymentTransaction() {\n return getInternal(this).deployTx;\n }\n getFunction(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedMethod(this, key));\n }\n getEvent(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedEvent(this, key));\n }\n async queryTransaction(hash) {\n // Is this useful?\n throw new Error(\"@TODO\");\n }\n async queryFilter(event, fromBlock = 0, toBlock = \"latest\") {\n const { addr, addrPromise } = getInternal(this);\n const address = (addr ? addr : (await addrPromise));\n const { fragment, topics } = await getSubTag(this, event);\n const filter = { address, topics, fromBlock, toBlock };\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not have a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"queryFilter\"\n });\n }\n return (await provider.getLogs(filter)).map((log) => {\n return new EventLog(log, this.interface, fragment);\n });\n }\n async on(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: false });\n sub.start();\n return this;\n }\n async once(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: true });\n sub.start();\n return this;\n }\n async emit(event, ...args) {\n return await emit(this, event, args, null);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n const { subs } = getInternal(this);\n let total = 0;\n for (const { listeners } of subs.values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n const { subs } = getInternal(this);\n let result = [];\n for (const { listeners } of subs.values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (listener == null || sub.listeners.length === 0) {\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n else {\n const { subs } = getInternal(this);\n for (const { tag, stop } of subs.values()) {\n stop();\n subs.delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return await this.off(event, listener);\n }\n static buildClass(abi) {\n class CustomContract extends BaseContract {\n constructor(address, runner = null) {\n super(address, abi, runner);\n }\n }\n return CustomContract;\n }\n ;\n static from(target, abi, runner = null) {\n const contract = new this(target, abi, runner);\n return contract;\n }\n}\nfunction _ContractBase() {\n return BaseContract;\n}\nexport class Contract extends _ContractBase() {\n}\n//# sourceMappingURL=contract.js.map","const subsChrs = \" !#$%&'()*+,-./<=>?@[]^_`{|}~\";\nconst Word = /^[a-z]*$/i;\nfunction unfold(words, sep) {\n let initial = 97;\n return words.reduce((accum, word) => {\n if (word === sep) {\n initial++;\n }\n else if (word.match(Word)) {\n accum.push(String.fromCharCode(initial) + word);\n }\n else {\n initial = 97;\n accum.push(word);\n }\n return accum;\n }, []);\n}\nexport function decode(data, subs) {\n // Replace all the substitutions with their expanded form\n for (let i = subsChrs.length - 1; i >= 0; i--) {\n data = data.split(subsChrs[i]).join(subs.substring(2 * i, 2 * i + 2));\n }\n // Get all tle clumps; each suffix, first-increment and second-increment\n const clumps = [];\n const leftover = data.replace(/(:|([0-9])|([A-Z][a-z]*))/g, (all, item, semi, word) => {\n if (semi) {\n for (let i = parseInt(semi); i >= 0; i--) {\n clumps.push(\";\");\n }\n }\n else {\n clumps.push(item.toLowerCase());\n }\n return \"\";\n });\n if (leftover) {\n throw new Error(`leftovers: ${JSON.stringify(leftover)}`);\n }\n return unfold(unfold(clumps, \";\"), \":\");\n}\nexport function decodeOwl(data) {\n if (data[0] !== \"0\") {\n throw TypeError(\"unsupported auwl data\");\n }\n return decode(data.substring(1 + 2 * subsChrs.length), data.substring(1, 1 + 2 * subsChrs.length));\n}\n//# sourceMappingURL=decode-owl.js.map","export const version = \"@ethersproject/wordlists@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { defineProperties } from \"@ethersproject/properties\";\nexport class Wordlist {\n constructor(locale) {\n defineProperties(this, { locale });\n }\n // Subclasses may override this\n split(mnemonic) {\n return mnemonic.toLowerCase().split(/ +/g);\n }\n // Subclasses may override this\n join(words) {\n return words.join(\" \");\n }\n}\n//# sourceMappingURL=wordlist.js.map","// Use the encode-latin.js script to create the necessary\n// data files to be consumed by this class\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwl_instances, _WordlistOwl_data, _WordlistOwl_checksum, _WordlistOwl_words, _WordlistOwl_loadWords;\nimport { id } from \"@ethersproject/hash\";\nimport { decodeOwl } from \"./decode-owl.js\";\nimport { logger } from \"./logger.js\";\nimport { Wordlist } from \"./wordlist.js\";\nexport class WordlistOwl extends Wordlist {\n constructor(locale, data, checksum) {\n super(locale);\n _WordlistOwl_instances.add(this);\n _WordlistOwl_data.set(this, void 0);\n _WordlistOwl_checksum.set(this, void 0);\n _WordlistOwl_words.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwl_data, data, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_checksum, checksum, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_words, null, \"f\");\n }\n get _data() { return __classPrivateFieldGet(this, _WordlistOwl_data, \"f\"); }\n _decodeWords() {\n return decodeOwl(__classPrivateFieldGet(this, _WordlistOwl_data, \"f\"));\n }\n getWord(index) {\n const words = __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this);\n if (index < 0 || index >= words.length) {\n logger.throwArgumentError(`invalid word index: ${index}`, \"index\", index);\n }\n return words[index];\n }\n getWordIndex(word) {\n return __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this).indexOf(word);\n }\n}\n_WordlistOwl_data = new WeakMap(), _WordlistOwl_checksum = new WeakMap(), _WordlistOwl_words = new WeakMap(), _WordlistOwl_instances = new WeakSet(), _WordlistOwl_loadWords = function _WordlistOwl_loadWords() {\n if (__classPrivateFieldGet(this, _WordlistOwl_words, \"f\") == null) {\n const words = this._decodeWords();\n // Verify the computed list matches the official list\n const checksum = id(words.join(\"\\n\") + \"\\n\");\n /* c8 ignore start */\n if (checksum !== __classPrivateFieldGet(this, _WordlistOwl_checksum, \"f\")) {\n throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);\n }\n /* c8 ignore stop */\n __classPrivateFieldSet(this, _WordlistOwl_words, words, \"f\");\n }\n return __classPrivateFieldGet(this, _WordlistOwl_words, \"f\");\n};\n//# sourceMappingURL=wordlist-owl.js.map","import { WordlistOwl } from \"./wordlist-owl.js\";\nconst words = \"0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-EgSe0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-PM&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryFN Noc|PutQuirySSue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurEAyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOgAyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NNGradeHoldOnP Set1BOng::Rd3Ar~ow9UUngU`:3BraRo9NeO\";\nconst checksum = \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\";\nexport class LangEn extends WordlistOwl {\n constructor() { super(\"en\", words, checksum); }\n}\nexport const langEn = new LangEn();\n//# sourceMappingURL=lang-en.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","export const version = \"@ethersproject/wallet@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { langEn as en } from \"./lang-en.js\";\nexport const wordlists = Object.freeze({\n en\n});\n//# sourceMappingURL=wordlists-en.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwlA_accent;\nimport { WordlistOwl } from \"./wordlist-owl.js\";\nimport { decodeOwlA } from \"./decode-owla.js\";\nexport class WordlistOwlA extends WordlistOwl {\n constructor(locale, data, accent, checksum) {\n super(locale, data, checksum);\n _WordlistOwlA_accent.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwlA_accent, accent, \"f\");\n }\n get _accent() { return __classPrivateFieldGet(this, _WordlistOwlA_accent, \"f\"); }\n _decodeWords() {\n return decodeOwlA(this._data, this._accent);\n }\n}\n_WordlistOwlA_accent = new WeakMap();\n//# sourceMappingURL=wordlist-owla.js.map","import { decodeBits } from \"./bit-reader.js\";\nimport { decodeOwl } from \"./decode-owl.js\";\nexport function decodeOwlA(data, accents) {\n let words = decodeOwl(data).join(\",\");\n // Inject the accents\n accents.split(/,/g).forEach((accent) => {\n const match = accent.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);\n if (!match) {\n throw new Error(\"internal error parsing accents\");\n }\n let posOffset = 0;\n const positions = decodeBits(parseInt(match[3]), match[4]);\n const charCode = parseInt(match[2]);\n const regex = new RegExp(`([${match[1]}])`, \"g\");\n words = words.replace(regex, (all, letter) => {\n const rem = --positions[posOffset];\n if (rem === 0) {\n letter = String.fromCharCode(letter.charCodeAt(0), charCode);\n posOffset++;\n }\n return letter;\n });\n });\n return words.split(\",\");\n}\n//# sourceMappingURL=decode-owla.js.map","const Base64 = \")!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_\";\nexport function decodeBits(width, data) {\n const maxValue = (1 << width) - 1;\n const result = [];\n let accum = 0, bits = 0, flood = 0;\n for (let i = 0; i < data.length; i++) {\n // Accumulate 6 bits of data\n accum = ((accum << 6) | Base64.indexOf(data[i]));\n bits += 6;\n // While we have enough for a word...\n while (bits >= width) {\n // ...read the word\n const value = (accum >> (bits - width));\n accum &= (1 << (bits - width)) - 1;\n bits -= width;\n // A value of 0 indicates we exceeded maxValue, it\n // floods over into the next value\n if (value === 0) {\n flood += maxValue;\n }\n else {\n result.push(value + flood);\n flood = 0;\n }\n }\n }\n return result;\n}\n//# sourceMappingURL=bit-reader.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { pbkdf2, sha256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { langEn } from \"@ethersproject/wordlists\";\nimport { logger } from \"./logger.js\";\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits) {\n return ((1 << bits) - 1) << (8 - bits) & 0xff;\n}\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits) {\n return ((1 << bits) - 1) & 0xff;\n}\nfunction mnemonicToEntropy(mnemonic, wordlist = langEn) {\n logger.assertNormalize(\"NFKD\");\n if (wordlist == null) {\n wordlist = langEn;\n }\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0 || words.length < 12 || words.length > 24) {\n logger.throwArgumentError(\"invalid mnemonic length\", \"mnemonic\", \"[ REDACTED ]\");\n }\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) {\n logger.throwArgumentError(`invalid mnemonic word at index ${i}`, \"mnemonic\", \"[ REDACTED ]\");\n }\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n const entropyBits = 32 * words.length / 3;\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n logger.throwArgumentError(\"invalid mnemonic checksum\", \"mnemonic\", \"[ REDACTED ]\");\n }\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\nfunction entropyToMnemonic(entropy, wordlist = langEn) {\n if ((entropy.length % 4) || entropy.length < 16 || entropy.length > 32) {\n logger.throwArgumentError(\"invalid entropy size\", \"entropy\", \"[ REDACTED ]\");\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n const indices = [0];\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n remainingBits -= 8;\n // This byte will complete an 11-bit index\n }\n else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n remainingBits += 3;\n }\n }\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = parseInt(sha256(entropy).substring(2, 4), 16) & getUpperMask(checksumBits);\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n return wordlist.join(indices.map((index) => wordlist.getWord(index)));\n}\nconst _guard = {};\nexport class Mnemonic {\n constructor(guard, entropy, phrase, password, wordlist) {\n if (password == null) {\n password = \"\";\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n logger.assertPrivate(guard, _guard, \"Mnemonic\");\n defineProperties(this, { phrase, password, wordlist, entropy });\n }\n computeSeed() {\n const salt = toUtf8Bytes(\"mnemonic\" + this.password, UnicodeNormalizationForm.NFKD);\n return pbkdf2(toUtf8Bytes(this.phrase, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n }\n static fromPhrase(phrase, password, wordlist) {\n // Normalize the case and space; throws if invalid\n const entropy = mnemonicToEntropy(phrase, wordlist);\n phrase = entropyToMnemonic(logger.getBytes(entropy), wordlist);\n return new Mnemonic(_guard, entropy, phrase, password, wordlist);\n }\n static fromEntropy(_entropy, password, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n const phrase = entropyToMnemonic(entropy, wordlist);\n return new Mnemonic(_guard, hexlify(entropy), phrase, password, wordlist);\n }\n static entropyToPhrase(_entropy, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n return entropyToMnemonic(entropy, wordlist);\n }\n static phraseToEntropy(phrase, wordlist) {\n return mnemonicToEntropy(phrase, wordlist);\n }\n static isValidMnemonic(phrase, wordlist) {\n try {\n mnemonicToEntropy(phrase, wordlist);\n return true;\n }\n catch (error) { }\n return false;\n }\n}\n//# sourceMappingURL=mnemonic.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _BaseWallet_signingKey;\nimport { getAddress, resolveAddress } from \"@ethersproject/address\";\nimport { hashMessage, TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { AbstractSigner } from \"@ethersproject/providers\";\nimport { computeAddress, Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class BaseWallet extends AbstractSigner {\n constructor(privateKey, provider) {\n super(provider);\n _BaseWallet_signingKey.set(this, void 0);\n __classPrivateFieldSet(this, _BaseWallet_signingKey, privateKey, \"f\");\n const address = computeAddress(this.signingKey.publicKey);\n defineProperties(this, { address });\n }\n // Store these in getters to reduce visibility in console.log\n get signingKey() { return __classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"); }\n get privateKey() { return this.signingKey.privateKey; }\n async getAddress() { return this.address; }\n connect(provider) {\n return new BaseWallet(__classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"), provider);\n }\n async signTransaction(_tx) {\n // Replace any Addressable or ENS name with an address\n const tx = Object.assign({}, _tx, await resolveProperties({\n to: (_tx.to ? resolveAddress(_tx.to, this.provider) : undefined),\n from: (_tx.from ? resolveAddress(_tx.from, this.provider) : undefined)\n }));\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"tx.from\", _tx.from);\n }\n delete tx.from;\n }\n // Build the transaction\n const btx = Transaction.from(tx);\n btx.signature = this.signingKey.sign(btx.unsignedHash);\n return btx.serialized;\n }\n async signMessage(message) {\n return this.signingKey.sign(hashMessage(message)).serialized;\n }\n async signTypedData(domain, types, value) {\n // Populate any ENS names\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (name) => {\n if (this.provider == null) {\n return logger.throwError(\"cannot resolve ENS names without a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n info: { name }\n });\n }\n const address = await this.provider.resolveName(name);\n if (address == null) {\n return logger.throwError(\"unconfigured ENS name\", \"UNCONFIGURED_NAME\", {\n value: name\n });\n }\n return address;\n });\n return this.signingKey.sign(TypedDataEncoder.hash(populated.domain, types, populated.value)).serialized;\n }\n}\n_BaseWallet_signingKey = new WeakMap();\n//# sourceMappingURL=base-wallet.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _a, _HDNodeWallet_fromSeed, _HDNodeWalletManager_root;\nimport { arrayify, concat, dataSlice, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac, randomBytes, ripemd160, sha256 } from \"@ethersproject/crypto\";\nimport { decodeBase58, encodeBase58, toBigInt, toHex } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { VoidSigner } from \"@ethersproject/providers\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { langEn } from \"@ethersproject/wordlists/lib/lang-en.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nimport { BaseWallet } from \"./base-wallet.js\";\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n// \"Bitcoin seed\"\nconst MasterSecret = new Uint8Array([66, 105, 116, 99, 111, 105, 110, 32, 115, 101, 101, 100]);\nconst HardenedBit = 0x80000000;\nconst N = BigInt(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\nconst Nibbles = \"0123456789abcdef\";\nfunction zpad(value, length) {\n let result = \"\";\n while (value) {\n result = Nibbles[value % 16] + result;\n value = Math.trunc(value / 16);\n }\n while (result.length < length * 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction encodeBase58Check(_value) {\n const value = logger.getBytes(_value);\n const check = dataSlice(sha256(sha256(value)), 0, 4);\n const bytes = concat([value, check]);\n return encodeBase58(bytes);\n}\nconst _guard = {};\nfunction ser_I(index, chainCode, publicKey, privateKey) {\n const data = new Uint8Array(37);\n if (index & HardenedBit) {\n if (privateKey == null) {\n return logger.throwError(\"cannot derive child of neutered node\", \"UNSUPPORTED_OPERATION\", {\n operation: \"deriveChild\"\n });\n }\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(privateKey), 1);\n }\n else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(publicKey));\n }\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) {\n data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff);\n }\n const I = arrayify(computeHmac(\"sha512\", chainCode, data));\n return { IL: I.slice(0, 32), IR: I.slice(32) };\n}\nfunction derivePath(node, path) {\n const components = path.split(\"/\");\n if (components.length === 0 || (components[0] === \"m\" && node.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n if (components[0] === \"m\") {\n components.shift();\n }\n let result = node;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(HardenedBit + index);\n }\n else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(index);\n }\n else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n return result;\n}\nexport class HDNodeWallet extends BaseWallet {\n constructor(guard, signingKey, parentFingerprint, chainCode, path, index, depth, mnemonic, provider) {\n super(signingKey, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeWallet\");\n defineProperties(this, { publicKey: signingKey.compressedPublicKey });\n const fingerprint = dataSlice(ripemd160(sha256(this.publicKey)), 0, 4);\n defineProperties(this, {\n parentFingerprint, fingerprint,\n chainCode, path, index, depth\n });\n defineProperties(this, { mnemonic });\n }\n connect(provider) {\n return new HDNodeWallet(_guard, this.signingKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.mnemonic, provider);\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488ADE4\", zpad(this.depth, 1), this.parentFingerprint,\n zpad(this.index, 4), this.chainCode,\n concat([\"0x00\", this.privateKey])\n ]));\n }\n hasPath() { return (this.path != null); }\n neuter() {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.provider);\n }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, this.privateKey);\n const ki = new SigningKey(toHex((toBigInt(IL) + BigInt(this.privateKey)) % N, 32));\n return new HDNodeWallet(_guard, ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.mnemonic, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n static fromSeed(seed) {\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, seed, null);\n }\n static fromPhrase(phrase, password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromPhrase(phrase, password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromMnemonic(mnemonic, path = defaultPath) {\n if (!path) {\n path = defaultPath;\n }\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromExtendedKey(extendedKey) {\n const bytes = arrayify(decodeBase58(extendedKey)); // @TODO: redact\n if (bytes.length !== 82 || encodeBase58Check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[ REDACTED ]\");\n }\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\":\n case \"0x043587cf\": {\n const publicKey = hexlify(key);\n return new HDNodeVoidWallet(_guard, computeAddress(publicKey), publicKey, parentFingerprint, chainCode, null, index, depth, null);\n }\n // Private Key\n case \"0x0488ade4\":\n case \"0x04358394 \":\n if (key[0] !== 0) {\n break;\n }\n return new HDNodeWallet(_guard, new SigningKey(key.slice(1)), parentFingerprint, chainCode, null, index, depth, null, null);\n }\n return logger.throwArgumentError(\"invalid extended key prefix\", \"extendedKey\", \"[ REDACTED ]\");\n }\n static createRandom(password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromEntropy(randomBytes(16), password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n}\n_a = HDNodeWallet, _HDNodeWallet_fromSeed = function _HDNodeWallet_fromSeed(_seed, mnemonic) {\n const seed = logger.getBytes(_seed, \"seed\");\n if (seed.length < 16 || seed.length > 64) {\n throw new Error(\"invalid seed\");\n }\n const I = arrayify(computeHmac(\"sha512\", MasterSecret, seed));\n const signingKey = new SigningKey(hexlify(I.slice(0, 32)));\n return new HDNodeWallet(_guard, signingKey, \"0x00000000\", hexlify(I.slice(32)), \"m\", 0, 0, mnemonic, null);\n};\nexport class HDNodeVoidWallet extends VoidSigner {\n constructor(guard, address, publicKey, parentFingerprint, chainCode, path, index, depth, provider) {\n super(address, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeVoidWallet\");\n defineProperties(this, { publicKey });\n const fingerprint = dataSlice(ripemd160(sha256(publicKey)), 0, 4);\n defineProperties(this, {\n publicKey, fingerprint, parentFingerprint, chainCode, path, index, depth\n });\n }\n connect(provider) {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, provider);\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488B21E\",\n zpad(this.depth, 1),\n this.parentFingerprint,\n zpad(this.index, 4),\n this.chainCode,\n this.publicKey,\n ]));\n }\n hasPath() { return (this.path != null); }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, null);\n const Ki = SigningKey._addPoints(IL, this.publicKey, true);\n const address = computeAddress(Ki);\n return new HDNodeVoidWallet(_guard, address, Ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n}\nexport class HDNodeWalletManager {\n constructor(phrase, password = \"\", path = \"m/44'/60'/0'/0\", locale = langEn) {\n _HDNodeWalletManager_root.set(this, void 0);\n __classPrivateFieldSet(this, _HDNodeWalletManager_root, HDNodeWallet.fromPhrase(phrase, password, path, locale), \"f\");\n }\n getSigner(index = 0) {\n return __classPrivateFieldGet(this, _HDNodeWalletManager_root, \"f\").deriveChild(index);\n }\n}\n_HDNodeWalletManager_root = new WeakMap();\nexport function getAccountPath(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index < 0 || index >= HardenedBit) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${index}'/0/0`;\n}\n//# sourceMappingURL=hdwallet.js.map","/*! MIT License. Copyright 2015-2022 Richard Moore . See LICENSE.txt. */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AES_key, _AES_Kd, _AES_Ke;\n// Number of rounds by keysize\nconst numberOfRounds = { 16: 10, 24: 12, 32: 14 };\n// Round constant words\nconst rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n// S-box and Inverse S-box (S is for Substitution)\nconst S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\nconst Si = [0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n// Transformations for encryption\nconst T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\nconst T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\nconst T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\nconst T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n// Transformations for decryption\nconst T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\nconst T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\nconst T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\nconst T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n// Transformations for decryption key expansion\nconst U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\nconst U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\nconst U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\nconst U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\nfunction convertToInt32(bytes) {\n const result = [];\n for (let i = 0; i < bytes.length; i += 4) {\n result.push((bytes[i] << 24) | (bytes[i + 1] << 16) | (bytes[i + 2] << 8) | bytes[i + 3]);\n }\n return result;\n}\nexport class AES {\n constructor(key) {\n _AES_key.set(this, void 0);\n _AES_Kd.set(this, void 0);\n _AES_Ke.set(this, void 0);\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n __classPrivateFieldSet(this, _AES_key, new Uint8Array(key), \"f\");\n const rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new TypeError('invalid key size (must be 16, 24 or 32 bytes)');\n }\n // encryption round keys\n __classPrivateFieldSet(this, _AES_Ke, [], \"f\");\n // decryption round keys\n __classPrivateFieldSet(this, _AES_Kd, [], \"f\");\n for (let i = 0; i <= rounds; i++) {\n __classPrivateFieldGet(this, _AES_Ke, \"f\").push([0, 0, 0, 0]);\n __classPrivateFieldGet(this, _AES_Kd, \"f\").push([0, 0, 0, 0]);\n }\n const roundKeyCount = (rounds + 1) * 4;\n const KC = this.key.length / 4;\n // convert the key into ints\n const tk = convertToInt32(this.key);\n // copy values into round key arrays\n let index;\n for (let i = 0; i < KC; i++) {\n index = i >> 2;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[index][i % 4] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - index][i % 4] = tk[i];\n }\n // key expansion (fips-197 section 5.2)\n let rconpointer = 0;\n let t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (let i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n }\n else {\n for (let i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n tk[KC / 2] ^= (S[tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n for (let i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n // copy values into round key arrays\n let i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][c] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - r][c] = tk[i++];\n t++;\n }\n }\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (let r = 1; r < rounds; r++) {\n for (let c = 0; c < 4; c++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[tt & 0xFF]);\n }\n }\n }\n get key() { return __classPrivateFieldGet(this, _AES_key, \"f\").slice(); }\n encrypt(plaintext) {\n if (plaintext.length != 16) {\n throw new TypeError('invalid plaintext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Ke, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(plaintext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Ke, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T1[(t[i] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[t[(i + 3) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Ke, \"f\")[rounds][i];\n result[4 * i] = (S[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[t[(i + 3) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n decrypt(ciphertext) {\n if (ciphertext.length != 16) {\n throw new TypeError('invalid ciphertext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Kd, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(ciphertext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Kd, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T5[(t[i] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[t[(i + 1) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds][i];\n result[4 * i] = (Si[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[t[(i + 1) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n}\n_AES_key = new WeakMap(), _AES_Kd = new WeakMap(), _AES_Ke = new WeakMap();\n//# sourceMappingURL=aes.js.map","import { AES } from \"./aes.js\";\nexport class ModeOfOperation {\n constructor(name, key, cls) {\n if (cls && !(this instanceof cls)) {\n throw new Error(`${name} must be instantiated with \"new\"`);\n }\n Object.defineProperties(this, {\n aes: { enumerable: true, value: new AES(key) },\n name: { enumerable: true, value: name }\n });\n }\n}\n//# sourceMappingURL=mode.js.map","// Cipher Block Chaining\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CBC_iv, _CBC_lastBlock;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CBC extends ModeOfOperation {\n constructor(key, iv) {\n super(\"ECC\", key, CBC);\n _CBC_iv.set(this, void 0);\n _CBC_lastBlock.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CBC_iv, \"f\")); }\n encrypt(plaintext) {\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext.length);\n for (let i = 0; i < plaintext.length; i += 16) {\n for (let j = 0; j < 16; j++) {\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] ^= plaintext[i + j];\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.aes.encrypt(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\")), \"f\");\n ciphertext.set(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\"), i);\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n const plaintext = new Uint8Array(ciphertext.length);\n for (let i = 0; i < ciphertext.length; i += 16) {\n const block = this.aes.decrypt(ciphertext.subarray(i, i + 16));\n for (let j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j];\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] = ciphertext[i + j];\n }\n }\n return plaintext;\n }\n}\n_CBC_iv = new WeakMap(), _CBC_lastBlock = new WeakMap();\n//# sourceMappingURL=mode-cbc.js.map","// Cipher Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CFB_instances, _CFB_iv, _CFB_shiftRegister, _CFB_shift;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CFB extends ModeOfOperation {\n constructor(key, iv, segmentSize = 8) {\n super(\"CFB\", key, CFB);\n _CFB_instances.add(this);\n _CFB_iv.set(this, void 0);\n _CFB_shiftRegister.set(this, void 0);\n // This library currently only handles byte-aligned segmentSize\n if (!Number.isInteger(segmentSize) || (segmentSize % 8)) {\n throw new TypeError(\"invalid segmentSize\");\n }\n Object.defineProperties(this, {\n segmentSize: { enumerable: true, value: segmentSize }\n });\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CFB_shiftRegister, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CFB_iv, \"f\")); }\n encrypt(plaintext) {\n if (8 * plaintext.length % this.segmentSize) {\n throw new TypeError(\"invalid plaintext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n ciphertext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (8 * ciphertext.length % this.segmentSize) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const plaintext = new Uint8Array(ciphertext);\n for (let i = 0; i < plaintext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return plaintext;\n }\n}\n_CFB_iv = new WeakMap(), _CFB_shiftRegister = new WeakMap(), _CFB_instances = new WeakSet(), _CFB_shift = function _CFB_shift(data) {\n const segmentSize = this.segmentSize / 8;\n // Shift the register\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").subarray(segmentSize));\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(data.subarray(0, segmentSize), 16 - segmentSize);\n};\n//# sourceMappingURL=mode-cfb.js.map","// Counter Mode\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CTR_remaining, _CTR_remainingIndex, _CTR_counter;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CTR extends ModeOfOperation {\n constructor(key, initialValue) {\n super(\"CTR\", key, CTR);\n // Remaining bytes for the one-time pad\n _CTR_remaining.set(this, void 0);\n _CTR_remainingIndex.set(this, void 0);\n // The current counter\n _CTR_counter.set(this, void 0);\n __classPrivateFieldSet(this, _CTR_counter, new Uint8Array(16), \"f\");\n __classPrivateFieldGet(this, _CTR_counter, \"f\").fill(0);\n __classPrivateFieldSet(this, _CTR_remaining, __classPrivateFieldGet(this, _CTR_counter, \"f\"), \"f\"); // This will be discarded immediately\n __classPrivateFieldSet(this, _CTR_remainingIndex, 16, \"f\");\n if (initialValue == null) {\n initialValue = 1;\n }\n if (typeof (initialValue) === \"number\") {\n this.setCounterValue(initialValue);\n }\n else {\n this.setCounterBytes(initialValue);\n }\n }\n get counter() { return new Uint8Array(__classPrivateFieldGet(this, _CTR_counter, \"f\")); }\n setCounterValue(value) {\n if (!Number.isInteger(value) || value < 0 || value > Number.MAX_SAFE_INTEGER) {\n throw new TypeError(\"invalid counter initial integer value\");\n }\n for (let index = 15; index >= 0; --index) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[index] = value % 256;\n value = Math.floor(value / 256);\n }\n }\n setCounterBytes(value) {\n if (value.length !== 16) {\n throw new TypeError(\"invalid counter initial Uint8Array value length\");\n }\n __classPrivateFieldGet(this, _CTR_counter, \"f\").set(value);\n }\n increment() {\n for (let i = 15; i >= 0; i--) {\n if (__classPrivateFieldGet(this, _CTR_counter, \"f\")[i] === 255) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i] = 0;\n }\n else {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i]++;\n break;\n }\n }\n }\n encrypt(plaintext) {\n var _a, _b;\n const crypttext = new Uint8Array(plaintext);\n for (let i = 0; i < crypttext.length; i++) {\n if (__classPrivateFieldGet(this, _CTR_remainingIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _CTR_remaining, this.aes.encrypt(__classPrivateFieldGet(this, _CTR_counter, \"f\")), \"f\");\n __classPrivateFieldSet(this, _CTR_remainingIndex, 0, \"f\");\n this.increment();\n }\n crypttext[i] ^= __classPrivateFieldGet(this, _CTR_remaining, \"f\")[__classPrivateFieldSet(this, _CTR_remainingIndex, (_b = __classPrivateFieldGet(this, _CTR_remainingIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return crypttext;\n }\n decrypt(ciphertext) {\n return this.encrypt(ciphertext);\n }\n}\n_CTR_remaining = new WeakMap(), _CTR_remainingIndex = new WeakMap(), _CTR_counter = new WeakMap();\n//# sourceMappingURL=mode-ctr.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\nimport { logger } from \"./logger.js\";\nexport function looseArrayify(hexString) {\n if (typeof (hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\nexport function zpad(value, length) {\n value = String(value);\n while (value.length < length) {\n value = '0' + value;\n }\n return value;\n}\nexport function getPassword(password) {\n if (typeof (password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\nexport function spelunk(object, _path) {\n const match = _path.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);\n if (match == null) {\n return logger.throwArgumentError(\"invalid path\", \"path\", _path);\n }\n const path = match[1];\n const type = match[3];\n const reqd = (match[4] === \"!\");\n let cur = object;\n for (const comp of path.toLowerCase().split('.')) {\n // Search for a child object with a case-insensitive matching key\n if (Array.isArray(cur)) {\n if (!comp.match(/^[0-9]+$/)) {\n break;\n }\n cur = cur[parseInt(comp)];\n }\n else if (typeof (cur) === \"object\") {\n let found = null;\n for (const key in cur) {\n if (key.toLowerCase() === comp) {\n found = cur[key];\n break;\n }\n }\n cur = found;\n }\n else {\n cur = null;\n }\n if (cur == null) {\n break;\n }\n }\n if (reqd && cur == null) {\n logger.throwArgumentError(\"missing required value\", \"path\", path);\n }\n if (type && cur != null) {\n if (type === \"int\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9]+$/)) {\n return parseInt(cur);\n }\n else if (Number.isSafeInteger(cur)) {\n return cur;\n }\n }\n if (type === \"number\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9.]*$/)) {\n return parseFloat(cur);\n }\n }\n if (type === \"data\") {\n if (typeof (cur) === \"string\") {\n return looseArrayify(cur);\n }\n }\n if (type === \"array\" && Array.isArray(cur)) {\n return cur;\n }\n if (type === typeof (cur)) {\n return cur;\n }\n logger.throwArgumentError(`wrong type found for ${type} `, \"path\", path);\n }\n return cur;\n}\n/*\nexport function follow(object: any, path: string): null | string {\n let currentChild = object;\n\n for (const comp of path.toLowerCase().split('/')) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comp) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n if (matchingChild === null) { return null; }\n\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// \"path/to/something:type!\"\nexport function followRequired(data: any, path: string): string {\n const value = follow(data, path);\n if (value != null) { return value; }\n return logger.throwArgumentError(\"invalid value\", `data:${ path }`,\n JSON.stringify(data));\n}\n*/\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes) {\n const bytes = logger.getBytes(randomBytes, \"randomBytes\");\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const value = hexlify(bytes);\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n//# sourceMappingURL=utils.js.map","import { CBC, pkcs7Strip } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { pbkdf2 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, looseArrayify, spelunk } from \"./utils.js\";\nexport function isCrowdsaleJson(json) {\n try {\n const data = JSON.parse(json);\n if (data.encseed) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\n// See: https://github.com/ethereum/pyethsaletool\nexport function decryptCrowdsaleJson(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n // Ethereum Address\n const address = getAddress(spelunk(data, \"ethaddr:string!\"));\n // Encrypted Seed\n const encseed = looseArrayify(spelunk(data, \"encseed:string!\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n // Decrypt the seed\n const aesCbc = new CBC(key, iv);\n const seed = pkcs7Strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n return { address, privateKey: id(seedHex) };\n}\n//# sourceMappingURL=json-crowdsale.js.map","export function pkcs7Pad(data) {\n const padder = 16 - (data.length % 16);\n const result = new Uint8Array(data.length + padder);\n result.set(data);\n for (let i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n}\nexport function pkcs7Strip(data) {\n if (data.length < 16) {\n throw new TypeError('PKCS#7 invalid length');\n }\n const padder = data[data.length - 1];\n if (padder > 16) {\n throw new TypeError('PKCS#7 padding byte out of range');\n }\n const length = data.length - padder;\n for (let i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new TypeError('PKCS#7 invalid padding byte');\n }\n }\n return new Uint8Array(data.subarray(0, length));\n}\n//# sourceMappingURL=padding.js.map","// Output Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _OFB_iv, _OFB_lastPrecipher, _OFB_lastPrecipherIndex;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class OFB extends ModeOfOperation {\n constructor(key, iv) {\n super(\"OFB\", key, OFB);\n _OFB_iv.set(this, void 0);\n _OFB_lastPrecipher.set(this, void 0);\n _OFB_lastPrecipherIndex.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.iv, \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 16, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _OFB_iv, \"f\")); }\n encrypt(plaintext) {\n var _a, _b;\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i++) {\n if (__classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.aes.encrypt(__classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")), \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 0, \"f\");\n }\n ciphertext[i] ^= __classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")[__classPrivateFieldSet(this, _OFB_lastPrecipherIndex, (_b = __classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n return this.encrypt(ciphertext);\n }\n}\n_OFB_iv = new WeakMap(), _OFB_lastPrecipher = new WeakMap(), _OFB_lastPrecipherIndex = new WeakMap();\n//# sourceMappingURL=mode-ofb.js.map","import { CTR } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256, pbkdf2, randomBytes, scrypt, scryptSync } from \"@ethersproject/crypto\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, spelunk, uuidV4, zpad } from \"./utils.js\";\nimport { version } from \"./_version.js\";\nconst defaultPath = \"m/44'/60'/0'/0/0\";\nexport function isKeystoreJson(json) {\n try {\n const data = JSON.parse(json);\n const version = ((data.version != null) ? parseInt(data.version) : 0);\n if (version === 3) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\nfunction decrypt(data, key, ciphertext) {\n const cipher = spelunk(data, \"crypto.cipher:string\");\n if (cipher === \"aes-128-ctr\") {\n const iv = spelunk(data, \"crypto.cipherparams.iv:data!\");\n const aesCtr = new CTR(key, iv);\n return hexlify(aesCtr.decrypt(ciphertext));\n }\n return logger.throwError(\"unsupported cipher\", \"UNSUPPORTED_OPERATION\", {\n operation: \"decrypt\"\n });\n}\nfunction getAccount(data, _key) {\n const key = logger.getBytes(_key);\n const ciphertext = spelunk(data, \"crypto.ciphertext:data!\");\n const computedMAC = hexlify(keccak256(concat([key.slice(16, 32), ciphertext]))).substring(2);\n if (computedMAC !== spelunk(data, \"crypto.mac:string!\").toLowerCase()) {\n return logger.throwArgumentError(\"incorrect password\", \"password\", \"[ REDACTED ]\");\n }\n const privateKey = decrypt(data, key.slice(0, 16), ciphertext);\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") {\n check = \"0x\" + check;\n }\n if (getAddress(check) !== address) {\n logger.throwArgumentError(\"keystore address/privateKey mismatch\", \"address\", data.address);\n }\n }\n const account = { address, privateKey };\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n const version = spelunk(data, \"x-ethers.version:string\");\n if (version === \"0.1\") {\n const mnemonicKey = key.slice(32, 64);\n const mnemonicCiphertext = spelunk(data, \"x-ethers.mnemonicCiphertext:data!\");\n const mnemonicIv = spelunk(data, \"x-ethers.mnemonicCounter:data!\");\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n account.mnemonic = {\n path: (spelunk(data, \"x-ethers.path:string\") || defaultPath),\n locale: (spelunk(data, \"x-ethers.locale:string\") || \"en\"),\n entropy: hexlify(arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext)))\n };\n }\n return account;\n}\nfunction getKdfParams(data) {\n const kdf = spelunk(data, \"crypto.kdf:string\");\n if (kdf && typeof (kdf) === \"string\") {\n const throwError = function (name, value) {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n };\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const N = spelunk(data, \"crypto.kdfparams.n:int!\");\n const r = spelunk(data, \"crypto.kdfparams.r:int!\");\n const p = spelunk(data, \"crypto.kdfparams.p:int!\");\n // Check for all required parameters\n if (!N || !r || !p) {\n return throwError(\"kdf\", kdf);\n }\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) {\n return throwError(\"N\", N);\n }\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n return throwError(\"dklen\", dkLen);\n }\n return { name: \"scrypt\", salt, N, r, p, dkLen: 64 };\n }\n else if (kdf.toLowerCase() === \"pbkdf2\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const prf = spelunk(data, \"crypto.kdfparams.prf:string!\");\n const algorithm = prf.split(\"-\").pop();\n if (algorithm !== \"sha256\" && algorithm !== \"sha512\") {\n return throwError(\"prf\", prf);\n }\n const count = spelunk(data, \"crypto.kdfparams.c:int!\");\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return { name: \"pbkdf2\", salt, count, dkLen, algorithm };\n }\n }\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\nexport function decryptKeystoreJsonSync(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = scryptSync(password, salt, N, r, p, dkLen);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport async function decryptKeystoreJson(json, _password, progress) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n if (progress) {\n progress(0);\n await stall(0);\n }\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n if (progress) {\n progress(1);\n await stall(0);\n }\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = await scrypt(password, salt, N, r, p, dkLen, progress);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nexport async function encryptKeystoreJson(account, password, options, progressCallback) {\n // Check the address matches the private key\n //if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n // throw new Error(\"address/privateKey mismatch\");\n //}\n // Check the mnemonic (if any) matches the private key\n /*\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n */\n // The options are optional, so adjust the call as needed\n if (typeof (options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n const privateKey = logger.getBytes(account.privateKey, \"privateKey\");\n const passwordBytes = getPassword(password);\n /*\n let mnemonic: null | Mnemonic = null;\n let entropy: Uint8Array = null\n let path: string = null;\n let locale: string = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n mnemonic = Mnemonic.from(\n }\n */\n // Check/generate the salt\n const salt = (options.salt != null) ? logger.getBytes(options.salt, \"options.slat\") : randomBytes(32);\n // Override initialization vector\n const iv = (options.iv != null) ? logger.getBytes(options.iv, \"options.iv\") : randomBytes(16);\n if (iv.length !== 16) {\n logger.throwArgumentError(\"invalid options.iv\", \"options.iv\", options.iv);\n }\n // Override the uuid\n const uuidRandom = (options.uuid != null) ? logger.getBytes(options.uuid, \"options.uuid\") : randomBytes(16);\n if (uuidRandom.length !== 16) {\n logger.throwArgumentError(\"invalid options.uuid\", \"options.uuid\", options.iv);\n }\n if (uuidRandom.length !== 16) {\n throw new Error(\"invalid uuid\");\n }\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) {\n N = options.scrypt.N;\n }\n if (options.scrypt.r) {\n r = options.scrypt.r;\n }\n if (options.scrypt.p) {\n p = options.scrypt.p;\n }\n }\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n const _key = await scrypt(passwordBytes, salt, N, r, p, 64, progressCallback);\n const key = arrayify(_key);\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n // Encrypt the private key\n const aesCtr = new CTR(derivedKey, iv);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]));\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n Crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (account.mnemonic) {\n const client = (options.client != null) ? options.client : `ethers/${version}`;\n const path = account.mnemonic.path || defaultPath;\n const locale = account.mnemonic.locale || \"en\";\n const mnemonicKey = key.slice(32, 64);\n const entropy = logger.getBytes(account.mnemonic.entropy, \"account.mnemonic.entropy\");\n const mnemonicIv = randomBytes(16);\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\");\n const gethFilename = (\"UTC--\" + timestamp + \"--\" + data.address);\n data[\"x-ethers\"] = {\n client, gethFilename, path, locale,\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n version: \"0.1\"\n };\n }\n return JSON.stringify(data);\n}\n//# sourceMappingURL=json-keystore.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Wallet_mnemonic;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { randomBytes } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { BaseWallet } from \"./base-wallet.js\";\nimport { HDNodeWallet } from \"./hdwallet.js\";\nimport { decryptCrowdsaleJson, isCrowdsaleJson } from \"./json-crowdsale.js\";\nimport { decryptKeystoreJson, decryptKeystoreJsonSync, isKeystoreJson } from \"./json-keystore.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nfunction tryWallet(value) {\n try {\n if (!value || !value.signingKey) {\n return null;\n }\n const key = trySigningKey(value.signingKey);\n if (key == null || computeAddress(key.publicKey) !== value.address) {\n return null;\n }\n if (value.mnemonic) {\n const wallet = HDNodeWallet.fromMnemonic(value.mnemonic);\n if (wallet.privateKey !== key.privateKey) {\n return null;\n }\n }\n return value;\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\n// Try using value as mnemonic to derive the defaultPath HDodeWallet\nfunction tryMnemonic(value) {\n try {\n if (value == null || typeof (value.phrase) !== \"string\" ||\n typeof (value.password) !== \"string\" ||\n value.wordlist == null) {\n return null;\n }\n return HDNodeWallet.fromPhrase(value.phrase, value.password, null, value.wordlist);\n }\n catch (error) {\n console.log(error);\n }\n return null;\n}\nfunction trySigningKey(value) {\n try {\n if (!value || !isHexString(value.privateKey, 32)) {\n return null;\n }\n const key = value.privateKey;\n if (SigningKey.computePublicKey(key) !== value.publicKey) {\n return null;\n }\n return new SigningKey(key);\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport class Wallet extends BaseWallet {\n constructor(key, provider) {\n let signingKey = null;\n let mnemonic = null;\n // A normal private key\n if (typeof (key) === \"string\") {\n signingKey = new SigningKey(key);\n }\n // Try Wallet\n if (signingKey == null) {\n const wallet = tryWallet(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // Try Mnemonic, with the defaultPath wallet\n if (signingKey == null) {\n const wallet = tryMnemonic(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // A signing key\n if (signingKey == null) {\n signingKey = trySigningKey(key);\n }\n if (signingKey == null) {\n logger.throwArgumentError(\"invalid key\", \"key\", \"[ REDACTED ]\");\n }\n super(signingKey, provider);\n _Wallet_mnemonic.set(this, void 0);\n __classPrivateFieldSet(this, _Wallet_mnemonic, mnemonic, \"f\");\n }\n // Store this in a getter to reduce visibility in console.log\n get mnemonic() { return __classPrivateFieldGet(this, _Wallet_mnemonic, \"f\"); }\n connect(provider) {\n return new Wallet(this, provider);\n }\n async encrypt(password, options, progressCallback) {\n throw new Error(\"TODO\");\n }\n encryptSync(password, options) {\n throw new Error(\"TODO\");\n }\n static async fromEncryptedJson(json, password, progress) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = await decryptKeystoreJson(json, password, progress);\n }\n else if (isCrowdsaleJson(json)) {\n if (progress) {\n progress(0);\n await stall(0);\n }\n account = decryptCrowdsaleJson(json, password);\n if (progress) {\n progress(1);\n await stall(0);\n }\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static fromEncryptedJsonSync(json, password) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = decryptKeystoreJsonSync(json, password);\n }\n else if (isCrowdsaleJson(json)) {\n account = decryptCrowdsaleJson(json, password);\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static createRandom(provider, password, wordlist) {\n return new Wallet(Mnemonic.fromEntropy(randomBytes(16), password, wordlist), provider);\n }\n static fromMnemonic(mnemonic, provider) {\n return new Wallet(mnemonic, provider);\n }\n static fromPhrase(phrase, provider, password = \"\", wordlist) {\n return new Wallet(Mnemonic.fromPhrase(phrase, password, wordlist), provider);\n }\n}\n_Wallet_mnemonic = new WeakMap();\n//# sourceMappingURL=wallet.js.map","export const version = \"ethers@6.0.0-beta.5\";\n//# sourceMappingURL=_version.js.map"],"names":["async","resolveProperties","value","keys","Object","Promise","all","map","k","resolve","reduce","accum","v","index","checkType","type","types","split","t","trim","i","length","Error","defineProperties","target","values","defaults","key","fallback","undefined","defineProperty","enumerable","writable","_EventPayload_listener","__classPrivateFieldSet","this","receiver","state","kind","f","TypeError","has","call","set","__classPrivateFieldGet","get","EventPayload","constructor","emitter","listener","filter","off","getStore","store","setStore","isFrozen","isError","error","code","isCallException","WeakMap","_Logger_instances","_Logger_getBytes","_Logger_log","LogLevel","LogLevels","debug","default","info","warning","_logLevel","_globalLogger","_normalizeForms","form","normalize","check","String","fromCharCode","push","defineReadOnly","object","name","maxValue","ErrorConstructors","INVALID_ARGUMENT","NUMERIC_FAULT","RangeError","BUFFER_OVERRUN","Logger","version","add","makeError","message","details","JSON","stringify","join","throwError","throwArgumentError","argument","assert","condition","assertArgument","assertIntegerArgument","lower","upper","Number","isInteger","assertSafeUint53","operation","fault","assertNormalize","indexOf","assertPrivate","givenGuard","guard","className","method","assertArgumentCount","count","expectedCount","getBytes","getBytesCopy","getNumber","BigInt","e","getBigInt","args","DEBUG","INFO","warn","WARNING","static","logLevel","level","toLowerCase","globalLogger","WeakSet","copy","Uint8Array","match","result","offset","parseInt","substring","console","log","apply","logger","_TokenString_instances","_TokenString_offset","_TokenString_tokens","_TokenString_subTokenString","_ParamType_instances","_ParamType_walkAsync","FormatType","setify","items","Set","forEach","freeze","_kwVisib","KwVisib","_kwTypes","KwTypes","_kwModifiers","KwModifiers","Keywords","SimpleTokens","regexWhitespace","RegExp","regexNumber","regexIdentifier","regexType","TokenString","tokens","slice","clone","reset","popKeyword","allowed","top","peek","text","pop","popType","popParen","popParams","link","linkNext","peekKeyword","peekType","_a","toString","token","lex","brackets","commas","cur","depth","linkBack","suffix","allowSingle","included","consumeName","keyword","consumeKeywords","keywords","consumeParams","allowIndexed","ParamType","fromTokens","consumeGas","consumeEoi","from","to","assign","regexArrayType","verifyBasicType","size","_guard","internal","Symbol","for","ParamTypeInternal","baseType","indexed","components","arrayLength","arrayChildren","format","sighash","json","isTuple","c","parse","isArray","comp","full","isIndexable","walk","process","Array","promises","obj","isParamType","arrayMatch","comps","bracket","FragmentType","setValue","childType","param","then","Fragment","inputs","fromString","fromObject","ConstructorFragment","ErrorFragment","EventFragment","FunctionFragment","StructFragment","NamedFragment","super","joinParams","params","p","input","anonymous","event","payable","gas","stateMutability","outputs","function","constant","o","mutability","modifiers","consumeMutability","struct","nibbles","BN_0","toBigInt","_value","toNumber","toHex","_width","width","toArray","hex","BN_1","fromTwos","toTwos","mask","_bits","bits","_FixedNumber_instances","_FixedNumber_value","_FixedNumber_checkFormat","_constructorGuard","NegativeOne","throwFault","zeros","getMultiplier","decimals","formatFixed","_decimals","multiplier","multiplierStr","negative","fraction","parseFixed","whole","wei","FixedFormat","constructorGuard","signed","_multiplier","defaultValue","FixedNumber","_isFixedNumber","addUnsafe","other","a","b","fromValue","subUnsafe","mulUnsafe","divUnsafe","floor","hasFraction","isNegative","ONE","toFormat","ceiling","round","factor","bump","BUMP","isZero","toHexString","toUnsafeFloat","parseFloat","fixedFormat","numeric","decimal","fromBytes","Alphabet","Lookup","getAlpha","letter","BN_58","encodeBase58","decodeBase58","names","formatUnits","unit","parseUnits","formatEther","parseEther","ether","isHexString","isBytesLike","BN_8","BN_255","arrayify","data","unshift","_noCopyArrayify","decodeBase64","textData","Buffer","encodeBase64","HexCharacters","hexlify","bytes","quantity","concat","datas","d","dataLength","dataSlice","start","end","buffer","stripZerosLeft","zeroPad","left","fill","zeroPadValue","zeroPadBytes","_Result_instances","_Result_indices","_Result_throwError","_Writer_instances","_Writer_data","_Writer_dataLength","_Writer_writeData","_Reader_instances","_Reader_data","_Reader_offset","_Reader_peekBytes","WordSize","Padding","passProperties","Result","Map","Proxy","prop","item","Reflect","getValue","wrapped","Coder","localName","dynamic","_throwError","Writer","appendWriter","writer","writeBytes","paddingOffset","writeValue","writeUpdatableValue","Reader","allowLoose","consumed","subReader","readBytes","loose","readValue","readIndex","alignedLength","Math","ceil","u32","arr","Uint32Array","byteOffset","byteLength","createView","DataView","rotr","word","shift","padStart","nextTick","nodeRequire","module","require","bind","setImmediate","setTimeout","asyncLoop","iters","tick","cb","ts","Date","now","diff","toBytes","str","TextEncoder","encode","utf8ToBytes","assertNumber","n","isSafeInteger","assertHash","hash","create","outputLen","blockLen","Hash","_cloneInto","checkOpts","def","_opts","prototype","wrapConstructor","hashConstructor","hashC","update","digest","tmp","HMAC","_key","finished","destroyed","iHash","pad","oHash","buf","digestInto","out","destroy","getPrototypeOf","hmac","pbkdf2","password","salt","opts","dkLen","DK","PRF","PRFSalt","_password","_salt","asyncTick","pbkdf2Init","prfW","view","u","ti","pos","Ti","subarray","setInt32","ui","pbkdf2Output","SHA2","padOffset","isLE","len","take","min","dataView","roundClean","setBigUint64","_32n","_u32_max","wh","wl","h","l","setUint32","oview","res","Chi","Maj","SHA256_K","IV","SHA256_W","SHA256","A","B","C","D","E","F","G","H","getUint32","W15","W2","s0","s1","T1","T2","sha256","U32_MASK64","fromBig","le","lst","Ah","Al","shrSH","s","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","SHA512_Kh","SHA512_Kl","u64.split","SHA512_W_H","SHA512_W_L","SHA512","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","u64.rotrSH","u64.shrSH","s0l","u64.rotrSL","u64.shrSL","W2h","W2l","s1h","u64.rotrBH","s1l","u64.rotrBL","SUMl","u64.add4L","SUMh","u64.add4H","sigma1h","sigma1l","CHIh","T1ll","u64.add5L","T1h","u64.add5H","T1l","sigma0h","sigma0l","MAJh","MAJl","u64.add","All","u64.add3L","u64.add3H","SHA512_256","SHA384","sha512","anyGlobal","self","window","global","getGlobal","crypto","msCrypto","createHash","algo","locked","_computeHmac","algorithm","_algo","createHmac","__computeHmac","computeHmac","_data","_","lock","register","func","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","R","x","y","j","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","u64.rotlBH","u64.rotlSH","rotlL","u64.rotlBL","u64.rotlSL","Keccak","enableXOF","rounds","posOut","state32","keccak","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","keccakP","finish","writeInto","xofInto","xof","gen","keccak_256","genShake","hashCons","msg","wrapConstructorWithOpts","_keccak256","__keccak256","keccak256","Rho","Id","Pi","idxL","idxR","shifts","shiftsL","idx","shiftsR","Kl","Kr","rotl","group","z","BUF","RIPEMD160","h0","h1","h2","h3","h4","al","ar","bl","br","cl","cr","dl","dr","el","er","rGroup","hbl","hbr","rl","rr","sl","sr","tl","tr","ripemd160","_ripemd160","noble_ripemd160","__ripemd160","_pbkdf2","iterations","keylen","pbkdf2Sync","__pbkdf2","_randomBytes","getRandomValues","crypto_random","__randomBytes","randomBytes","XorAndSalsa","prev","pi","ii","oi","y00","y01","y02","y03","y04","y05","y06","y07","y08","y09","y10","y11","y12","y13","y14","y15","x00","x01","x02","x03","x04","x05","x06","x07","x08","x09","x10","x11","x12","x13","x14","x15","BlockMix","r","head","tail","scryptInit","maxmem","N","onProgress","blockSize","blockSize32","memUsed","B32","V","blockMixCb","totalBlockMix","callbackPer","max","blockMixCnt","scryptOutput","lockedSync","lockedAsync","_scryptAsync","passwd","_nobleAsync","_scryptSync","_nobleSync","__scryptAsync","__scryptSync","scrypt","_passwd","progress","scryptSync","_sha256","_sha512","__sha256","__sha512","locked256","locked512","BN_36","getChecksumAddress","address","chars","expanded","charCodeAt","hashed","toUpperCase","ibanLookup","ibanChecksum","block","checksum","Base36","getAddress","fromBase36","getIcapAddress","base36","arrayifyInteger","_encode","payload","child","encodeRlp","hexlifyByte","unarrayifyInteger","_decodeChildren","childOffset","decoded","_decode","checkOffset","lengthLength","decodeRlp","getCreateAddress","tx","nonceHex","nonce","getCreate2Address","_from","_initCodeHash","initCodeHash","isAddressable","isAddress","resolveAddress","resolver","resolveName","_Typed_options","_gaurd","Typed","_typedSymbol","gaurd","options","minValue","isBigInt","isData","isString","tupleName","isTyped","AddressCoder","dereference","decode","reader","AnonymousCoder","coder","pack","coders","arrayValues","unique","staticWriter","dynamicWriter","updateFuncs","dynamicOffset","updateFunc","baseOffset","unpack","baseReader","offsetReader","fromItems","ArrayCoder","defaultChild","BooleanCoder","DynamicBytesCoder","BytesCoder","FixedBytesCoder","Empty","NullCoder","BN_MAX_UINT256","NumberCoder","maxUintValue","bounds","UnicodeNormalizationForm","Utf8ErrorReason","ignoreFunc","reason","output","badCodepoint","BAD_PREFIX","UNEXPECTED_CONTINUE","OVERRUN","exports","Utf8ErrorFuncs","ignore","replace","OVERLONG","getUtf8CodePoints","_bytes","onError","extraLength","overlongMask","nextChar","MISSING_CONTINUE","OUT_OF_RANGE","UTF16_SURROGATE","toUtf8Bytes","current","c2","pair","escapeChar","_toEscapedUtf8String","codePoint","_toUtf8String","codePoints","toUtf8String","toUtf8CodePoints","formatBytes32String","parseBytes32String","createTable","_func","lo","createRangeTable","hi","matchMap","ranges","range","Table_A_1_ranges","Table_B_1_flags","Table_B_2_ranges","Table_B_2_lut_abs","Table_B_2_lut_rel","Table_B_2_complex","Table_C_ranges","nameprep","codes","codesTableB2","codepoint","_nameprepTableB2","NFKC","StringCoder","TupleCoder","uniqueNames","_AbiCoder_instances","_AbiCoder_getCoder","paramTypeBytes","paramTypeNumber","defaultAbiCoder","getDefaultValue","id","Zeros","Partition","isValidName","namehash","partition","dnsEncode","messagePrefix","hashMessage","regexBytes","regexArray","_pack","solidityPacked","tight","solidityPackedKeccak256","solidityPackedSha256","_TypedDataEncoder_instances","_TypedDataEncoder_types","_TypedDataEncoder_fullTypes","_TypedDataEncoder_encoderCache","_TypedDataEncoder_getEncoder","padding","BN__1","hexTrue","hexFalse","domainFieldTypes","chainId","verifyingContract","domainFieldNames","checkString","domainChecks","getBaseEncoder","boundsUpper","boundsLower","hexPadRight","encodeType","fields","TypedDataEncoder","links","parents","subtypes","field","primaryTypes","primaryType","checkCircular","found","subtype","delete","st","sort","getEncoder","encoder","encodeData","hashStruct","_visit","callback","visit","domain","domainFields","EIP712Domain","hashDomain","ensCache","domainValues","domainTypes","typesWithDomain","subEncoder","encodedType","_Interface_instances","_Interface_errors","_Interface_events","_Interface_functions","_Interface_abiCoder","_Interface_getFunction","_Interface_getEvent","LogDescription","fragment","topic","signature","TransactionDescription","selector","ErrorDescription","Indexed","_isIndexed","PanicReasons","BuiltinErrors","Interface","fragments","abi","getAbiCoder","bucket","deploy","getFunctionName","getFunction","getEventName","getEvent","getError","getSelector","matching","getEventTopic","_decodeParams","_encodeParams","encodeDeploy","decodeErrorResult","encodeErrorResult","decodeFunctionData","encodeFunctionData","decodeFunctionResult","errorArgs","errorName","errorSignature","builtin","transaction","encodeFunctionResult","functionFragment","encodeFilterTopics","eventFragment","topics","encodeTopic","encodeEventLog","dataTypes","dataValues","decodeEventLog","eventTopic","nonIndexed","resultIndexed","resultNonIndexed","nonIndexedIndex","indexedIndex","parseTransaction","parseLog","parseError","hexData","forceUnique","lastValue","valueLength","allowOptions","splice","lastArg","matchStr","m","_FetchResponse_props","_FetchResponse_error","FetchResponse","statusCode","statusMessage","headers","body","request","bodyText","response","bodyJson","iterator","next","done","makeServerError","throwThrottleError","stall","throttle","getHeader","hasBody","ok","assertOk","getUrl","req","timeout","protocol","url","credentials","allowInsecureAuthentication","init","Headers","resp","fetch","arrayBuffer","status","statusText","_FetchRequest_props","FetchRequest","allowInsecure","gzip","bodyType","allowGzip","setHeader","clearHeaders","setCredentials","username","redirect","location","delay","duration","getTime","lockGateways","fetchData","connection","conn","attempts","throttleLimit","slotInterval","throttleSlotInterval","retryFunc","throttleRetry","preflightRequest","processResponse","t0","retryAfter","trunc","random","pow","setGateway","gateway","setIpfsGateway","setArGateway","_EnsResolver_supports2544","_EnsResolver_getResolver","HashZero","parseBytes","parseString","numPad","padded","bytesPad","encodeBytes","byteCount","getIpfsLink","MulticoinProviderPlugin","validate","proivder","supportsCoinType","coinType","matcherIpfs","matchers","EnsResolver","provider","catch","parameters","addrData","enableCcipRead","supportsWildcard","_fetch","getNetwork","formatter","callAddress","coinPlugin","plugin","plugins","encodeAddress","keyBytes","calldata","hexBytes","ipfs","scheme","swarm","_getAvatar","linkage","avatar","getText","owner","addr","tokenId","tokenOwner","balance","metadataUrl","metadata","imageUrl","image","currentName","network","ensPlugin","getPlugin","_Signature_props","BN_2","BN_27","BN_28","BN_35","Zero","Signature","networkV","legacyChainId","getChainId","yParity","yParityAndS","compactSerialized","serialized","toJSON","_type","bv","sig","getNormalizedV","_v","_3n","_8n","POW_2_256","CURVE","P","Gx","Gy","beta","weistrass","x2","mod","x3","USE_ENDOMORPHISM","JacobianPoint","Point","points","toInv","nums","scratch","inverted","invert","acc","num","reduceRight","invertBatch","toAffine","toAffineBatch","fromAffine","equals","X1","Y1","Z1","X2","Y2","Z2","Z1Z1","Z2Z2","U1","U2","S1","S2","negate","double","X3","Y3","Z3","ZERO","HH","HHH","subtract","multiplyUnsafe","scalar","normalizeScalar","P0","k1neg","k1","k2neg","k2","splitScalarEndo","k1p","k2p","precomputeWindow","W","windows","base","wNAF","affinePoint","BASE","_WINDOW_SIZE","precomputes","pointPrecomputes","normalizeZ","windowSize","maxNumber","shiftBy","wbits","pr","cached","abs","multiply","point","fake","f1p","f2p","invZ","iz1","iz2","iz3","ax","ay","_setWindowSize","isShort","bytesToNumber","isValidFieldElement","_6n","_11n","_22n","_23n","_44n","_88n","b2","b3","b6","pow2","b9","b11","b22","b44","b88","b176","b220","b223","t1","t2","sqrtMod","isYOdd","assertValidity","ensureBytes","header","fromCompressedHex","fromUncompressedHex","privateKey","normalizePrivateKey","msgHash","recovery","delta","truncateHash","fromDER","fromCompact","normalizeSignature","prefix","fromHex","numTo32bStr","rinv","u1","u2","Q","multiplyAndAddUnsafe","toRawBytes","isCompressed","hexToBytes","toHexX","toRawX","aP","bQ","sum","sliceDER","parseDERInt","bytesToHex","isUint8a","hexToNumber","sBytes","rBytesLeft","parseDERSignature","isWithinCurveOrder","hasHighS","HALF","normalizeS","toDERRawBytes","toDERHex","sHex","numberToHexUnpadded","rHex","rLen","sLen","toCompactRawBytes","toCompactHex","concatBytes","arrays","every","hexes","uint8a","array","hexByte","byte","isNaN","power","number","modulo","divNearest","POW_2_128","a1","b1","a2","c1","HmacDrbg","counter","utils","hmacSha256","hmacSync","hmacSha256Sync","incr","seed","reseedSync","generateSync","kmdToSig","kBytes","q","isPub","getSharedSecret","privateA","publicB","publicKey","bits2int","bits2octets","z1","z2","int2octets","signSync","privKey","extraEntropy","seedArgs","initSigArgs","drbg","recSig","canonical","der","recovered","finalizeSig","node","web","isValidPrivateKey","hashToPrivateKey","numTo32b","bytesLength","randomPrivateKey","subtle","messages","ckey","importKey","sign","sha256Sync","precompute","_SigningKey_privateKey","SigningKey","computePublicKey","compressedPublicKey","sigDer","recid","secp256k1.signSync","secp256k1.Signature","computeShardSecret","pubKey","secp256k1.getSharedSecret","compressed","fromPrivateKey","secp256k1.getPublicKey","pub","secp256k1.Point","fromSignature","secp256k1.recoverPublicKey","p0","p1","pub0","pub1","accessSetify","storageKeys","storageKey","accessListify","localeCompare","computeAddress","recoverAddress","recoverPublicKey","_Transaction_props","BN_MAX_UINT","handleAddress","handleData","handleAccessList","handleNumber","handleUint","formatNumber","formatAccessList","_serializeLegacy","gasPrice","gasLimit","legacy","getChainIdV","_parseEipSignature","serialize","_serializeEip1559","maxPriorityFeePerGas","maxFeePerGas","accessList","_serializeEip2930","Transaction","typeName","unsignedHash","unsignedSerialized","fromPublicKey","isSigned","inferTypes","hasGasPrice","hasFee","hasAccessList","isLegacy","isBerlin","isLondon","_parseLegacy","_parseEip2930","_parseEip1559","_Block_transactions","_TransactionReceipt_logs","toJson","FeeData","Block","dummyProvider","transactions","timestamp","parentHash","difficulty","gasUsed","miner","extraData","baseFeePerGas","date","getTransaction","isMined","orphanedEvent","orphan","Log","transactionHash","blockHash","blockNumber","removed","transactionIndex","getBlock","getTransactionReceipt","removedEvent","TransactionReceipt","logs","contractAddress","logsBloom","cumulativeGasUsed","effectiveGasPrice","byzantium","root","fee","getBlockNumber","createRemovedTransactionFilter","reorderedEvent","createReorderedTransactionFilter","TransactionResponse","confirms","waitForTransaction","fail","blockTag","position","signedTx","blockHashOrBlockTag","_Formatter_format","_Formatter_baseBlock","Formatter","bigNumber","uint256","arrayOf","fromBlock","allowNull","toBlock","transactionRequest","transactionResponse","blockWithTransactions","boolean","receipt","filterLog","allowFalsish","ifFalse","ifNull","_hexstring","dataOrLength","altNames","srcKey","altKey","nv","storageSlot","NetworkPlugin","GasCostPlugin","effectiveBlock","costs","props","nullish","EnsPlugin","targetNetwork","MaxPriorityFeePlugin","priorityFee","_Network_props","Networks","defaultFormatter","Network","_chainId","attachPlugin","getPlugins","basename","computeIntrinsicGas","txBase","txCreate","txDataZero","txDataNonzero","txAccessListAddress","txAccessListStorageKey","networkFunc","custom","ensAddress","ensNetwork","nameOrChainId","existing","_PollingBlockSubscriber_instances","_PollingBlockSubscriber_provider","_PollingBlockSubscriber_poller","_PollingBlockSubscriber_interval","_PollingBlockSubscriber_blockNumber","_PollingBlockSubscriber_poll","_OnBlockSubscriber_provider","_OnBlockSubscriber_poll","_PollingOrphanSubscriber_filter","_PollingTransactionSubscriber_hash","_PollingEventSubscriber_instances","_PollingEventSubscriber_provider","_PollingEventSubscriber_filter","_PollingEventSubscriber_poller","_PollingEventSubscriber_blockNumber","_PollingEventSubscriber_poll","PollingBlockSubscriber","pollingInterval","_setTimeout","stop","_clearTimeout","pause","dropWhilePaused","resume","emit","OnBlockSubscriber","_poll","on","PollingOrphanSubscriber","PollingTransactionSubscriber","PollingEventSubscriber","getLogs","_AbstractProvider_instances","_AbstractProvider_subs","_AbstractProvider_plugins","_AbstractProvider_pausedState","_AbstractProvider_networkPromise","_AbstractProvider_anyNetwork","_AbstractProvider_performCache","_AbstractProvider_nextTimer","_AbstractProvider_timers","_AbstractProvider_disableCcipRead","_AbstractProvider_perform","_AbstractProvider_call","_AbstractProvider_getBlock","_AbstractProvider_hasSub","_AbstractProvider_getSub","getTag","UnmanagedSubscriber","concisify","getSubscription","_event","tag","addresses","addAddress","AbstractProvider","_network","disableCcipRead","urls","sender","errorMessages","href","errorMessage","_wrapTransaction","_detectNetwork","detectNetwork","networkPromise","expected","actual","priorityFeePlugin","getPriorityFee","_request","_tx","_getTransaction","_getBlockTag","_address","_blockTag","_position","lookup","addBlockTag","_filter","_getFilter","_getProvider","fromName","getResolver","getAvatar","reject","timer","clearTimeout","once","timerId","_b","paused","time","_forEachSubscriber","sub","subscriber","_getSubscriber","_recoverSubscriber","oldSub","newSub","started","listeners","total","removeAllListeners","_parseString","_parseBytes","perform","_perform","attempt","txSender","ccipArgs","urlsOffset","urlsLength","urlsData","parseOffchainLookup","ccipResult","ccipReadFetch","includeTransactions","emitArgs","subscription","addressableMap","nameMap","empty","_AbstractSigner_instances","_AbstractSigner_checkProvider","_AbstractSigner_fromify","_VoidSigner_instances","_VoidSigner_throwUnsupported","_WrappedSigner_signer","AbstractSigner","getBalanceOf","getTransactionCountOf","estimateGas","getTransactionCount","txObj","populateTransaction","broadcastTransaction","signTransaction","actions","VoidSigner","connect","WrappedSigner","signer","sendTransaction","signMessage","signTypedData","shown","showThrottleMessage","service","_FilterIdSubscriber_instances","_FilterIdSubscriber_provider","_FilterIdSubscriber_filterIdPromise","_FilterIdSubscriber_poller","_FilterIdSubscriber_network","_FilterIdSubscriber_poll","_FilterIdSubscriber_teardown","_FilterIdEventSubscriber_event","FilterIdSubscriber","_subscribe","_emitResults","_recover","filterId","send","filterIdPromise","FilterIdEventSubscriber","results","FilterIdPendingSubscriber","_JsonRpcApiProvider_nextId","_JsonRpcApiProvider_options","_JsonRpcProvider_connect","_JsonRpcProvider_pollingInterval","Primitive","deepCopy","getLowerCase","defaultOptions","polling","batchMaxSize","batchStallTime","JsonRpcSigner","getFeeData","_to","hexTx","getRpcTransaction","sendUncheckedTransaction","timeouts","checkTx","_message","populated","resolveNames","getPayload","JsonRpcApiProvider","_getOptions","_setOptions","prepareRequest","jsonrpc","accounts","account","dstKey","getRpcRequest","signedTransaction","getRpcError","spelunkData","_spelunkMessage","spelunkMessage","feeData","JsonRpcProvider","isPollable","StaticJsonRpcProvider","defaultApiKey","AnkrProvider","apiKey","getConnection","getHost","isCommunityResource","AlchemyProvider","CloudflareProvider","EtherscanPluginId","EtherscanPlugin","baseUrl","communityApiKey","EtherscanProvider","getBaseUrl","query","getPostUrl","getPostData","apikey","post","_getTransactionPostData","maxFeePerGs","_checkError","action","txhash","postData","ethusd","defaultProjectId","InfuraProvider","projectId","projectSecret","defaultAppIds","homestead","ropsten","rinkeby","goerli","normalizeApiKey","_appId","applicationSecretKey","loadBalancer","community","applicationId","PocketProvider","_secretKey","_loadBalancer","_FallbackProvider_instances","_FallbackProvider_configs","_FallbackProvider_height","_FallbackProvider_initialSyncPromise","_FallbackProvider_getNextConfig","_FallbackProvider_addRunner","_FallbackProvider_initialSync","_FallbackProvider_checkQuorum","_FallbackProvider_waitForQuorum","defaultConfig","stallTimeout","priority","weight","defaultState","requests","lateResponses","errorResponses","outOfSync","unsupportedEvents","rollingDuration","score","_updateNumber","_totalTime","checkQuorum","quorum","tally","normal","bestResult","bestWeight","getMedian","mid","FallbackProvider","providers","eventQuorum","eventWorkers","providerConfigs","running","runner","configs","allConfigs","shuffle","config","didBump","staller","dt","initialSync","waitForSync","height","mode","getFuzzyMode","interesting","newRunners","race","_WebSocket","WebSocket","_SocketSubscriber_provider","_SocketSubscriber_filter","_SocketSubscriber_filterId","_SocketSubscriber_paused","_SocketSubscriber_emitPromise","_SocketEventSubscriber_logFilter","_SocketEventSubscriber_formatter","_SocketProvider_callbacks","_SocketProvider_ready","_SocketProvider_subs","_SocketProvider_pending","SocketSubscriber","_register","_handleMessage","emitPromise","_emit","SocketBlockSubscriber","SocketPendingSubscriber","SocketEventSubscriber","logFilter","SocketProvider","pending","promise","_write","_WebSocketProvider_websocket","WebSocketProvider","websocket","onopen","_start","onmessage","_processMessage","getDefaultProvider","alchemy","ankr","cloudflare","etherscan","infura","pocket","secretKey","appId","registerEth","injectCommonNetworks","_Network","IpcSocketProvider","_ContractTransactionReceipt_interface","_ContractTransactionResponse_interface","EventLog","iface","interface","eventName","eventSignature","ContractTransactionReceipt","ContractTransactionResponse","wait","ContractEventPayload","contract","_log","_PreparedTopicFilter_filter","canResolve","PreparedTopicFilter","getRunner","resolvedArgs","walkAsync","getTopicFilter","feature","getProvider","copyOverrides","arg","overrides","bigIntKeys","numberKeys","enableCcipReadEnabled","customData","copyRequest","WrappedMethod","Function","_WrappedMethodBase","_contract","thisArg","getFragment","staticCall","_runner","resolveArgs","staticCallResult","WrappedEvent","_WrappedEventBase","internalValues","getInternal","getSubTag","hasSub","subs","getSub","lastEmit","resultPromise","passArgs","BaseContract","_deployTx","addrPromise","deployTx","filters","_prop","getCode","deploymentTransaction","getDeployedCode","checkCode","Contract","_ContractBase","subsChrs","Word","unfold","words","sep","initial","decodeOwl","clumps","leftover","semi","Wordlist","locale","mnemonic","_WordlistOwl_instances","_WordlistOwl_data","_WordlistOwl_checksum","_WordlistOwl_words","_WordlistOwl_loadWords","WordlistOwl","_decodeWords","getWord","getWordIndex","langEn","wordlists","en","_WordlistOwlA_accent","WordlistOwlA","accent","_accent","accents","posOffset","positions","flood","decodeBits","charCode","regex","decodeOwlA","getUpperMask","mnemonicToEntropy","wordlist","entropy","bit","entropyBits","checksumMask","entropyToMnemonic","indices","remainingBits","checksumBits","Mnemonic","phrase","computeSeed","NFKD","_entropy","_BaseWallet_signingKey","BaseWallet","signingKey","btx","_HDNodeWallet_fromSeed","_HDNodeWalletManager_root","defaultPath","MasterSecret","HardenedBit","zpad","encodeBase58Check","ser_I","chainCode","I","IL","IR","derivePath","path","component","deriveChild","HDNodeWallet","parentFingerprint","fingerprint","extendedKey","hasPath","neuter","HDNodeVoidWallet","_index","ki","fromPhrase","fromEntropy","_seed","Ki","_addPoints","HDNodeWalletManager","getSigner","getAccountPath","_AES_key","_AES_Kd","_AES_Ke","numberOfRounds","rcon","S","Si","T3","T4","T5","T6","T7","T8","U3","U4","convertToInt32","AES","roundKeyCount","KC","tk","tt","rconpointer","encrypt","plaintext","decrypt","ciphertext","ModeOfOperation","cls","aes","_CBC_iv","_CBC_lastBlock","CBC","iv","_CTR_remaining","_CTR_remainingIndex","_CTR_counter","CTR","initialValue","setCounterValue","setCounterBytes","MAX_SAFE_INTEGER","increment","crypttext","looseArrayify","hexString","getPassword","spelunk","_path","reqd","isCrowdsaleJson","encseed","decryptCrowdsaleJson","encryptedSeed","padder","pkcs7Strip","seedHex","isKeystoreJson","getAccount","mnemonicKey","mnemonicCiphertext","mnemonicIv","mnemonicAesCtr","getKdfParams","kdf","prf","_Wallet_mnemonic","trySigningKey","Wallet","wallet","fromMnemonic","tryWallet","tryMnemonic","progressCallback","encryptSync","decryptKeystoreJson","decryptKeystoreJsonSync"],"mappings":"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AE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO,IAAI02B,GAAMD,GAAQ,UAAWz2B,GACxDwH,YAAYxH,GAAK,OAAO,IAAI02B,GAAMD,GAAQ,SAAUz2B,GACpDwH,cAAcxH,GAAK,OAAO,IAAI02B,GAAMD,GAAQ,SAAUz2B,GACtDwH,aAAaxH,EAAGqZ,GACZ,MAAM,IAAI3Y,MAAM,uBAGpB8G,aAAaxH,EAAGqE,GACZ,MAAM,IAAI3D,MAAM,uBAGpB8G,iBAAiBxH,GACb,OAAO,IAAI02B,GAAMD,GAAQ,YAAaj3B,OAAOoN,OAAO,GAAI5M,IAE5DwH,eAAelI,GACX,OAAQA,GAASA,EAAMq3B,eAAiBA,GAE5CnvB,mBAAmBlI,EAAOa,GACtB,GAAIu2B,GAAMS,QAAQ73B,GAAQ,CACtB,GAAIA,EAAMa,OAASA,EACf,MAAM,IAAIO,MAAM,0BAA0BP,UAAab,EAAMa,QAEjE,OAAOb,EAAMA,MAEjB,OAAOA,GAGfk3B,GAAiB,IAAIxzB,QCxNd,MAAMo0B,WAAqBje,GAC9BhX,YAAYiX,GACRxJ,MAAM,UAAW,UAAWwJ,GAAW,GAE3ChG,eACI,MAAO,6CAEXkJ,OAAO7C,EAAQxI,GACX,IAAI3R,EAAQo3B,GAAMW,YAAYpmB,EAAQ,UACtC,IACI3R,EAAQm1B,GAAWn1B,GAEvB,MAAOuD,GACH,OAAOtB,KAAK+X,YAAYzW,EAAMmC,QAASiM,GAE3C,OAAOwI,EAAOG,WAAWta,GAE7Bg4B,OAAOC,GACH,OAAO9C,GAAWtjB,GAAMomB,EAAOnd,YAAa,MCpB7C,MAAMod,WAAuBre,GAChChX,YAAYs1B,GACR7nB,MAAM6nB,EAAMpzB,KAAMozB,EAAMt3B,KAAM,IAAKs3B,EAAMpe,SACzC9X,KAAKk2B,MAAQA,EAEjBrkB,eACI,OAAO7R,KAAKk2B,MAAMrkB,eAEtBkJ,OAAO7C,EAAQna,GACX,OAAOiC,KAAKk2B,MAAMnb,OAAO7C,EAAQna,GAErCg4B,OAAOC,GACH,OAAOh2B,KAAKk2B,MAAMH,OAAOC,ICR1B,SAASG,GAAKje,EAAQke,EAAQ92B,GACjC,IAAI+2B,EAAc,GAClB,GAAItpB,MAAMN,QAAQnN,GACd+2B,EAAc/2B,OAEb,GAAIA,GAA8B,iBAApB,EAA8B,CAC7C,IAAIg3B,EAAS,GACbD,EAAcD,EAAOh4B,KAAK83B,IACtB,MAAMpzB,EAAOozB,EAAMre,UAgBnB,OAfK/U,GACDmE,EAAOnD,WAAW,wDAAyD,mBAAoB,CAC3FE,SAAU,SACV/B,KAAM,CAAEi0B,MAAAA,GACRn4B,MAAOuB,IAGXg3B,EAAOxzB,IACPmE,EAAOnD,WAAW,0DAA2D,mBAAoB,CAC7FE,SAAU,SACV/B,KAAM,CAAEi0B,MAAAA,GACRn4B,MAAOuB,IAGfg3B,EAAOxzB,IAAQ,EACRxD,EAAOwD,WAIlBmE,EAAOlD,mBAAmB,sBAAuB,QAASzE,GAE1D82B,EAAOl3B,SAAWm3B,EAAYn3B,QAC9B+H,EAAOlD,mBAAmB,8BAA+B,QAASzE,GAEtE,IAAIi3B,EAAe,IAAIve,GACnBwe,EAAgB,IAAIxe,GACpBye,EAAc,GAClBL,EAAOxuB,SAAQ,CAACsuB,EAAOx3B,KACnB,IAAIX,EAAQs4B,EAAY33B,GACxB,GAAIw3B,EAAMpe,QAAS,CAEf,IAAI4e,EAAgBF,EAAct3B,OAElCg3B,EAAMnb,OAAOyb,EAAez4B,GAE5B,IAAI44B,EAAaJ,EAAaje,sBAC9Bme,EAAY9zB,MAAMi0B,IACdD,EAAWC,EAAaF,WAI5BR,EAAMnb,OAAOwb,EAAcx4B,MAInC04B,EAAY7uB,SAASqf,IAAWA,EAAKsP,EAAar3B,WAClD,IAAIA,EAASgZ,EAAOD,aAAase,GAEjC,OADAr3B,GAAUgZ,EAAOD,aAAaue,GACvBt3B,EAEJ,SAAS23B,GAAOb,EAAQI,GAC3B,IAAI92B,EAAS,GACTtB,EAAO,GAEP84B,EAAad,EAAOtd,UAAU,GAyClC,OAxCA0d,EAAOxuB,SAASsuB,IACZ,IAAIn4B,EAAQ,KACZ,GAAIm4B,EAAMpe,QAAS,CACf,IAAInR,EAASqvB,EAAOld,YAChBie,EAAeD,EAAWpe,UAAU/R,GACxC,IACI5I,EAAQm4B,EAAMH,OAAOgB,GAEzB,MAAOz1B,GAEH,GAAID,EAAQC,EAAO,kBACf,MAAMA,EAEVvD,EAAQuD,EACRvD,EAAM+N,SAAWoqB,EAAMpzB,KACvB/E,EAAM+E,KAAOozB,EAAMre,UACnB9Z,EAAMa,KAAOs3B,EAAMt3B,WAIvB,IACIb,EAAQm4B,EAAMH,OAAOC,GAEzB,MAAO10B,GAEH,GAAID,EAAQC,EAAO,kBACf,MAAMA,EAEVvD,EAAQuD,EACRvD,EAAM+N,SAAWoqB,EAAMpzB,KACvB/E,EAAM+E,KAAOozB,EAAMre,UACnB9Z,EAAMa,KAAOs3B,EAAMt3B,KAG3B,GAAac,MAAT3B,EACA,MAAM,IAAIoB,MAAM,eAEpBG,EAAOqD,KAAK5E,GACZC,EAAK2E,KAAKuzB,EAAMre,WAAa,SAE1BT,GAAO4f,UAAU13B,EAAQtB,GAE7B,MAAMi5B,WAAmBrf,GAC5BhX,YAAYs1B,EAAOh3B,EAAQ2Y,GAGvBxJ,MAAM,QAFQ6nB,EAAMt3B,KAAO,KAAOM,GAAU,EAAIA,EAAS,IAAM,IAE1C2Y,GADQ,IAAZ3Y,GAAiBg3B,EAAMpe,SAExC1Y,EAAiBY,KAAM,CAAEk2B,MAAAA,EAAOh3B,OAAAA,IAEpC2S,eAEI,MAAMqlB,EAAel3B,KAAKk2B,MAAMrkB,eAC1BnL,EAAS,GACf,IAAK,IAAIzH,EAAI,EAAGA,EAAIe,KAAKd,OAAQD,IAC7ByH,EAAO/D,KAAKu0B,GAEhB,OAAOxwB,EAEXqU,OAAO7C,EAAQxI,GACX,MAAM3R,EAAQo3B,GAAMW,YAAYpmB,EAAQ,SACnC3C,MAAMN,QAAQ1O,IACfiC,KAAK+X,YAAY,uBAAwBha,GAE7C,IAAIqH,EAAQpF,KAAKd,QACF,IAAXkG,IACAA,EAAQrH,EAAMmB,OACdgZ,EAAOG,WAAWta,EAAMmB,SAE5B+H,EAAO9B,oBAAoBpH,EAAMmB,OAAQkG,EAAO,eAAiBpF,KAAK6X,UAAa,IAAM7X,KAAK6X,UAAa,KAC3G,IAAIue,EAAS,GACb,IAAK,IAAIn3B,EAAI,EAAGA,EAAIlB,EAAMmB,OAAQD,IAC9Bm3B,EAAOzzB,KAAK3C,KAAKk2B,OAErB,OAAOC,GAAKje,EAAQke,EAAQr4B,GAEhCg4B,OAAOC,GACH,IAAI5wB,EAAQpF,KAAKd,QACF,IAAXkG,IACAA,EAAQ4wB,EAAOld,YAMX1T,EAAQ6R,GAAW+e,EAAOrgB,YAC1B1O,EAAOnD,WAAW,2BAA4B,iBAAkB,CAC5DiS,OAAQigB,EAAO1gB,MACf3O,OAAQvB,EAAQ6R,GAChB/X,OAAQ82B,EAAOrgB,cAI3B,IAAIygB,EAAS,GACb,IAAK,IAAIn3B,EAAI,EAAGA,EAAImG,EAAOnG,IACvBm3B,EAAOzzB,KAAK,IAAIszB,GAAej2B,KAAKk2B,QAExC,OAAOW,GAAOb,EAAQI,ICpKvB,MAAMe,WAAqBvf,GAC9BhX,YAAYiX,GACRxJ,MAAM,OAAQ,OAAQwJ,GAAW,GAErChG,eACI,OAAO,EAEXkJ,OAAO7C,EAAQxI,GACX,MAAM3R,EAAQo3B,GAAMW,YAAYpmB,EAAQ,QACxC,OAAOwI,EAAOG,WAAWta,EAAQ,EAAI,GAEzCg4B,OAAOC,GACH,QAASA,EAAOnd,aCZjB,MAAMue,WAA0Bxf,GACnChX,YAAYhC,EAAMiZ,GACdxJ,MAAMzP,EAAMA,EAAMiZ,GAAW,GAEjChG,eACI,MAAO,KAEXkJ,OAAO7C,EAAQna,GACXA,EAAQ6W,GAAS7W,GACjB,IAAImB,EAASgZ,EAAOG,WAAWta,EAAMmB,QAErC,OADAA,GAAUgZ,EAAOC,WAAWpa,GACrBmB,EAEX62B,OAAOC,GACH,OAAOA,EAAOrd,UAAUqd,EAAOld,aAAa,IAG7C,MAAMue,WAAmBD,GAC5Bx2B,YAAYiX,GACRxJ,MAAM,QAASwJ,GAEnBke,OAAOC,GACH,OAAO3gB,GAAQhH,MAAM0nB,OAAOC,KCpB7B,MAAMsB,WAAwB1f,GACjChX,YAAY4K,EAAMqM,GACd,IAAI/U,EAAO,QAAUL,OAAO+I,GAC5B6C,MAAMvL,EAAMA,EAAM+U,GAAW,GAC7BzY,EAAiBY,KAAM,CAAEwL,KAAAA,GAAQ,CAAEA,KAAM,WAE7CqG,eACI,MAAO,qEAAuEhL,UAAU,EAAG,EAAgB,EAAZ7G,KAAKwL,MAExGuP,OAAO7C,EAAQxI,GACX,IAAImF,EAAOD,GAASugB,GAAMW,YAAYpmB,EAAQ1P,KAAKpB,OAInD,OAHIiW,EAAK3V,SAAWc,KAAKwL,MACrBxL,KAAK+X,YAAY,wBAAyBrI,GAEvCwI,EAAOC,WAAWtD,GAE7BkhB,OAAOC,GACH,OAAO3gB,GAAQ2gB,EAAOrd,UAAU3Y,KAAKwL,QCpB7C,MAAM+rB,GAAQ,IAAI/wB,WAAW,IACtB,MAAMgxB,WAAkB5f,GAC3BhX,YAAYiX,GACRxJ,MAAM,OAAQ,GAAIwJ,GAAW,GAEjChG,eACI,OAAO,KAEXkJ,OAAO7C,EAAQna,GAIX,OAHa,MAATA,GACAiC,KAAK+X,YAAY,WAAYha,GAE1Bma,EAAOC,WAAWof,IAE7BxB,OAAOC,GAEH,OADAA,EAAOrd,UAAU,GACV,MCZf,MAAMnJ,GAAO/J,OAAO,GACdwK,GAAOxK,OAAO,GACdgyB,GAAiBhyB,OAAO,sEACvB,MAAMiyB,WAAoB9f,GAC7BhX,YAAY4K,EAAMmG,EAAQkG,GACtB,MAAM/U,GAAS6O,EAAS,MAAQ,QAAkB,EAAPnG,EAC3C6C,MAAMvL,EAAMA,EAAM+U,GAAW,GAC7BzY,EAAiBY,KAAM,CAAEwL,KAAAA,EAAMmG,OAAAA,GAAU,CAAEnG,KAAM,SAAUmG,OAAQ,YAEvEE,eACI,OAAO,EAEXkJ,OAAO7C,EAAQxI,GACX,IAAI3R,EAAQkJ,EAAOtB,UAAUwvB,GAAMW,YAAYpmB,EAAQ1P,KAAKpB,OAExD+4B,EAAevnB,GAAKqnB,GAAgBxgB,KACxC,GAAIjX,KAAK2R,OAAQ,CACb,IAAIimB,EAASxnB,GAAKunB,EAA2B,EAAZ33B,KAAKwL,KAAY,IAC9CzN,EAAQ65B,GAAU75B,IAAU65B,EAAS3nB,MACrCjQ,KAAK+X,YAAY,sBAAuBrI,QAGvC3R,EAAQyR,IAAQzR,EAAQqS,GAAKunB,EAA0B,EAAZ33B,KAAKwL,QACrDxL,KAAK+X,YAAY,sBAAuBrI,GAM5C,OAJA3R,EAAQqS,GAAKD,GAAOpS,EAAmB,EAAZiC,KAAKwL,MAAuB,EAAZxL,KAAKwL,MAC5CxL,KAAK2R,SACL5T,EAAQoS,GAAOD,GAASnS,EAAmB,EAAZiC,KAAKwL,MAAW,MAE5C0M,EAAOG,WAAWta,GAE7Bg4B,OAAOC,GACH,IAAIj4B,EAAQqS,GAAK4lB,EAAOnd,YAAyB,EAAZ7Y,KAAKwL,MAI1C,OAHIxL,KAAK2R,SACL5T,EAAQmS,GAASnS,EAAmB,EAAZiC,KAAKwL,OAE1BzN,GCzCR,MCEMkJ,GAAS,IAAI5D,EDFH,uCEGvB,IAAWw0B,GASAC,GA8BX,SAASC,GAAWC,EAAQrxB,EAAQ2O,EAAO2iB,EAAQC,GAE/C,GAAIF,IAAWF,EAAAA,gBAAgBK,YAAcH,IAAWF,EAAAA,gBAAgBM,oBAAqB,CACzF,IAAIn5B,EAAI,EACR,IAAK,IAAIiQ,EAAIvI,EAAS,EAAGuI,EAAIoG,EAAMpW,QAC3BoW,EAAMpG,IAAM,GAAM,EADiBA,IAIvCjQ,IAEJ,OAAOA,EAIX,OAAI+4B,IAAWF,EAAeA,gBAACO,QACpB/iB,EAAMpW,OAASyH,EAAS,EAG5B,EA1DyB2xB,EAAAT,8BAAA,GACzBA,GAMRA,6BAA6BA,EAAAA,yBAA2B,KALrB,QAAI,GACtCA,GAA8B,IAAI,MAClCA,GAA8B,IAAI,MAClCA,GAA+B,KAAI,OACnCA,GAA+B,KAAI,OAGZS,EAAAR,qBAAA,GAChBA,GAyBRA,oBAAoBA,EAAAA,gBAAkB,KAtBA,oBAAI,+BAGzCA,GAA4B,WAAI,uBAGhCA,GAAyB,QAAI,iBAG7BA,GAAkC,iBAAI,4BAItCA,GAA8B,aAAI,qBAIlCA,GAAiC,gBAAI,mBAIrCA,GAA0B,SAAI,0BAsCtB,MAACS,GAAiBt6B,OAAO4J,OAAO,CACxCvG,MApCJ,SAAmB02B,EAAQrxB,EAAQ2O,EAAO2iB,EAAQC,GAC9C,OAAOjxB,GAAOlD,mBAAmB,+BAA+B4C,MAAWqxB,IAAU,QAAS1iB,IAoC9FkjB,OAAQT,GACRU,QAfJ,SAAqBT,EAAQrxB,EAAQ2O,EAAO2iB,EAAQC,GAEhD,OAAIF,IAAWF,EAAeA,gBAACY,UAC3BT,EAAOt1B,KAAsB,MAAhBu1B,EAAwBA,GAAgB,GAC9C,IAGXD,EAAOt1B,KAAK,OAELo1B,GAAWC,EAAQrxB,EAAQ2O,OAStC,SAASqjB,GAAkBC,EAAQC,GAChB,MAAXA,IACAA,EAAUN,GAAej3B,OAE7B,MAAMgU,EAAQrO,GAAO3B,SAASszB,EAAQ,SAChClyB,EAAS,GACf,IAAIzH,EAAI,EAER,KAAOA,EAAIqW,EAAMpW,QAAQ,CACrB,MAAMqN,EAAI+I,EAAMrW,KAEhB,GAAIsN,GAAK,GAAM,EAAG,CACd7F,EAAO/D,KAAK4J,GACZ,SAGJ,IAAIusB,EAAc,KACdC,EAAe,KAEnB,GAAmB,MAAV,IAAJxsB,GACDusB,EAAc,EACdC,EAAe,SAGd,GAAmB,MAAV,IAAJxsB,GACNusB,EAAc,EACdC,EAAe,SAGd,CAAA,GAAmB,MAAV,IAAJxsB,GAIL,CAEGtN,GAAK45B,EADU,MAAV,IAAJtsB,GACYurB,EAAAA,gBAAgBM,oBAGhBN,EAAAA,gBAAgBK,WAHqBl5B,EAAI,EAAGqW,EAAO5O,GAKpE,SAVAoyB,EAAc,EACdC,EAAe,MAYnB,GAAI95B,EAAI,EAAI65B,GAAexjB,EAAMpW,OAAQ,CACrCD,GAAK45B,EAAQf,EAAAA,gBAAgBO,QAASp5B,EAAI,EAAGqW,EAAO5O,GACpD,SAGJ,IAAI+Y,EAAMlT,GAAM,GAAM,EAAIusB,EAAc,GAAM,EAC9C,IAAK,IAAIhR,EAAI,EAAGA,EAAIgR,EAAahR,IAAK,CAClC,IAAIkR,EAAW1jB,EAAMrW,GAErB,GAAyB,MAAT,IAAX+5B,GAA0B,CAC3B/5B,GAAK45B,EAAQf,kBAAgBmB,iBAAkBh6B,EAAGqW,EAAO5O,GACzD+Y,EAAM,KACN,MAGJA,EAAOA,GAAO,EAAiB,GAAXuZ,EACpB/5B,IAGQ,OAARwgB,IAIAA,EAAM,QACNxgB,GAAK45B,EAAQf,kBAAgBoB,aAAcj6B,EAAI,EAAI65B,EAAaxjB,EAAO5O,EAAQ+Y,GAI/EA,GAAO,OAAUA,GAAO,MACxBxgB,GAAK45B,EAAQf,kBAAgBqB,gBAAiBl6B,EAAI,EAAI65B,EAAaxjB,EAAO5O,EAAQ+Y,GAIlFA,GAAOsZ,EACP95B,GAAK45B,EAAQf,kBAAgBY,SAAUz5B,EAAI,EAAI65B,EAAaxjB,EAAO5O,EAAQ+Y,GAG/E/Y,EAAO/D,KAAK8c,IAEhB,OAAO/Y,EAGJ,SAAS0yB,GAAYve,EAAKvY,EAAOu1B,EAAAA,yBAAyBwB,SACzD/2B,GAAQu1B,EAAwBA,yBAACwB,UACjCpyB,GAAOrC,gBAAgBtC,GACvBuY,EAAMA,EAAItY,UAAUD,IAExB,IAAIoE,EAAS,GACb,IAAK,IAAIzH,EAAI,EAAGA,EAAI4b,EAAI3b,OAAQD,IAAK,CACjC,MAAMsN,EAAIsO,EAAI6X,WAAWzzB,GACzB,GAAIsN,EAAI,IACJ7F,EAAO/D,KAAK4J,QAEX,GAAIA,EAAI,KACT7F,EAAO/D,KAAM4J,GAAK,EAAK,KACvB7F,EAAO/D,KAAU,GAAJ4J,EAAY,UAExB,GAAoB,QAAX,MAAJA,GAAuB,CAC7BtN,IACA,MAAMq6B,EAAKze,EAAI6X,WAAWzzB,GAC1B,GAAIA,GAAK4b,EAAI3b,QAA4B,QAAZ,MAALo6B,GACpB,MAAM,IAAIn6B,MAAM,wBAGpB,MAAMo6B,EAAO,QAAgB,KAAJhtB,IAAe,KAAY,KAAL+sB,GAC/C5yB,EAAO/D,KAAM42B,GAAQ,GAAM,KAC3B7yB,EAAO/D,KAAO42B,GAAQ,GAAM,GAAQ,KACpC7yB,EAAO/D,KAAO42B,GAAQ,EAAK,GAAQ,KACnC7yB,EAAO/D,KAAa,GAAP42B,EAAe,UAG5B7yB,EAAO/D,KAAM4J,GAAK,GAAM,KACxB7F,EAAO/D,KAAO4J,GAAK,EAAK,GAAQ,KAChC7F,EAAO/D,KAAU,GAAJ4J,EAAY,KAGjC,OAAO,IAAI/F,WAAWE,GAG1B,SAAS8yB,GAAWz7B,GAChB,MAAMiS,EAAO,OAASjS,EAAM+L,SAAS,IACrC,MAAO,MAAQkG,EAAInJ,UAAUmJ,EAAI9Q,OAAS,GAEvC,SAASu6B,GAAqBnkB,EAAOujB,GACxC,MAAO,IAAMF,GAAkBrjB,EAAOujB,GAASz6B,KAAKs7B,IAChD,GAAIA,EAAY,IAAK,CACjB,OAAQA,GACJ,KAAK,EAAG,MAAO,MACf,KAAK,EAAG,MAAO,MACf,KAAK,GAAI,MAAO,MAChB,KAAK,GAAI,MAAO,MAChB,KAAK,GAAI,MAAO,MAChB,KAAK,GAAI,MAAO,OAEpB,GAAIA,GAAa,IAAMA,EAAY,IAC/B,OAAOj3B,OAAOC,aAAag3B,GAGnC,OAAIA,GAAa,MACNF,GAAWE,GAGfF,GAAyC,QADhDE,GAAa,QACoB,GAAM,OAAmBF,GAAiC,OAAT,KAAZE,OACvE71B,KAAK,IAAM,IAEX,SAAS81B,GAAcC,GAC1B,OAAOA,EAAWx7B,KAAKs7B,GACfA,GAAa,MACNj3B,OAAOC,aAAag3B,IAE/BA,GAAa,MACNj3B,OAAOC,aAA4C,OAA5Bg3B,GAAa,GAAM,MAAyC,OAAT,KAAZA,OACtE71B,KAAK,IAEL,SAASg2B,GAAavkB,EAAOujB,GAChC,OAAOc,GAAchB,GAAkBrjB,EAAOujB,IAE3C,SAASiB,GAAiBjf,EAAKvY,EAAOu1B,EAAAA,yBAAyBwB,SAClE,OAAOV,GAAkBS,GAAYve,EAAKvY,IC9OvC,SAASy3B,GAAoB3wB,GAEhC,MAAMkM,EAAQ8jB,GAAYhwB,GAE1B,GAAIkM,EAAMpW,OAAS,GACf,MAAM,IAAIC,MAAM,6CAGpB,OAAOkX,GAAaf,EAAO,IAExB,SAAS0kB,GAAmBpB,GAC/B,MAAM/jB,EAAO5N,GAAO3B,SAASszB,EAAQ,SAErC,GAAoB,KAAhB/jB,EAAK3V,OACL,MAAM,IAAIC,MAAM,uCAEpB,GAAiB,IAAb0V,EAAK,IACL,MAAM,IAAI1V,MAAM,+CAGpB,IAAID,EAAS,GACb,KAA4B,IAArB2V,EAAK3V,EAAS,IACjBA,IAGJ,OAAO26B,GAAahlB,EAAKhM,MAAM,EAAG3J,IChBtC,SAAS+6B,GAAYplB,EAAMqlB,GACvB,MAAMjT,EAAOiT,GAAS,SAAUn8B,GAAS,MAAO,CAAC6I,SAAS7I,EAAO,MACjE,IAAIo8B,EAAK,EACLzzB,EAAS,GAMb,OALAmO,EAAK/V,MAAM,KAAK8I,SAAS2xB,IACrB,IAAInsB,EAAQmsB,EAAKz6B,MAAM,KACvBq7B,GAAMvzB,SAASwG,EAAM,GAAI,IACzB1G,EAAOyzB,GAAMlT,EAAK7Z,EAAM,OAErB1G,EAEX,SAAS0zB,GAAiBvlB,GACtB,IAAIwlB,EAAK,EACT,OAAOxlB,EAAK/V,MAAM,KAAKV,KAAKK,IACxB,IAAI2O,EAAQ3O,EAAEK,MAAM,KACC,IAAjBsO,EAAMlO,OACNkO,EAAM,GAAK,IAEO,KAAbA,EAAM,KACXA,EAAM,GAAK,KAEf,IAAI+sB,EAAKE,EAAKzzB,SAASwG,EAAM,GAAI,IAEjC,OADAitB,EAAKzzB,SAASwG,EAAM,GAAI,IACjB,CAAEkS,EAAG6a,EAAI9a,EAAGgb,MAG3B,SAASC,GAASv8B,EAAOw8B,GACrB,IAAIJ,EAAK,EACT,IAAK,IAAIl7B,EAAI,EAAGA,EAAIs7B,EAAOr7B,OAAQD,IAAK,CACpC,IAAIu7B,EAAQD,EAAOt7B,GAEnB,GADAk7B,GAAMK,EAAMlb,EACRvhB,GAASo8B,GAAMp8B,GAASo8B,EAAKK,EAAMnb,IAAOthB,EAAQo8B,IAAOK,EAAM9kB,GAAK,IAAQ,EAAG,CAC/E,GAAI8kB,EAAM90B,IAAsC,IAAjC80B,EAAM90B,EAAEb,QAAQ9G,EAAQo8B,GACnC,SAEJ,OAAOK,GAGf,OAAO,KAEX,MAAMC,GAAmBL,GAAiB,g8CAEpCM,GAAkB,sDAAsD57B,MAAM,KAAKV,KAAKK,GAAMmI,SAASnI,EAAG,MAC1Gk8B,GAAmB,CACrB,CAAEtb,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,IACnB,CAAED,EAAG,GAAIkC,EAAG,GAAI7b,EAAG,CAAC,IAAK4Z,EAAG,KAC5B,CAAED,EAAG,GAAIkC,EAAG,EAAG7b,EAAG,CAAC,IAAK4Z,EAAG,GAAI5J,EAAG,GAClC,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,EAAG7b,EAAG,CAAC,EAAG,EAAG,GAAI4Z,EAAG,GAAI5J,EAAG,GACvC,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,EAAG7b,EAAG,CAAC,GAAI,GAAI,IAAK4Z,EAAG,GAAI5J,EAAG,GAC1C,CAAE2J,EAAG,GAAIkC,EAAG,GAAI7b,EAAG,CAAC,IAAK4Z,EAAG,KAC5B,CAAED,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,IACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,IACnB,CAAED,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,EAAG7b,EAAG,CAAC,IAAK4Z,EAAG,GAAI5J,EAAG,GAClC,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,IACnB,CAAED,EAAG,IAAKkC,EAAG,EAAGjC,EAAG,KAAM5J,EAAG,GAC5B,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,IAAK5J,EAAG,GAC1B,CAAE2J,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,KACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,KACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,OACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,MACnB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,OACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK4Z,EAAG,IACxD,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,EAAG,EAAG,EAAG,IAAK4Z,EAAG,IAC1C,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK4Z,EAAG,IACnD,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,IAAK4Z,EAAG,IACjC,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,IAAK4Z,EAAG,IACjC,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,IAAK4Z,EAAG,IACjC,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,IAAK4Z,EAAG,IACjC,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,IAAK4Z,EAAG,KAE/Bsb,GAAoBX,GAAY,yfAChCY,GAAoBZ,GAAY,0dAChCa,GAAoBb,GAAY,03DAnGtC,SAAgBplB,GACZ,GAAKA,EAAK3V,OAAS,GAAO,EACtB,MAAM,IAAIC,MAAM,+BAEpB,IAAIuH,EAAS,GACb,IAAK,IAAIzH,EAAI,EAAGA,EAAI4V,EAAK3V,OAAQD,GAAK,EAClCyH,EAAO/D,KAAKiE,SAASiO,EAAKhO,UAAU5H,EAAGA,EAAI,GAAI,KAEnD,OAAOyH,KA4FLq0B,GAAiBX,GAAiB,2LAmCjC,SAASY,GAASj9B,GAIrB,GAAIA,EAAM0I,MAAM,kBAAoB1I,EAAMmB,QAAU,GAChD,OAAOnB,EAAMqI,cAGjB,IAAI60B,EAAQnB,GAAiB/7B,GA1CjC,IAAiBuB,EAAAA,EA2CG27B,EAAM78B,KAAKmD,IAEvB,GAAIm5B,GAAgB71B,QAAQtD,IAAS,EACjC,MAAO,GAEX,GAAIA,GAAQ,OAAUA,GAAQ,MAC1B,MAAO,GAGX,IAAI25B,EA3CL,SAA0BC,GAC7B,MAAMX,EAAQF,GAASa,EAAWR,IAClC,GAAIH,EAAO,CACP,GAAe,MAAXA,EAAMjZ,EACN,MAAM,IAAIpiB,MAAM,gCAEpB,MAAO,CAACg8B,EAAYX,EAAMjZ,GAE9B,MAAM0Z,EAAQL,GAAkBO,GAChC,GAAIF,EACA,OAAOA,EAEX,MAAMthB,EAAQkhB,GAAkBM,GAChC,OAAIxhB,EACO,CAACwhB,EAAYxhB,EAAM,IAEdmhB,GAAkBK,IAI3B,KAuBgBC,CAAiB75B,GACpC,OAAI25B,GAIG,CAAC35B,MAdZ05B,EA1CO37B,EAAOf,QAAO,CAACC,EAAOT,KACzBA,EAAM6J,SAAS7J,IAAYS,EAAMmE,KAAK5E,MAC/BS,IACR,IAwDHy8B,EAAQnB,GAAiBH,GAAcsB,GAAQpD,EAAAA,yBAAyBwD,MAExEJ,EAAMrzB,SAASrG,IA9BN+4B,GA+Be/4B,EA/BKw5B,KAgCrB9zB,GAAOlD,mBAAmB,iCAAkC,QAAShG,MAI7Ek9B,EAAMrzB,SAASrG,IA7DN+4B,GA8DgB/4B,EA9DIk5B,KA+DrBxzB,GAAOlD,mBAAmB,iCAAkC,QAAShG,MAI7E,IAAI+E,EAAO62B,GAAcsB,GASzB,MAP6B,MAAzBn4B,EAAK+D,UAAU,EAAG,IAAuC,OAAzB/D,EAAK+D,UAAU,EAAG,IAAmD,MAApC/D,EAAK+D,UAAU/D,EAAK5D,OAAS,IAC9F+H,GAAOlD,mBAAmB,iBAAkB,QAAShG,GAGrD+E,EAAK5D,OAAS,IACd+H,GAAOlD,mBAAmB,WAAY,QAAShG,GAE5C+E,ECvLJ,MAAMw4B,WAAoBlE,GAC7Bx2B,YAAYiX,GACRxJ,MAAM,SAAUwJ,GAEpBhG,eACI,MAAO,GAEXkJ,OAAO7C,EAAQxI,GACX,OAAOrB,MAAM0M,OAAO7C,EAAQkhB,GAAYjE,GAAMW,YAAYpmB,EAAQ,YAEtEqmB,OAAOC,GACH,OAAO6D,GAAaxrB,MAAM0nB,OAAOC,KCVlC,MAAMuF,WAAmB3jB,GAC5BhX,YAAYw1B,EAAQve,GAChB,IAAIC,GAAU,EACd,MAAMjZ,EAAQ,GACdu3B,EAAOxuB,SAASsuB,IACRA,EAAMpe,UACNA,GAAU,GAEdjZ,EAAM8D,KAAKuzB,EAAMt3B,SAGrByP,MAAM,QADQ,SAAWxP,EAAMgF,KAAK,KAAO,IACtBgU,EAAWC,GAChC1Y,EAAiBY,KAAM,CAAEo2B,OAAQn4B,OAAO4J,OAAOuuB,EAAOvtB,WAE1DgJ,eACI,MAAMvS,EAAS,GACfU,KAAKo2B,OAAOxuB,SAASsuB,IACjB52B,EAAOqD,KAAKuzB,EAAMrkB,mBAGtB,MAAM2pB,EAAcx7B,KAAKo2B,OAAO73B,QAAO,CAACC,EAAO03B,KAC3C,MAAMpzB,EAAOozB,EAAMre,UAOnB,OANI/U,IACKtE,EAAMsE,KACPtE,EAAMsE,GAAQ,GAElBtE,EAAMsE,MAEHtE,IACR,IAeH,OAbAwB,KAAKo2B,OAAOxuB,SAAQ,CAACsuB,EAAOx3B,KACxB,IAAIoE,EAAOozB,EAAMre,UACZ/U,GAA8B,IAAtB04B,EAAY14B,KAGZ,WAATA,IACAA,EAAO,WAES,MAAhBxD,EAAOwD,KAGXxD,EAAOwD,GAAQxD,EAAOZ,QAEnBT,OAAO4J,OAAOvI,GAEzByb,OAAO7C,EAAQxI,GACX,MAAM3R,EAAQo3B,GAAMW,YAAYpmB,EAAQ,SACxC,OAAOymB,GAAKje,EAAQlY,KAAKo2B,OAAQr4B,GAErCg4B,OAAOC,GACH,OAAOa,GAAOb,EAAQh2B,KAAKo2B,SCtDnC,IAKIqF,GAAqBC,GALrBj7B,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAexF,MAAM07B,GAAiB,IAAIpzB,OAAO,mBAC5BqzB,GAAkB,IAAIrzB,OAAO,qBAwBnCkzB,GAAsB,IAAIn1B,QAAWo1B,GAAqB,SAASA,EAAmBjuB,GAClF,GAAIA,EAAMhB,UACN,OAAO,IAAIwqB,GAAWx2B,GAAuBT,KAAMy7B,GAAqB,IAAKC,GAAoBn7B,KAAKP,KAAMyN,EAAMvB,eAAgBuB,EAAMxB,YAAawB,EAAM3K,MAE/J,GAAI2K,EAAMnB,UACN,OAAO,IAAIivB,GAAW9tB,EAAMzB,WAAW5N,KAAKmO,GAAM9L,GAAuBT,KAAMy7B,GAAqB,IAAKC,GAAoBn7B,KAAKP,KAAMuM,KAAKkB,EAAM3K,MAEvJ,OAAQ2K,EAAM3B,UACV,IAAK,UACD,OAAO,IAAI+pB,GAAapoB,EAAM3K,MAClC,IAAK,OACD,OAAO,IAAIq0B,GAAa1pB,EAAM3K,MAClC,IAAK,SACD,OAAO,IAAIw4B,GAAY7tB,EAAM3K,MACjC,IAAK,QACD,OAAO,IAAIu0B,GAAW5pB,EAAM3K,MAChC,IAAK,GACD,OAAO,IAAI00B,GAAU/pB,EAAM3K,MAGnC,IAAI2D,EAAQgH,EAAM7O,KAAK6H,MAAMm1B,IAC7B,GAAIn1B,EAAO,CACP,IAAI+E,EAAO5E,SAASH,EAAM,IAAM,OAIhC,OAHa,IAAT+E,GAAcA,EAAO,KAAQA,EAAO,GAAO,IAC3CvE,EAAOlD,mBAAmB,WAAa0C,EAAM,GAAK,cAAe,QAASgH,GAEvE,IAAIiqB,GAAYlsB,EAAO,EAAiB,QAAb/E,EAAM,GAAegH,EAAM3K,MAIjE,GADA2D,EAAQgH,EAAM7O,KAAK6H,MAAMk1B,IACrBl1B,EAAO,CACP,IAAI+E,EAAO5E,SAASH,EAAM,IAI1B,OAHa,IAAT+E,GAAcA,EAAO,KACrBvE,EAAOlD,mBAAmB,uBAAwB,QAAS0J,GAExD,IAAI6pB,GAAgB9rB,EAAMiC,EAAM3K,MAE3C,OAAOmE,EAAOlD,mBAAmB,eAAgB,OAAQ0J,EAAM7O,OAE5D,MAAMi9B,GAAkB,IA9DxB,MACHj7B,cACI66B,GAAoBl4B,IAAIvD,MAE5B87B,gBAAgBj9B,GACZ,MAAMu3B,EAASv3B,EAAMT,KAAKQ,GAAS6B,GAAuBT,KAAMy7B,GAAqB,IAAKC,IAAoBn7B,KAAKP,KAAM+K,GAAUI,KAAKvM,MAExI,OADc,IAAI28B,GAAWnF,EAAQ,KACxBvkB,eAEjBkJ,OAAOlc,EAAOS,GACV2H,EAAO9B,oBAAoB7F,EAAOJ,OAAQL,EAAMK,OAAQ,gCACxD,MAAMk3B,EAASv3B,EAAMT,KAAKQ,GAAS6B,GAAuBT,KAAMy7B,GAAqB,IAAKC,IAAoBn7B,KAAKP,KAAM+K,GAAUI,KAAKvM,MAClIs3B,EAAK,IAAQqF,GAAWnF,EAAQ,KAChCle,EAAS,IAAIF,GAEnB,OADAke,EAAMnb,OAAO7C,EAAQ5Y,GACd4Y,EAAOrD,KAElBkhB,OAAOl3B,EAAOgW,EAAM+D,GAChB,MAAMwd,EAASv3B,EAAMT,KAAKQ,GAAS6B,GAAuBT,KAAMy7B,GAAqB,IAAKC,IAAoBn7B,KAAKP,KAAM+K,GAAUI,KAAKvM,MAExI,OADc,IAAI28B,GAAWnF,EAAQ,KACxBL,OAAO,IAAIxd,GAAO1D,EAAM+D,MCvCtC,SAASmjB,GAAGh+B,GACf,OAAOosB,GAAUiP,GAAYr7B,ICH1B,MCEMkJ,GAAS,IAAI5D,EDFH,oCEIjB24B,GAAQ,IAAIx1B,WAAW,IAC7Bw1B,GAAM7lB,KAAK,GACX,MAAM8lB,GAAY,IAAI1zB,OAAO,uBACtB,SAAS2zB,GAAYp5B,GACxB,IACI,MAAMsK,EAAQtK,EAAKhE,MAAM,KACzB,IAAK,IAAIG,EAAI,EAAGA,EAAImO,EAAMlO,OAAQD,IAC9B,GAAkC,IAA9B+7B,GAAS5tB,EAAMnO,IAAIC,OACnB,MAAM,IAAIC,MAAM,SAGxB,OAAO,EAEX,MAAOmC,IACP,OAAO,EAEJ,SAAS66B,GAASr5B,GACC,iBAAV,GACRmE,GAAOlD,mBAAmB,iCAAkC,OAAQjB,GAExE,IAAIu2B,EAAUv2B,EACV4D,EAASs1B,GACb,KAAO3C,EAAQn6B,QAAQ,CACnB,MAAMk9B,EAAY/C,EAAQ5yB,MAAMw1B,IAChC,GAAiB,MAAbG,GAAsC,KAAjBA,EAAU,GAC/B,OAAOn1B,GAAOlD,mBAAmB,sCAAuC,OAAQjB,GAGpF4D,EAASyjB,GAAU3U,GAAO,CAAC9O,EAAQyjB,GADrBiP,GAAY4B,GAASoB,EAAU,SAE7C/C,EAAU+C,EAAU,IAAM,GAE9B,OAAO/mB,GAAQ3O,GAEZ,SAAS21B,GAAUv5B,GAItB,MAHsB,iBAAV,GACRmE,GAAOlD,mBAAmB,iCAAkC,OAAQjB,GAE3D,KAATA,EACO,OAGJ0S,GAAO1S,EAAKhE,MAAM,KAAKV,KAAKsO,IAClB,KAATA,GACAzF,GAAOlD,mBAAmB,sCAAuC,OAAQjB,GAI7E,MAAMwS,EAAQ8jB,GAAY,IAAM4B,GAAStuB,IAEzC,OADA4I,EAAM,GAAKA,EAAMpW,OAAS,EACnBoW,MACL,KCnDG,MAAAgnB,GAAgB,8BACtB,SAASC,GAAY94B,GAIxB,MAHyB,iBAAb,IACRA,EAAU21B,GAAY31B,IAEnB0mB,GAAU3U,GAAO,CACpB4jB,GAAYkD,IACZlD,GAAY32B,OAAOgB,EAAQvE,SAC3BuE,KCNR,MAAM+4B,GAAa,IAAIj0B,OAAO,mBACxBC,GAAc,IAAID,OAAO,qBACzBk0B,GAAa,IAAIl0B,OAAO,wBAC9B,SAASm0B,GAAM99B,EAAMb,EAAO0O,GACxB,OAAQ7N,GACJ,IAAK,UACD,OAAI6N,EACOxF,GAAO3B,SAAS8Q,GAAarY,EAAO,KAExCkJ,GAAO3B,SAASvH,GAC3B,IAAK,SACD,OAAOq7B,GAAYr7B,GACvB,IAAK,QACD,OAAOkJ,GAAO3B,SAASvH,GAC3B,IAAK,OAED,OADAA,EAAWA,EAAQ,OAAS,OACxB0O,EACOxF,GAAO3B,SAAS8Q,GAAarY,EAAO,KAExCkJ,GAAO3B,SAASvH,GAE/B,IAAI0I,EAAQ7H,EAAK6H,MAAM+B,IACvB,GAAI/B,EAAO,CACP,IAAI+E,EAAO5E,SAASH,EAAM,IAAM,OAChC,OAAKA,EAAM,IAAMhE,OAAO+I,KAAU/E,EAAM,IAAQ+E,EAAO,GAAM,GAAe,IAATA,GAAcA,EAAO,IAC7EvE,GAAOlD,mBAAmB,sBAAuB,OAAQnF,IAEhE6N,IACAjB,EAAO,KAEXzN,EAAQoS,GAAOpS,EAAOyN,GACfvE,GAAO3B,SAAS8Q,GAAarY,EAAOyN,EAAO,KAGtD,GADA/E,EAAQ7H,EAAK6H,MAAM+1B,IACf/1B,EAAO,CACP,MAAM+E,EAAO5E,SAASH,EAAM,IAC5B,OAAIhE,OAAO+I,KAAU/E,EAAM,IAAe,IAAT+E,GAAcA,EAAO,GAC3CvE,GAAOlD,mBAAmB,qBAAsB,OAAQnF,GAE/D+W,GAAW5X,KAAWyN,EACfvE,GAAOlD,mBAAmB,qBAAqBnF,IAAQ,QAASb,GAEvE0O,EACOxF,GAAO3B,SAAS+Q,GAAatY,EAAO,KAExCA,EAGX,GADA0I,EAAQ7H,EAAK6H,MAAMg2B,IACfh2B,GAASsG,MAAMN,QAAQ1O,GAAQ,CAC/B,MAAM+N,EAAWrF,EAAM,GACTG,SAASH,EAAM,IAAMhE,OAAO1E,EAAMmB,UACnCnB,EAAMmB,QACf+H,GAAOlD,mBAAmB,4BAA4BnF,IAAQ,QAASb,GAE3E,MAAM2I,EAAS,GAIf,OAHA3I,EAAM6J,SAAQ,SAAU7J,GACpB2I,EAAO/D,KAAK+5B,GAAM5wB,EAAU/N,GAAO,OAEhCkJ,GAAO3B,SAASkQ,GAAO9O,IAElC,OAAOO,GAAOlD,mBAAmB,eAAgB,OAAQnF,GAGtD,SAAS+9B,GAAe99B,EAAOS,GAC9BT,EAAMK,QAAUI,EAAOJ,QACvB+H,GAAOlD,mBAAmB,qDAAsD,SAAUzE,GAE9F,MAAMs9B,EAAQ,GAId,OAHA/9B,EAAM+I,SAAQ,SAAUhJ,EAAMF,GAC1Bk+B,EAAMj6B,KAAK+5B,GAAM99B,EAAMU,EAAOZ,QAE3B2W,GAAQG,GAAOonB,IAEnB,SAASC,GAAwBh+B,EAAOS,GAC3C,OAAO2qB,GAAW0S,GAAe99B,EAAOS,IAErC,SAASw9B,GAAqBj+B,EAAOS,GACxC,OAAOyyB,GAAQ4K,GAAe99B,EAAOS,IClFzC,IAWIy9B,GAA6BC,GAAyBC,GAA6BC,GAAgCC,GAXnHp9B,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAWxF,MAAMm9B,GAAU,IAAI52B,WAAW,IAC/B42B,GAAQjnB,KAAK,GACb,MAAMknB,GAAQ53B,QAAQ,GAChB+J,GAAO/J,OAAO,GACdwK,GAAOxK,OAAO,GACdgyB,GAAiBhyB,OAAO,sEAW9B,MAAM63B,GAAU1tB,GAAMK,GAAM,IACtBstB,GAAW3tB,GAAMJ,GAAM,IACvBguB,GAAmB,CACrB16B,KAAM,SACNQ,QAAS,SACTm6B,QAAS,UACTC,kBAAmB,UACnBtgB,KAAM,WAEJugB,GAAmB,CACrB,OAAQ,UAAW,UAAW,oBAAqB,QAEvD,SAASC,GAAYp+B,GACjB,OAAO,SAAUzB,GAIb,MAHuB,iBAAX,GACRkJ,GAAOlD,mBAAmB,4BAA4BJ,KAAKC,UAAUpE,KAAQ,UAAUA,IAAOzB,GAE3FA,GAGf,MAAM8/B,GAAe,CACjB/6B,KAAM86B,GAAY,QAClBt6B,QAASs6B,GAAY,WACrBH,QAAS,SAAU1/B,GACf,OAAOkJ,GAAOtB,UAAU5H,EAAO,mBAEnC2/B,kBAAmB,SAAU3/B,GACzB,IACI,OAAOm1B,GAAWn1B,GAAOqI,cAE7B,MAAO9E,IACP,OAAO2F,GAAOlD,mBAAmB,2CAA4C,2BAA4BhG,IAE7Gqf,KAAM,SAAUrf,GACZ,MAAMuX,EAAQrO,GAAO3B,SAASvH,EAAO,eAIrC,OAHqB,KAAjBuX,EAAMpW,QACN+H,GAAOlD,mBAAmB,8BAA+B,cAAehG,GAErEsX,GAAQC,KAGvB,SAASwoB,GAAel/B,GAEpB,CACI,MAAM6H,EAAQ7H,EAAK6H,MAAM,kBACzB,GAAIA,EAAO,CACP,MAAMkL,EAAuB,KAAblL,EAAM,GAChBqJ,EAAQlJ,SAASH,EAAM,IAAM,QAC/BqJ,EAAQ,GAAM,GAAKA,EAAQ,KAAQrJ,EAAM,IAAMA,EAAM,KAAOhE,OAAOqN,KACnE7I,GAAOlD,mBAAmB,wBAAyB,OAAQnF,GAE/D,MAAMm/B,EAAc3tB,GAAKqnB,GAAgB9lB,EAAU7B,EAAQ,EAAKA,GAC1DkuB,EAAcrsB,GAAWosB,EAAc9tB,IAAQotB,GAAS7tB,GAC9D,OAAO,SAAUE,GACb,MAAM3R,EAAQkJ,GAAOtB,UAAU+J,EAAQ,SAIvC,OAHI3R,EAAQigC,GAAejgC,EAAQggC,IAC/B92B,GAAOlD,mBAAmB,2BAA2BnF,IAAQ,QAASb,GAEnE6R,GAAMO,GAAOpS,EAAO,KAAM,MAK7C,CACI,MAAM0I,EAAQ7H,EAAK6H,MAAM,gBACzB,GAAIA,EAAO,CACP,MAAMqJ,EAAQlJ,SAASH,EAAM,IAI7B,OAHc,IAAVqJ,GAAeA,EAAQ,IAAMrJ,EAAM,KAAOhE,OAAOqN,KACjD7I,GAAOlD,mBAAmB,sBAAuB,OAAQnF,GAEtD,SAAUb,GAKb,OAJc6W,GAAS7W,GACbmB,SAAW4Q,GACjB7I,GAAOlD,mBAAmB,sBAAsBnF,IAAQ,QAASb,GAjFrF,SAAqBA,GACjB,MAAMuX,EAAQV,GAAS7W,GACjB0gB,EAAYnJ,EAAMpW,OAAS,GACjC,OAAIuf,EACOjJ,GAAO,CAACF,EAAO8nB,GAAQv0B,MAAM4V,KAEjCpJ,GAAQC,GA6EI2oB,CAAYlgC,KAI/B,OAAQa,GACJ,IAAK,UAAW,OAAO,SAAUb,GAC7B,OAAOqY,GAAa8c,GAAWn1B,GAAQ,KAE3C,IAAK,OAAQ,OAAO,SAAUA,GAC1B,OAAUA,EAAoBu/B,GAAXC,IAEvB,IAAK,QAAS,OAAO,SAAUx/B,GAC3B,OAAOosB,GAAUpsB,IAErB,IAAK,SAAU,OAAO,SAAUA,GAC5B,OAAOg+B,GAAGh+B,IAGlB,OAAO,KAEX,SAASmgC,GAAWp7B,EAAMq7B,GACtB,MAAO,GAAGr7B,KAAQq7B,EAAO//B,KAAI,EAAG0E,KAAAA,EAAMlE,KAAAA,KAAYA,EAAO,IAAMkE,IAAOe,KAAK,QAExE,MAAMu6B,GACTx9B,YAAY/B,GACRk+B,GAA4Bx5B,IAAIvD,MAChCg9B,GAAwBx8B,IAAIR,UAAM,GAClCi9B,GAA4Bz8B,IAAIR,UAAM,GACtCk9B,GAA+B18B,IAAIR,UAAM,GACzCD,GAAuBC,KAAMg9B,GAAyBr5B,KAAKC,UAAU/E,GAAQ,KAC7EkB,GAAuBC,KAAMi9B,GAA6B,IAAI5lB,IAAO,KACrEtX,GAAuBC,KAAMk9B,GAAgC,IAAI7lB,IAAO,KAExE,MAAMgnB,EAAQ,IAAIhnB,IAEZinB,EAAU,IAAIjnB,IAEdknB,EAAW,IAAIlnB,IACrBpZ,OAAOD,KAAKa,GAAO+I,SAAShJ,IACxBy/B,EAAM79B,IAAI5B,EAAM,IAAI+I,KACpB22B,EAAQ99B,IAAI5B,EAAM,IAClB2/B,EAAS/9B,IAAI5B,EAAM,IAAI+I,QAE3B,IAAK,MAAM7E,KAAQjE,EAAO,CACtB,MAAM28B,EAAc,IAAI7zB,IACxB,IAAK,MAAM62B,KAAS3/B,EAAMiE,GAAO,CAEzB04B,EAAYl7B,IAAIk+B,EAAM17B,OACtBmE,GAAOlD,mBAAmB,2BAA2BJ,KAAKC,UAAU46B,EAAM17B,YAAYa,KAAKC,UAAUd,KAAS,QAASjE,GAE3H28B,EAAYj4B,IAAIi7B,EAAM17B,MAEtB,MAAMgJ,EAAY0yB,EAAM5/B,KAAK6H,MAAM,uBAAwB,IAAM,KAC7DqF,IAAahJ,GACbmE,GAAOlD,mBAAmB,8BAA8BJ,KAAKC,UAAUkI,KAAa,QAASjN,GAGjFi/B,GAAehyB,KAI1BwyB,EAAQh+B,IAAIwL,IACb7E,GAAOlD,mBAAmB,gBAAgBJ,KAAKC,UAAUkI,KAAa,QAASjN,GAGnFy/B,EAAQ59B,IAAIoL,GAAUnJ,KAAKG,GAC3Bu7B,EAAM39B,IAAIoC,GAAMS,IAAIuI,KAI5B,MAAM2yB,EAAe1xB,MAAM5B,KAAKmzB,EAAQtgC,QAAQ+C,QAAQma,GAAiC,IAA1BojB,EAAQ59B,IAAIwa,GAAGhc,SAClD,IAAxBu/B,EAAav/B,OACb+H,GAAOlD,mBAAmB,uBAAwB,QAASlF,GAEtD4/B,EAAav/B,OAAS,GAC3B+H,GAAOlD,mBAAmB,4CAA4C06B,EAAargC,KAAKW,GAAO4E,KAAKC,UAAU7E,KAAK8E,KAAK,QAAS,QAAShF,GAE9IO,EAAiBY,KAAM,CAAE0+B,YAAaD,EAAa,KAEnD,SAASE,EAAc//B,EAAMggC,GACrBA,EAAMt+B,IAAI1B,IACVqI,GAAOlD,mBAAmB,8BAA8BJ,KAAKC,UAAUhF,KAAS,QAASC,GAE7F+/B,EAAMr7B,IAAI3E,GACV,IAAK,MAAM60B,KAAS4K,EAAM39B,IAAI9B,GAC1B,GAAK0/B,EAAQh+B,IAAImzB,GAAjB,CAIAkL,EAAclL,EAAOmL,GAErB,IAAK,MAAMC,KAAWD,EAClBL,EAAS79B,IAAIm+B,GAASt7B,IAAIkwB,GAGlCmL,EAAME,OAAOlgC,GAEjB+/B,CAAc3+B,KAAK0+B,YAAa,IAAI/2B,KAEpC,IAAK,MAAO7E,EAAMtC,KAAQ+9B,EAAU,CAChC,MAAMQ,EAAKhyB,MAAM5B,KAAK3K,GACtBu+B,EAAGC,OACHv+B,GAAuBT,KAAMi9B,GAA6B,KAAKz8B,IAAIsC,EAAMo7B,GAAWp7B,EAAMjE,EAAMiE,IAASi8B,EAAG3gC,KAAKW,GAAMm/B,GAAWn/B,EAAGF,EAAME,MAAK8E,KAAK,MAGzJhF,YACA,OAAO8E,KAAK6I,MAAM/L,GAAuBT,KAAMg9B,GAAyB,MAE5EiC,WAAWrgC,GACP,IAAIsgC,EAAUz+B,GAAuBT,KAAMk9B,GAAgC,KAAKx8B,IAAI9B,GAKpF,OAJKsgC,IACDA,EAAUz+B,GAAuBT,KAAM+8B,GAA6B,IAAKI,IAA8B58B,KAAKP,KAAMpB,GAClH6B,GAAuBT,KAAMk9B,GAAgC,KAAK18B,IAAI5B,EAAMsgC,IAEzEA,EAEXhB,WAAWp7B,GACP,MAAM4D,EAASjG,GAAuBT,KAAMi9B,GAA6B,KAAKv8B,IAAIoC,GAClF,OAAK4D,GACMO,GAAOlD,mBAAmB,iBAAiBJ,KAAKC,UAAUd,KAAS,OAAQA,GAI1Fq8B,WAAWvgC,EAAMb,GACb,OAAOiC,KAAKi/B,WAAWrgC,EAAhBoB,CAAsBjC,GAEjCqhC,WAAWt8B,EAAM/E,GACb,OAAOosB,GAAUnqB,KAAKm/B,WAAWr8B,EAAM/E,IAE3Cgd,OAAOhd,GACH,OAAOiC,KAAKm/B,WAAWn/B,KAAK0+B,YAAa3gC,GAE7Csd,KAAKtd,GACD,OAAOiC,KAAKo/B,WAAWp/B,KAAK0+B,YAAa3gC,GAE7CshC,OAAOzgC,EAAMb,EAAOuhC,GAIZ,GADgBxB,GAAel/B,GAE3B,OAAO0gC,EAAS1gC,EAAMb,GAI9B,MAAM0I,EAAQ7H,EAAK6H,MAAM,yBACzB,GAAIA,EAAO,CACP,MAAMo4B,EAAUp4B,EAAM,GAChBvH,EAAS0H,SAASH,EAAM,IAI9B,OAHIvH,GAAU,GAAKnB,EAAMmB,SAAWA,GAChC+H,GAAOlD,mBAAmB,0DAA2D,QAAShG,GAE3FA,EAAMK,KAAKK,GAAMuB,KAAKq/B,OAAOR,EAASpgC,EAAG6gC,KAGpD,MAAMnB,EAASn+B,KAAKnB,MAAMD,GAC1B,OAAIu/B,EACOA,EAAO5/B,QAAO,CAACC,GAASsE,KAAAA,EAAMlE,KAAAA,MACjCJ,EAAMsE,GAAQ9C,KAAKq/B,OAAOzgC,EAAMb,EAAM+E,GAAOw8B,GACtC9gC,IACR,IAEAyI,GAAOlD,mBAAmB,iBAAiBnF,IAAQ,OAAQA,GAEtE2gC,MAAMxhC,EAAOuhC,GACT,OAAOt/B,KAAKq/B,OAAOr/B,KAAK0+B,YAAa3gC,EAAOuhC,GAEhDr5B,YAAYpH,GACR,OAAO,IAAIu/B,GAAiBv/B,GAEhCoH,sBAAsBpH,GAClB,OAAOu/B,GAAiBjzB,KAAKtM,GAAO6/B,YAExCz4B,kBAAkBnD,EAAMjE,EAAOd,GAC3B,OAAOqgC,GAAiBjzB,KAAKtM,GAAOugC,WAAWt8B,EAAM/E,GAEzDkI,kBAAkBu5B,GACd,MAAMC,EAAe,GACrB,IAAK,MAAM38B,KAAQ08B,EAAQ,CACvB,MAAM5gC,EAAO4+B,GAAiB16B,GACzBlE,GACDqI,GAAOlD,mBAAmB,kCAAkCJ,KAAKC,UAAUd,KAAS,SAAU08B,GAElGC,EAAa98B,KAAK,CAAEG,KAAAA,EAAMlE,KAAAA,IAK9B,OAHA6gC,EAAaT,MAAK,CAAC9sB,EAAGC,IACXwrB,GAAiB94B,QAAQqN,EAAEpP,MAAQ66B,GAAiB94B,QAAQsN,EAAErP,QAElEs7B,GAAiBgB,WAAW,eAAgB,CAAEM,aAAcD,GAAgBD,GAEvFv5B,cAAcu5B,EAAQ3gC,EAAOd,GACzB,OAAOyX,GAAO,CACV,SACA4oB,GAAiBuB,WAAWH,GAC5BpB,GAAiBjzB,KAAKtM,GAAOwc,KAAKtd,KAG1CkI,YAAYu5B,EAAQ3gC,EAAOd,GACvB,OAAOosB,GAAUiU,GAAiBrjB,OAAOykB,EAAQ3gC,EAAOd,IAG5DkI,0BAA0Bu5B,EAAQ3gC,EAAOd,EAAOi3B,GAE5CwK,EAASvhC,OAAOoN,OAAO,GAAIm0B,GAE3B,MAAMI,EAAW,GAEbJ,EAAO9B,oBAAsBlpB,GAAYgrB,EAAO9B,kBAAmB,MACnEkC,EAASJ,EAAO9B,mBAAqB,MAGzC,MAAMwB,EAAUd,GAAiBjzB,KAAKtM,GAEtCqgC,EAAQK,MAAMxhC,GAAO,CAACa,EAAMb,KACX,YAATa,GAAuB4V,GAAYzW,EAAO,MAC1C6hC,EAAS7hC,GAAS,MAEfA,KAGX,IAAK,MAAM+E,KAAQ88B,EACfA,EAAS98B,SAAckyB,EAAYlyB,GAavC,OAVI08B,EAAO9B,mBAAqBkC,EAASJ,EAAO9B,qBAC5C8B,EAAO9B,kBAAoBkC,EAASJ,EAAO9B,oBASxC,CAAE8B,OAAAA,EAAQzhC,MANjBA,EAAQmhC,EAAQK,MAAMxhC,GAAO,CAACa,EAAMb,IACnB,YAATa,GAAsBghC,EAAS7hC,GACxB6hC,EAAS7hC,GAEbA,KAIfkI,kBAAkBu5B,EAAQ3gC,EAAOd,GAE7BqgC,GAAiBuB,WAAWH,GAE5B,MAAMK,EAAe,GACfC,EAAc,GACpBnC,GAAiB/1B,SAAS9E,IACtB,MAAM/E,EAAQyhC,EAAO18B,GACR,MAAT/E,IAGJ8hC,EAAa/8B,GAAQ+6B,GAAa/6B,GAAM/E,GACxC+hC,EAAYn9B,KAAK,CAAEG,KAAAA,EAAMlE,KAAM4+B,GAAiB16B,SAEpD,MAAMo8B,EAAUd,GAAiBjzB,KAAKtM,GAChCkhC,EAAkB9hC,OAAOoN,OAAO,GAAIxM,GAS1C,OARIkhC,EAAgBL,aAChBz4B,GAAOlD,mBAAmB,2CAA4C,qBAAsBlF,GAG5FkhC,EAAgBL,aAAeI,EAGnCZ,EAAQnkB,OAAOhd,GACR,CACHc,MAAOkhC,EACPP,OAAQK,EACRnB,YAAaQ,EAAQR,YACrBj7B,QAASy7B,EAAQK,MAAMxhC,GAAO,CAACa,EAAMb,KAEjC,GAAIa,EAAK6H,MAAM,eACX,OAAO4O,GAAQpO,GAAO3B,SAASvH,IAGnC,GAAIa,EAAK6H,MAAM,UACX,OAAOQ,GAAOtB,UAAU5H,GAAO+L,WAEnC,OAAQlL,GACJ,IAAK,UACD,OAAOb,EAAMqI,cACjB,IAAK,OACD,QAASrI,EACb,IAAK,SAID,MAHuB,iBAAX,GACRkJ,GAAOlD,mBAAmB,iBAAkB,QAAShG,GAElDA,EAEf,OAAOkJ,GAAOlD,mBAAmB,mBAAoB,OAAQnF,QAK7Eo+B,GAA0B,IAAIv7B,QAAWw7B,GAA8B,IAAIx7B,QAAWy7B,GAAiC,IAAIz7B,QAAWs7B,GAA8B,IAAIz2B,QAAW62B,GAA+B,SAAsCv+B,GAEpP,CACI,MAAMsgC,EAAUpB,GAAel/B,GAC/B,GAAIsgC,EACA,OAAOA,EAIf,MAAMz4B,EAAQ7H,EAAK6H,MAAM,yBACzB,GAAIA,EAAO,CACP,MAAMo4B,EAAUp4B,EAAM,GAChBu5B,EAAahgC,KAAKi/B,WAAWJ,GAC7B3/B,EAAS0H,SAASH,EAAM,IAC9B,OAAQ1I,IACAmB,GAAU,GAAKnB,EAAMmB,SAAWA,GAChC+H,GAAOlD,mBAAmB,0DAA2D,QAAShG,GAElG,IAAI2I,EAAS3I,EAAMK,IAAI4hC,GAIvB,OAHIv/B,GAAuBT,KAAMi9B,GAA6B,KAAK38B,IAAIu+B,KACnEn4B,EAASA,EAAOtI,IAAI+rB,KAEjBA,GAAU3U,GAAO9O,KAIhC,MAAMy3B,EAASn+B,KAAKnB,MAAMD,GAC1B,GAAIu/B,EAAQ,CACR,MAAM8B,EAAclE,GAAGt7B,GAAuBT,KAAMi9B,GAA6B,KAAKv8B,IAAI9B,IAC1F,OAAQb,IACJ,MAAMuB,EAAS6+B,EAAO//B,KAAI,EAAG0E,KAAAA,EAAMlE,KAAAA,MAC/B,MAAM8H,EAAS1G,KAAKi/B,WAAWrgC,EAAhBoB,CAAsBjC,EAAM+E,IAC3C,OAAIrC,GAAuBT,KAAMi9B,GAA6B,KAAK38B,IAAI1B,GAC5DurB,GAAUzjB,GAEdA,KAGX,OADApH,EAAOwV,QAAQmrB,GACRzqB,GAAOlW,IAGtB,OAAO2H,GAAOlD,mBAAmB,iBAAiBnF,IAAQ,OAAQA,ICxbtE,IAWIshC,GAAsBC,GAAmBC,GAAmBC,GAAsBC,GAAqBC,GAAwBC,GAX/HzgC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAajF,MAAMwgC,GACT7/B,YAAY8/B,EAAUC,EAAO/6B,GACzB,MAAM9C,EAAO49B,EAAS59B,KAAM89B,EAAYF,EAASv0B,SACjD/M,EAAiBY,KAAM,CACnB0gC,SAAAA,EAAU59B,KAAAA,EAAM89B,UAAAA,EAAWD,MAAAA,EAAO/6B,KAAAA,KAIvC,MAAMi7B,GACTjgC,YAAY8/B,EAAUI,EAAUl7B,EAAM7H,GAClC,MAAM+E,EAAO49B,EAAS59B,KAAM89B,EAAYF,EAASv0B,SACjD/M,EAAiBY,KAAM,CACnB0gC,SAAAA,EAAU59B,KAAAA,EAAM8C,KAAAA,EAAMg7B,UAAAA,EAAWE,SAAAA,EAAU/iC,MAAAA,KAIhD,MAAMgjC,GACTngC,YAAY8/B,EAAUI,EAAUl7B,GAC5B,MAAM9C,EAAO49B,EAAS59B,KAAM89B,EAAYF,EAASv0B,SACjD/M,EAAiBY,KAAM,CACnB0gC,SAAAA,EAAU59B,KAAAA,EAAM8C,KAAAA,EAAMg7B,UAAAA,EAAWE,SAAAA,KAItC,MAAME,GACTpgC,YAAYya,GACRjc,EAAiBY,KAAM,CAAEqb,KAAAA,EAAM4lB,YAAY,IAE/Ch7B,iBAAiBlI,GACb,SAAUA,IAASA,EAAMkjC,aAIjC,MAAMC,GAAe,CACjB,EAAK,gBACL,EAAK,gBACL,GAAM,sBACN,GAAM,6BACN,GAAM,gBACN,GAAM,8CACN,GAAM,wDACN,GAAM,6CACN,GAAM,gBACN,GAAM,0BAEJC,GAAgB,CAClB,aAAc,CACVP,UAAW,gBACX99B,KAAM,QACN8K,OAAQ,CAAC,UACToqB,OAASv0B,GACE,+BAA+BE,KAAKC,UAAUH,MAG7D,aAAc,CACVm9B,UAAW,iBACX99B,KAAM,QACN8K,OAAQ,CAAC,WACToqB,OAASz2B,IACL,IAAIy2B,EAAS,qBAIb,OAHIz2B,GAAQ,GAAKA,GAAQ,KAAQ2/B,GAAa3/B,EAAKuI,cAC/CkuB,EAASkJ,GAAa3/B,EAAKuI,aAExB,8BAA8BvI,EAAKuI,SAAS,QAAQkuB,QAIhE,MAAMoJ,GACTxgC,YAAYygC,GACRnB,GAAqB38B,IAAIvD,MACzBmgC,GAAkB3/B,IAAIR,UAAM,GAC5BogC,GAAkB5/B,IAAIR,UAAM,GAC5BqgC,GAAqB7/B,IAAIR,UAAM,GAE/BsgC,GAAoB9/B,IAAIR,UAAM,GAC9B,IAAIshC,EAAM,GAENA,EADuB,iBAAf,EACF39B,KAAK6I,MAAM60B,GAGXA,EAEVthC,GAAuBC,KAAMqgC,GAAsB,IAAIhpB,IAAO,KAC9DtX,GAAuBC,KAAMmgC,GAAmB,IAAI9oB,IAAO,KAC3DtX,GAAuBC,KAAMogC,GAAmB,IAAI/oB,IAAO,KAE3DjY,EAAiBY,KAAM,CACnBqhC,UAAWpjC,OAAO4J,OAAOy5B,EAAIljC,KAAKgC,GAAMuN,GAASxC,KAAK/K,KAAIW,QAAQX,GAAY,MAALA,OAE7EL,GAAuBC,KAAMsgC,GAAqBtgC,KAAKuhC,cAAe,KAEtEvhC,KAAKqhC,UAAUz5B,SAAS84B,IACpB,IAAIc,EACJ,OAAQd,EAAS9hC,MACb,IAAK,cACD,OAAIoB,KAAKyhC,YACLx6B,EAAOlB,KAAK,2CAIhB3G,EAAiBY,KAAM,CAAEyhC,OAAQf,IAErC,IAAK,WAGDc,EAAS/gC,GAAuBT,KAAMqgC,GAAsB,KAC5D,MACJ,IAAK,QAEDmB,EAAS/gC,GAAuBT,KAAMogC,GAAmB,KACzD,MACJ,IAAK,QACDoB,EAAS/gC,GAAuBT,KAAMmgC,GAAmB,KACzD,MACJ,QACI,OAER,MAAMS,EAAYF,EAASv0B,SACvBq1B,EAAOlhC,IAAIsgC,GACX35B,EAAOlB,KAAK,0BAA4B66B,GAG5CY,EAAOhhC,IAAIogC,EAAWF,MAGrB1gC,KAAKyhC,QACNriC,EAAiBY,KAAM,CACnByhC,OAAQ1zB,GAAoBF,WAAW,mBAKnD1B,OAAOA,GACEA,IACDA,EAAS3E,EAAWmF,MAEpBR,IAAW3E,EAAW4E,SACtBnF,EAAOlD,mBAAmB,gDAAiD,SAAUoI,GAEzF,MAAMm1B,EAAMthC,KAAKqhC,UAAUjjC,KAAKgC,GAAMA,EAAE+L,OAAOA,KAE/C,OAAIA,IAAW3E,EAAW6E,KACf1I,KAAKC,UAAU09B,EAAIljC,KAAK0pB,GAAMnkB,KAAK6I,MAAMsb,MAE7CwZ,EAEXC,cACI,OAAO1F,GAEX6F,gBAAgBliC,GACZ,OAAQiB,GAAuBT,KAAMkgC,GAAsB,IAAKK,IAAwBhgC,KAAKP,KAAMR,EAAK,MAAM,GAAQsD,KAE1H6+B,YAAYniC,EAAKF,GACb,OAAOmB,GAAuBT,KAAMkgC,GAAsB,IAAKK,IAAwBhgC,KAAKP,KAAMR,EAAKF,GAAU,MAAM,GAE3HsiC,aAAapiC,GACT,OAAQiB,GAAuBT,KAAMkgC,GAAsB,IAAKM,IAAqBjgC,KAAKP,KAAMR,EAAK,MAAM,GAAQsD,KAEvH++B,SAASriC,EAAKF,GACV,OAAOmB,GAAuBT,KAAMkgC,GAAsB,IAAKM,IAAqBjgC,KAAKP,KAAMR,EAAKF,GAAU,MAAM,GAGxHwiC,SAAStiC,EAAKF,GACV,GAAIkV,GAAYhV,GAAM,CAClB,MAAMshC,EAAWthC,EAAI4G,cACrB,IAAK,MAAMs6B,KAAYjgC,GAAuBT,KAAMmgC,GAAmB,KAAK7gC,SACxE,GAAIwhC,IAAa9gC,KAAK+hC,YAAYrB,GAC9B,OAAOA,EAGfz5B,EAAOlD,mBAAmB,oBAAqB,WAAYvE,GAG/D,IAA0B,IAAtBA,EAAIqF,QAAQ,KAAa,CACzB,MAAMm9B,EAAW,GACjB,IAAK,MAAOl/B,EAAM49B,KAAajgC,GAAuBT,KAAMmgC,GAAmB,KACvEr9B,EAAKhE,MAAM,KAAiB,KAAOU,GACnCwiC,EAASr/B,KAAK+9B,GAUtB,OAPwB,IAApBsB,EAAS9iC,OACT+H,EAAOlD,mBAAmB,oBAAqB,OAAQvE,GAElDwiC,EAAS9iC,OAAS,GAEvB+H,EAAOlD,mBAAmB,2BAA4B,OAAQvE,GAE3DwiC,EAAS,GAGpB,MAAMt7B,EAASjG,GAAuBT,KAAMmgC,GAAmB,KAAKz/B,IAAIsN,GAAcH,WAAWrO,GAAK2M,UACtG,OAAIzF,GAGGO,EAAOlD,mBAAmB,oBAAqB,YAAavE,GAGvEuiC,YAAYrB,GAiBR,OAAO9qB,GAAUmmB,GAAG2E,EAASv0B,UAAW,EAAG,GAG/C81B,cAAcvB,GAEV,OAAO3E,GAAG2E,EAASv0B,UAEvB+1B,cAAc3zB,EAAQsG,GAClB,OAAOpU,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAOxnB,EAAQsG,GAEjFstB,cAAc5zB,EAAQjP,GAClB,OAAOmB,GAAuBT,KAAMsgC,GAAqB,KAAKvlB,OAAOxM,EAAQjP,GAEjF8iC,aAAa9iC,GACT,OAAOU,KAAKmiC,cAAcniC,KAAKyhC,OAAO7zB,OAAQtO,GAAU,IAE5D+iC,kBAAkB3B,EAAU7rB,GAOxB,MAN0B,iBAAd,IACR6rB,EAAW1gC,KAAK8hC,SAASpB,IAEzB9qB,GAAUf,EAAM,EAAG,KAAO7U,KAAK+hC,YAAYrB,IAC3Cz5B,EAAOlD,mBAAmB,uCAAuC28B,EAAS59B,QAAS,OAAQ+R,GAExF7U,KAAKkiC,cAAcxB,EAAS9yB,OAAQgI,GAAUf,EAAM,IAE/DytB,kBAAkB5B,EAAUphC,GAIxB,MAH0B,iBAAd,IACRohC,EAAW1gC,KAAK8hC,SAASpB,IAEtBlrB,GAAO,CACVxV,KAAK+hC,YAAYrB,GACjB1gC,KAAKmiC,cAAczB,EAAS9yB,OAAQtO,GAAU,MAItDijC,mBAAmB7B,EAAU7rB,GAOzB,MAN0B,iBAAd,IACR6rB,EAAW1gC,KAAK2hC,YAAYjB,IAE5B9qB,GAAUf,EAAM,EAAG,KAAO7U,KAAK+hC,YAAYrB,IAC3Cz5B,EAAOlD,mBAAmB,0CAA0C28B,EAAS59B,QAAS,OAAQ+R,GAE3F7U,KAAKkiC,cAAcxB,EAAS9yB,OAAQgI,GAAUf,EAAM,IAG/D2tB,mBAAmB9B,EAAUphC,GAIzB,MAH0B,iBAAd,IACRohC,EAAW1gC,KAAK2hC,YAAYjB,IAEzBlrB,GAAO,CACVxV,KAAK+hC,YAAYrB,GACjB1gC,KAAKmiC,cAAczB,EAAS9yB,OAAQtO,GAAU,MAItDmjC,qBAAqB/B,EAAU7rB,GACD,iBAAd,IACR6rB,EAAW1gC,KAAK2hC,YAAYjB,IAEhC,IAAIj9B,EAAU,iCACd,MAAM6R,EAAQV,GAASC,GACvB,GAAKS,EAAMpW,OAAS,IAAQ,EACxB,IACI,OAAOuB,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAO2K,EAAS3xB,QAASuG,GAE3F,MAAOhU,GACHmC,EAAU,+BAIlB,OAAOwD,EAAOnD,WAAWL,EAAS,WAAY,CAC1C1F,MAAOsX,GAAQC,GACfrT,KAAM,CAAEiD,OAAQw7B,EAAS59B,KAAM89B,UAAWF,EAASv0B,YAG3D3I,UAAUk9B,EAAU7Z,EAAOwN,GACG,iBAAd,IACRqM,EAAW1gC,KAAK2hC,YAAYjB,IAEhC,MAAM7rB,EAAO5N,EAAO3B,SAASuhB,GAC7B,IAAIjhB,EASA88B,EACAC,EACAC,EAVJ,GAAIvO,EACA,IACIzuB,EAAOnF,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAO2K,EAAS9yB,OAAQymB,EAAGxf,MAAQ,MAErG,MAAOvT,GACHwF,QAAQC,IAAIzF,GAMpB,IAAI02B,EAAS,iBACb,GAAoB,IAAhBnjB,EAAK3V,OACL84B,EAAS,4BAER,GAAKnjB,EAAK3V,OAAS,IAAQ,EAAG,CAC/B,MAAM4hC,EAAWzrB,GAAQR,EAAKhM,MAAM,EAAG,IACjCg6B,EAAU1B,GAAcL,GAC9B,GAAI+B,EACA,IACIF,EAAYE,EAAQ//B,KACpB8/B,EAAiBC,EAAQjC,UACzB8B,EAAYjiC,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAO8M,EAAQj1B,OAAQiH,EAAKhM,MAAM,IACrGmvB,EAAS6K,EAAQ7K,UAAU0K,GAE/B,MAAOphC,GACHwF,QAAQC,IAAIzF,OAGf,CACD02B,EAAS,uBACT,IACI,MAAM12B,EAAQtB,KAAK8hC,SAAShB,GAC5B6B,EAAYrhC,EAAMwB,KAClB8/B,EAAiBthC,EAAM6K,SACvB6rB,EAAS,iBAAiB4K,IAC1B,IACIF,EAAYjiC,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAOz0B,EAAMsM,OAAQiH,EAAKhM,MAAM,IAEvG,MAAOvH,GACH02B,EAAS,iBAAiB4K,mCAGlC,MAAOthC,GACHwF,QAAQC,IAAIzF,KAIxB,OAAO2F,EAAOzD,UAAU,wBAAyB,iBAAkB,CAC/DqR,KAAMQ,GAAQR,GAAOiuB,YAAa,KAClC59B,OAAQw7B,EAAS59B,KAAM89B,UAAWF,EAASv0B,SAAUvG,KAAAA,EACrD88B,UAAAA,EAAWC,UAAAA,EAAWC,eAAAA,EAAgB5K,OAAAA,IAI9C+K,qBAAqBC,EAAkB1jC,GAInC,MAHkC,iBAAtB,IACR0jC,EAAmBhjC,KAAK2hC,YAAYqB,IAEjC3tB,GAAQ5U,GAAuBT,KAAMsgC,GAAqB,KAAKvlB,OAAOioB,EAAiBj0B,QAASzP,GAAU,KAiCrH2jC,mBAAmBC,EAAe5jC,GACC,iBAAnB,IACR4jC,EAAgBljC,KAAK6hC,SAASqB,IAE9B5jC,EAAOJ,OAASgkC,EAAct1B,OAAO1O,QACrC+H,EAAOnD,WAAW,0BAA4Bo/B,EAAc/2B,SAAU,sBAAuB,CACzF/G,MAAO9F,EAAOJ,OACdmG,cAAe69B,EAAct1B,OAAO1O,SAG5C,MAAMikC,EAAS,GACVD,EAAcx0B,WACfy0B,EAAOxgC,KAAK3C,KAAKiiC,cAAciB,IAEnC,MAAME,EAAc,CAAC31B,EAAO1P,IACL,WAAf0P,EAAM7O,KACCm9B,GAAGh+B,GAEU,UAAf0P,EAAM7O,KACJurB,GAAU9U,GAAQtX,KAGV,YAAf0P,EAAM7O,MACN6B,GAAuBT,KAAMsgC,GAAqB,KAAKvlB,OAAO,CAAC,WAAY,CAAChd,IAEzEqY,GAAaf,GAAQtX,GAAQ,KAyBxC,IAtBAuB,EAAOsI,SAAQ,CAAC7J,EAAOW,KACnB,MAAM+O,EAAQy1B,EAAct1B,OAAOlP,GAC9B+O,EAAM1B,QAME,MAAThO,EACAolC,EAAOxgC,KAAK,MAEY,UAAnB8K,EAAM3B,UAA2C,UAAnB2B,EAAM3B,SACzC7E,EAAOlD,mBAAmB,gDAAkD,YAAc0J,EAAM3K,KAAO/E,GAElGgP,MAAMN,QAAQ1O,GACnBolC,EAAOxgC,KAAK5E,EAAMK,KAAKL,GAAUqlC,EAAY31B,EAAO1P,MAGpDolC,EAAOxgC,KAAKygC,EAAY31B,EAAO1P,IAflB,MAATA,GACAkJ,EAAOlD,mBAAmB,qDAAuD,YAAc0J,EAAM3K,KAAO/E,MAkBjHolC,EAAOjkC,QAAwC,OAA9BikC,EAAOA,EAAOjkC,OAAS,IAC3CikC,EAAO95B,MAEX,OAAO85B,EAEXE,eAAeH,EAAe5jC,GACK,iBAAnB,IACR4jC,EAAgBljC,KAAK6hC,SAASqB,IAElC,MAAMC,EAAS,GACTG,EAAY,GACZC,EAAa,GA6BnB,OA5BKL,EAAcx0B,WACfy0B,EAAOxgC,KAAK3C,KAAKiiC,cAAciB,IAE/B5jC,EAAOJ,SAAWgkC,EAAct1B,OAAO1O,QACvC+H,EAAOlD,mBAAmB,kCAAmC,SAAUzE,GAE3E4jC,EAAct1B,OAAOhG,SAAQ,CAAC6F,EAAO/O,KACjC,MAAMX,EAAQuB,EAAOZ,GACrB,GAAI+O,EAAM1B,QACN,GAAmB,WAAf0B,EAAM7O,KACNukC,EAAOxgC,KAAKo5B,GAAGh+B,SAEd,GAAmB,UAAf0P,EAAM7O,KACXukC,EAAOxgC,KAAKwnB,GAAUpsB,QAErB,CAAA,GAAuB,UAAnB0P,EAAM3B,UAA2C,UAAnB2B,EAAM3B,SAEzC,MAAM,IAAI3M,MAAM,mBAGhBgkC,EAAOxgC,KAAKlC,GAAuBT,KAAMsgC,GAAqB,KAAKvlB,OAAO,CAACtN,EAAM7O,MAAO,CAACb,UAI7FulC,EAAU3gC,KAAK8K,GACf81B,EAAW5gC,KAAK5E,MAGjB,CACH8W,KAAMpU,GAAuBT,KAAMsgC,GAAqB,KAAKvlB,OAAOuoB,EAAWC,GAC/EJ,OAAQA,GAIhBK,eAAeN,EAAeruB,EAAMsuB,GAIhC,GAH+B,iBAAnB,IACRD,EAAgBljC,KAAK6hC,SAASqB,IAEpB,MAAVC,IAAmBD,EAAcx0B,UAAW,CAC5C,MAAM+0B,EAAazjC,KAAKiiC,cAAciB,GACjC1uB,GAAY2uB,EAAO,GAAI,KAAOA,EAAO,GAAG/8B,gBAAkBq9B,GAC3Dx8B,EAAOlD,mBAAmB,0BAA2B,YAAao/B,EAAO,IAE7EA,EAASA,EAAOt6B,MAAM,GAE1B,MAAMkD,EAAU,GACV23B,EAAa,GACb5rB,EAAU,GAChBorB,EAAct1B,OAAOhG,SAAQ,CAAC6F,EAAO/O,KAC7B+O,EAAM1B,QACa,WAAf0B,EAAM7O,MAAoC,UAAf6O,EAAM7O,MAAuC,UAAnB6O,EAAM3B,UAA2C,UAAnB2B,EAAM3B,UACzFC,EAAQpJ,KAAKoI,GAAU+C,WAAW,CAAElP,KAAM,UAAWkE,KAAM2K,EAAM3K,QACjEgV,EAAQnV,MAAK,KAGboJ,EAAQpJ,KAAK8K,GACbqK,EAAQnV,MAAK,KAIjB+gC,EAAW/gC,KAAK8K,GAChBqK,EAAQnV,MAAK,OAGrB,MAAMghC,EAA2B,MAAVR,EAAkB1iC,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAOhqB,EAASyJ,GAAO2tB,IAAW,KAC5HS,EAAmBnjC,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAO2N,EAAY7uB,GAAM,GAEnGvV,EAAS,GACTtB,EAAO,GACb,IAAI6lC,EAAkB,EAAGC,EAAe,EA8BxC,OA7BAZ,EAAct1B,OAAOhG,SAAQ,CAAC6F,EAAO/O,KACjC,IAAIX,EAAQ,KACZ,GAAI0P,EAAM1B,QACN,GAAqB,MAAjB43B,EACA5lC,EAAQ,IAAIijC,GAAQ,WAEnB,GAAIlpB,EAAQpZ,GACbX,EAAQ,IAAIijC,GAAQ2C,EAAcG,WAGlC,IACI/lC,EAAQ4lC,EAAcG,KAE1B,MAAOxiC,GACHvD,EAAQuD,OAKhB,IACIvD,EAAQ6lC,EAAiBC,KAE7B,MAAOviC,GACHvD,EAAQuD,EAGhBhC,EAAOqD,KAAK5E,GACZC,EAAK2E,KAAK8K,EAAM3K,MAAQ,SAErBsU,GAAO4f,UAAU13B,EAAQtB,GAIpC+lC,iBAAiB1P,GACb,MAAMxf,EAAO5N,EAAO3B,SAAS+uB,EAAGxf,KAAM,WAChC9W,EAAQkJ,EAAOtB,UAAuB,MAAZ0uB,EAAGt2B,MAAiBs2B,EAAGt2B,MAAQ,EAAG,YAC5D2iC,EAAW1gC,KAAK2hC,YAAYtsB,GAAQR,EAAKhM,MAAM,EAAG,KACxD,IAAK63B,EACD,OAAO,KAEX,MAAM96B,EAAOnF,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAO2K,EAAS9yB,OAAQiH,EAAKhM,MAAM,IACvG,OAAO,IAAIg4B,GAAuBH,EAAU1gC,KAAK+hC,YAAYrB,GAAW96B,EAAM7H,GAMlFimC,SAASj9B,GACL,MAAM25B,EAAW1gC,KAAK6hC,SAAS96B,EAAIo8B,OAAO,IAC1C,OAAKzC,GAAYA,EAAShyB,UACf,KAKJ,IAAI+xB,GAAeC,EAAU1gC,KAAKiiC,cAAcvB,GAAW1gC,KAAKwjC,eAAe9C,EAAU35B,EAAI8N,KAAM9N,EAAIo8B,SAElHc,WAAWpvB,GACP,MAAMqvB,EAAU7uB,GAAQR,GAClB6rB,EAAW1gC,KAAK8hC,SAASlsB,GAAUsuB,EAAS,EAAG,IACrD,IAAKxD,EACD,OAAO,KAEX,MAAM96B,EAAOnF,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAO2K,EAAS9yB,OAAQgI,GAAUsuB,EAAS,IAC/G,OAAO,IAAInD,GAAiBL,EAAU1gC,KAAK+hC,YAAYrB,GAAW96B,GAEtEK,YAAYlI,GAER,OAAIA,aAAiBqjC,GACVrjC,EAGY,iBAAX,EACD,IAAIqjC,GAAUz9B,KAAK6I,MAAMzO,IAGN,mBAAlBA,EAAY,OACb,IAAIqjC,GAAUrjC,EAAMoO,OAAO3E,EAAW6E,OAG1C,IAAI+0B,GAAUrjC,IAG7BoiC,GAAoB,IAAI1+B,QAAW2+B,GAAoB,IAAI3+B,QAAW4+B,GAAuB,IAAI5+B,QAAW6+B,GAAsB,IAAI7+B,QAAWy+B,GAAuB,IAAI55B,QAAWi6B,GAAyB,SAAgC/gC,EAAKF,EAAQ6kC,GAEzP,GAAI3vB,GAAYhV,GAAM,CAClB,MAAMshC,EAAWthC,EAAI4G,cACrB,IAAK,MAAMs6B,KAAYjgC,GAAuBT,KAAMqgC,GAAsB,KAAK/gC,SAC3E,GAAIwhC,IAAa9gC,KAAK+hC,YAAYrB,GAC9B,OAAOA,EAGfz5B,EAAOlD,mBAAmB,uBAAwB,WAAYvE,GAGlE,IAA0B,IAAtBA,EAAIqF,QAAQ,KAAa,CACzB,MAAMm9B,EAAW,GACjB,IAAK,MAAOl/B,EAAM49B,KAAajgC,GAAuBT,KAAMqgC,GAAsB,KAC1Ev9B,EAAKhE,MAAM,KAAiB,KAAOU,GACnCwiC,EAASr/B,KAAK+9B,GAGtB,GAAIphC,EAAQ,CACR,MAAM8kC,EAAa9kC,EAAOJ,OAAS,EAAKI,EAAOA,EAAOJ,OAAS,GAAK,KACpE,IAAImlC,EAAc/kC,EAAOJ,OACrBolC,GAAe,EACfnP,GAAMS,QAAQwO,IAAiC,cAAnBA,EAAUxlC,OACtC0lC,GAAe,EACfD,KAIJ,IAAK,IAAIplC,EAAI+iC,EAAS9iC,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC3C,MAAM2O,EAASo0B,EAAS/iC,GAAG2O,OAAO1O,OAC9B0O,IAAWy2B,GAAiBC,GAAgB12B,IAAWy2B,EAAc,GACrErC,EAASuC,OAAOtlC,EAAG,GAI3B,IAAK,IAAIA,EAAI+iC,EAAS9iC,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC3C,MAAM2O,EAASo0B,EAAS/iC,GAAG2O,OAC3B,IAAK,IAAIka,EAAI,EAAGA,EAAIxoB,EAAOJ,OAAQ4oB,IAE/B,GAAKqN,GAAMS,QAAQt2B,EAAOwoB,IAA1B,CAIA,GAAIA,GAAKla,EAAO1O,OAAQ,CACpB,GAAuB,cAAnBI,EAAOwoB,GAAGlpB,KACV,SAEJojC,EAASuC,OAAOtlC,EAAG,GACnB,MAGJ,GAAIK,EAAOwoB,GAAGlpB,OAASgP,EAAOka,GAAGhc,SAAU,CACvCk2B,EAASuC,OAAOtlC,EAAG,GACnB,SAOhB,GAAwB,IAApB+iC,EAAS9iC,QAAgBI,GAAUA,EAAOJ,SAAW8iC,EAAS,GAAGp0B,OAAO1O,OAAQ,CAChF,MAAMslC,EAAUllC,EAAOA,EAAOJ,OAAS,IACxB,MAAXslC,GAAmBz3B,MAAMN,QAAQ+3B,IAAiC,iBAArB,IAC7CxC,EAASuC,OAAO,EAAG,GAG3B,GAAwB,IAApBvC,EAAS9iC,OACT+H,EAAOlD,mBAAmB,uBAAwB,OAAQvE,QAEzD,GAAIwiC,EAAS9iC,OAAS,GAAKilC,EAAa,CACzC,MAAMM,EAAWzC,EAAS5jC,KAAKsmC,GAAM/gC,KAAKC,UAAU8gC,EAAEv4B,YAAWtI,KAAK,MACtEoD,EAAOlD,mBAAmB,qCAAqC0gC,KAAa,OAAQjlC,GAExF,OAAOwiC,EAAS,GAGpB,MAAMt7B,EAASjG,GAAuBT,KAAMqgC,GAAsB,KAAK3/B,IAAIwN,GAAiBL,WAAWrO,GAAK2M,UAC5G,OAAIzF,GAGGO,EAAOlD,mBAAmB,uBAAwB,YAAavE,IACvEghC,GAAsB,SAA6BhhC,EAAKF,EAAQ6kC,GAE/D,GAAI3vB,GAAYhV,GAAM,CAClB,MAAMikC,EAAajkC,EAAI4G,cACvB,IAAK,MAAMs6B,KAAYjgC,GAAuBT,KAAMogC,GAAmB,KAAK9gC,SACxE,GAAImkC,IAAezjC,KAAKiiC,cAAcvB,GAClC,OAAOA,EAGfz5B,EAAOlD,mBAAmB,oBAAqB,aAAcvE,GAGjE,IAA0B,IAAtBA,EAAIqF,QAAQ,KAAa,CACzB,MAAMm9B,EAAW,GACjB,IAAK,MAAOl/B,EAAM49B,KAAajgC,GAAuBT,KAAMogC,GAAmB,KACvEt9B,EAAKhE,MAAM,KAAiB,KAAOU,GACnCwiC,EAASr/B,KAAK+9B,GAGtB,GAAIphC,EAAQ,CAER,IAAK,IAAIL,EAAI+iC,EAAS9iC,OAAS,EAAGD,GAAK,EAAGA,IAClC+iC,EAAS/iC,GAAG2O,OAAO1O,OAASI,EAAOJ,QACnC8iC,EAASuC,OAAOtlC,EAAG,GAI3B,IAAK,IAAIA,EAAI+iC,EAAS9iC,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC3C,MAAM2O,EAASo0B,EAAS/iC,GAAG2O,OAC3B,IAAK,IAAIka,EAAI,EAAGA,EAAIxoB,EAAOJ,OAAQ4oB,IAE/B,GAAKqN,GAAMS,QAAQt2B,EAAOwoB,KAItBxoB,EAAOwoB,GAAGlpB,OAASgP,EAAOka,GAAGhc,SAAU,CACvCk2B,EAASuC,OAAOtlC,EAAG,GACnB,QAYhB,OAPwB,IAApB+iC,EAAS9iC,OACT+H,EAAOlD,mBAAmB,oBAAqB,OAAQvE,GAElDwiC,EAAS9iC,OAAS,GAAKilC,GAE5Bl9B,EAAOlD,mBAAmB,2BAA4B,OAAQvE,GAE3DwiC,EAAS,GAGpB,MAAMt7B,EAASjG,GAAuBT,KAAMogC,GAAmB,KAAK1/B,IAAIuN,GAAcJ,WAAWrO,GAAK2M,UACtG,OAAIzF,GAGGO,EAAOlD,mBAAmB,oBAAqB,YAAavE,IC1vBhE,MCEMyH,GAAS,IAAI5D,EDFH,mCEAvB,IAWIshC,GAAsBC,GAXtB7kC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAQjF,MAAM4kC,GACTjkC,YAAYkkC,EAAYC,EAAeC,EAASC,EAAMC,GAClDP,GAAqBnkC,IAAIR,UAAM,GAC/B4kC,GAAqBpkC,IAAIR,UAAM,GAC/BD,GAAuBC,KAAM2kC,GAAsB,CAC/CG,WAAAA,EACAC,cAAAA,EACAC,QAAS/mC,OAAO4J,OAAO5J,OAAOoN,OAAO,GAAIpN,OAAOD,KAAKgnC,GAASzmC,QAAO,CAACC,EAAOH,KACzEG,EAAMH,EAAE+H,eAAiB4+B,EAAQ3mC,GAC1BG,IACR,MACHymC,KAAgB,MAARA,EAAgB,KAAO,IAAIz+B,WAAWy+B,GAC9CC,QAAUA,GAAW,MACtB,KACHnlC,GAAuBC,KAAM4kC,GAAsB,CAAEnhC,QAAS,IAAM,KAExEqG,WACI,MAAMm7B,EAAOhkC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,QAC/E,MAAO,oBAAoB3kC,KAAK8kC,mBAAmBG,EAAO5vB,GAAQ4vB,GAAQ,UAE1EH,iBAAe,OAAO7jC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,cACxFI,oBAAkB,OAAO9jC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,iBAC3FK,cAAY,OAAO/jC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,WACrFM,WACA,MAAMA,EAAOhkC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,QAC/E,OAAgB,MAARM,EAAgB,KAAO,IAAIz+B,WAAWy+B,GAE9CE,eACA,IACI,MAAMF,EAAOhkC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,QAC/E,OAAgB,MAARM,EAAgB,GAAKpL,GAAaoL,GAE9C,MAAO3jC,GACH,OAAO2F,GAAOnD,WAAW,wCAAyC,wBAAyB,CACvFY,UAAW,WAAYzC,KAAM,CAAEmjC,SAAUplC,SAIjDqlC,eACA,IACI,OAAO1hC,KAAK6I,MAAMxM,KAAKmlC,UAE3B,MAAO7jC,GACH,OAAO2F,GAAOnD,WAAW,kCAAmC,wBAAyB,CACjFY,UAAW,WAAYzC,KAAM,CAAEmjC,SAAUplC,SAIrD,EAAE2kC,GAAuB,IAAIljC,QAAWmjC,GAAuB,IAAInjC,QAAWkK,OAAO25B,aACjF,MAAMN,EAAUhlC,KAAKglC,QACfhnC,EAAOC,OAAOD,KAAKgnC,GACzB,IAAItmC,EAAQ,EACZ,MAAO,CACH6mC,KAAM,KACF,GAAI7mC,EAAQV,EAAKkB,OAAQ,CACrB,MAAMM,EAAMxB,EAAKU,KACjB,MAAO,CACHX,MAAO,CAACyB,EAAKwlC,EAAQxlC,IAAOgmC,MAAM,GAG1C,MAAO,CAAEznC,WAAO2B,EAAW8lC,MAAM,KAI7CC,gBAAgBhiC,EAASnC,GACrB,IAAIyjC,EAMAA,EALCthC,EAKe,kCAAkCzD,KAAK8kC,cAAc9kC,KAAK+kC,kBAAkBthC,KAH5E,kCADhBA,EAAU,GAAGzD,KAAK8kC,cAAc9kC,KAAK+kC,mBAMzC,MAAMK,EAAW,IAAIP,GAAc,IAAKE,EAAe/kC,KAAKglC,QAAShlC,KAAKilC,KAAMhkC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,iBAAcjlC,GAEhK,OADAK,GAAuBqlC,EAAUR,GAAsB,CAAEnhC,QAAAA,EAASnC,MAAAA,GAAS,KACpE8jC,EAEXM,mBAAmBjiC,EAASkiC,GACX,MAATA,IACAA,EAAQ,MAEW,iBAAX,IAAwBphC,OAAOC,UAAUmhC,IAAUA,EAAQ,IACnE1+B,GAAOlD,mBAAmB,wBAAyB,QAAS4hC,GAEhE,MAAMrkC,EAAQ,IAAInC,MAAMsE,GAAW,uBAEnC,MADArE,EAAiBkC,EAAO,CAAEqkC,MAAAA,EAAOC,UAAU,IACrCtkC,EAEVukC,UAAUrmC,GACN,OAAOQ,KAAKglC,QAAQxlC,EAAI4G,eAE5B0/B,UAEI,OAAgB,MADH7kC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,QAG/EO,cAAY,OAAOjkC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,WACzFoB,KACI,MAA4E,KAApEtlC,GAAuBT,KAAM4kC,GAAsB,KAAKnhC,SAAkBzD,KAAK8kC,YAAc,KAAO9kC,KAAK8kC,WAAa,IAElIkB,WACI,GAAIhmC,KAAK+lC,KACL,OAEJ,IAAItiC,QAAEA,EAAOnC,MAAEA,GAAUb,GAAuBT,KAAM4kC,GAAsB,KAC5D,KAAZnhC,IACAA,EAAU,mBAAmBzD,KAAK8kC,cAAc9kC,KAAK+kC,iBAEzD99B,GAAOnD,WAAWL,EAAS,eAAgB,CACvCyhC,QAAUllC,KAAKklC,SAAW,kBAAoBE,SAAUplC,KAAMsB,MAAAA,KC3HnEzD,eAAeooC,GAAOC,EAAKC,GAC9B,MAAMC,EAAWF,EAAIG,IAAIvnC,MAAM,KAAK,GAAGsH,cACtB,SAAbggC,GAAoC,UAAbA,GACvBn/B,GAAOnD,WAAW,wBAAwBsiC,IAAY,wBAAyB,CAC3EnkC,KAAM,CAAEmkC,SAAAA,GACR1hC,UAAW,YAGfwhC,EAAII,cAAgBJ,EAAIK,6BACxBt/B,GAAOnD,WAAW,8CAA+C,wBAAyB,CACtFY,UAAW,YAGnB,MAAM8hC,EAAO,CACTthC,OAAQghC,EAAIhhC,OACZ8/B,QAAS,IAAIyB,QAAQ15B,MAAM5B,KAAK+6B,IAChCjB,KAAMiB,EAAIjB,WAAQvlC,GAEhBgnC,QAAaC,MAAMT,EAAIG,IAAKG,GAC5BxB,EAAU,GAChB0B,EAAK1B,QAAQp9B,SAAQ,CAAC7J,EAAOyB,KACzBwlC,EAAQxlC,EAAI4G,eAAiBrI,KAEjC,MAAMknC,EAAO,IAAIz+B,iBAAiBkgC,EAAKE,eACvC,OAAO,IAAI/B,GAAc6B,EAAKG,OAAQH,EAAKI,WAAY9B,EAASC,EAAMiB,GC1B1E,IAWIa,GAXAhnC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAMxF,SAASuC,GAAMzE,EAAOa,EAAMkE,GACxB,UAAY,IAAWlE,EACnB,MAAM,IAAIO,MAAM,WAAW2D,KAE/B,OAAO/E,EAEJ,MAAMipC,GACTpmC,YAAYylC,GACRU,GAAoBvmC,IAAIR,UAAM,GAC9BD,GAAuBC,KAAM+mC,GAAqB,CAC9CE,eAAe,EACfC,MAAM,EACNlC,QAAS,GACT9/B,OAAQ,GACRihC,QAAS,IACTE,IAAK7jC,GAAM6jC,EAAK,SAAU,QAC3B,KAGHA,UAAQ,OAAOplC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,OAChFV,QAAIA,GACJllC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,MAAOvkC,GAAM6jC,EAAK,SAAU,QAG7FpB,WACA,MAAMA,EAAOhkC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,QAC9E,OAAY,MAAR9B,EACO,KAEPjlC,KAAKoB,WACE,IAAIoF,WAAWy+B,GAEnBA,EAEPA,SAAKA,GACL,GAAY,MAARA,EACA9jC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,YAAQrnC,GACzEyB,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,gBAAYrnC,QAE5E,GAAsB,iBAAV,EAEbyB,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,OAAQ3N,GAAY6L,IACrF9jC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,WAAY,mBAE5E,GAAI9B,aAAgBz+B,WACrBrF,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,OAAQ9B,GACzE9jC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,WAAY,gCAE5E,CAAA,GAAsB,iBAAV,EAKb,MAAM,IAAI5nC,MAAM,gBAJhBgC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,OAAQ3N,GAAYz1B,KAAKC,UAAUqhC,KACpG9jC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,WAAY,qBAMrFjB,UACI,OAAoF,MAA5E7kC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,QAGzE7hC,aACA,MAAMA,EAASjE,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,UAChF,OAAI7hC,EACOA,EAAO0tB,cAEd5yB,KAAKilC,KACE,OAEJ,MAEP//B,WAAOA,GACO,MAAVA,IACAA,EAAS,IAEb/D,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,SAAUvkC,GAAM0C,EAAQ,SAAU,WAGnG8/B,cACA,MAAMA,EAAU/mC,OAAOoN,OAAO,GAAIpK,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,YAC7FI,EAAWlmC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,YAYlF,OAXI/mC,KAAKsmC,YAELtmC,KAAKonC,YACLpC,EAAQ,mBAAqB,QAEF,MAA3BA,EAAQ,iBAA2BmC,IACnCnC,EAAQ,gBAAkBmC,GAE1BnnC,KAAKilC,OACLD,EAAQ,kBAAoBviC,OAAOzC,KAAKilC,KAAK/lC,SAE1CjB,OAAO4J,OAAOm9B,GAEzBa,UAAUrmC,GACN,OAAOQ,KAAKglC,QAAQxlC,EAAI4G,eAE5BihC,UAAU7nC,EAAKzB,GACX,MAAMinC,EAAU/jC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,WACjF5lC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,UAAW/B,GAC5EA,EAAQxiC,GAAMhD,EAAK,SAAU,OAAO4G,eAAiB3D,OAAO1E,GAEhEupC,eACInmC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,UAAW,IAEhF,EAAEA,GAAsB,IAAItlC,QAAWkK,OAAO25B,aAC1C,MAAMN,EAAUhlC,KAAKglC,QACfhnC,EAAOC,OAAOD,KAAKgnC,GACzB,IAAItmC,EAAQ,EACZ,MAAO,CACH6mC,KAAM,KACF,GAAI7mC,EAAQV,EAAKkB,OAAQ,CACrB,MAAMM,EAAMxB,EAAKU,KACjB,MAAO,CACHX,MAAO,CAACyB,EAAKwlC,EAAQxlC,IAAOgmC,MAAM,GAG1C,MAAO,CAAEznC,WAAO2B,EAAW8lC,MAAM,KAKzCc,kBACA,OAAOrlC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,UAAY,KAExFQ,eAAeC,EAAUrqB,GACjBqqB,EAAS/gC,MAAM,MACfQ,GAAOlD,mBAAmB,wCAAyC,WAAY,cAEnF5C,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,QAAS,GAAGS,KAAYrqB,KAOzFiqB,gBACA,OAAOnmC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,QAExEK,cAAUrpC,GACVoD,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,SAAUhpC,GAG3EwoC,kCACA,QAAStlC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,iBAE1ER,gCAA4BxoC,GAC5BoD,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,gBAAiBvkC,GAAMzE,EAAO,UAAW,gCAG1GooC,cAAY,OAAOllC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,WACpFZ,YAAQA,GAER,IADAA,EAAU3jC,GAAM2jC,EAAS,SAAU,aACpB,EACX,MAAM,IAAIhnC,MAAM,oBAEpBgC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,UAAWZ,GAEhFsB,SAASC,GAEL,MAAMrO,EAAUr5B,KAAKqmC,IAAIvnC,MAAM,KAAK,GAAGsH,cACjC/G,EAASqoC,EAAS5oC,MAAM,KAAK,GAAGsH,cACtC,GAAoB,QAAhBpG,KAAKkF,QAAiC,UAAZm0B,GAAkC,SAAXh6B,IAChDqoC,EAASjhC,MAAM,YAChB,OAAOQ,GAAOnD,WAAW,uBAAwB,wBAAyB,CACtEY,UAAW,YAAY1E,KAAKkF,UAAUvB,KAAKC,UAAU5D,KAAKqmC,WAAW1iC,KAAKC,UAAU8jC,QAI5F,MAAMxB,EAAM,IAAIc,GAAaU,GAW7B,OAVAxB,EAAIhhC,OAAS,MACbghC,EAAIkB,UAAYpnC,KAAKonC,UACrBlB,EAAIC,QAAUnmC,KAAKmmC,QACnBhlC,EAASV,GAAuBylC,EAAKa,GAAqB,KAAM,OAAQ9lC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,SACzI5lC,EAASV,GAAuBylC,EAAKa,GAAqB,KAAM,UAAW9oC,OAAOoN,OAAO,GAAIpK,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,aAC9J5lC,EAASV,GAAuBylC,EAAKa,GAAqB,KAAM,WAAY9lC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,aAKtIb,EAEXp9B,QACI,MAAMA,EAAQ,IAAIk+B,GAAahnC,KAAKqmC,KAEpCllC,EAASV,GAAuBqI,EAAOi+B,GAAqB,KAAM,SAAU9lC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,WAE7I,MAAM9B,EAAOhkC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,QAc9E,OAbA5lC,EAASV,GAAuBqI,EAAOi+B,GAAqB,KAAM,OAAiB,MAAR9B,OAAgBvlC,EAAY,IAAI8G,WAAWy+B,IACtH9jC,EAASV,GAAuBqI,EAAOi+B,GAAqB,KAAM,WAAY9lC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,aAE/I5lC,EAASV,GAAuBqI,EAAOi+B,GAAqB,KAAM,UAAW9oC,OAAOoN,OAAO,GAAIpK,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,aAEhK5lC,EAASV,GAAuBqI,EAAOi+B,GAAqB,KAAM,QAAS9lC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,UACxI/mC,KAAKonC,YACLt+B,EAAMs+B,WAAY,GAEtBt+B,EAAMq9B,QAAUnmC,KAAKmmC,QACjBnmC,KAAKumC,8BACLz9B,EAAMy9B,6BAA8B,GAEjCz9B,EAEXjB,SAEI,MAAMo9B,EAAOhkC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,QAM9E,OALY,MAAR9B,GACA9jC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,OAAQ,IAAIvgC,WAAWy+B,IAE5FhnC,OAAO4J,OAAOpH,GAAuBT,KAAM+mC,GAAqB,KAAK/B,SACrE/mC,OAAO4J,OAAOpH,GAAuBT,KAAM+mC,GAAqB,MACzD/mC,KAEXoB,WACI,OAAOnD,OAAOmD,SAASX,GAAuBT,KAAM+mC,GAAqB,OC9NjFlpC,eAAe8pC,GAAMC,GACjB,OAAO,IAAI1pC,SAASI,IAAc6b,WAAW7b,EAASspC,MAG1D,SAASC,KAAY,OAAO,IAAKptB,MAAQotB,UAOzC,IAAIC,IAAe,EAGZjqC,eAAekqC,GAAUC,GAC5B,MAAMC,EAAgC,mBAAY,CAC9C/C,QAAS,IAAI8B,GAAagB,IACzBA,aAAsBhB,GAAgB,CACvC9B,QAAS8C,GACT/pC,OAAOoN,OAAO,GAAI28B,GACtB,GAAoB,MAAhBC,EAAK/C,QACL,OAAOj+B,GAAOlD,mBAAmB,kBAAmB,aAAcikC,GAEtE,IAAI9B,EAAM+B,EAAK/C,QAAQp8B,QAAQjB,SAC/B,OAAQogC,EAAK/C,QAAQmB,IAAIvnC,MAAM,KAAK,IAChC,IAAK,OAAQ,CACT,MAAM2H,EAAQy/B,EAAIG,IAAI5/B,MAAM,oCAC5B,GAAIA,EACA,IACI,MAAMu+B,EAAU,CACZ,eAAiBv+B,EAAM,GAAKA,EAAM,GAAK,cAErCw+B,EAAQx+B,EAAM,GAAKuO,GAAavO,EAAM,IAvBrD2yB,GAuBqE3yB,EAAM,GA1BpEgyB,QAAQ,yBAAyB,CAACt6B,EAAKoD,IAC1CkB,OAAOC,aAAakE,SAASrF,EAAM,QA0B9B,OAAO,IAAIsjC,GAAc,IAAK,KAAMG,EAASC,EAAMiB,EAAIp9B,SAE3D,MAAOxH,GACH,OAAO,IAAIujC,GAAc,IAAK,4CAA6C,GAAI,KAAMqB,EAAIp9B,SAGjG,OAAO,IAAI+7B,GAAc,IAAK,+CAAgD,GAAI,KAAMqB,EAAIp9B,SAEhG,IAAK,OACL,IAAK,OACL,IAAK,KACD,MAAM,IAAI3J,MAAM,uBAEpB,IAAK,OACL,IAAK,QACD,MACJ,QACI,MAAM,IAAIA,MAAM,sBAExB,MAAM+oC,EAAkC,MAAtBD,EAAKE,cAAyBF,EAAKE,cAAgB,GACrE,IAAK5jC,OAAOC,UAAU0jC,IAAaA,EAAW,EAC1C,OAAOjhC,GAAOlD,mBAAmB,wBAAyB,aAAcikC,GAE5E,MAAMI,EAA6C,MAA7BH,EAAKI,qBAAgCJ,EAAKI,qBAAuB,IAEvF,IAAK9jC,OAAOC,UAAU4jC,IAAiBF,EAAW,EAC9C,OAAOjhC,GAAOlD,mBAAmB,+BAAgC,aAAcikC,GAEnF,MAAMM,EAAmC,MAAtBL,EAAKM,cAAyBN,EAAKM,cAAgB,KACtE,GAAID,GAAoC,mBAAvB,EACb,OAAOrhC,GAAOlD,mBAAmB,iCAAkC,aAAcikC,GAErF,MAAMQ,EAAmBP,EAAKO,kBAAoB,KAClD,GAAIA,GAAkD,mBAA9B,EACpB,OAAOvhC,GAAOlD,mBAAmB,oCAAqC,aAAcikC,GAExF,MAAMS,EAAkBR,EAAKQ,iBAAmB,KAChD,GAAIA,GAAgD,mBAA7B,EACnB,OAAOxhC,GAAOlD,mBAAmB,mCAAoC,aAAcikC,GAGvF,MAAMU,EAAKb,KACX,IAAIzC,EAAW,KACf,IAAK,IAAIlzB,EAAI,EAAGA,EAAIg2B,EAAUh2B,IAAK,CAC/B,IAAIgzB,EAAUgB,EAAIp9B,QACd0/B,IACAtD,SAAiBsD,EAAiBtD,EAAQr9B,WAAWiB,SAGzD,GADsB++B,KAAYa,EACd,EAChB,OAAOzhC,GAAOnD,WAAW,UAAW,UAAW,CAAEY,UAAW,UAAWszB,OAAQ,UAAWkN,QAAAA,IAI9F,GAFAE,QAAiBa,GAAOf,GAEpBhzB,EAAIg2B,EAAU,CACd,GAA4B,MAAxB9C,EAASN,YAA8C,MAAxBM,EAASN,WAAoB,CAG5D,IACIoB,EAAMhB,EAAQuC,SAASrC,EAASJ,QAAQ0C,UAAY,IACpD,SAEJ,MAAOpmC,IAGP,OAAO8jC,EAEN,GAA4B,MAAxBA,EAASN,aACG,MAAbwD,SAA4BA,EAAUpD,EAAQr9B,SAAUu9B,EAAUlzB,IAAK,CACvE,MAAMy2B,EAAavD,EAASJ,QAAQ,eACR,iBAAxB,GAAoC2D,EAAWliC,MAAM,uBAC/CkhC,GAAM/gC,SAAS+hC,UAGfhB,GAAMS,EAAepvB,KAAK4vB,MAAM5vB,KAAK6vB,SAAW7vB,KAAK8vB,IAAI,EAAG52B,KAEtE,UAOZ,GAAIu2B,EACA,IACI,aAAaA,EAAgBvD,EAASE,GAE1C,MAAO9jC,GAEH,GAAIA,EAAMskC,UAAqC,iBAAjBtkC,EAAW,MAAgB,CACrD,GAAI4Q,EAAIg2B,EAAU,OACRP,GAAMrmC,EAAMqkC,OAClB,SAGJ,OAAOP,EAASK,gBAAgB,+BAAgCnkC,GAGpE8jC,EAASK,gBAAgB,oCAAqCnkC,GAAO0kC,WAG7E,OAAOZ,EAGX,OAAOA,EAASK,gBAAgB,gCAEpCsC,GAAUhhB,KAAO,WACb+gB,IAAe,GAGnBC,GAAUgB,WAAa,SAAUC,KAEjCjB,GAAUkB,eAAiB,SAAUD,GAC7BlB,IACA7gC,GAAOnD,WAAW,sBAAuB,wBAAyB,CAC9DY,UAAW,oBAKvBqjC,GAAUmB,aAAe,SAAUF,GAC3BlB,IACA7gC,GAAOnD,WAAW,sBAAuB,wBAAyB,CAC9DY,UAAW,kBClKhB,MCEMuC,GAAS,IAAI5D,EDFH,yCEAvB,IAWIwG,GAAIs/B,GAA2BC,GAX/BrpC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAUxF,MAAMgQ,GAAOxK,OAAO,GACd8xB,GAAQ,IAAI/wB,WAAW,IACvB6iC,GAAW,qEACjB,SAASC,GAAW5iC,EAAQmP,GACxB,GAAe,OAAXnP,EACA,OAAO,KAEX,MAAMC,EAASgJ,GAASiG,GAAUlP,EAAQmP,EAAOA,EAAQ,KACnD3W,EAASyQ,GAASiG,GAAUlP,EAAQC,EAAQA,EAAS,KAC3D,OAAOiP,GAAUlP,EAAQC,EAAS,GAAIA,EAAS,GAAKzH,GAExD,SAASqqC,GAAY7iC,EAAQmP,GACzB,IACI,MAAMP,EAAQg0B,GAAW5iC,EAAQmP,GACjC,GAAa,MAATP,EACA,OAAOukB,GAAavkB,GAG5B,MAAOhU,IACP,OAAO,KAEX,SAASkoC,GAAOzrC,GACZ,MAAM2I,EAASqJ,GAAQhS,GACvB,GAAI2I,EAAOxH,OAAS,GAChB,MAAM,IAAIC,MAAM,+BAEpB,MAAMsqC,EAAS,IAAIjjC,WAAW,IAE9B,OADAijC,EAAOjpC,IAAIkG,EAAQ,GAAKA,EAAOxH,QACxBuqC,EAEX,SAASC,GAAS3rC,GACd,GAAKA,EAAMmB,OAAS,IAAQ,EACxB,OAAOnB,EAEX,MAAM2I,EAAS,IAAIF,WAA0C,GAA/BwS,KAAKC,KAAKlb,EAAMmB,OAAS,KAEvD,OADAwH,EAAOlG,IAAIzC,GACJ2I,EAGX,SAASijC,GAAYl0B,GACjB,MAAM/O,EAAS,GACf,IAAIkjC,EAAY,EAEhB,IAAK,IAAI3qC,EAAI,EAAGA,EAAIwW,EAAMvW,OAAQD,IAC9ByH,EAAO/D,KAAK40B,IACZqS,GAAa,GAEjB,IAAK,IAAI3qC,EAAI,EAAGA,EAAIwW,EAAMvW,OAAQD,IAAK,CACnC,MAAM4V,EAAO5N,GAAO3B,SAASmQ,EAAMxW,IAEnCyH,EAAOzH,GAAKuqC,GAAOI,GAEnBljC,EAAO/D,KAAK6mC,GAAO30B,EAAK3V,SACxBwH,EAAO/D,KAAK+mC,GAAS70B,IACrB+0B,GAAa,GAAmC,GAA9B5wB,KAAKC,KAAKpE,EAAK3V,OAAS,IAE9C,OAAOsW,GAAO9O,GAIlB,SAASmjC,GAAYpgC,GAUjB,OATIA,EAAKhD,MAAM,qBACXgD,EAAOA,EAAK5C,UAAU,IAEjB4C,EAAKhD,MAAM,eAChBgD,EAAOA,EAAK5C,UAAU,GAGtBI,GAAOlD,mBAAmB,0BAA2B,OAAQ0F,GAE1D,gCAAiCA,IAIrC,MAAMqgC,GACTlpC,YAAYkC,GACR1D,EAAiBY,KAAM,CAAE8C,KAAAA,IAE7BinC,SAASC,GACL,OAAOhqC,KAEXiqC,iBAAiBC,GACb,OAAO,EAEXrsC,oBAAoBqsC,EAAU3X,GAC1B,MAAM,IAAIpzB,MAAM,oBAEpBtB,oBAAoBqsC,EAAUr1B,GAC1B,MAAM,IAAI1V,MAAM,qBASxB,MAAMgrC,GAAc,IAAI5hC,OAAO,kBAAoB,KAC7C6hC,GAAW,CACb,IAAI7hC,OAAO,mBAAqB,KAChC,IAAIA,OAAO,gBAAiB,KAC5B4hC,GACA,IAAI5hC,OAAO,mCAAoC,MAE5C,MAAM8hC,GACTzpC,YAAY0pC,EAAU/X,EAASzvB,GAE3BqmC,GAA0B3oC,IAAIR,UAAM,GACpCZ,EAAiBY,KAAM,CAAEsqC,SAAAA,EAAU/X,QAAAA,EAASzvB,KAAAA,IAC5C/C,GAAuBC,KAAMmpC,GAA2B,KAAM,KAElEtrC,yBAiBI,OAhBK4C,GAAuBT,KAAMmpC,GAA2B,MAEzDppC,GAAuBC,KAAMmpC,GAA2BnpC,KAAKsqC,SAAS/pC,KAAK,CACvE6K,GAAIpL,KAAKuyB,QACT1d,KAAM,+EACPnH,MAAMhH,GACGO,GAAOtB,UAAUe,KAAYuJ,KACtCs6B,OAAOjpC,IACN,GAAmB,mBAAfA,EAAMC,KACN,OAAO,EAIX,MADAxB,GAAuBC,KAAMmpC,GAA2B,KAAM,KACxD7nC,KACN,WAEKb,GAAuBT,KAAMmpC,GAA2B,KAEzEtrC,aAAaijC,EAAU0J,EAAa,MAEhC,MAAMC,EAAWj1B,GAAO,CAACsrB,EAAU3E,GAASn8B,KAAK8C,MAAO0nC,IAClDnW,EAAK,CACPjpB,GAAIpL,KAAKuyB,QACTmY,gBAAgB,EAChB71B,KAAM41B,GAGV,IAAI9yB,GAAU,QACJ3X,KAAK2qC,qBACXhzB,GAAU,EAEV0c,EAAGxf,KAAOW,GAAO,CAAC,aAAcm0B,GAAY,CAACtN,GAAUr8B,KAAK8C,MAAO2nC,OAEvE,IACI,IAAI51B,QAAa7U,KAAKsqC,SAAS/pC,KAAK8zB,GACpC,OAAKptB,GAAO3B,SAASuP,GAAM3V,OAAS,IAAQ,EACjC+H,GAAOnD,WAAW,uBAAwB,iBAAkB,CAC/Dg/B,YAAazO,EAAIxf,KAAAA,IAGrB8C,EACO2xB,GAAWz0B,EAAM,GAErBA,EAEX,MAAOvT,GACH,GAAmB,mBAAfA,EAAMC,KACN,MAAMD,EAGd,OAAO,KAEXzD,iBAAiBqsC,EAAW,IACxB,GAAiB,KAAbA,EACA,IAEI,MAAMxjC,QAAe1G,KAAK4qC,OAAO,cAEjC,GAAe,OAAXlkC,GAAmBA,IAAW2iC,GAC9B,OAAO,KAGX,aADsBrpC,KAAKsqC,SAASO,cACrBC,UAAUC,YAAYrkC,GAEzC,MAAOpF,GACH,GAAmB,mBAAfA,EAAMC,KACN,OAAO,KAEX,MAAMD,EAGd,IAAI0pC,EAAa,KACjB,IAAK,MAAMC,KAAUjrC,KAAKsqC,SAASY,QAC/B,GAAMD,aAAkBnB,IAGpBmB,EAAOhB,iBAAiBC,GAAW,CACnCc,EAAaC,EACb,MAGR,GAAkB,MAAdD,EACA,OAAO,KAGX,MAAMn2B,EAAOy0B,SAAkBtpC,KAAK4qC,OAAO,aAAcpB,GAAOU,KAAe,KAAM,GAErF,GAAY,MAARr1B,GAAyB,OAATA,EAChB,OAAO,KAGX,MAAM0d,QAAgByY,EAAWG,cAAcjB,EAAUr1B,GACzD,OAAe,MAAX0d,EACOA,EAEJtrB,GAAOnD,WAAW,oBAAqB,wBAAyB,CACnEY,UAAW,cAAcwlC,KACzBjoC,KAAM,CAAEioC,SAAAA,EAAUr1B,KAAAA,KAG1BhX,cAAc2B,GAEV,IAAI4rC,EAAWhS,GAAY55B,GAG3B,MAAM6rC,EAAWpkC,GAAO3B,SAASkQ,GAAO,CAACg0B,GAAO,IAAKA,GAAO4B,EAASlsC,QAASksC,KACxEE,EAAWhC,SAAkBtpC,KAAK4qC,OAAO,aAAclB,GAAS2B,KAAe,KAAM,GAC3F,OAAgB,MAAZC,GAAiC,OAAbA,EACb,KAEJzR,GAAayR,GAExBztC,uBAEI,MAAMytC,EAAWhC,SAAkBtpC,KAAK4qC,OAAO,eAAkB,KAAM,GAEvE,GAAgB,MAAZU,GAAiC,OAAbA,EACpB,OAAO,KAGX,MAAMC,EAAOD,EAAS7kC,MAAM,4EAC5B,GAAI8kC,EAAM,CACN,MAAMC,EAAsB,aAAZD,EAAK,GAAqB,OAAS,OAC7CrsC,EAAS0H,SAAS2kC,EAAK,GAAI,IACjC,GAAIA,EAAK,GAAGrsC,SAAoB,EAATA,EACnB,MAAO,GAAGssC,OAAaz3B,GAAa,KAAOw3B,EAAK,MAIxD,MAAME,EAAQH,EAAS7kC,MAAM,iCAC7B,OAAIglC,GAA6B,KAApBA,EAAM,GAAGvsC,OACX,SAAUusC,EAAM,KAEpBxkC,GAAOnD,WAAW,2CAA4C,wBAAyB,CAC1FY,UAAW,mBACXzC,KAAM,CAAE4S,KAAMy2B,KAGtBztC,kBACI,aAAcmC,KAAK0rC,cAAcrF,IAErCxoC,mBACI,MAAM8tC,EAAU,CAAC,CAAE/sC,KAAM,OAAQb,MAAOiC,KAAK8C,OAC7C,IAGI,MAAM8oC,QAAe5rC,KAAK6rC,QAAQ,UAClC,GAAc,MAAVD,EAEA,MADAD,EAAQhpC,KAAK,CAAE/D,KAAM,UAAWb,MAAO,KACjC,IAAIoB,MAAM,WAEpBwsC,EAAQhpC,KAAK,CAAE/D,KAAM,SAAUb,MAAO6tC,IACtC,IAAK,IAAI3sC,EAAI,EAAGA,EAAImrC,GAASlrC,OAAQD,IAAK,CACtC,MAAMwH,EAAQmlC,EAAOnlC,MAAM2jC,GAASnrC,IACpC,GAAa,MAATwH,EACA,SAEJ,MAAM+kC,EAAS/kC,EAAM,GAAGL,cACxB,OAAQolC,GACJ,IAAK,QACL,IAAK,OAED,OADAG,EAAQhpC,KAAK,CAAE/D,KAAM,MAAOb,MAAO6tC,IAC5B,CAAED,QAAAA,EAAStF,IAAKuF,GAC3B,IAAK,OAAQ,CACT,MAAMvF,EAAMwD,GAAY+B,GAGxB,OAFAD,EAAQhpC,KAAK,CAAE/D,KAAM,OAAQb,MAAO6tC,IACpCD,EAAQhpC,KAAK,CAAE/D,KAAM,MAAOb,MAAOsoC,IAC5B,CAAEsF,QAAAA,EAAStF,IAAAA,GAEtB,IAAK,SACL,IAAK,UAAW,CAEZ,MAAMvF,EAAuB,WAAX0K,EAAuB,aAAe,aACxDG,EAAQhpC,KAAK,CAAE/D,KAAM4sC,EAAQztC,MAAO6tC,IAEpC,MAAME,QAAc9rC,KAAKkzB,aACzB,GAAa,MAAT4Y,EAEA,MADAH,EAAQhpC,KAAK,CAAE/D,KAAM,SAAUb,MAAO,KAChC,IAAIoB,MAAM,UAEpB,MAAMiO,GAAS3G,EAAM,IAAM,IAAI3H,MAAM,KACrC,GAAqB,IAAjBsO,EAAMlO,OAEN,MADAysC,EAAQhpC,KAAK,CAAE/D,KAAM,IAAI4sC,QAAcztC,MAAQ0I,EAAM,IAAM,KACrD,IAAItH,MAAM,SAEpB,MAAM2rC,SAAmB9qC,KAAKsqC,SAASO,cAAcC,UAC/CiB,EAAOjB,EAAUvY,QAAQnlB,EAAM,IAC/B4+B,EAAUxC,GAAOp8B,EAAM,IAE7B,GAAe,WAAXo+B,EAAqB,CAErB,MAAMS,EAAanB,EAAUC,kBAAkB/qC,KAAKsqC,SAAS/pC,KAAK,CAC9D6K,GAAI2gC,EAAMl3B,KAAMW,GAAO,CAAC,aAAcw2B,OAE1C,GAAIF,IAAUG,EAEV,MADAN,EAAQhpC,KAAK,CAAE/D,KAAM,SAAUb,MAAOkuC,IAChC,IAAI9sC,MAAM,UAEpBwsC,EAAQhpC,KAAK,CAAE/D,KAAM,QAASb,MAAOkuC,SAEpC,GAAe,YAAXT,EAAsB,CAE3B,MAAMU,EAAUjlC,GAAOtB,gBAAgB3F,KAAKsqC,SAAS/pC,KAAK,CACtD6K,GAAI2gC,EAAMl3B,KAAMW,GAAO,CAAC,aAAcY,GAAa01B,EAAO,IAAKE,OAEnE,IAAKE,EAED,MADAP,EAAQhpC,KAAK,CAAE/D,KAAM,WAAYb,MAAO,MAClC,IAAIoB,MAAM,YAEpBwsC,EAAQhpC,KAAK,CAAE/D,KAAM,UAAWb,MAAOmuC,EAAQpiC,aAGnD,MAAMuqB,EAAK,CACPjpB,GAAIgC,EAAM,GACVyH,KAAMW,GAAO,CAACsrB,EAAUkL,KAE5B,IAAIG,EAAc5C,SAAkBvpC,KAAKsqC,SAAS/pC,KAAK8zB,GAAK,GAC5D,GAAmB,MAAf8X,EAEA,MADAR,EAAQhpC,KAAK,CAAE/D,KAAM,gBAAiBb,MAAO,KACvC,IAAIoB,MAAM,iBAEpBwsC,EAAQhpC,KAAK,CAAE/D,KAAM,oBAAqBb,MAAOouC,IAElC,YAAXX,IACAW,EAAcA,EAAY1T,QAAQ,OAAQpjB,GAAQ22B,GAASnlC,UAAU,IACrE8kC,EAAQhpC,KAAK,CAAE/D,KAAM,wBAAyBb,MAAOouC,KAGrDA,EAAY1lC,MAAM,aAClB0lC,EAActC,GAAYsC,IAE9BR,EAAQhpC,KAAK,CAAE/D,KAAM,eAAgBb,MAAOouC,IAE5C,IAAIC,EAAW,GACf,MAAMhH,QAAiB2C,GAAUoE,GACjC/G,EAASY,WACT,IACIoG,EAAWhH,EAASC,SAExB,MAAO/jC,GACH,IACIqqC,EAAQhpC,KAAK,CAAE/D,KAAM,YAAab,MAAOqnC,EAASD,WAEtD,MAAO7jC,GACH,MAAMgU,EAAQ8vB,EAASH,KAIvB,MAHI3vB,GACAq2B,EAAQhpC,KAAK,CAAE/D,KAAM,YAAab,MAAOsX,GAAQC,KAE/ChU,EAEV,MAAMA,EAEV,IAAK8qC,EAED,MADAT,EAAQhpC,KAAK,CAAE/D,KAAM,YAAab,MAAO,KACnC,IAAIoB,MAAM,aAEpBwsC,EAAQhpC,KAAK,CAAE/D,KAAM,WAAYb,MAAO4F,KAAKC,UAAUwoC,KAEvD,IAAIC,EAAWD,EAASE,MACxB,GAA0B,iBAAd,EAER,MADAX,EAAQhpC,KAAK,CAAE/D,KAAM,YAAab,MAAO,KACnC,IAAIoB,MAAM,aAEpB,GAAIktC,EAAS5lC,MAAM,6BAGd,CAGD,GAAY,MADC4lC,EAAS5lC,MAAM0jC,IAGxB,MADAwB,EAAQhpC,KAAK,CAAE/D,KAAM,iBAAkBb,MAAOsuC,IACxC,IAAIltC,MAAM,kBAEpBwsC,EAAQhpC,KAAK,CAAE/D,KAAM,gBAAiBb,MAAOsuC,IAC7CA,EAAWxC,GAAYwC,GAG3B,OADAV,EAAQhpC,KAAK,CAAE/D,KAAM,MAAOb,MAAOsuC,IAC5B,CAAEV,QAAAA,EAAStF,IAAKgG,MAKvC,MAAO/qC,GACHwF,QAAQC,IAAI,KAAMzF,GAEtB,MAAO,CAAEqqC,QAAAA,EAAStF,IAAK,MAE3BpgC,sBAAsBqkC,EAAUxnC,GAC5B,IAAIypC,EAAczpC,EAClB,OAAa,CACT,GAAoB,KAAhBypC,GAAsC,MAAhBA,EACtB,OAAO,KAIX,GAAa,QAATzpC,GAAkC,QAAhBypC,EAClB,OAAO,KAGX,MAAMR,QAAatrC,GAAuB4pC,GAAaxgC,GAAI,IAAKu/B,IAA0B7oC,KAAK8pC,GAAaC,EAAUiC,GAEtH,GAAY,MAARR,EAAc,CACd,MAAMhX,EAAW,IAAIsV,GAAYC,EAAUyB,EAAMjpC,GAEjD,OAAIypC,IAAgBzpC,SAAgBiyB,EAAS4V,mBAGtC5V,EAFI,KAKfwX,EAAcA,EAAYztC,MAAM,KAAK+J,MAAM,GAAGhF,KAAK,OAI/DgG,GAAKwgC,GAAalB,GAA4B,IAAI1nC,QAAW2nC,GAA2BvrC,eAAwCysC,EAAUxnC,GACtI,MAAM0pC,QAAgBlC,EAASO,aACzB4B,EAAYD,EAAQE,UAAU,0BAEpC,IAAKD,EACD,OAAOxlC,GAAOnD,WAAW,+BAAgC,wBAAyB,CAC9EY,UAAW,cAAezC,KAAM,CAAEuqC,QAASA,EAAQ1pC,QAG3D,IAEI,MAAM2nC,QAAiBH,EAAS/pC,KAAK,CACjC6K,GAAIqhC,EAAUla,QACd1d,KAAMW,GAAO,CAAC,aAAc2mB,GAASr5B,KACrC4nC,gBAAgB,IAEdqB,EAAOS,EAAQ1B,UAAUC,YAAYN,GAC3C,OAAIsB,IAASn2B,GAAUyzB,GAAU,EAAG,IACzB,KAEJ0C,EAEX,MAAOzqC,GAGH,MAAMA,EAEV,OAAO,MCxdJ,MCEM2F,GAAS,IAAI5D,EDFH,2CEAvB,IAWIspC,GAXA5sC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAOxF,MAAMuP,GAAO/J,OAAO,GACdwK,GAAOxK,OAAO,GACdmnC,GAAOnnC,OAAO,GACdonC,GAAQpnC,OAAO,IACfqnC,GAAQrnC,OAAO,IACfsnC,GAAQtnC,OAAO,IACfgG,GAAS,GACTuhC,GAAO,qEACN,MAAMC,GACTrsC,YAAYoE,EAAOgrB,EAAGzO,EAAG9iB,GACrBkuC,GAAiBnsC,IAAIR,UAAM,GAC3BiH,GAAOnC,cAAcE,EAAOyG,GAAQ,aACpC1L,GAAuBC,KAAM2sC,GAAkB,CAAE3c,EAAAA,EAAGzO,EAAAA,EAAG9iB,EAAAA,EAAGyuC,SAAU,MAAQ,KAE5Eld,QAAM,OAAO/uB,EAASR,GAAuBT,KAAM2sC,GAAkB,KAAM,KAC3E3c,MAAEjyB,GACwB,KAAtB4X,GAAW5X,IACXkJ,GAAOlD,mBAAmB,YAAa,QAAShG,GAEpDoD,EAASV,GAAuBT,KAAM2sC,GAAkB,KAAM,IAAKt3B,GAAQtX,IAE3EwjB,QAAM,OAAOtgB,EAASR,GAAuBT,KAAM2sC,GAAkB,KAAM,KAC3EprB,MAAExjB,GACwB,KAAtB4X,GAAW5X,GACXkJ,GAAOlD,mBAAmB,YAAa,QAAShG,GAEf,IAA5BkJ,GAAO3B,SAASvH,GAAO,IAC5BkJ,GAAOlD,mBAAmB,kBAAmB,QAAShG,GAE1DoD,EAASV,GAAuBT,KAAM2sC,GAAkB,KAAM,IAAKt3B,GAAQtX,IAE3EU,QAAM,OAAOwC,EAASR,GAAuBT,KAAM2sC,GAAkB,KAAM,KAC3EluC,MAAEV,GACF,MAAMU,EAAIwI,GAAOzB,UAAUzH,EAAO,SAClC,GAAU,KAANU,GAAkB,KAANA,EACZ,MAAM,IAAIU,MAAM,SAEpBgC,EAASV,GAAuBT,KAAM2sC,GAAkB,KAAM,IAAKluC,GAEnEyuC,eAAa,OAAOjsC,EAASR,GAAuBT,KAAM2sC,GAAkB,KAAM,YAClFQ,oBACA,MAAM1uC,EAAIuB,KAAKktC,SACf,OAAS,MAALzuC,EACO,KAEJwuC,GAAUG,WAAW3uC,GAE5B4uC,cACA,OAAe,KAAXrtC,KAAKvB,EACE,EAEJ,EAUP6uC,kBAEA,MAAMA,EAAcrmC,GAAO3B,SAAStF,KAAKuhB,GAIzC,OAHIvhB,KAAKqtC,UACLC,EAAY,IAAM,KAEfj4B,GAAQi4B,GAEfC,wBACA,OAAO/3B,GAAO,CAACxV,KAAKgwB,EAAGhwB,KAAKstC,cAE5BE,iBACA,OAAOh4B,GAAO,CAACxV,KAAKgwB,EAAGhwB,KAAKuhB,EAAIvhB,KAAKqtC,QAAU,OAAS,SAE5D,EAAEV,GAAmB,IAAIlrC,QAAWkK,OAAOC,IAAI,kCAC3C,MAAO,mBAAmB5L,KAAKgwB,WAAWhwB,KAAKuhB,gBAAgBvhB,KAAKqtC,sBAAsBrtC,KAAKktC,aAEnGpkC,QACI,MAAMA,EAAQ,IAAImkC,GAAUxhC,GAAQzL,KAAKgwB,EAAGhwB,KAAKuhB,EAAGvhB,KAAKvB,GAIzD,OAHIuB,KAAKktC,UACL/rC,EAASV,GAAuBqI,EAAO6jC,GAAkB,KAAM,WAAY3sC,KAAKktC,UAE7EpkC,EAEXjB,SAEI,OADA5J,OAAO4J,OAAOpH,GAAuBT,KAAM2sC,GAAkB,MACtD3sC,KAEXoB,WACI,OAAOnD,OAAOmD,SAASX,GAAuBT,KAAM2sC,GAAkB,MAE1Ec,SACI,MAAMP,EAAWltC,KAAKktC,SACtB,MAAO,CACHQ,MAAO,YACPR,SAAwB,MAAZA,EAAoBA,EAASpjC,WAAa,KACtDkmB,EAAGhwB,KAAKgwB,EAAGzO,EAAGvhB,KAAKuhB,EAAG9iB,EAAGuB,KAAKvB,GAGtCwH,gBACI,OAAO,IAAIgnC,GAAUxhC,GAAQuhC,GAAMA,GAAM,IAG7C/mC,kBAAkBxH,GACd,MAAMkvC,EAAK1mC,GAAOtB,UAAUlH,EAAG,KAE/B,OAAKkvC,GAAMd,IAAWc,GAAMb,GACjBt9B,IAGPm+B,EAAKZ,IACL9lC,GAAOlD,mBAAmB,oBAAqB,IAAKtF,IAEhDkvC,EAAKZ,IAASH,IAG1B3mC,mBAAmBw3B,EAASh/B,GACxB,OAAQwI,GAAOtB,UAAU83B,GAAWmP,GAAQnnC,OAAO,GAAKhH,EAAI,IAGhEwH,sBAAsBxH,GAClB,MAAMkvC,EAAK1mC,GAAOtB,UAAUlH,GAC5B,OAAIkvC,GAAMn+B,GACC,GAEPm+B,GAAM19B,GACC,GAGH09B,EAAK19B,GAAQ,GAAK,GAE9BhK,YAAY2nC,GACR,MAAM9pC,EAAcL,GACTwD,GAAOlD,mBAAmBN,EAAS,YAAamqC,GAE3D,GAAqB,iBAAT,EAAmB,CAC3B,MAAMt4B,EAAQrO,GAAO3B,SAASsoC,EAAK,aACnC,GAAqB,KAAjBt4B,EAAMpW,OAAe,CACrB,MAAM8wB,EAAI3a,GAAQC,EAAMzM,MAAM,EAAG,KAC3B0Y,EAAIjM,EAAMzM,MAAM,GAAI,IACpBpK,EAAY,IAAP8iB,EAAE,GAAa,GAAK,GAE/B,OADAA,EAAE,IAAM,IACD,IAAI0rB,GAAUxhC,GAAQukB,EAAG3a,GAAQkM,GAAI9iB,GAEhD,GAAwB,KAApBkX,GAAWi4B,GAAa,CACxB,MAAM5d,EAAI3a,GAAQu4B,EAAI/kC,MAAM,EAAG,KACzB0Y,EAAIjM,EAAMzM,MAAM,GAAI,IACf,IAAP0Y,EAAE,IACFzd,EAAW,mBAEf,MAAMrF,EAAIwuC,GAAUY,eAAev4B,EAAM,KACzC,OAAO,IAAI23B,GAAUxhC,GAAQukB,EAAG3a,GAAQkM,GAAI9iB,GAEhD,OAAOqF,EAAW,gCAEtB,GAAI8pC,aAAeX,GACf,OAAOW,EAAI9kC,QAGf,MAAMknB,EAAI4d,EAAI5d,EACL,MAALA,GACAlsB,EAAW,aAEV0Q,GAAYwb,EAAG,KAChBlsB,EAAW,aAGf,MAAMyd,EAAI,SAAWA,EAAG+rB,GACpB,GAAS,MAAL/rB,EAIA,OAHK/M,GAAY+M,EAAG,KAChBzd,EAAW,aAERyd,EAEX,GAAmB,MAAf+rB,EAAqB,CAChB94B,GAAY84B,EAAa,KAC1BxpC,EAAW,uBAEf,MAAMwR,EAAQrO,GAAO3B,SAASgoC,GAE9B,OADAh4B,EAAM,IAAM,IACLD,GAAQC,GAEnB,OAAOxR,EAAW,aAfZ,CAgBP8pC,EAAIrsB,EAAGqsB,EAAIN,aACc,IAAxBrmC,GAAO3B,SAASic,GAAG,IACnBzd,EAAW,mBAGf,MAAMopC,SAAEA,EAAQzuC,EAAEA,GAAM,SAAWqvC,EAAIR,EAAaD,GAChD,GAAU,MAANS,EAAY,CACZ,MAAMrvC,EAAIwI,GAAOtB,UAAUmoC,GAC3B,MAAO,CACHZ,SAAYzuC,GAAKsuC,GAAStuC,OAAIiB,EAC9BjB,EAAGwuC,GAAUY,eAAepvC,IAGpC,GAAmB,MAAf6uC,EAIA,OAHK94B,GAAY84B,EAAa,KAC1BxpC,EAAW,uBAER,CAAErF,EAAuC,IAAlCwI,GAAO3B,SAASgoC,GAAa,GAAa,GAAK,IAEjE,GAAe,MAAXD,EAAiB,CACjB,OAAQA,GACJ,KAAK,EAAG,MAAO,CAAE5uC,EAAG,IACpB,KAAK,EAAG,MAAO,CAAEA,EAAG,IAExB,OAAOqF,EAAW,mBAEtB,OAAOA,EAAW,aArBE,CAsBrB8pC,EAAInvC,EAAGmvC,EAAIN,YAAaM,EAAIP,SACzB3mC,EAAS,IAAIumC,GAAUxhC,GAAQukB,EAAGzO,EAAG9iB,GAW3C,OAVIyuC,GACA/rC,EAASV,GAAuBiG,EAAQimC,GAAkB,KAAM,WAAYO,GAG5E,YAAaU,GAAOA,EAAIP,UAAY3mC,EAAO2mC,QAC3CvpC,EAAW,oBAEN,gBAAiB8pC,GAAOA,EAAIN,cAAgB5mC,EAAO4mC,aACxDxpC,EAAW,wBAER4C;yEC9Of,MACM2gB,GAAM5hB,OAAO,GACb6hB,GAAM7hB,OAAO,GACb8hB,GAAM9hB,OAAO,GACbsoC,GAAMtoC,OAAO,GACbuoC,GAAMvoC,OAAO,GACbwoC,GAAY1mB,IAAO9hB,OAAO,KAC1ByoC,GAAQ,CACVh8B,EAAGmV,GACHlV,EAAG1M,OAAO,GACV0oC,EAAGF,GAAY1mB,IAAO9hB,OAAO,IAAMA,OAAO,KAC1CyV,EAAG+yB,GAAYxoC,OAAO,2CACtB4Z,EAAGiI,GACH8mB,GAAI3oC,OAAO,iFACX4oC,GAAI5oC,OAAO,iFACX6oC,KAAM7oC,OAAO,uEAGjB,SAAS8oC,GAAU3mB,GACf,MAAM1V,EAAEA,EAACC,EAAEA,GAAM+7B,GACXM,EAAKC,GAAI7mB,EAAIA,GACb8mB,EAAKD,GAAID,EAAK5mB,GACpB,OAAO6mB,GAAIC,EAAKx8B,EAAI0V,EAAIzV,GAE5B,MAAMw8B,GAAmBT,GAAMh8B,IAAMmV,GACrC,MAAMunB,GACFhuC,YAAYgnB,EAAGC,EAAGoD,GACdjrB,KAAK4nB,EAAIA,EACT5nB,KAAK6nB,EAAIA,EACT7nB,KAAKirB,EAAIA,EAEbhlB,kBAAkBuI,GACd,KAAMA,aAAaqgC,IACf,MAAM,IAAIxuC,UAAU,4CAExB,OAAO,IAAIuuC,GAAcpgC,EAAEoZ,EAAGpZ,EAAEqZ,EAAGP,IAEvCrhB,qBAAqB6oC,GACjB,MAAMC,EAsjBd,SAAqBC,EAAMxgC,EAAI0/B,GAAMC,GACjC,MAAMc,EAAU,IAAIliC,MAAMiiC,EAAK9vC,QAOzBgwC,EAAWC,GANMH,EAAKzwC,QAAO,CAAC6wC,EAAKC,EAAKpwC,IACtCowC,IAAQhoB,GACD+nB,GACXH,EAAQhwC,GAAKmwC,EACNX,GAAIW,EAAMC,EAAK7gC,KACvB8Y,IACqC9Y,GAOxC,OANAwgC,EAAKM,aAAY,CAACF,EAAKC,EAAKpwC,IACpBowC,IAAQhoB,GACD+nB,GACXH,EAAQhwC,GAAKwvC,GAAIW,EAAMH,EAAQhwC,GAAIuP,GAC5BigC,GAAIW,EAAMC,EAAK7gC,KACvB0gC,GACID,EArkBWM,CAAYT,EAAO1wC,KAAKoQ,GAAMA,EAAEyc,KAC9C,OAAO6jB,EAAO1wC,KAAI,CAACoQ,EAAGvP,IAAMuP,EAAEghC,SAAST,EAAM9vC,MAEjDgH,kBAAkB6oC,GACd,OAAOF,GAAca,cAAcX,GAAQ1wC,IAAIwwC,GAAcc,YAEjEC,OAAO19B,GACH,KAAMA,aAAiB28B,IACnB,MAAM,IAAIvuC,UAAU,0BACxB,MAAQunB,EAAGgoB,EAAI/nB,EAAGgoB,EAAI5kB,EAAG6kB,GAAO9vC,MACxB4nB,EAAGmoB,EAAIloB,EAAGmoB,EAAI/kB,EAAGglB,GAAOh+B,EAC1Bi+B,EAAOzB,GAAIqB,GAAMvoB,IACjB4oB,EAAO1B,GAAIwB,GAAM1oB,IACjB6oB,EAAK3B,GAAImB,EAAKO,GACdE,EAAK5B,GAAIsB,EAAKG,GACdI,EAAK7B,GAAIA,GAAIoB,EAAKI,GAAME,GACxBI,EAAK9B,GAAIA,GAAIuB,EAAKF,GAAMI,GAC9B,OAAOE,IAAOC,GAAMC,IAAOC,EAE/BC,SACI,OAAO,IAAI5B,GAAc5uC,KAAK4nB,EAAG6mB,IAAKzuC,KAAK6nB,GAAI7nB,KAAKirB,GAExDwlB,SACI,MAAQ7oB,EAAGgoB,EAAI/nB,EAAGgoB,EAAI5kB,EAAG6kB,GAAO9vC,KAC1BggB,EAAIyuB,GAAImB,GAAMroB,IACdtH,EAAIwuB,GAAIoB,GAAMtoB,IACdrH,EAAIuuB,GAAIxuB,GAAKsH,IACbpH,EAAIsuB,GAAIlnB,IAAOknB,IAAKmB,EAAK3vB,IAAMsH,IAAOvH,EAAIE,IAC1CE,EAAIquB,GAAIV,GAAM/tB,GACdK,EAAIouB,GAAIruB,GAAKmH,IACbmpB,EAAKjC,GAAIpuB,EAAIkH,GAAMpH,GACnBwwB,EAAKlC,GAAIruB,GAAKD,EAAIuwB,GAAM1C,GAAM9tB,GAC9B0wB,EAAKnC,GAAIlnB,GAAMsoB,EAAKC,GAC1B,OAAO,IAAIlB,GAAc8B,EAAIC,EAAIC,GAErCrtC,IAAI0O,GACA,KAAMA,aAAiB28B,IACnB,MAAM,IAAIvuC,UAAU,0BACxB,MAAQunB,EAAGgoB,EAAI/nB,EAAGgoB,EAAI5kB,EAAG6kB,GAAO9vC,MACxB4nB,EAAGmoB,EAAIloB,EAAGmoB,EAAI/kB,EAAGglB,GAAOh+B,EAChC,GAAI89B,IAAO1oB,IAAO2oB,IAAO3oB,GACrB,OAAOrnB,KACX,GAAI4vC,IAAOvoB,IAAOwoB,IAAOxoB,GACrB,OAAOpV,EACX,MAAMi+B,EAAOzB,GAAIqB,GAAMvoB,IACjB4oB,EAAO1B,GAAIwB,GAAM1oB,IACjB6oB,EAAK3B,GAAImB,EAAKO,GACdE,EAAK5B,GAAIsB,EAAKG,GACdI,EAAK7B,GAAIA,GAAIoB,EAAKI,GAAME,GACxBI,EAAK9B,GAAIA,GAAIuB,EAAKF,GAAMI,GACxB3vB,EAAIkuB,GAAI4B,EAAKD,GACbpgB,EAAIye,GAAI8B,EAAKD,GACnB,GAAI/vB,IAAM8G,GACN,OAAI2I,IAAM3I,GACCrnB,KAAKywC,SAGL7B,GAAciC,KAG7B,MAAMC,EAAKrC,GAAIluB,GAAKgH,IACdwpB,EAAMtC,GAAIluB,EAAIuwB,GACdngB,EAAI8d,GAAI2B,EAAKU,GACbJ,EAAKjC,GAAIze,GAAKzI,GAAMwpB,EAAMxpB,GAAMoJ,GAChCggB,EAAKlC,GAAIze,GAAKW,EAAI+f,GAAMJ,EAAKS,GAC7BH,EAAKnC,GAAIqB,EAAKG,EAAK1vB,GACzB,OAAO,IAAIquB,GAAc8B,EAAIC,EAAIC,GAErCI,SAAS/+B,GACL,OAAOjS,KAAKuD,IAAI0O,EAAMu+B,UAE1BS,eAAeC,GACX,IAAIh2B,EAAIi2B,GAAgBD,GAExB,MAAME,EAAKxC,GAAciC,KACzB,GAAI31B,IAAMmM,GACN,OAAO+pB,EACX,GAAIl2B,IAAMoM,GACN,OAAOtnB,KACX,IAAK2uC,GAAkB,CACnB,IAAIngC,EAAI4iC,EACJ17B,EAAI1V,KACR,KAAOkb,EAAImM,IACHnM,EAAIoM,KACJ9Y,EAAIA,EAAEjL,IAAImS,IACdA,EAAIA,EAAE+6B,SACNv1B,IAAMoM,GAEV,OAAO9Y,EAEX,IAAI6iC,MAAEA,EAAKC,GAAEA,EAAEC,MAAEA,EAAKC,GAAEA,GAAOC,GAAgBv2B,GAC3Cw2B,EAAMN,EACNO,EAAMP,EACN17B,EAAI1V,KACR,KAAOsxC,EAAKjqB,IAAOmqB,EAAKnqB,IAChBiqB,EAAKhqB,KACLoqB,EAAMA,EAAInuC,IAAImS,IACd87B,EAAKlqB,KACLqqB,EAAMA,EAAIpuC,IAAImS,IAClBA,EAAIA,EAAE+6B,SACNa,IAAOhqB,GACPkqB,IAAOlqB,GAOX,OALI+pB,IACAK,EAAMA,EAAIlB,UACVe,IACAI,EAAMA,EAAInB,UACdmB,EAAM,IAAI/C,GAAcH,GAAIkD,EAAI/pB,EAAIsmB,GAAMI,MAAOqD,EAAI9pB,EAAG8pB,EAAI1mB,GACrDymB,EAAInuC,IAAIouC,GAEnBC,iBAAiBC,GACb,MAAMC,EAAUnD,GAAmB,IAAMkD,EAAI,EAAI,IAAMA,EAAI,EACrD/C,EAAS,GACf,IAAItgC,EAAIxO,KACJ+xC,EAAOvjC,EACX,IAAK,IAAIuX,EAAS,EAAGA,EAAS+rB,EAAS/rB,IAAU,CAC7CgsB,EAAOvjC,EACPsgC,EAAOnsC,KAAKovC,GACZ,IAAK,IAAI9yC,EAAI,EAAGA,EAAI,IAAM4yC,EAAI,GAAI5yC,IAC9B8yC,EAAOA,EAAKxuC,IAAIiL,GAChBsgC,EAAOnsC,KAAKovC,GAEhBvjC,EAAIujC,EAAKtB,SAEb,OAAO3B,EAEXkD,KAAK92B,EAAG+2B,IACCA,GAAejyC,KAAK2vC,OAAOf,GAAcsD,QAC1CD,EAAcpD,GAAMqD,MACxB,MAAML,EAAKI,GAAeA,EAAYE,cAAiB,EACvD,GAAI,IAAMN,EACN,MAAM,IAAI1yC,MAAM,iEAEpB,IAAIizC,EAAcH,GAAeI,GAAiB3xC,IAAIuxC,GACjDG,IACDA,EAAcpyC,KAAK4xC,iBAAiBC,GAChCI,GAAqB,IAANJ,IACfO,EAAcxD,GAAc0D,WAAWF,GACvCC,GAAiB7xC,IAAIyxC,EAAaG,KAG1C,IAAI5jC,EAAIogC,GAAciC,KAClBzwC,EAAIwuC,GAAciC,KACtB,MAAMiB,EAAU,GAAKnD,GAAmB,IAAMkD,EAAI,IAAMA,GAClDU,EAAa,IAAMV,EAAI,GACvBzhC,EAAO3K,OAAO,GAAKosC,EAAI,GACvBW,EAAY,GAAKX,EACjBY,EAAUhtC,OAAOosC,GACvB,IAAK,IAAI9rB,EAAS,EAAGA,EAAS+rB,EAAS/rB,IAAU,CAC7C,MAAMpf,EAASof,EAASwsB,EACxB,IAAIG,EAAQnuC,OAAO2W,EAAI9K,GAMvB,GALA8K,IAAMu3B,EACFC,EAAQH,IACRG,GAASF,EACTt3B,GAAKoM,IAEK,IAAVorB,EAAa,CACb,IAAIC,EAAKP,EAAYzrC,GACjBof,EAAS,IACT4sB,EAAKA,EAAGnC,UACZpwC,EAAIA,EAAEmD,IAAIovC,OAET,CACD,IAAIC,EAASR,EAAYzrC,EAASqS,KAAK65B,IAAIH,GAAS,GAChDA,EAAQ,IACRE,EAASA,EAAOpC,UACpBhiC,EAAIA,EAAEjL,IAAIqvC,IAGlB,MAAO,CAAEpkC,EAAAA,EAAGpO,EAAAA,GAEhB0yC,SAAS5B,EAAQe,GACb,IACIc,EACAC,EAFA93B,EAAIi2B,GAAgBD,GAGxB,GAAIvC,GAAkB,CAClB,MAAM0C,MAAEA,EAAKC,GAAEA,EAAEC,MAAEA,EAAKC,GAAEA,GAAOC,GAAgBv2B,GACjD,IAAM1M,EAAGkjC,EAAKtxC,EAAG6yC,GAAQjzC,KAAKgyC,KAAKV,EAAIW,IACjCzjC,EAAGmjC,EAAKvxC,EAAG8yC,GAAQlzC,KAAKgyC,KAAKR,EAAIS,GACnCZ,IACAK,EAAMA,EAAIlB,UACVe,IACAI,EAAMA,EAAInB,UACdmB,EAAM,IAAI/C,GAAcH,GAAIkD,EAAI/pB,EAAIsmB,GAAMI,MAAOqD,EAAI9pB,EAAG8pB,EAAI1mB,GAC5D8nB,EAAQrB,EAAInuC,IAAIouC,GAChBqB,EAAOC,EAAI1vC,IAAI2vC,OAEd,CACD,MAAM1kC,EAAEA,EAACpO,EAAEA,GAAMJ,KAAKgyC,KAAK92B,EAAG+2B,GAC9Bc,EAAQvkC,EACRwkC,EAAO5yC,EAEX,OAAOwuC,GAAc0D,WAAW,CAACS,EAAOC,IAAO,GAEnDxD,SAAS2D,EAAOhE,GAAOnvC,KAAKirB,IACxB,MAAMrD,EAAEA,EAACC,EAAEA,EAACoD,EAAEA,GAAMjrB,KACdozC,EAAMD,EACNE,EAAM5E,GAAI2E,EAAMA,GAChBE,EAAM7E,GAAI4E,EAAMD,GAChBG,EAAK9E,GAAI7mB,EAAIyrB,GACbG,EAAK/E,GAAI5mB,EAAIyrB,GAEnB,GADW7E,GAAIxjB,EAAImoB,KACR9rB,GACP,MAAM,IAAInoB,MAAM,oBACpB,OAAO,IAAI0vC,GAAM0E,EAAIC,IAG7B5E,GAAcsD,KAAO,IAAItD,GAAcV,GAAME,GAAIF,GAAMG,GAAI/mB,IAC3DsnB,GAAciC,KAAO,IAAIjC,GAAcvnB,GAAKC,GAAKD,IACjD,MAAMgrB,GAAmB,IAAI5wC,QACtB,MAAMotC,GACTjuC,YAAYgnB,EAAGC,GACX7nB,KAAK4nB,EAAIA,EACT5nB,KAAK6nB,EAAIA,EAEb4rB,eAAelB,GACXvyC,KAAKmyC,aAAeI,EACpBF,GAAiBvT,OAAO9+B,MAE5BiG,yBAAyBqP,GACrB,MAAMo+B,EAA2B,KAAjBp+B,EAAMpW,OAChB0oB,EAAI+rB,GAAcD,EAAUp+B,EAAQA,EAAM8I,SAAS,IACzD,IAAKw1B,GAAoBhsB,GACrB,MAAM,IAAIzoB,MAAM,yBAEpB,IAAI0oB,EA2SZ,SAAiBD,GACb,MAAMumB,EAAEA,GAAMD,GACR2F,EAAMpuC,OAAO,GACbquC,EAAOruC,OAAO,IACdsuC,EAAOtuC,OAAO,IACduuC,EAAOvuC,OAAO,IACdwuC,EAAOxuC,OAAO,IACdyuC,EAAOzuC,OAAO,IACd0uC,EAAMvsB,EAAIA,EAAIA,EAAKumB,EACnBiG,EAAMD,EAAKA,EAAKvsB,EAAKumB,EACrBkG,EAAMC,GAAKF,EAAIrG,IAAOqG,EAAMjG,EAC5BoG,EAAMD,GAAKD,EAAItG,IAAOqG,EAAMjG,EAC5BqG,EAAOF,GAAKC,EAAIhtB,IAAO4sB,EAAMhG,EAC7BsG,EAAOH,GAAKE,EAAKV,GAAQU,EAAOrG,EAChCuG,EAAOJ,GAAKG,EAAKV,GAAQU,EAAOtG,EAChCwG,EAAOL,GAAKI,EAAKT,GAAQS,EAAOvG,EAChCyG,EAAQN,GAAKK,EAAKT,GAAQS,EAAOxG,EACjC0G,EAAQP,GAAKM,EAAMX,GAAQS,EAAOvG,EAClC2G,EAAQR,GAAKO,EAAM9G,IAAOqG,EAAMjG,EAChC4G,EAAMT,GAAKQ,EAAMd,GAAQS,EAAOtG,EAChC6G,EAAMV,GAAKS,EAAIlB,GAAOM,EAAMhG,EAClC,OAAOmG,GAAKU,EAAIztB,IAhUJ0tB,CADG1G,GAAU3mB,IAErB,MAAMstB,GAAUrtB,EAAIP,MAASA,GAC7B,GAAIosB,EACIwB,IACArtB,EAAI4mB,IAAK5mB,QAEZ,CACyC,IAAP,EAAXvS,EAAM,MACP4/B,IACnBrtB,EAAI4mB,IAAK5mB,IAEjB,MAAMkrB,EAAQ,IAAIlE,GAAMjnB,EAAGC,GAE3B,OADAkrB,EAAMoC,iBACCpC,EAEX9sC,2BAA2BqP,GACvB,MAAMsS,EAAI+rB,GAAcr+B,EAAM8I,SAAS,EAAG,KACpCyJ,EAAI8rB,GAAcr+B,EAAM8I,SAAS,GAAI,KACrC20B,EAAQ,IAAIlE,GAAMjnB,EAAGC,GAE3B,OADAkrB,EAAMoC,iBACCpC,EAEX9sC,eAAe+J,GACX,MAAMsF,EAAQ8/B,GAAYplC,GACpB2O,EAAMrJ,EAAMpW,OACZm2C,EAAS//B,EAAM,GACrB,GAAY,KAARqJ,GAAuB,KAARA,IAA0B,IAAX02B,GAA8B,IAAXA,GACjD,OAAOr1C,KAAKs1C,kBAAkBhgC,GAElC,GAAY,KAARqJ,GAAyB,IAAX02B,EACd,OAAOr1C,KAAKu1C,oBAAoBjgC,GACpC,MAAM,IAAInW,MAAM,wGAAwGwf,KAE5H1Y,sBAAsBuvC,GAClB,OAAO3G,GAAMqD,KAAKY,SAAS2C,GAAoBD,IAEnDvvC,qBAAqByvC,EAAS9U,EAAW+U,GAErC,MAAMt2B,EAuVd,SAAsBhE,GAClB,MAAMH,EAAEA,GAAMgzB,GAER0H,EAAqB,EADRv6B,EAAKnc,OACO,IAC/B,IAAImgB,EAAIs0B,GAAct4B,GAClBu6B,EAAQ,IACRv2B,IAAS5Z,OAAOmwC,IAChBv2B,GAAKnE,IACLmE,GAAKnE,GACT,OAAOmE,EAhWOw2B,CADVH,EAAUN,GAAYM,KAEhB1lB,EAAEA,EAACzO,EAAEA,GA2cnB,SAA4Bqf,GACxB,GAAIA,aAAqBqM,GAErB,OADArM,EAAUuU,iBACHvU,EAEX,IACI,OAAOqM,GAAU6I,QAAQlV,GAE7B,MAAOt/B,GACH,OAAO2rC,GAAU8I,YAAYnV,IApdZoV,CAAmBpV,GACpC,GAAiB,IAAb+U,GAA+B,IAAbA,EAClB,MAAM,IAAIx2C,MAAM,kDAEpB,GAAIkgB,IAAMgI,GACN,MAAM,IAAIloB,MAAM,iDACpB,MAAM82C,EAAoB,EAAXN,EAAe,KAAO,KAC/BhuB,EAAIknB,GAAMqH,QAAQD,EAASE,GAAYnmB,KACvC9U,EAAEA,GAAMgzB,GACRkI,EAAOjH,GAAOnf,EAAG9U,GACjBm7B,EAAK5H,IAAKpvB,EAAI+2B,EAAMl7B,GACpBo7B,EAAK7H,GAAIltB,EAAI60B,EAAMl7B,GACnBq7B,EAAI1H,GAAMqD,KAAKsE,qBAAqB7uB,EAAG0uB,EAAIC,GACjD,IAAKC,EACD,MAAM,IAAIp3C,MAAM,+CAEpB,OADAo3C,EAAEpB,iBACKoB,EAEXE,WAAWC,GAAe,GACtB,OAAOC,GAAW32C,KAAK4P,MAAM8mC,IAEjC9mC,MAAM8mC,GAAe,GACjB,MAAM9uB,EAAIuuB,GAAYn2C,KAAK4nB,GAC3B,GAAI8uB,EAAc,CAEd,MAAO,GADQ12C,KAAK6nB,EAAIP,GAAM,KAAO,OAClBM,IAGnB,MAAO,KAAKA,IAAIuuB,GAAYn2C,KAAK6nB,KAGzC+uB,SACI,OAAO52C,KAAK4P,OAAM,GAAM/G,MAAM,GAElCguC,SACI,OAAO72C,KAAKy2C,YAAW,GAAM5tC,MAAM,GAEvCssC,iBACI,MAAMprB,EAAM,kCACNnC,EAAEA,EAACC,EAAEA,GAAM7nB,KACjB,IAAK4zC,GAAoBhsB,KAAOgsB,GAAoB/rB,GAChD,MAAM,IAAI1oB,MAAM4qB,GACpB,MAAM7T,EAAOu4B,GAAI5mB,EAAIA,GAErB,GAAI4mB,GAAIv4B,EADMq4B,GAAU3mB,MACEP,GACtB,MAAM,IAAIloB,MAAM4qB,GAExB4lB,OAAO19B,GACH,OAAOjS,KAAK4nB,IAAM3V,EAAM2V,GAAK5nB,KAAK6nB,IAAM5V,EAAM4V,EAElD2oB,SACI,OAAO,IAAI3B,GAAM7uC,KAAK4nB,EAAG6mB,IAAKzuC,KAAK6nB,IAEvC4oB,SACI,OAAO7B,GAAcc,WAAW1vC,MAAMywC,SAASjB,WAEnDjsC,IAAI0O,GACA,OAAO28B,GAAcc,WAAW1vC,MAAMuD,IAAIqrC,GAAcc,WAAWz9B,IAAQu9B,WAE/EwB,SAAS/+B,GACL,OAAOjS,KAAKuD,IAAI0O,EAAMu+B,UAE1BsC,SAAS5B,GACL,OAAOtC,GAAcc,WAAW1vC,MAAM8yC,SAAS5B,EAAQlxC,MAAMwvC,WAEjEgH,qBAAqBD,EAAGrkC,EAAGC,GACvB,MACM2kC,EADIlI,GAAcc,WAAW1vC,MACtB8yC,SAAS5gC,GAChB6kC,EAAKnI,GAAcc,WAAW6G,GAAGtF,eAAe9+B,GAChD6kC,EAAMF,EAAGvzC,IAAIwzC,GACnB,OAAOC,EAAIrH,OAAOf,GAAciC,WAAQnxC,EAAYs3C,EAAIxH,YAKhE,SAASyH,GAAS11B,GACd,OAAOhd,OAAOqC,SAAS2a,EAAE,GAAI,KAAO,EAAI,KAAOA,EAAIA,EAEvD,SAAS21B,GAAYriC,GACjB,GAAIA,EAAK3V,OAAS,GAAiB,IAAZ2V,EAAK,GACxB,MAAM,IAAI1V,MAAM,kCAAkCg4C,GAAWtiC,MAEjE,MAAM8J,EAAM9J,EAAK,GACX4K,EAAM5K,EAAKuJ,SAAS,EAAGO,EAAM,GACnC,IAAKA,GAAOc,EAAIvgB,SAAWyf,EACvB,MAAM,IAAIxf,MAAM,2CAEpB,GAAe,IAAXsgB,EAAI,IAAeA,EAAI,IAAM,IAC7B,MAAM,IAAItgB,MAAM,8CAEpB,MAAO,CAAE0V,KAAM8+B,GAAcl0B,GAAMvJ,KAAMrB,EAAKuJ,SAASO,EAAM,IAjBjEkwB,GAAMqD,KAAO,IAAIrD,GAAMX,GAAME,GAAIF,GAAMG,IACvCQ,GAAMgC,KAAO,IAAIhC,GAAMxnB,GAAKA,IAgCrB,MAAM4lB,GACTrsC,YAAYovB,EAAGzO,GACXvhB,KAAKgwB,EAAIA,EACThwB,KAAKuhB,EAAIA,EACTvhB,KAAKm1C,iBAETlvC,mBAAmB+J,GACf,MAAMmJ,EAAMi+B,GAASpnC,GACflN,EAAO,wBACb,GAAmB,iBAARkN,IAAqBmJ,EAC5B,MAAM,IAAI9Y,UAAU,GAAGyC,oCAC3B,MAAM+X,EAAM1B,EAAMg+B,GAAWnnC,GAAOA,EACpC,GAAmB,MAAf6K,EAAI3b,OACJ,MAAM,IAAIC,MAAM,GAAG2D,2BACvB,OAAO,IAAImqC,GAAUoK,GAAYx8B,EAAIhS,MAAM,EAAG,KAAMwuC,GAAYx8B,EAAIhS,MAAM,GAAI,OAElF5C,eAAe+J,GACX,MAAMmJ,EAAMi+B,GAASpnC,GACrB,GAAmB,iBAARA,IAAqBmJ,EAC5B,MAAM,IAAI9Y,UAAU,oDACxB,MAAM2vB,EAAEA,EAACzO,EAAEA,GAlCnB,SAA2B1M,GACvB,GAAIA,EAAK3V,OAAS,GAAgB,IAAX2V,EAAK,GACxB,MAAM,IAAI1V,MAAM,0BAA0Bg4C,GAAWtiC,MAEzD,GAAIA,EAAK,KAAOA,EAAK3V,OAAS,EAC1B,MAAM,IAAIC,MAAM,uCAEpB,MAAQ0V,KAAMmb,EAAG9Z,KAAMohC,GAAWJ,GAAYriC,EAAKuJ,SAAS,KACpDvJ,KAAM0M,EAAGrL,KAAMqhC,GAAeL,GAAYI,GAClD,GAAIC,EAAWr4C,OACX,MAAM,IAAIC,MAAM,gDAAgDg4C,GAAWI,MAE/E,MAAO,CAAEvnB,EAAAA,EAAGzO,EAAAA,GAsBSi2B,CAAkBr+B,EAAMnJ,EAAM2mC,GAAW3mC,IAC1D,OAAO,IAAIi9B,GAAUjd,EAAGzO,GAE5Btb,eAAe+J,GACX,OAAOhQ,KAAK81C,QAAQ9lC,GAExBmlC,iBACI,MAAMnlB,EAAEA,EAACzO,EAAEA,GAAMvhB,KACjB,IAAKy3C,GAAmBznB,GACpB,MAAM,IAAI7wB,MAAM,0CACpB,IAAKs4C,GAAmBl2B,GACpB,MAAM,IAAIpiB,MAAM,0CAExBu4C,WACI,MAAMC,EAAOzJ,GAAMhzB,GAAKoM,GACxB,OAAOtnB,KAAKuhB,EAAIo2B,EAEpBC,aACI,OAAO53C,KAAK03C,WAAa,IAAIzK,GAAUjtC,KAAKgwB,EAAGke,GAAMhzB,EAAIlb,KAAKuhB,GAAKvhB,KAEvE63C,cAAcnB,GAAe,GACzB,OAAOC,GAAW32C,KAAK83C,SAASpB,IAEpCoB,SAASpB,GAAe,GACpB,MAAMqB,EAAOd,GAASe,GAAoBh4C,KAAKuhB,IAC/C,GAAIm1B,EACA,OAAOqB,EACX,MAAME,EAAOhB,GAASe,GAAoBh4C,KAAKgwB,IACzCkoB,EAAOF,GAAoBC,EAAK/4C,OAAS,GACzCi5C,EAAOH,GAAoBD,EAAK74C,OAAS,GAE/C,MAAO,KADQ84C,GAAoBC,EAAK/4C,OAAS,EAAI64C,EAAK74C,OAAS,EAAI,OAChDg5C,IAAOD,MAASE,IAAOJ,IAElDtB,aACI,OAAOz2C,KAAK63C,gBAEhBjoC,QACI,OAAO5P,KAAK83C,WAEhBM,oBACI,OAAOzB,GAAW32C,KAAKq4C,gBAE3BA,eACI,OAAOlC,GAAYn2C,KAAKgwB,GAAKmmB,GAAYn2C,KAAKuhB,IAGtD,SAAS+2B,MAAeC,GACpB,IAAKA,EAAOC,MAAMpB,IACd,MAAM,IAAIj4C,MAAM,4BACpB,GAAsB,IAAlBo5C,EAAOr5C,OACP,OAAOq5C,EAAO,GAClB,MAAMr5C,EAASq5C,EAAOh6C,QAAO,CAAC2T,EAAGiH,IAAQjH,EAAIiH,EAAIja,QAAQ,GACnDwH,EAAS,IAAIF,WAAWtH,GAC9B,IAAK,IAAID,EAAI,EAAGyd,EAAM,EAAGzd,EAAIs5C,EAAOr5C,OAAQD,IAAK,CAC7C,MAAMka,EAAMo/B,EAAOt5C,GACnByH,EAAOlG,IAAI2Y,EAAKuD,GAChBA,GAAOvD,EAAIja,OAEf,OAAOwH,EAEX,SAAS0wC,GAAS9hC,GACd,OAAOA,aAAiB9O,WAE5B,MAAMiyC,GAAQ1rC,MAAM5B,KAAK,CAAEjM,OAAQ,MAAO,CAACT,EAAGQ,IAAMA,EAAE6K,SAAS,IAAI8P,SAAS,EAAG,OAC/E,SAASu9B,GAAWuB,GAChB,KAAMA,aAAkBlyC,YACpB,MAAM,IAAIrH,MAAM,uBACpB,IAAI6Q,EAAM,GACV,IAAK,IAAI/Q,EAAI,EAAGA,EAAIy5C,EAAOx5C,OAAQD,IAC/B+Q,GAAOyoC,GAAMC,EAAOz5C,IAExB,OAAO+Q,EAEX,SAASmmC,GAAY9G,GACjB,GAAIA,EAAMpB,GACN,MAAM,IAAI9uC,MAAM,2BACpB,OAAOkwC,EAAIvlC,SAAS,IAAI8P,SAAS,GAAI,KAKzC,SAASo+B,GAAoB3I,GACzB,MAAMr/B,EAAMq/B,EAAIvlC,SAAS,IACzB,OAAoB,EAAbkG,EAAI9Q,OAAa,IAAI8Q,IAAQA,EAExC,SAASqnC,GAAYrnC,GACjB,GAAmB,iBAARA,EACP,MAAM,IAAI3P,UAAU,4CAA8C2P,GAEtE,OAAOvK,OAAO,KAAKuK,KAEvB,SAAS2mC,GAAW3mC,GAChB,GAAmB,iBAARA,EACP,MAAM,IAAI3P,UAAU,2CAA6C2P,GAErE,GAAIA,EAAI9Q,OAAS,EACb,MAAM,IAAIC,MAAM,4CAA8C6Q,EAAI9Q,QACtE,MAAMy5C,EAAQ,IAAInyC,WAAWwJ,EAAI9Q,OAAS,GAC1C,IAAK,IAAID,EAAI,EAAGA,EAAI05C,EAAMz5C,OAAQD,IAAK,CACnC,MAAM6oB,EAAQ,EAAJ7oB,EACJ25C,EAAU5oC,EAAInH,MAAMif,EAAGA,EAAI,GAC3B+wB,EAAOt0C,OAAOqC,SAASgyC,EAAS,IACtC,GAAIr0C,OAAOu0C,MAAMD,IAASA,EAAO,EAC7B,MAAM,IAAI15C,MAAM,yBACpBw5C,EAAM15C,GAAK45C,EAEf,OAAOF,EAEX,SAAShF,GAAcr+B,GACnB,OAAO+hC,GAAYF,GAAW7hC,IAElC,SAAS8/B,GAAYplC,GACjB,OAAOA,aAAexJ,WAAaA,WAAW2E,KAAK6E,GAAO2mC,GAAW3mC,GAEzE,SAASmhC,GAAgB9B,GACrB,GAAmB,iBAARA,GAAoB9qC,OAAO4W,cAAck0B,IAAQA,EAAM,EAC9D,OAAO5pC,OAAO4pC,GAClB,GAAmB,iBAARA,GAAoBoI,GAAmBpI,GAC9C,OAAOA,EACX,MAAM,IAAIhvC,UAAU,uDAExB,SAASouC,GAAIv8B,EAAGC,EAAI+7B,GAAMC,GACtB,MAAMznC,EAASwL,EAAIC,EACnB,OAAOzL,GAAU2gB,GAAM3gB,EAASyL,EAAIzL,EAExC,SAAS4tC,GAAK1sB,EAAGmxB,GACb,MAAM5K,EAAEA,GAAMD,GACd,IAAIzuB,EAAMmI,EACV,KAAOmxB,KAAU1xB,IACb5H,GAAOA,EACPA,GAAO0uB,EAEX,OAAO1uB,EAyBX,SAAS0vB,GAAO6J,EAAQC,EAAS/K,GAAMC,GACnC,GAAI6K,IAAW3xB,IAAO4xB,GAAU5xB,GAC5B,MAAM,IAAIloB,MAAM,6CAA6C65C,SAAcC,KAE/E,IAAI/mC,EAAIu8B,GAAIuK,EAAQC,GAChB9mC,EAAI8mC,EACJrxB,EAAIP,GAAcrJ,EAAIsJ,GAC1B,KAAOpV,IAAMmV,IAAK,CACd,MACM2I,EAAI7d,EAAID,EACRwyB,EAAI9c,EAAI5J,GAFJ7L,EAAID,GAIdC,EAAID,EAAGA,EAAI8d,EAAGpI,EAAI5J,EAAUA,EAAI0mB,EAGpC,GADYvyB,IACAmV,GACR,MAAM,IAAInoB,MAAM,0BACpB,OAAOsvC,GAAI7mB,EAAGqxB,GAmBlB,MAAMC,GAAa,CAAChnC,EAAGC,KAAOD,EAAIC,EAAIoV,IAAOpV,EACvCgnC,GAAY5xB,IAAO9hB,OAAO,KAChC,SAASgsC,GAAgBpzC,GACrB,MAAM6c,EAAEA,GAAMgzB,GACRkL,EAAK3zC,OAAO,sCACZ4zC,GAAM/xB,GAAM7hB,OAAO,sCACnB6zC,EAAK7zC,OAAO,uCACZ0uC,EAAKiF,EACLG,EAAKL,GAAW/E,EAAK91C,EAAG6c,GACxBoe,EAAK4f,IAAYG,EAAKh7C,EAAG6c,GAC/B,IAAIo2B,EAAK7C,GAAIpwC,EAAIk7C,EAAKH,EAAK9f,EAAKggB,EAAIp+B,GAChCs2B,EAAK/C,IAAK8K,EAAKF,EAAK/f,EAAK6a,EAAIj5B,GACjC,MAAMm2B,EAAQC,EAAK6H,GACb5H,EAAQC,EAAK2H,GAKnB,GAJI9H,IACAC,EAAKp2B,EAAIo2B,GACTC,IACAC,EAAKt2B,EAAIs2B,GACTF,EAAK6H,IAAa3H,EAAK2H,GACvB,MAAM,IAAIh6C,MAAM,2CAA6Cd,GAEjE,MAAO,CAAEgzC,MAAAA,EAAOC,GAAAA,EAAIC,MAAAA,EAAOC,GAAAA,GAa/B,MAAMgI,GACF54C,cACIZ,KAAKvB,EAAI,IAAI+H,WAAW,IAAI2P,KAAK,GACjCnW,KAAK3B,EAAI,IAAImI,WAAW,IAAI2P,KAAK,GACjCnW,KAAKy5C,QAAU,EAEnBx8B,QAAQ3d,GACJ,OAAOo6C,GAAMC,WAAW35C,KAAK3B,KAAMiB,GAEvCs6C,YAAYt6C,GACR,GAAoC,mBAAzBo6C,GAAMG,eACb,MAAM,IAAI16C,MAAM,yDACpB,MAAMsgB,EAAMi6B,GAAMG,eAAe75C,KAAK3B,KAAMiB,GAC5C,GAAImgB,aAAevhB,QACf,MAAM,IAAIiB,MAAM,uDACpB,OAAOsgB,EAEXq6B,OACI,GAAI95C,KAAKy5C,SAAW,IAChB,MAAM,IAAIt6C,MAAM,qDAEpBa,KAAKy5C,SAAW,EAEpB57C,aAAak8C,EAAO,IAAIvzC,YACpBxG,KAAK3B,QAAU2B,KAAKid,KAAKjd,KAAKvB,EAAG+H,WAAW2E,KAAK,CAAC,IAAQ4uC,GAC1D/5C,KAAKvB,QAAUuB,KAAKid,KAAKjd,KAAKvB,GACV,IAAhBs7C,EAAK76C,SAETc,KAAK3B,QAAU2B,KAAKid,KAAKjd,KAAKvB,EAAG+H,WAAW2E,KAAK,CAAC,IAAQ4uC,GAC1D/5C,KAAKvB,QAAUuB,KAAKid,KAAKjd,KAAKvB,IAElCu7C,WAAWD,EAAO,IAAIvzC,YAClBxG,KAAK3B,EAAI2B,KAAK45C,SAAS55C,KAAKvB,EAAG+H,WAAW2E,KAAK,CAAC,IAAQ4uC,GACxD/5C,KAAKvB,EAAIuB,KAAK45C,SAAS55C,KAAKvB,GACR,IAAhBs7C,EAAK76C,SAETc,KAAK3B,EAAI2B,KAAK45C,SAAS55C,KAAKvB,EAAG+H,WAAW2E,KAAK,CAAC,IAAQ4uC,GACxD/5C,KAAKvB,EAAIuB,KAAK45C,SAAS55C,KAAKvB,IAEhCZ,iBAGI,OAFAmC,KAAK85C,OACL95C,KAAKvB,QAAUuB,KAAKid,KAAKjd,KAAKvB,GACvBuB,KAAKvB,EAEhBw7C,eAGI,OAFAj6C,KAAK85C,OACL95C,KAAKvB,EAAIuB,KAAK45C,SAAS55C,KAAKvB,GACrBuB,KAAKvB,GAGpB,SAASg5C,GAAmBpI,GACxB,OAAOhoB,GAAMgoB,GAAOA,EAAMnB,GAAMhzB,EAEpC,SAAS04B,GAAoBvE,GACzB,OAAOhoB,GAAMgoB,GAAOA,EAAMnB,GAAMC,EAEpC,SAAS+L,GAASC,EAAQzV,EAAGhvB,GACzB,MAAMrX,EAAIs1C,GAAcwG,GACxB,IAAK1C,GAAmBp5C,GACpB,OACJ,MAAM6c,EAAEA,GAAMgzB,GACRkM,EAAIvL,GAAMqD,KAAKY,SAASz0C,GACxB2xB,EAAIye,GAAI2L,EAAExyB,EAAG1M,GACnB,GAAI8U,IAAM3I,GACN,OACJ,MAAM9F,EAAIktB,GAAIU,GAAO9wC,EAAG6c,GAAKuzB,GAAI/J,EAAIhvB,EAAIsa,EAAG9U,GAAIA,GAChD,GAAIqG,IAAM8F,GACN,OACJ,MAAMumB,EAAM,IAAIX,GAAUjd,EAAGzO,GAE7B,MAAO,CAAEqsB,IAAAA,EAAK+H,UADIyE,EAAExyB,IAAMgmB,EAAI5d,EAAI,EAAI,GAAKzrB,OAAO61C,EAAEvyB,EAAIP,KAG5D,SAASmuB,GAAoBj2C,GACzB,IAAI6vC,EACJ,GAAmB,iBAAR7vC,EACP6vC,EAAM7vC,OAEL,GAAmB,iBAARA,GAAoB+E,OAAO4W,cAAc3b,IAAQA,EAAM,EACnE6vC,EAAM5pC,OAAOjG,QAEZ,GAAmB,iBAARA,EAAkB,CAC9B,GAAmB,KAAfA,EAAIN,OACJ,MAAM,IAAIC,MAAM,oCACpBkwC,EAAMgI,GAAY73C,OAEjB,CAAA,IAAI43C,GAAS53C,GAMd,MAAM,IAAIa,UAAU,8BALpB,GAAmB,KAAfb,EAAIN,OACJ,MAAM,IAAIC,MAAM,oCACpBkwC,EAAMsE,GAAcn0C,GAKxB,IAAKi4C,GAAmBpI,GACpB,MAAM,IAAIlwC,MAAM,qCACpB,OAAOkwC,EA6BX,SAASgL,GAAM7iC,GACX,MAAM2B,EAAMi+B,GAAS5/B,GACfqD,EAAsB,iBAATrD,EACbmH,GAAOxF,GAAO0B,IAAQrD,EAAKtY,OACjC,OAAIia,EACe,KAARwF,GAAsB,KAARA,EACrB9D,EACe,KAAR8D,GAAsB,MAARA,EACrBnH,aAAgBq3B,GAIjB,SAASyL,GAAgBC,EAAUC,EAAS9D,GAAe,GAC9D,GAAI2D,GAAME,GACN,MAAM,IAAIl6C,UAAU,kDACxB,IAAKg6C,GAAMG,GACP,MAAM,IAAIn6C,UAAU,kDACxB,MAAM8R,GA5CkBsoC,EA4CKD,aA3CJ3L,IACrB4L,EAAUtF,iBACHsF,GAGA5L,GAAMqH,QAAQuE,GAN7B,IAA4BA,EA8CxB,OADAtoC,EAAEgjC,iBACKhjC,EAAE2gC,SAAS2C,GAAoB8E,IAAW9D,WAAWC,GAEhE,SAASgE,GAASplC,GAEd,OAAOq+B,GADOr+B,EAAMpW,OAAS,GAAKoW,EAAMzM,MAAM,EAAG,IAAMyM,GAG3D,SAASqlC,GAAYrlC,GACjB,MAAMslC,EAAKF,GAASplC,GACdulC,EAAKpM,GAAImM,EAAI1M,GAAMhzB,GACzB,OAAO4/B,GAAWD,EAAKxzB,GAAMuzB,EAAKC,GAEtC,SAASC,GAAWzL,GAChB,GAAmB,iBAARA,EACP,MAAM,IAAIlwC,MAAM,mBAEpB,OAAOw3C,GADKR,GAAY9G,IAwC5B,SAAS0L,GAASrF,EAASsF,EAAS39B,EAAO,IACvC,MAAM08B,KAAEA,EAAIrV,EAAEA,EAAChvB,EAAEA,GAtCrB,SAAqBggC,EAASF,EAAYyF,GACtC,GAAe,MAAXvF,EACA,MAAM,IAAIv2C,MAAM,2CAA2Cu2C,MAC/D,MAAMrqB,EAAK+pB,GAAYM,GACjBhgC,EAAI+/B,GAAoBD,GACxB0F,EAAW,CAACJ,GAAWplC,GAAIilC,GAAYtvB,IAC7C,GAAoB,MAAhB4vB,EAAsB,EACD,IAAjBA,IACAA,EAAevB,GAAMjsB,YAAY,KACrC,MAAM/nB,EAAI0vC,GAAY6F,GACtB,GAAiB,KAAbv1C,EAAExG,OACF,MAAM,IAAIC,MAAM,yCACpB+7C,EAASv4C,KAAK+C,GAIlB,MAAO,CAAEq0C,KAFIzB,MAAe4C,GAEbxW,EADLgW,GAASrvB,GACD3V,EAAAA,GAsBKylC,CAAYzF,EAASsF,EAAS39B,EAAK49B,cAC1D,IAAIrN,EACJ,MAAMwN,EAAO,IAAI5B,GAEjB,IADA4B,EAAKpB,WAAWD,KACPnM,EAAMsM,GAASkB,EAAKnB,eAAgBvV,EAAGhvB,KAC5C0lC,EAAKpB,aACT,OA1BJ,SAAqBqB,EAAQh+B,GACzB,IAAIuwB,IAAEA,EAAG+H,SAAEA,GAAa0F,EACxB,MAAMC,UAAEA,EAASC,IAAEA,EAAGC,UAAEA,GAAcv9C,OAAOoN,OAAO,CAAEiwC,WAAW,EAAMC,KAAK,GAAQl+B,GAChFi+B,GAAa1N,EAAI8J,aACjB9J,EAAMA,EAAIgK,aACVjC,GAAY,GAEhB,MAAMhjB,EAAS4oB,EAAM3N,EAAIiK,gBAAkBjK,EAAIwK,oBAC/C,OAAOoD,EAAY,CAAC7oB,EAAQgjB,GAAYhjB,EAkBjC8oB,CAAY7N,EAAKvwB,GAyI5BwxB,GAAMqD,KAAKuB,eAAe,GAC1B,MAAMvtB,GAAS,CACXw1B,KAt+B4Bh8C,UAu+B5Bi8C,IAAqB,iBAAT71B,MAAqB,WAAYA,KAAOA,KAAKI,YAASxmB,GAEzDg6C,GAAQ,CACjBkC,kBAAkBpG,GACd,IAEI,OADAC,GAAoBD,IACb,EAEX,MAAOl0C,GACH,OAAO,IAGfu6C,iBAAmBxgC,IAEf,IADAA,EAAO+5B,GAAY/5B,IACVnc,OAAS,IAAMmc,EAAKnc,OAAS,KAClC,MAAM,IAAIC,MAAM,yDACpB,MAAMkwC,EAAMZ,GAAIkF,GAAct4B,GAAO6yB,GAAMhzB,GAC3C,GAAIm0B,IAAQhoB,IAAOgoB,IAAQ/nB,GACvB,MAAM,IAAInoB,MAAM,uBACpB,OAhgBR,SAAkBkwC,GACd,OAAOsH,GAAWR,GAAY9G,IA+fnByM,CAASzM,IAEpB5hB,YAAa,CAACsuB,EAAc,MACxB,GAAI71B,GAAOy1B,IACP,OAAOz1B,GAAOy1B,IAAIruB,gBAAgB,IAAI9mB,WAAWu1C,IAOjD,MAAM,IAAI58C,MAAM,sDAGxB68C,iBAAkB,IACPtC,GAAMmC,iBAAiBnC,GAAMjsB,YAAY,KAEpD0pB,WAAAA,GACA1I,IAAAA,GACA1tB,OAAQljB,MAAO4F,IACX,GAAIyiB,GAAOy1B,IAAK,CACZ,MAAM5lC,QAAemQ,GAAOy1B,IAAIM,OAAO9/B,OAAO,UAAW1Y,EAAQsS,QACjE,OAAO,IAAIvP,WAAWuP,GAOtB,MAAM,IAAI5W,MAAM,iDAGxBw6C,WAAY97C,MAAO2B,KAAQ08C,KACvB,GAAIh2B,GAAOy1B,IAAK,CACZ,MAAMQ,QAAaj2B,GAAOy1B,IAAIM,OAAOG,UAAU,MAAO58C,EAAK,CAAEsD,KAAM,OAAQuY,KAAM,CAAEvY,KAAM,aAAe,EAAO,CAAC,SAC1GW,EAAU60C,MAAe4D,GACzBnmC,QAAemQ,GAAOy1B,IAAIM,OAAOI,KAAK,OAAQF,EAAM14C,GAC1D,OAAO,IAAI+C,WAAWuP,GAStB,MAAM,IAAI5W,MAAM,sDAGxBm9C,gBAAY58C,EACZm6C,oBAAgBn6C,EAChB68C,WAAWhK,EAAa,EAAGQ,EAAQlE,GAAMqD,MACrC,MAAMU,EAASG,IAAUlE,GAAMqD,KAAOa,EAAQ,IAAIlE,GAAMkE,EAAMnrB,EAAGmrB,EAAMlrB,GAGvE,OAFA+qB,EAAOa,eAAelB,GACtBK,EAAOE,SAAS/E,IACT6E,ICljCf,IAWI4J,GAXAz8C,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAUzEy5C,GAACG,eAAiB,SAAUr6C,KAAQ08C,GAC/C,OAAOtnC,GAASgS,GAAY,SAAUpnB,EAAKgW,GAAO0mC,MAE/C,MAAMO,GACT77C,YAAY40C,GACRgH,GAAuBh8C,IAAIR,UAAM,GACjCiH,GAAO9C,eAA2C,KAA3BwR,GAAW6/B,GAAqB,6BAA8B,aAAc,cACnGz1C,GAAuBC,KAAMw8C,GAAwBnnC,GAAQmgC,GAAa,KAE1EA,iBAAe,OAAO/0C,GAAuBT,KAAMw8C,GAAwB,KAC3E/B,gBAAc,OAAOgC,GAAWC,iBAAiBj8C,GAAuBT,KAAMw8C,GAAwB,MACtGG,0BAAwB,OAAOF,GAAWC,iBAAiBj8C,GAAuBT,KAAMw8C,GAAwB,MAAM,GAC1HH,KAAKlgC,GACDlV,GAAO9C,eAAuC,KAAvBwR,GAAWwG,GAAiB,wBAAyB,SAAUA,GACtF,MAAOygC,EAAQC,GAASC,GAAmBloC,GAASuH,GAASvH,GAASnU,GAAuBT,KAAMw8C,GAAwB,MAAO,CAC9HhB,WAAW,EACXF,WAAW,IAET1N,EAAMmP,GAAoB7G,QAAQ0G,GACxC,OAAO3P,GAAU9hC,KAAK,CAClB6kB,EAAGpgB,GAAM,KAAOg+B,EAAI5d,EAAElmB,SAAS,IAAK,IACpCyX,EAAG3R,GAAM,KAAOg+B,EAAIrsB,EAAEzX,SAAS,IAAK,IACpCrL,EAAIo+C,EAAQ,GAAO,KACpBh1C,SAEPm1C,mBAAmB/qC,GACf,MAAMgrC,EAASR,GAAWC,iBAAiBzqC,GAC3C,OAAOoD,GAAQ6nC,GAA0BtoC,GAASnU,GAAuBT,KAAMw8C,GAAwB,MAAOS,IAElHh3C,wBAAwBzG,EAAK29C,GACzB,IAAI7nC,EAAQrO,GAAO3B,SAAS9F,EAAK,OACjC,GAAqB,KAAjB8V,EAAMpW,OAAe,CAErB,OAAOmW,GDktBZ,SAAsBmgC,EAAYkB,GAAe,GACpD,OAAO7H,GAAMuO,eAAe5H,GAAYiB,WAAWC,GCptB5B2G,CAAuB/nC,IAAS6nC,IAGnD,GAAqB,KAAjB7nC,EAAMpW,OAAe,CACrB,MAAMo+C,EAAM,IAAI92C,WAAW,IAC3B82C,EAAI,GAAK,EACTA,EAAI98C,IAAI8U,EAAO,GACfA,EAAQgoC,EAGZ,OAAOjoC,GADOkoC,GAAgBrH,QAAQ5gC,GACjBmhC,WAAW0G,IAEpCl3C,wBAAwBkW,EAAQykB,GAC5B,MAAMgN,EAAMX,GAAU9hC,KAAKy1B,GACrB2a,EAAMwB,GAAoBhH,YAAYnhC,GAASY,GAAO,CAACo4B,EAAI5d,EAAG4d,EAAIrsB,MAAMs2B,gBACxEoF,EDusBP,SAA0BvH,EAAS9U,EAAW+U,EAAUe,GAAe,GAC1E,OAAO7H,GAAM2O,cAAc9H,EAAS9U,EAAW+U,GAAUc,WAAWC,GCxsBjD+G,CAA2B7oC,GAASuH,GAASo/B,EAAK3N,EAAIP,SACrE,OAAc,MAAV4P,EACO5nC,GAAQ4nC,GAEZh2C,GAAOlD,mBAAmB,+BAAgC,YAAa68B,GAElF36B,kBAAkBy3C,EAAIC,EAAIR,GACtB,MAAMS,EAAOL,GAAgBrH,QAAQuG,GAAWC,iBAAiBgB,GAAI72C,UAAU,IACzEg3C,EAAON,GAAgBrH,QAAQuG,GAAWC,iBAAiBiB,GAAI92C,UAAU,IAC/E,MAAO,KAAO+2C,EAAKr6C,IAAIs6C,GAAMjuC,QAAQutC,ICzE7C,SAASW,GAAa/R,EAAMgS,GACxB,MAAO,CACHxrB,QAASW,GAAW6Y,GACpBgS,aAAcA,GAAe,IAAI3/C,KAAI,CAAC4/C,EAAYt/C,KAC9C,GAA+B,KAA3BiX,GAAWqoC,GAEX,MAAM,IAAI7+C,MAAM,IAEpB,OAAO6+C,EAAW53C,kBAIvB,SAAS63C,GAAclgD,GAC1B,GAAIgP,MAAMN,QAAQ1O,GACd,OAAOA,EAAMK,KAAI,CAACoC,EAAK9B,KACnB,GAAIqO,MAAMN,QAAQjM,GAAM,CACpB,GAAIA,EAAItB,OAAS,EAEb,MAAM,IAAIC,MAAM,IAEpB,OAAO2+C,GAAat9C,EAAI,GAAIA,EAAI,IAEpC,OAAOs9C,GAAat9C,EAAI+xB,QAAS/xB,EAAIu9C,gBAG7C,MAAMr3C,EAASzI,OAAOD,KAAKD,GAAOK,KAAK2tC,IACnC,MAAMgS,EAAchgD,EAAMguC,GAAMxtC,QAAO,CAACC,EAAOw/C,KAC3Cx/C,EAAMw/C,IAAc,EACbx/C,IACR,IACH,OAAOs/C,GAAa/R,EAAM9tC,OAAOD,KAAK+/C,GAAa/e,WAGvD,OADAt4B,EAAOs4B,MAAK,CAAC9sB,EAAGC,IAAOD,EAAEqgB,QAAQ2rB,cAAc/rC,EAAEogB,WAC1C7rB,EChCJ,SAASy3C,GAAe3+C,GAE3B,OAAO0zB,GAAW/I,GAAU,KADVsyB,GAAWC,iBAAiBl9C,GAAK,GACNqH,UAAU,IAAIA,UAAU,KAElE,SAASu3C,GAAejiC,EAAQykB,GACnC,OAAOud,GAAe1B,GAAW4B,iBAAiBliC,EAAQykB,IFsE9D4b,GAAyB,IAAI/6C,QG9EtB,MCEMwF,GAAS,IAAI5D,EDFH,2CEAvB,IAWIi7C,GAXAv+C,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAaxF,MAAMuP,GAAO/J,OAAO,GACdmnC,GAAOnnC,OAAO,GACdonC,GAAQpnC,OAAO,IACfqnC,GAAQrnC,OAAO,IACfsnC,GAAQtnC,OAAO,IACf84C,GAAc94C,OAAO,sEAC3B,SAAS+4C,GAAczgD,GACnB,MAAc,OAAVA,EACO,KAEJm1B,GAAWn1B,GAEtB,SAAS0gD,GAAW1gD,EAAO0P,GACvB,IACI,OAAO4H,GAAQtX,GAEnB,MAAOuD,GACH,OAAO2F,GAAOlD,mBAAmB,eAAgB0J,EAAO1P,IAGhE,SAAS2gD,GAAiB3gD,EAAO0P,GAC7B,IACI,OAAOwwC,GAAclgD,GAEzB,MAAOuD,GACH,OAAO2F,GAAOlD,mBAAmB,qBAAsB0J,EAAO1P,IAGtE,SAAS4gD,GAAajvC,EAAQjC,GAC1B,MAAe,OAAXiC,EACO,EAEJzI,GAAOzB,UAAUkK,EAAQjC,GAEpC,SAASmxC,GAAWlvC,EAAQjC,GACxB,GAAe,OAAXiC,EACA,OAAOF,GAEX,MAAMzR,EAAQkJ,GAAOtB,UAAU+J,EAAQjC,GAIvC,OAHI1P,EAAQwgD,IACRt3C,GAAOlD,mBAAmB,0BAA2B0J,EAAO1P,GAEzDA,EAEX,SAAS8gD,GAAanvC,EAAQ5M,GAC1B,MAAM/E,EAAQkJ,GAAOtB,UAAU+J,EAAQ,SACjChJ,EAASqJ,GAAQhS,GAIvB,OAHI2I,EAAOxH,OAAS,IAChB+H,GAAOlD,mBAAmB,kBAAmB,MAAMjB,IAAQ/E,GAExD2I,EAEX,SAASo4C,GAAiB/gD,GACtB,OAAOkgD,GAAclgD,GAAOK,KAAKoC,GAAQ,CAACA,EAAI+xB,QAAS/xB,EAAIu9C,eAgD/D,SAASgB,GAAiB1qB,EAAIuZ,GAC1B,MAAMzP,EAAS,CACX0gB,GAAaxqB,EAAGE,OAAS,EAAG,SAC5BsqB,GAAaxqB,EAAG2qB,UAAY,EAAG,YAC/BH,GAAaxqB,EAAG4qB,UAAY,EAAG,YACpB,MAAT5qB,EAAGjpB,GAAc8nB,GAAWmB,EAAGjpB,IAAM,KACvCyzC,GAAaxqB,EAAGt2B,OAAS,EAAG,SAC3Bs2B,EAAGxf,MAAQ,MAEhB,IAAI4oB,EAAUjuB,GACd,GAAkB,MAAd6kB,EAAGoJ,QAEHA,EAAUx2B,GAAOtB,UAAU0uB,EAAGoJ,QAAS,cAGnCmQ,GAAuB,MAAhBA,EAAIV,UAAoBU,EAAIT,gBAAkB1P,GACrDx2B,GAAOlD,mBAAmB,4BAA6B,MAAO6pC,QAGjE,GAAIA,EAAK,CAEV,MAAMsR,EAAStR,EAAIT,cACL,MAAV+R,IACAzhB,EAAUyhB,GAIlB,IAAKtR,EAOD,OALInQ,IAAYjuB,KACZ2uB,EAAOx7B,KAAKoN,GAAQ0tB,IACpBU,EAAOx7B,KAAK,MACZw7B,EAAOx7B,KAAK,OAET+wB,GAAUyK,GAGrB,IAAI1/B,EAAIgH,OAAO,GAAKmoC,EAAIP,SAUxB,OATI5P,IAAYjuB,GACZ/Q,EAAIwuC,GAAUkS,YAAY1hB,EAASmQ,EAAInvC,GAElCgH,OAAOmoC,EAAInvC,KAAOA,GACvBwI,GAAOlD,mBAAmB,4BAA6B,MAAO6pC,GAElEzP,EAAOx7B,KAAKoN,GAAQtR,IACpB0/B,EAAOx7B,KAAKoN,GAAQ69B,EAAI5d,IACxBmO,EAAOx7B,KAAKoN,GAAQ69B,EAAIrsB,IACjBmS,GAAUyK,GAErB,SAASihB,GAAmB/qB,EAAI8J,EAAQkhB,GACpC,IAAIhS,EACJ,IAEI,GADAA,EAAUsR,GAAaxgB,EAAO,GAAI,WAClB,IAAZkP,GAA6B,IAAZA,EACjB,MAAM,IAAIluC,MAAM,eAGxB,MAAOmC,GACH,OAAO2F,GAAOlD,mBAAmB,kBAAmB,UAAWo6B,EAAO,IAE1E,MAAMnO,EAAI5Z,GAAa+nB,EAAO,GAAI,IAC5B5c,EAAInL,GAAa+nB,EAAO,GAAI,IAC5ByC,EAAYqM,GAAU9hC,KAAK,CAAE6kB,EAAAA,EAAGzO,EAAAA,EAAG8rB,QAAAA,IACzChZ,EAAGuM,UAAYA,EA8BnB,SAAS0e,GAAkBjrB,EAAIuZ,GAC3B,MAAMzP,EAAS,CACX0gB,GAAaxqB,EAAGoJ,SAAW,EAAG,WAC9BohB,GAAaxqB,EAAGE,OAAS,EAAG,SAC5BsqB,GAAaxqB,EAAGkrB,sBAAwB,EAAG,wBAC3CV,GAAaxqB,EAAGmrB,cAAgB,EAAG,gBACnCX,GAAaxqB,EAAG4qB,UAAY,EAAG,YACpB,MAAT5qB,EAAGjpB,GAAc8nB,GAAWmB,EAAGjpB,IAAM,KACvCyzC,GAAaxqB,EAAGt2B,OAAS,EAAG,SAC3Bs2B,EAAGxf,MAAQ,KACXiqC,GAAiBzqB,EAAGorB,YAAc,KAOvC,OALI7R,IACAzP,EAAOx7B,KAAKk8C,GAAajR,EAAIP,QAAS,YACtClP,EAAOx7B,KAAKoN,GAAQ69B,EAAI5d,IACxBmO,EAAOx7B,KAAKoN,GAAQ69B,EAAIrsB,KAErB/L,GAAO,CAAC,OAAQke,GAAUyK,KA0BrC,SAASuhB,GAAkBrrB,EAAIuZ,GAC3B,MAAMzP,EAAS,CACX0gB,GAAaxqB,EAAGoJ,SAAW,EAAG,WAC9BohB,GAAaxqB,EAAGE,OAAS,EAAG,SAC5BsqB,GAAaxqB,EAAG2qB,UAAY,EAAG,YAC/BH,GAAaxqB,EAAG4qB,UAAY,EAAG,YACpB,MAAT5qB,EAAGjpB,GAAc8nB,GAAWmB,EAAGjpB,IAAM,KACvCyzC,GAAaxqB,EAAGt2B,OAAS,EAAG,SAC3Bs2B,EAAGxf,MAAQ,KACXiqC,GAAiBzqB,EAAGorB,YAAc,KAOvC,OALI7R,IACAzP,EAAOx7B,KAAKk8C,GAAajR,EAAIP,QAAS,kBACtClP,EAAOx7B,KAAKoN,GAAQ69B,EAAI5d,IACxBmO,EAAOx7B,KAAKoN,GAAQ69B,EAAIrsB,KAErB/L,GAAO,CAAC,OAAQke,GAAUyK,KAE9B,MAAMwhB,GACT/+C,cACI09C,GAAmB99C,IAAIR,UAAM,GAC7BD,GAAuBC,KAAMs+C,GAAoB,CAC7C1/C,KAAM,KACNwM,GAAI,KACJmpB,MAAO,EACP0qB,SAAUx5C,OAAO,GACjBu5C,SAAU,KACVO,qBAAsB,KACtBC,aAAc,KACd3qC,KAAM,KACN9W,MAAO0H,OAAO,GACdg4B,QAASh4B,OAAO,GAChBmoC,IAAK,KACL6R,WAAY,MACb,KAGH7gD,WAAS,OAAOqC,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,QAChFsB,eACA,OAAQ5/C,KAAKpB,MACT,KAAK,EAAG,MAAO,SACf,KAAK,EAAG,MAAO,WACf,KAAK,EAAG,MAAO,WAEnB,OAAO,KAEPA,SAAKb,GACL,OAAQA,GACJ,KAAK,KACDoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,OAAQ,MACxE,MACJ,KAAK,EACL,IAAK,SACDn9C,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,OAAQ,GACxE,MACJ,KAAK,EACL,IAAK,SACL,IAAK,WACDn9C,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,OAAQ,GACxE,MACJ,KAAK,EACL,IAAK,SACL,IAAK,WACDn9C,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,OAAQ,GACxE,MACJ,QACI,MAAM,IAAIn/C,MAAM,iCAGxBiM,SAAO,OAAOnK,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,MAC9ElzC,OAAGrN,GACHoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,KAAgB,MAATvgD,EAAiB,KAAOm1B,GAAWn1B,IAE1Gw2B,YAAU,OAAOtzB,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,SACjF/pB,UAAMx2B,GAASoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,QAASr3C,GAAOzB,UAAUzH,EAAO,UAChHkhD,eAAa,OAAOh+C,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,YACpFW,aAASlhD,GAASoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,WAAYr3C,GAAOtB,UAAU5H,IAC/GihD,eACA,MAAMjhD,EAAQkD,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,YAC9E,OAAa,MAATvgD,GAAgC,IAAdiC,KAAKpB,MAA4B,IAAdoB,KAAKpB,KAGvCb,EAFIyR,GAIXwvC,aAASjhD,GACToD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,WAAsB,MAATvgD,EAAiB,KAAOkJ,GAAOtB,UAAU5H,EAAO,aAE7HwhD,2BACA,MAAMxhD,EAAQkD,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,wBAC9E,OAAa,MAATvgD,GAA+B,IAAdiC,KAAKpB,KACf4Q,GAEJzR,EAEPwhD,yBAAqBxhD,GACrBoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,uBAAkC,MAATvgD,EAAiB,KAAOkJ,GAAOtB,UAAU5H,EAAO,yBAEzIyhD,mBACA,MAAMzhD,EAAQkD,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,gBAC9E,OAAa,MAATvgD,GAA+B,IAAdiC,KAAKpB,KACf4Q,GAEJzR,EAEPyhD,iBAAazhD,GACboD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,eAA0B,MAATvgD,EAAiB,KAAOkJ,GAAOtB,UAAU5H,EAAO,iBAEjI8W,WAAS,OAAO5T,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,QAChFzpC,SAAK9W,GAASoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,OAAQjpC,GAAQtX,IAC9FA,YAAU,OAAOkD,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,SACjFvgD,UAAMA,GACNoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,QAASr3C,GAAOtB,UAAU5H,EAAO,UAEjG0/B,cAAY,OAAOx8B,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,WACnF7gB,YAAQ1/B,GAASoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,UAAWr3C,GAAOtB,UAAU5H,IAC7G6iC,gBAAc,OAAO3/B,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,QAAU,KAC/F1d,cAAU7iC,GACVoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,MAAiB,MAATvgD,EAAiB,KAAOkvC,GAAU9hC,KAAKpN,IAE/G0hD,iBACA,MAAM1hD,EAAQkD,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,eAAiB,KAC/F,OAAa,MAATvgD,GAAgC,IAAdiC,KAAKpB,MAA4B,IAAdoB,KAAKpB,KAGvCb,EAFI,GAIX0hD,eAAW1hD,GACXoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,aAAwB,MAATvgD,EAAiB,KAAOkgD,GAAclgD,IAErHsd,WACA,GAAsB,MAAlBrb,KAAK4gC,UACL,MAAM,IAAIzhC,MAAM,mEAEpB,OAAOgrB,GAAUnqB,KAAKwtC,YAEtBqS,mBACA,OAAO11B,GAAUnqB,KAAK8/C,oBAEtB30C,WACA,OAAsB,MAAlBnL,KAAK4gC,UACE,KAEJwd,GAAep+C,KAAK8/C,mBAAoB9/C,KAAK4gC,WAEpDmf,oBACA,OAAsB,MAAlB//C,KAAK4gC,UACE,KAGJ,GAEXof,WACI,OAAyB,MAAlBhgD,KAAK4gC,UAEZ4M,iBACA,GAAsB,MAAlBxtC,KAAK4gC,UACL,MAAM,IAAIzhC,MAAM,8EAEpB,MAAMN,EAAQmB,KAAKigD,aACnB,GAAqB,IAAjBphD,EAAMK,OACN,MAAM,IAAIC,MAAM,4DAEpB,OAAQN,EAAM,IACV,KAAK,EACD,OAAOkgD,GAAiB/+C,KAAMA,KAAK4gC,WACvC,KAAK,EACD,OAAO8e,GAAkB1/C,KAAMA,KAAK4gC,WACxC,KAAK,EACD,OAAO0e,GAAkBt/C,KAAMA,KAAK4gC,WAE5C,MAAM,IAAIzhC,MAAM,oBAEhB2gD,yBACA,MAAMjhD,EAAQmB,KAAKigD,aACnB,GAAqB,IAAjBphD,EAAMK,OACN,MAAM,IAAIC,MAAM,4DAEpB,OAAQN,EAAM,IACV,KAAK,EACD,OAAOkgD,GAAiB/+C,MAC5B,KAAK,EACD,OAAO0/C,GAAkB1/C,MAC7B,KAAK,EACD,OAAOs/C,GAAkBt/C,MAEjC,MAAM,IAAIb,MAAM,oBAGpB8gD,aAEI,MAAMC,EAA+B,MAAjBlgD,KAAKg/C,SACnBmB,EAA+B,MAArBngD,KAAKw/C,cAAqD,MAA7Bx/C,KAAKu/C,qBAC5Ca,EAAoC,MAAnBpgD,KAAKy/C,WAI5B,GAAyB,MAArBz/C,KAAKw/C,cAAqD,MAA7Bx/C,KAAKu/C,sBAC9Bv/C,KAAKw/C,aAAex/C,KAAKu/C,qBACzB,MAAM,IAAIpgD,MAAM,0CAMxB,IAAmB,IAAda,KAAKpB,MAA4B,IAAdoB,KAAKpB,OAAeuhD,EACxC,MAAM,IAAIhhD,MAAM,qEAEpB,GAAkB,IAAda,KAAKpB,MAAcwhD,EACnB,MAAM,IAAIjhD,MAAM,6CAEpB,MAAMN,EAAQ,GA0Bd,OAxBiB,MAAbmB,KAAKpB,KACLC,EAAM8D,KAAK3C,KAAKpB,MAGZuhD,EACAthD,EAAM8D,KAAK,GAENu9C,GACLrhD,EAAM8D,KAAK,GACNy9C,GACDvhD,EAAM8D,KAAK,IAGVy9C,GACLvhD,EAAM8D,KAAK,GACX9D,EAAM8D,KAAK,KAGX9D,EAAM8D,KAAK,GACX9D,EAAM8D,KAAK,GACX9D,EAAM8D,KAAK,IAGnB9D,EAAMmgC,OACCngC,EAEXwhD,WAAa,OAAsB,IAAdrgD,KAAKpB,KAC1B0hD,WAAa,OAAsB,IAAdtgD,KAAKpB,KAC1B2hD,WAAa,OAAsB,IAAdvgD,KAAKpB,KAC1BkK,QACI,OAAO62C,GAAYx0C,KAAKnL,MAE5B6H,SAWI,OAVIpH,GAAuBT,KAAMs+C,GAAoB,KAAK1Q,MACtDntC,GAAuBT,KAAMs+C,GAAoB,KAAK1Q,IAAOntC,GAAuBT,KAAMs+C,GAAoB,KAAK1Q,IAAI9kC,QAAQjB,UAE/HpH,GAAuBT,KAAMs+C,GAAoB,KAAKmB,aACtDh/C,GAAuBT,KAAMs+C,GAAoB,KAAKmB,WAAaxhD,OAAO4J,OAAOpH,GAAuBT,KAAMs+C,GAAoB,KAAKmB,WAAWrhD,KAAKoC,IACnJvC,OAAO4J,OAAOrH,EAAIu9C,aACX9/C,OAAO4J,OAAOrH,QAG7BvC,OAAO4J,OAAOpH,GAAuBT,KAAMs+C,GAAoB,MACxDt+C,KAEXoB,WACI,OAAOnD,OAAOmD,SAASX,GAAuBT,KAAMs+C,GAAoB,MAE5Er4C,YAAYouB,GACR,GAAoB,iBAAR,EAAkB,CAC1B,MAAMb,EAAU5e,GAASyf,GACzB,GAAIb,EAAQ,IAAM,IACd,OAAOmsB,GAAYx0C,KA9bnC,SAAsB0J,GAClB,MAAMspB,EAAShK,GAAUtf,GACzB,IAAK9H,MAAMN,QAAQ0xB,IAA8B,IAAlBA,EAAOj/B,QAAkC,IAAlBi/B,EAAOj/B,OACzD,OAAO+H,GAAOlD,mBAAmB,6CAA8C,OAAQ8Q,GAE3F,MAAMwf,EAAK,CACPz1B,KAAM,EACN21B,MAAOoqB,GAAaxgB,EAAO,GAAI,SAC/B6gB,SAAUJ,GAAWzgB,EAAO,GAAI,YAChC8gB,SAAUL,GAAWzgB,EAAO,GAAI,YAChC/yB,GAAIozC,GAAcrgB,EAAO,IACzBpgC,MAAO6gD,GAAWzgB,EAAO,GAAI,SAC7BtpB,KAAM4pC,GAAWtgB,EAAO,GAAI,OAC5BV,QAASjuB,IAGb,GAAsB,IAAlB2uB,EAAOj/B,OACP,OAAOm1B,EAEX,MAAM51B,EAAImgD,GAAWzgB,EAAO,GAAI,KAC1BnO,EAAI4uB,GAAWzgB,EAAO,GAAI,KAC1B5c,EAAIq9B,GAAWzgB,EAAO,GAAI,KAChC,GAAInO,IAAMxgB,IAAQ+R,IAAM/R,GAEpB6kB,EAAGoJ,QAAUh/B,MAEZ,CAED,IAAIg/B,GAAWh/B,EAAIsuC,IAASH,GACxBnP,EAAUjuB,KACViuB,EAAUjuB,IAEd6kB,EAAGoJ,QAAUA,EAETA,IAAYjuB,KAAS/Q,EAAIouC,IAASpuC,EAAIquC,KACtC7lC,GAAOlD,mBAAmB,yBAA0B,IAAKo6B,EAAO,IAEpE9J,EAAGuM,UAAYqM,GAAU9hC,KAAK,CAC1B6kB,EAAG5Z,GAAa+nB,EAAO,GAAI,IAC3B5c,EAAGnL,GAAa+nB,EAAO,GAAI,IAC3B1/B,EAAAA,IAEJ41B,EAAGhZ,KAAO8O,GAAUtV,GAExB,OAAOwf,EAkZ6BmsB,CAAahtB,IAEzC,OAAQA,EAAQ,IACZ,KAAK,EAAG,OAAOmsB,GAAYx0C,KAnS3C,SAAuB0J,GACnB,MAAMspB,EAAShK,GAAUltB,GAAO3B,SAASuP,GAAMhM,MAAM,MAChDkE,MAAMN,QAAQ0xB,IAA8B,IAAlBA,EAAOj/B,QAAkC,KAAlBi/B,EAAOj/B,SACzD+H,GAAOlD,mBAAmB,8CAA+C,OAAQsR,GAAQR,IAE7F,MAAMwf,EAAK,CACPz1B,KAAM,EACN6+B,QAASmhB,GAAWzgB,EAAO,GAAI,WAC/B5J,MAAOoqB,GAAaxgB,EAAO,GAAI,SAC/B6gB,SAAUJ,GAAWzgB,EAAO,GAAI,YAChC8gB,SAAUL,GAAWzgB,EAAO,GAAI,YAChC/yB,GAAIozC,GAAcrgB,EAAO,IACzBpgC,MAAO6gD,GAAWzgB,EAAO,GAAI,SAC7BtpB,KAAM4pC,GAAWtgB,EAAO,GAAI,QAC5BshB,WAAYf,GAAiBvgB,EAAO,GAAI,eAG5C,OAAsB,IAAlBA,EAAOj/B,SAGXm1B,EAAGhZ,KAAO8O,GAAUtV,GACpBuqC,GAAmB/qB,EAAI8J,EAAOt1B,MAAM,KAHzBwrB,EAiRiCosB,CAAcjtB,IAC9C,KAAK,EAAG,OAAOmsB,GAAYx0C,KAnV3C,SAAuB0J,GACnB,MAAMspB,EAAShK,GAAUltB,GAAO3B,SAASuP,GAAMhM,MAAM,MAChDkE,MAAMN,QAAQ0xB,IAA8B,IAAlBA,EAAOj/B,QAAkC,KAAlBi/B,EAAOj/B,SACzD+H,GAAOlD,mBAAmB,8CAA+C,OAAQsR,GAAQR,IAE7F,MAAM0qC,EAAuBX,GAAWzgB,EAAO,GAAI,wBAC7CqhB,EAAeZ,GAAWzgB,EAAO,GAAI,gBACrC9J,EAAK,CACPz1B,KAAM,EACN6+B,QAASmhB,GAAWzgB,EAAO,GAAI,WAC/B5J,MAAOoqB,GAAaxgB,EAAO,GAAI,SAC/BohB,qBAAsBA,EACtBC,aAAcA,EACdR,SAAU,KACVC,SAAUL,GAAWzgB,EAAO,GAAI,YAChC/yB,GAAIozC,GAAcrgB,EAAO,IACzBpgC,MAAO6gD,GAAWzgB,EAAO,GAAI,SAC7BtpB,KAAM4pC,GAAWtgB,EAAO,GAAI,QAC5BshB,WAAYf,GAAiBvgB,EAAO,GAAI,eAG5C,OAAsB,IAAlBA,EAAOj/B,SAGXm1B,EAAGhZ,KAAO8O,GAAUtV,GACpBuqC,GAAmB/qB,EAAI8J,EAAOt1B,MAAM,KAHzBwrB,EA6TiCqsB,CAAcltB,IAElD,MAAM,IAAIr0B,MAAM,gCAEpB,MAAMuH,EAAS,IAAIi5C,GAqCnB,GApCe,MAAXtrB,EAAGz1B,OACH8H,EAAO9H,KAAOy1B,EAAGz1B,MAER,MAATy1B,EAAGjpB,KACH1E,EAAO0E,GAAKipB,EAAGjpB,IAEH,MAAZipB,EAAGE,QACH7tB,EAAO6tB,MAAQF,EAAGE,OAEH,MAAfF,EAAG4qB,WACHv4C,EAAOu4C,SAAW5qB,EAAG4qB,UAEN,MAAf5qB,EAAG2qB,WACHt4C,EAAOs4C,SAAW3qB,EAAG2qB,UAEM,MAA3B3qB,EAAGkrB,uBACH74C,EAAO64C,qBAAuBlrB,EAAGkrB,sBAEd,MAAnBlrB,EAAGmrB,eACH94C,EAAO84C,aAAenrB,EAAGmrB,cAEd,MAAXnrB,EAAGxf,OACHnO,EAAOmO,KAAOwf,EAAGxf,MAEL,MAAZwf,EAAGt2B,QACH2I,EAAO3I,MAAQs2B,EAAGt2B,OAEJ,MAAds2B,EAAGoJ,UACH/2B,EAAO+2B,QAAUpJ,EAAGoJ,SAEJ,MAAhBpJ,EAAGuM,YACHl6B,EAAOk6B,UAAYqM,GAAU9hC,KAAKkpB,EAAGuM,YAEpB,MAAjBvM,EAAGorB,aACH/4C,EAAO+4C,WAAaprB,EAAGorB,YAEZ,MAAXprB,EAAGhZ,KAAc,CACjB,IAAI3U,EAAOs5C,WAMP,MAAM,IAAI7gD,MAAM,4CALhB,GAAIuH,EAAO2U,OAASgZ,EAAGhZ,KACnB,MAAM,IAAIlc,MAAM,iBAO5B,GAAe,MAAXk1B,EAAGlpB,KAAc,CACjB,IAAIzE,EAAOs5C,WAMP,MAAM,IAAI7gD,MAAM,2CALhB,GAAIuH,EAAOyE,KAAK/E,iBAAmBiuB,EAAGlpB,MAAQ,IAAI/E,cAC9C,MAAM,IAAIjH,MAAM,iBAO5B,OAAOuH,GAGf43C,GAAqB,IAAI78C,QC/kBzB,IAWIk/C,GAAqBC,GAXrB7gD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IASxF,SAASyX,GAAS3Z,GACd,OAAa,MAATA,EACO,KAEJA,EAEX,SAAS8iD,GAAO9iD,GACZ,OAAa,MAATA,EACO,KAEJA,EAAM+L,WAGV,MAAMg3C,GACTlgD,YAAYo+C,EAAUQ,EAAcD,GAChCngD,EAAiBY,KAAM,CACnBg/C,SAAUtnC,GAASsnC,GACnBQ,aAAc9nC,GAAS8nC,GACvBD,qBAAsB7nC,GAAS6nC,KAGvC9R,SACI,MAAMuR,SAAEA,EAAQQ,aAAEA,EAAYD,qBAAEA,GAAyBv/C,KACzD,MAAO,CACH0tC,MAAO,UACPsR,SAAU6B,GAAO7B,GACjBQ,aAAcqB,GAAOrB,GACrBD,qBAAsBsB,GAAOtB,KA8ClC,MAAMwB,GACTngD,YAAYmyB,EAAOuX,GACfqW,GAAoBngD,IAAIR,UAAM,GACd,MAAZsqC,IACAA,EAAW0W,IAEfjhD,GAAuBC,KAAM2gD,GAAqB1iD,OAAO4J,OAAOkrB,EAAMkuB,aAAa7iD,KAAKi2B,IACpF,GAAoB,iBAAhB,GAA4BA,EAAGiW,WAAaA,EAC5C,MAAM,IAAInrC,MAAM,qBAEpB,OAAOk1B,MACN,KAELj1B,EAAiBY,KAAM,CACnBsqC,SAAAA,EACAjvB,KAAM3D,GAASqb,EAAM1X,MACrB29B,OAAQjmB,EAAMimB,OACdkI,UAAWnuB,EAAMmuB,UACjBC,WAAYpuB,EAAMouB,WAClB5sB,MAAOxB,EAAMwB,MACb6sB,WAAYruB,EAAMquB,WAClBnC,SAAUlsB,EAAMksB,SAChBoC,QAAStuB,EAAMsuB,QACfC,MAAOvuB,EAAMuuB,MACbC,UAAWxuB,EAAMwuB,UACjBC,cAAe9pC,GAASqb,EAAMyuB,iBAGlCP,mBAAiB,OAAOxgD,GAAuBT,KAAM2gD,GAAqB,KAI9ElT,SACI,MAAM+T,cAAEA,EAAaJ,WAAEA,EAAUG,UAAEA,EAAStC,SAAEA,EAAQoC,QAAEA,EAAOhmC,KAAEA,EAAIimC,MAAEA,EAAK/sB,MAAEA,EAAKykB,OAAEA,EAAMmI,WAAEA,EAAUD,UAAEA,EAASD,aAAEA,GAAiBjhD,KACrI,MAAO,CACH0tC,MAAO,QACP8T,cAAeX,GAAOW,GACtBJ,WAAYP,GAAOO,GACnBG,UAAAA,EACAtC,SAAU4B,GAAO5B,GACjBoC,QAASR,GAAOQ,GAChBhmC,KAAAA,EAAMimC,MAAAA,EAAO/sB,MAAAA,EAAOykB,OAAAA,EAAQmI,WAAAA,EAAYD,UAAAA,EACxCD,aAAAA,GAGR,EAAEN,GAAsB,IAAIl/C,QAAWkK,OAAO25B,aAC1C,IAAI5mC,EAAQ,EACZ,MAAO,CACH6mC,KAAM,IACE7mC,EAAQsB,KAAKd,OACN,CACHnB,MAAOiC,KAAKihD,aAAaviD,KAAU8mC,MAAM,GAG1C,CAAEznC,WAAO2B,EAAW8lC,MAAM,IAIzCtmC,aAAW,OAAOc,KAAKihD,aAAa/hD,OACpCuiD,WACA,OAAsB,MAAlBzhD,KAAKkhD,UACE,KAEJ,IAAIzmC,KAAsB,IAAjBza,KAAKkhD,WAEzBrjD,qBAAqBa,GACjB,MAAM21B,EAAKr0B,KAAKihD,aAAaviD,GAC7B,GAAU,MAAN21B,EACA,MAAM,IAAIl1B,MAAM,cAEpB,MAAoB,iBAAR,QACMa,KAAKsqC,SAASoX,eAAertB,GAGpCA,EAGfstB,UAAY,QAAS3hD,KAAKqb,KAC1BklC,WAAa,QAASvgD,KAAKwhD,cAC3BI,gBACI,IAAK5hD,KAAK2hD,UACN,MAAM,IAAIxiD,MAAM,IAEpB,MA+OG,CAAE0iD,OAAQ,aAAcxmC,MADA0X,EA9OM/yB,MA+OMqb,KAAM29B,OAAQjmB,EAAMimB,QADnE,IAAmCjmB,GA3O5B,MAAM+uB,GACTlhD,YAAYmG,EAAKujC,GACG,MAAZA,IACAA,EAAW0W,IAEfhhD,KAAKsqC,SAAWA,EAChB,MAAMnH,EAASllC,OAAO4J,OAAOd,EAAIo8B,OAAOt6B,SACxCzJ,EAAiBY,KAAM,CACnB+hD,gBAAiBh7C,EAAIg7C,gBACrBC,UAAWj7C,EAAIi7C,UACfC,YAAal7C,EAAIk7C,YACjBC,QAASn7C,EAAIm7C,QACb3vB,QAASxrB,EAAIwrB,QACb1d,KAAM9N,EAAI8N,KACVsuB,OAAAA,EACAzkC,MAAOqI,EAAIrI,MACXyjD,iBAAkBp7C,EAAIo7C,mBAM9B1U,SACI,MAAMlb,QAAEA,EAAOyvB,UAAEA,EAASC,YAAEA,EAAWptC,KAAEA,EAAInW,MAAEA,EAAKwjD,QAAEA,EAAO/e,OAAEA,EAAM4e,gBAAEA,EAAeI,iBAAEA,GAAqBniD,KAC7G,MAAO,CACH0tC,MAAO,MACPnb,QAAAA,EAASyvB,UAAAA,EAAWC,YAAAA,EAAaptC,KAAAA,EAAMnW,MAAAA,EACvCwjD,QAAAA,EAAS/e,OAAAA,EAAQ4e,gBAAAA,EAAiBI,iBAAAA,GAG1CtkD,iBACI,aAAcmC,KAAKsqC,SAAS8X,SAASpiD,KAAKgiD,WAE9CnkD,uBACI,aAAcmC,KAAKsqC,SAASoX,eAAe1hD,KAAK+hD,iBAEpDlkD,8BACI,aAAcmC,KAAKsqC,SAAS+X,sBAAsBriD,KAAK+hD,iBAE3DO,eACI,MA6MG,CAAET,OAAQ,WAAY96C,IAAK,CAC1Bg7C,iBAFoBh7C,EA5MM/G,MA8ML+hD,gBACrBC,UAAWj7C,EAAIi7C,UACfC,YAAal7C,EAAIk7C,YACjB1vB,QAASxrB,EAAIwrB,QACb1d,KAAM9N,EAAI8N,KACVsuB,OAAQllC,OAAO4J,OAAOd,EAAIo8B,OAAOt6B,SACjCnK,MAAOqI,EAAIrI,QARvB,IAAgCqI,GAzMzB,MAAMw7C,GACT3hD,YAAYyzB,EAAIiW,GACZsW,GAAyBpgD,IAAIR,UAAM,GACnB,MAAZsqC,IACAA,EAAW0W,IAEfjhD,GAAuBC,KAAM4gD,GAA0B3iD,OAAO4J,OAAOwsB,EAAGmuB,KAAKpkD,KAAK2I,IAC9E,GAAIujC,IAAavjC,EAAIujC,SAEjB,MAAM,IAAInrC,MAAM,qBAEpB,OAAO4H,MACN,KACL3H,EAAiBY,KAAM,CACnBsqC,SAAAA,EACAl/B,GAAIipB,EAAGjpB,GACPD,KAAMkpB,EAAGlpB,KACTs3C,gBAAiBpuB,EAAGouB,gBACpBpnC,KAAMgZ,EAAGhZ,KACT3c,MAAO21B,EAAG31B,MACVsjD,UAAW3tB,EAAG2tB,UACdC,YAAa5tB,EAAG4tB,YAChBS,UAAWruB,EAAGquB,UACdrB,QAAShtB,EAAGgtB,QACZsB,kBAAmBtuB,EAAGsuB,kBACtB3D,SAAW3qB,EAAGuuB,mBAAqBvuB,EAAG2qB,SACtC6D,UAAWxuB,EAAGwuB,UACdhc,OAAQxS,EAAGwS,OACXic,KAAMzuB,EAAGyuB,OAGbN,WAAS,OAAO/hD,GAAuBT,KAAM4gD,GAA0B,KAI3EnT,SACI,MAAMriC,GAAEA,EAAED,KAAEA,EAAIs3C,gBAAEA,EAAepnC,KAAEA,EAAI3c,MAAEA,EAAKsjD,UAAEA,EAASC,YAAEA,EAAWS,UAAEA,EAASF,KAAEA,EAAIK,UAAEA,EAAShc,OAAEA,EAAMic,KAAEA,GAAS9iD,KACrH,MAAO,CACH0tC,MAAO,qBACPsU,UAAAA,EAAWC,YAAAA,EAAaY,UAAAA,EAAWJ,gBAAAA,EACnCE,kBAAmB9B,GAAO7gD,KAAK2iD,mBAC/Bx3C,KAAAA,EACA6zC,SAAU6B,GAAO7gD,KAAKg/C,UACtBqC,QAASR,GAAO7gD,KAAKqhD,SACrBhmC,KAAAA,EAAM3c,MAAAA,EAAO8jD,KAAAA,EAAME,UAAAA,EAAWI,KAAAA,EAAMjc,OAAAA,EAAQz7B,GAAAA,GAGhDlM,aAAW,OAAOc,KAAKwiD,KAAKtjD,OAChC,EAAE0hD,GAA2B,IAAIn/C,QAAWkK,OAAO25B,aAC/C,IAAI5mC,EAAQ,EACZ,MAAO,CACH6mC,KAAM,IACE7mC,EAAQsB,KAAKd,OACN,CAAEnB,MAAOiC,KAAKwiD,KAAK9jD,KAAU8mC,MAAM,GAEvC,CAAEznC,WAAO2B,EAAW8lC,MAAM,IAIzCud,UACA,OAAO/iD,KAAKqhD,QAAUrhD,KAAKg/C,SAE/BnhD,iBACI,MAAMk1B,QAAc/yB,KAAKsqC,SAAS8X,SAASpiD,KAAKgiD,WAChD,GAAa,MAATjvB,EACA,MAAM,IAAI5zB,MAAM,QAEpB,OAAO4zB,EAEXl1B,uBACI,MAAMw2B,QAAWr0B,KAAKsqC,SAASoX,eAAe1hD,KAAKqb,MACnD,GAAU,MAANgZ,EACA,MAAM,IAAIl1B,MAAM,QAEpB,OAAOk1B,EAEXx2B,sBACI,aAAcmC,KAAKsqC,SAAS0Y,iBAAoBhjD,KAAKiiD,YAAc,EAEvEK,eACI,OAAOW,GAA+BjjD,MAE1CkjD,eAAejxC,GACX,OAAIA,IAAUA,EAAM0vC,UACT16C,GAAOnD,WAAW,gDAAiD,wBAAyB,CAC/FY,UAAW,0BAGZy+C,GAAiCnjD,KAAMiS,IAI/C,MAAMmxC,GACTxiD,YAAYyzB,EAAIiW,GACI,MAAZA,IACAA,EAAW0W,IAEfhhD,KAAKsqC,SAAWA,EAChBtqC,KAAKiiD,YAAiC,MAAlB5tB,EAAG4tB,YAAuB5tB,EAAG4tB,YAAc,KAC/DjiD,KAAKgiD,UAA6B,MAAhB3tB,EAAG2tB,UAAqB3tB,EAAG2tB,UAAY,KACzDhiD,KAAKqb,KAAOgZ,EAAGhZ,KACfrb,KAAKtB,MAAQ21B,EAAG31B,MAChBsB,KAAKpB,KAAOy1B,EAAGz1B,KACfoB,KAAKmL,KAAOkpB,EAAGlpB,KACfnL,KAAKoL,GAAKipB,EAAGjpB,IAAM,KACnBpL,KAAKi/C,SAAW5qB,EAAG4qB,SACnBj/C,KAAKu0B,MAAQF,EAAGE,MAChBv0B,KAAK6U,KAAOwf,EAAGxf,KACf7U,KAAKjC,MAAQs2B,EAAGt2B,MAChBiC,KAAKg/C,SAAW3qB,EAAG2qB,SACnBh/C,KAAKu/C,qBAAmD,MAA3BlrB,EAAGkrB,qBAAgClrB,EAAGkrB,qBAAuB,KAC1Fv/C,KAAKw/C,aAAmC,MAAnBnrB,EAAGmrB,aAAwBnrB,EAAGmrB,aAAe,KAClEx/C,KAAKy9B,QAAUpJ,EAAGoJ,QAClBz9B,KAAK4gC,UAAYvM,EAAGuM,UACpB5gC,KAAKy/C,WAA+B,MAAjBprB,EAAGorB,WAAsBprB,EAAGorB,WAAa,KAKhEhS,SACI,MAAMwU,YAAEA,EAAWD,UAAEA,EAAStjD,MAAEA,EAAK2c,KAAEA,EAAIzc,KAAEA,EAAIwM,GAAEA,EAAED,KAAEA,EAAIopB,MAAEA,EAAK1f,KAAEA,EAAI+rB,UAAEA,EAAS6e,WAAEA,GAAez/C,KACpG,MAAO,CACH0tC,MAAO,qBACP+R,WAAAA,EAAYwC,YAAAA,EAAaD,UAAAA,EACzBvkB,QAASojB,GAAO7gD,KAAKy9B,SACrB5oB,KAAAA,EAAM1J,KAAAA,EACN8zC,SAAU4B,GAAO7gD,KAAKi/C,UACtBD,SAAU6B,GAAO7gD,KAAKg/C,UACtB3jC,KAAAA,EACAmkC,aAAcqB,GAAO7gD,KAAKw/C,cAC1BD,qBAAsBsB,GAAO7gD,KAAKu/C,sBAClChrB,MAAAA,EAAOqM,UAAAA,EAAWx1B,GAAAA,EAAI1M,MAAAA,EAAOE,KAAAA,EAC7Bb,MAAO8iD,GAAO7gD,KAAKjC,QAG3BF,iBACI,IAAIokD,EAAcjiD,KAAKiiD,YACvB,GAAmB,MAAfA,EAAqB,CACrB,MAAM5tB,QAAWr0B,KAAK0hD,iBAClBrtB,IACA4tB,EAAc5tB,EAAG4tB,aAGzB,GAAmB,MAAfA,EACA,OAAO,KAEX,MAAMlvB,EAAQ/yB,KAAKsqC,SAAS8X,SAASH,GACrC,GAAa,MAATlvB,EACA,MAAM,IAAI5zB,MAAM,QAEpB,OAAO4zB,EAEXl1B,uBACI,OAAOmC,KAAKsqC,SAASoX,eAAe1hD,KAAKqb,MAE7Cxd,WAAWwlD,GACP,OAAOrjD,KAAKsqC,SAASgZ,mBAAmBtjD,KAAKqb,KAAMgoC,GAEvD1B,UACI,OAA0B,MAAlB3hD,KAAKgiD,UAEjB3B,WACI,OAAsB,IAAdrgD,KAAKpB,KAEjB0hD,WACI,OAAsB,IAAdtgD,KAAKpB,KAEjB2hD,WACI,OAAsB,IAAdvgD,KAAKpB,KAEjB0jD,eACI,OAAKtiD,KAAK2hD,UAKHsB,GAA+BjjD,MAJ3BiH,GAAOnD,WAAW,wCAAyC,wBAAyB,CACvFY,UAAW,kBAKvBw+C,eAAejxC,GACX,OAAKjS,KAAK2hD,UAKN1vC,IAAUA,EAAM0vC,UACT16C,GAAOnD,WAAW,gDAAiD,wBAAyB,CAC/FY,UAAW,kBAGZy+C,GAAiCnjD,KAAMiS,GATnChL,GAAOnD,WAAW,wCAAyC,wBAAyB,CACvFY,UAAW,mBAc3B,SAASy+C,GAAiC9uB,EAAIpiB,GAC1C,MAAO,CAAE4vC,OAAQ,sBAAuBxtB,GAAAA,EAAIpiB,MAAAA,GAEhD,SAASgxC,GAA+B5uB,GACpC,MAAO,CAAEwtB,OAAQ,mBAAoBxtB,GAAAA,GAazC,SAASkvB,KACL,MAAM,IAAIpkD,MAAM,oCAkEP,MAAA6hD,GAAgB,IAhE7B,MACQ1W,eAAa,OAAOtqC,KACxBnC,mBAAqB,OAAO0lD,KAC5B1lD,mBAAqB,OAAO0lD,KAC5B1lD,kBAAkBw2B,GAAM,OAAOkvB,KAC/B1lD,WAAWw2B,GAAM,OAAOkvB,KACxB1lD,kBAAkBiF,GAAQ,OAAOygD,KAEjC1lD,uBAAyB,OAAO0lD,KAEhC1lD,mBAAmB00B,EAASixB,GACxB,OAAOD,KAEX1lD,4BAA4B00B,EAASixB,GACjC,OAAOD,KAEX1lD,cAAc00B,EAASixB,GACnB,OAAOD,KAEX1lD,mBAAmB00B,EAASkxB,EAAUD,GAClC,OAAOD,KAGX1lD,2BAA2B6lD,GAAY,OAAOH,KAE9C1lD,eAAe8lD,GACX,OAAOJ,KAEX1lD,+BAA+B8lD,GAC3B,OAAOJ,KAEX1lD,qBAAqBwd,GACjB,OAAOkoC,KAEX1lD,4BAA4Bwd,GACxB,OAAOkoC,KAGX1lD,cAAckD,GACV,OAAOwiD,KAGX1lD,oBAAoB00B,GAChB,OAAOgxB,KAEX1lD,yBAAyBwd,EAAMgoC,EAAUld,GACrC,OAAOod,KAEX1lD,mBAAmB2lD,GACf,OAAOD,KAGX1lD,SAAS8Q,EAAO7N,GAAY,OAAOyiD,KACnC1lD,WAAW8Q,EAAO7N,GAAY,OAAOyiD,KACrC1lD,WAAW8Q,KAAU/I,GAAQ,OAAO29C,KACpC1lD,oBAAoB8Q,GAAS,OAAO40C,KACpC1lD,gBAAgB8Q,GAAS,OAAO40C,KAChC1lD,UAAU8Q,EAAO7N,GAAY,OAAOyiD,KACpC1lD,yBAAyB8Q,GAAS,OAAO40C,KACzC1lD,kBAAkB8Q,EAAO7N,GAAY,OAAOyiD,KAC5C1lD,qBAAqB8Q,EAAO7N,GAAY,OAAOyiD,OC7enD,IAWIK,GAAmBC,GAXnB9jD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAuBxF,MAAMw3B,GAAiBhyB,OAAO,sEAM9B,SAAS7B,GAAU7F,GACf,GAAuB,iBAAX,EACR,MAAM,IAAIoB,MAAM,kBAEpB,OAAOpB,EAEJ,MAAM+lD,GACTljD,cACIgjD,GAAkBpjD,IAAIR,UAAM,GAC5B6jD,GAAqBrjD,IAAIR,UAAM,GAC/B,MAAMuyB,EAAUvyB,KAAKuyB,QAAQtY,KAAKja,MAC5B+jD,EAAY/jD,KAAK+jD,UAAU9pC,KAAKja,MAChCwjD,EAAWxjD,KAAKwjD,SAASvpC,KAAKja,MAC9B6U,EAAO7U,KAAK6U,KAAKoF,KAAKja,MACtBqb,EAAOrb,KAAKqb,KAAKpB,KAAKja,MACtBg5C,EAASh5C,KAAKg5C,OAAO/+B,KAAKja,MAC1BgkD,EAAUhkD,KAAKgkD,QAAQ/pC,KAAKja,MAC5BmjC,EAASnjC,KAAKikD,QAAQ5oC,GAC5Btb,GAAuBC,KAAM4jD,GAAmB,CAC5CrxB,QAAAA,EACAwxB,UAAAA,EACAP,SAAAA,EACA3uC,KAAAA,EACAwG,KAAAA,EACA29B,OAAAA,EACAgL,QAAAA,EACA7gB,OAAAA,EACApiC,OAAQf,KAAK6C,OAAO,CAChBqhD,UAAWlkD,KAAKmkD,UAAUX,OAAU9jD,GACpC0kD,QAASpkD,KAAKmkD,UAAUX,OAAU9jD,GAClCsiD,UAAWhiD,KAAKmkD,UAAU9oC,OAAM3b,GAChC6yB,QAASvyB,KAAKmkD,UAAU5xB,OAAS7yB,GACjCyjC,OAAQnjC,KAAKmkD,UAAUhhB,OAAQzjC,KAEnC2kD,mBAAoBrkD,KAAK6C,OAAO,CAC5BsI,KAAMnL,KAAKmkD,UAAU5xB,GACrB3zB,KAAMoB,KAAKmkD,UAAUnL,GACrB5tC,GAAIpL,KAAKmkD,UAAU5xB,GACnBgC,MAAOv0B,KAAKmkD,UAAUnL,GACtBiG,SAAUj/C,KAAKmkD,UAAUH,GACzBhF,SAAUh/C,KAAKmkD,UAAUH,GACzBxE,aAAcx/C,KAAKmkD,UAAUH,GAC7BzE,qBAAsBv/C,KAAKmkD,UAAUH,GACrCnvC,KAAM7U,KAAKmkD,UAAUtvC,GACrB9W,MAAOiC,KAAKmkD,UAAUH,KAE1BM,oBAAqBtkD,KAAK6C,OAAO,CAC7BwY,KAAMA,EACN3c,MAAOs6C,EACPp6C,KAAMoB,KAAKmkD,UAAUnL,EAAQ,GAE7BgJ,UAAWhiD,KAAKmkD,UAAU9oC,GAC1B4mC,YAAajiD,KAAKmkD,UAAUnL,GAE5Bvb,QAASz9B,KAAKmkD,UAAUnL,GACxB7tC,KAAMonB,EACNnnB,GAAIpL,KAAKuyB,QACT0sB,SAAU8E,EACV/E,SAAUh/C,KAAKmkD,UAAUJ,GACzBvE,aAAcx/C,KAAKmkD,UAAUJ,GAC7BxE,qBAAsBv/C,KAAKmkD,UAAUJ,GACrChmD,MAAOgmD,EACPlvC,KAAMA,EACN0f,MAAOykB,EACPhpB,EAAG3U,EACHkG,EAAGlG,EACH5c,EAAGu6C,EACHyG,WAAYz/C,KAAKmkD,UAAUnkD,KAAKy/C,aACjC,CACC/gD,MAAO,CAAC,uBAEb,KACHqB,GAAuBC,KAAM6jD,GAAsB7jD,KAAK6C,OAAO,CAC3Dm2C,OAAQA,EACR39B,KAAMrb,KAAKmkD,UAAU9oC,EAAM,MAC3B6lC,UAAWlI,EACXmI,WAAY9lC,EACZkZ,MAAOv0B,KAAKmkD,UAAUvgD,GAAW,sBACjCw9C,WAAY2C,EACZ9E,SAAU8E,EACV1C,QAAS0C,EACTzC,MAAOthD,KAAKmkD,UAAU5xB,EAAS,8CAC/BgvB,UAAW39C,GACX49C,cAAexhD,KAAKmkD,UAAUJ,KAC9B,KAGRxxB,QAAQx0B,GACJ,OAAOm1B,GAAWn1B,GAGtBgtC,YAAYhtC,GAIR,OAH0B,KAAtB4X,GAAW5X,IAA6C,+BAA5B6X,GAAU7X,EAAO,EAAG,KAChDkJ,GAAOlD,mBAAmB,uBAAwB,QAAShG,GAExDiC,KAAKuyB,QAAQ3c,GAAU7X,EAAO,KAGzC0kD,gBAAgB1kD,GACZ,OAAOq2B,GAAiB,CACpBjpB,KAAMnL,KAAKuyB,QAAQx0B,EAAMoN,MACzBopB,MAAOttB,GAAOzB,UAAUzH,EAAMw2B,MAAO,iBAI7CivB,SAASzlD,GACL,GAAa,MAATA,EACA,MAAO,SAEX,OAAQA,GACJ,IAAK,WACD,MAAO,MACX,IAAK,SACL,IAAK,UACD,OAAOA,EAEf,MAAuB,iBAAX,GAAwByW,GAAYzW,IAAU4X,GAAW5X,GAAS,GACnEwX,GAASxX,GAEbkJ,GAAOlD,mBAAmB,mBAAoB,QAAShG,GAGlEg1B,MAAMh1B,EAAOusC,GACT,MAAM/7B,EAAS9N,GAAuBT,KAAM6jD,GAAsB,KAAKtjD,KAAKP,KAAMjC,GAElF,OADAwQ,EAAO0yC,aAAeljD,EAAMkjD,aAAa7iD,KAAKW,GAAMiB,KAAKqb,KAAKtc,KACvD,IAAIgiD,GAAMxyC,EAAQ+7B,GAE7Bia,sBAAsBxmD,EAAOusC,GACzB,MAAM,IAAInrC,MAGdklD,mBAAmBtmD,EAAOusC,GACtB,OAAO7pC,GAAuBT,KAAM4jD,GAAmB,KAAKS,mBAAmBtmD,GAEnFumD,oBAAoBvmD,EAAOusC,GAGL,OAFlBvsC,EAAQE,OAAOoN,OAAO,GAAItN,IAEhB8W,MAA+B,MAAf9W,EAAM0Q,QAC5B1Q,EAAM8W,KAAO9W,EAAM0Q,OAED,MAAlB1Q,EAAMkhD,UAAoBlhD,EAAM8Q,MAChC9Q,EAAMkhD,SAAWlhD,EAAM8Q,KAE3B9Q,EAAQ0C,GAAuBT,KAAM4jD,GAAmB,KAAKU,oBAAoBvmD,GACjF,MAAM6vC,EAAMX,GAAU9hC,KAAK,CAAE6kB,EAAGjyB,EAAMiyB,EAAGzO,EAAGxjB,EAAMwjB,EAAG9iB,EAAGV,EAAMU,IAK9D,OAJAV,EAAM6iC,UAAYgN,EACG,MAAjB7vC,EAAM0/B,UACN1/B,EAAM0/B,QAAUmQ,EAAIT,eAEjB,IAAIiW,GAAoBrlD,EAAOusC,GAG1CvjC,IAAIhJ,EAAOusC,GACP,MAAMvjC,EAAM/G,KAAK6C,OAAO,CACpB0vB,QAASvyB,KAAKuyB,QACdyvB,UAAWhiD,KAAKqb,KAChB4mC,YAAajiD,KAAKg5C,OAClBnkC,KAAM7U,KAAK6U,KACXnW,MAAOsB,KAAKg5C,OACZkJ,QAASliD,KAAKwkD,QACdrhB,OAAQnjC,KAAKmjC,OACb4e,gBAAiB/hD,KAAKqb,KACtB8mC,iBAAkBniD,KAAKg5C,QACxB,CACCt6C,MAAO,CAAC,aAXAsB,CAYTjC,GACH,OAAO,IAAI+jD,GAAI/6C,EAAKujC,GAExBma,QAAQ1mD,EAAOusC,GACX,MAAMma,EAAUzkD,KAAK6C,OAAO,CACxBm/C,UAAWhiD,KAAKqb,KAChB4mC,YAAajiD,KAAKg5C,OAClByJ,gBAAiBziD,KAAKmkD,UAAUnkD,KAAKuyB,SACrCowB,kBAAmB3iD,KAAK+jD,UACxB54C,KAAMnL,KAAKuyB,QACX8uB,QAASrhD,KAAK+jD,UACdvB,KAAMxiD,KAAKikD,SAASxlD,GAAOuB,KAAK+G,IAAItI,EAAG6rC,KACvCoY,UAAW1iD,KAAK6U,KAChBiuC,KAAM9iD,KAAKmkD,UAAUnkD,KAAK6U,MAC1BgyB,OAAQ7mC,KAAKmkD,UAAUnkD,KAAKg5C,QAC5B5tC,GAAIpL,KAAKuyB,QACTysB,SAAUh/C,KAAKmkD,UAAUnkD,KAAK+jD,WAC9B1oC,KAAMrb,KAAKqb,KACX3c,MAAOsB,KAAKg5C,OACZp6C,KAAMoB,KAAKmkD,UAAUnkD,KAAKg5C,OAAQ,IACnC,CACC39B,KAAM,CAAC,mBACP2jC,SAAU,CAAC,qBACXtgD,MAAO,CAAC,qBAnBIsB,CAoBbjC,GAEH,GAAoB,MAAhB0mD,EAAQ3B,KACR,GAAI2B,EAAQ3B,KAAK5jD,QAAU,EAAG,CAE1B,MAAMnB,EAAQ6I,SAAS69C,EAAQ3B,MAC/B,GAAc,IAAV/kD,GAAyB,IAAVA,EAWf,OAAOkJ,GAAOnD,WAAW,0BAA2B,WAAY,CAC5D/F,MAAO0mD,EAAQ3B,OAVnB,GAAsB,MAAlB2B,EAAQ5d,QAAkB4d,EAAQ5d,SAAW9oC,EAC7C,OAAOkJ,GAAOnD,WAAW,kCAAmC,WAAY,CACpE/F,MAAO,CAAE+kD,KAAM2B,EAAQ3B,KAAMjc,OAAQ4d,EAAQ5d,UAGrD4d,EAAQ5d,OAAS9oC,SACV0mD,EAAQ3B,UAQlB,IAAKtuC,GAAYiwC,EAAQ3B,KAAM,IAEhC,OAAO77C,GAAOnD,WAAW,4BAA6B,WAAY,CAC9D/F,MAAO0mD,EAAQ3B,OAK3B,OAAO,IAAIP,GAAmBkC,EAASna,GAG3CnH,OAAOplC,GACH,OAAO0C,GAAuBT,KAAM4jD,GAAmB,KAAKzgB,OAAOplC,GAEvEgD,OAAOhD,GACH,OAAO0C,GAAuBT,KAAM4jD,GAAmB,KAAK7iD,OAAOhD,GAEvE2mD,UAAU3mD,GAEN,OADA+I,QAAQC,IAAI,KAAMhJ,GACX,KAGX+kC,YAAY/kC,GACR,MAAM,IAAIoB,MAKdsgD,WAAW1hD,GACP,OAAOkgD,GAAclgD,GAGzB4mD,aAAax4C,EAAQy4C,GACjB,OAAS7mD,GACAA,EAGEoO,EAAO5L,KAAKP,KAAMjC,GAFd6mD,EAMnBT,UAAUh4C,EAAQ04C,GACd,OAAS9mD,GACQ,MAATA,EACO8mD,EAEJ14C,EAAO5L,KAAKP,KAAMjC,GAIjCkmD,QAAQ93C,GACJ,OAASwsC,IACL,IAAK5rC,MAAMN,QAAQksC,GACf,MAAM,IAAIx5C,MAAM,gBAEpB,OAAOw5C,EAAMv6C,KAAKa,GAAMkN,EAAO5L,KAAKP,KAAMf,MAIlD8kD,UAAUhmD,GACN,OAAOkJ,GAAOtB,UAAU5H,EAAO,SAEnCimD,QAAQjmD,GACJ,MAAM2I,EAAS1G,KAAK+jD,UAAUhmD,GAI9B,OAHI2I,EAAS,GAAKA,EAAS+wB,KACvBxwB,GAAOlD,mBAAmB,kBAAmB,QAAShG,GAEnD2I,EAGX89C,QAAQzmD,GACJ,OAAQA,GACJ,KAAK,EACL,IAAK,OACD,OAAO,EACX,KAAK,EACL,IAAK,QACD,OAAO,EAEf,OAAOkJ,GAAOlD,mBAAmB,oBAAoBJ,KAAKC,UAAU7F,KAAU,QAASA,GAK3F+mD,WAAWC,GAIP,OAHoB,MAAhBA,IACAA,GAAe,GAEnB,SAAkBhnD,GACd,GAAIyW,GAAYzW,EAAOgnD,GACnB,OAAOhnD,EAAMqI,cAEjB,MAAM,IAAIjH,MAAM,kBAGxB0V,KAAK9W,GAID,OAHyB,MAArB4X,GAAW5X,IACXkJ,GAAOlD,mBAAmB,GAAI,QAAShG,GAEpCA,EAGXsd,KAAKtd,GAID,OAH0B,KAAtB4X,GAAW5X,IACXkJ,GAAOlD,mBAAmB,GAAI,QAAShG,GAEpC0C,GAAuBT,KAAM4jD,GAAmB,KAAK/uC,KAAK9W,GAGrEi7C,OAAOj7C,GACH,OAAOkJ,GAAOzB,UAAUzH,GAK5B8E,OAAOsJ,EAAQ64C,GACX,OAASjnD,IACL,MAAM2I,EAAS,GACf,IAAK,MAAMlH,KAAO2M,EAAQ,CACtB,IAAI84C,EAASzlD,EACb,GAAIwlD,GAAYxlD,KAAOwlD,KAAcC,KAAUlnD,GAC3C,IAAK,MAAMmnD,KAAUF,EAASxlD,GAC1B,GAAI0lD,KAAUnnD,EAAO,CACjBknD,EAASC,EACT,MAIZ,IACI,MAAMC,EAAKh5C,EAAO3M,GAAKe,KAAKP,KAAMjC,EAAMknD,SAC7BvlD,IAAPylD,IACAz+C,EAAOlH,GAAO2lD,GAGtB,MAAO7jD,GACH,MAAMmC,EAAWnC,aAAiBnC,MAASmC,EAAMmC,QAAU,eAC3DwD,GAAOnD,WAAW,2BAA2BtE,MAAQiE,KAAY,WAAY,CAAE1F,MAAAA,KAGvF,OAAO2I,GAIf0+C,YAAYrnD,GACR,OAAO6R,GAAM3I,GAAOtB,UAAU5H,GAAQ,KAG9C6lD,GAAoB,IAAIniD,QAAWoiD,GAAuB,IAAIpiD,QC3YvD,MAAM4jD,GACTzkD,YAAYkC,GACR1D,EAAiBY,KAAM,CAAE8C,KAAAA,IAE7BgG,QACI,OAAO,IAAIu8C,GAAcrlD,KAAK8C,MAElCinC,SAASyC,GACL,OAAOxsC,MAGR,MAAMslD,WAAsBD,GAC/BzkD,YAAY2kD,EAAiB,EAAGC,GAC5Bn3C,MAAM,+BAAgCk3C,GAAkB,KACxD,MAAME,EAAQ,CAAEF,eAAAA,GAChB,SAAS/kD,EAAIsC,EAAM4iD,GACf,IAAI3nD,GAASynD,GAAS,IAAI1iD,GACb,MAAT/E,IACAA,EAAQ2nD,GAEW,iBAAX,GACRz+C,GAAOlD,mBAAmB,qBAAqBjB,IAAQ,QAAS0iD,GAEpEC,EAAM3iD,GAAQ/E,EAElByC,EAAI,SAAU,MACdA,EAAI,WAAY,MAChBA,EAAI,aAAc,GAClBA,EAAI,gBAAiB,IACrBA,EAAI,yBAA0B,MAC9BA,EAAI,sBAAuB,MAC3BpB,EAAiBY,KAAMylD,GAE3B38C,QACI,OAAO,IAAIw8C,GAActlD,KAAKulD,eAAgBvlD,OAK/C,MAAM2lD,WAAkBN,GAC3BzkD,YAAY2xB,EAASqzB,GACjBv3C,MAAM,0BACNjP,EAAiBY,KAAM,CACnBuyB,QAAUA,GA5CH,6CA6CPqzB,cAAkC,MAAjBA,EAAyB,EAAIA,IAGtD98C,QACI,OAAO,IAAI68C,GAAU3lD,KAAKuyB,QAASvyB,KAAK4lD,eAE5C7b,SAASyC,GAEL,OADAA,EAAQ1B,UAAUvY,QAAQvyB,KAAKuyB,SACxBvyB,MAGR,MAAM6lD,WAA6BR,GACtCzkD,YAAYklD,GACRz3C,MAAM,uCACNjP,EAAiBY,KAAM,CACnB8lD,YAAa7+C,GAAOtB,UAAUmgD,KAGtCjoD,qBAAqBysC,GACjB,OAAOtqC,KAAK8lD,YAEhBh9C,QACI,OAAO,IAAI+8C,GAAqB7lD,KAAK8lD,cCrE7C,IAWIC,GAXAhmD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAyDxF,MAAM+lD,GAAW,IAAI3uC,IACf4uC,GAAmB,IAAInC,GACtB,MAAMoC,GACTtlD,YAAYkC,EAAMqjD,EAAUrb,GACxBib,GAAevlD,IAAIR,UAAM,GACzB,MAAMy9B,EAAUx2B,GAAOtB,UAAUwgD,GAChB,MAAbrb,IACAA,EAAYmb,IAEhB,MAAM/a,EAAU,IAAI7zB,IACpBtX,GAAuBC,KAAM+lD,GAAgB,CAAEjjD,KAAAA,EAAM26B,QAAAA,EAASqN,UAAAA,EAAWI,QAAAA,GAAW,KAExFuC,SACI,MAAO,CAAE3qC,KAAM9C,KAAK8C,KAAM26B,QAASz9B,KAAKy9B,SAExC36B,WAAS,OAAO7B,EAASR,GAAuBT,KAAM+lD,GAAgB,KAAM,QAC5EjjD,SAAK/E,GAASoD,EAASV,GAAuBT,KAAM+lD,GAAgB,KAAM,OAAQhoD,GAClF0/B,cAAY,OAAOx8B,EAASR,GAAuBT,KAAM+lD,GAAgB,KAAM,WAC/EtoB,YAAQ1/B,GAASoD,EAASV,GAAuBT,KAAM+lD,GAAgB,KAAM,UAAW9+C,GAAOtB,UAAU5H,EAAO,YAChH+sC,gBAAc,OAAO7pC,EAASR,GAAuBT,KAAM+lD,GAAgB,KAAM,aACjFjb,cAAU/sC,GAASoD,EAASV,GAAuBT,KAAM+lD,GAAgB,KAAM,YAAahoD,GAC5FmtC,cACA,OAAOn+B,MAAM5B,KAAK1K,GAAuBT,KAAM+lD,GAAgB,KAAK7a,QAAQ5rC,UAEhF8mD,aAAanb,GACT,GAAIjrC,KAAKoB,WACL,MAAM,IAAIjC,MAAM,UAEpB,GAAIsB,GAAuBT,KAAM+lD,GAAgB,KAAK7a,QAAQxqC,IAAIuqC,EAAOnoC,MACrE,MAAM,IAAI3D,MAAM,mCAAmC8rC,EAAOnoC,SAG9D,OADArC,GAAuBT,KAAM+lD,GAAgB,KAAK7a,QAAQ1qC,IAAIyqC,EAAOnoC,KAAMmoC,EAAOlB,SAAS/pC,OACpFA,KAEX0sC,UAAU5pC,GACN,OAAQrC,GAAuBT,KAAM+lD,GAAgB,KAAK7a,QAAQxqC,IAAIoC,IAAU,KAGpFujD,WAAWC,GACP,OAAQtmD,KAAKkrC,QAAQnqC,QAAQyN,GAAOA,EAAE1L,KAAKhE,MAAM,KAAK,KAAOwnD,IAEjEx9C,QACI,MAAMA,EAAQ,IAAIo9C,GAAQlmD,KAAK8C,KAAM9C,KAAKy9B,QAASz9B,KAAK8qC,WAIxD,OAHA9qC,KAAKkrC,QAAQtjC,SAASqjC,IAClBniC,EAAMs9C,aAAanb,EAAOniC,YAEvBA,EAEXjB,SAEI,OADA5J,OAAO4J,OAAOpH,GAAuBT,KAAM+lD,GAAgB,MACpD/lD,KAEXoB,WACI,OAAOnD,OAAOmD,SAASX,GAAuBT,KAAM+lD,GAAgB,MAExEQ,oBAAoBlyB,GAChB,MAAMmxB,EAAQxlD,KAAK0sC,UAAU,wBAA2B,IAAI4Y,GAC5D,IAAIz2C,EAAM22C,EAAMgB,OAIhB,GAHa,MAATnyB,EAAGjpB,KACHyD,GAAO22C,EAAMiB,UAEbpyB,EAAGxf,KACH,IAAK,IAAI5V,EAAI,EAAGA,EAAIo1B,EAAGxf,KAAK3V,OAAQD,GAAK,EACD,OAAhCo1B,EAAGxf,KAAKhO,UAAU5H,EAAGA,EAAI,GACzB4P,GAAO22C,EAAMkB,WAGb73C,GAAO22C,EAAMmB,cAIzB,GAAItyB,EAAGorB,WAAY,CACf,MAAMA,EAAaz/C,KAAK8qC,UAAU2U,WAAWprB,EAAGorB,YAChD,IAAK,MAAM1T,KAAQ0T,EACf5wC,GAAO22C,EAAMoB,oBAAsBpB,EAAMqB,uBAAyBpH,EAAW1T,GAAMgS,YAAY7+C,OAGvG,OAAO2P,EAEX5I,YAAYumC,GAER,GAAe,MAAXA,EACA,OAAO0Z,GAAQ/6C,KAAK,aAMxB,GAHyB,iBAAb,IACRqhC,EAAU/mC,OAAO+mC,IAEI,iBAArB,GAAsD,iBAArB,EAA+B,CAChE,MAAMsa,EAAcd,GAAStlD,IAAI8rC,GACjC,GAAIsa,EACA,OAAOA,IAEX,GAAyB,iBAAb,EACR,OAAO,IAAIZ,GAAQ,UAAW1Z,GAElCvlC,GAAOlD,mBAAmB,kBAAmB,UAAWyoC,GAG5D,GAA+B,mBAAnBA,EAAa,MAAkB,CAIvC,OAHcA,EAAQ1jC,QAM1B,GAAyB,iBAAb,EAAuB,CACD,iBAAlB0jC,EAAY,MAA+C,iBAArBA,EAAe,SAC7DvlC,GAAOlD,mBAAmB,yCAA0C,UAAWyoC,GAEnF,MAAMua,EAAS,IAAIb,GAAS1Z,EAAY,KAAIA,EAAe,SAO3D,OANIA,EAAQwa,YAAoC,MAAtBxa,EAAQya,aAC9BF,EAAOX,aAAa,IAAIT,GAAUnZ,EAAQwa,WAAYxa,EAAQya,aAK3DF,EAEX,OAAO9/C,GAAOlD,mBAAmB,kBAAmB,UAAWyoC,GAEnEvmC,gBAAgBihD,EAAeJ,GACI,iBAAnB,IACRI,EAAgBzhD,OAAOyhD,IAE3B,MAAMC,EAAWnB,GAAStlD,IAAIwmD,GAC1BC,GACAlgD,GAAOlD,mBAAmB,2BAA2BJ,KAAKC,UAAUujD,EAASrkD,QAAS,gBAAiBokD,GAE3GlB,GAASxlD,IAAI0mD,EAAeJ,IAGpCf,GAAiB,IAAItkD,QCtMrB,IAWI2lD,GAAmCC,GAAkCC,GAAgCC,GAAkCC,GAAqCC,GAA8BC,GAA6BC,GAAyBC,GAAiCC,GAAoCC,GAAmCC,GAAkCC,GAAgCC,GAAgCC,GAAqCC,GAX/epoD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAKxF,SAASsG,GAAK0G,GACV,OAAOtJ,KAAK6I,MAAM7I,KAAKC,UAAUqJ,IAc9B,MAAMm7C,GACTxnD,YAAY0pC,GACR8c,GAAkC7jD,IAAIvD,MACtCqnD,GAAiC7mD,IAAIR,UAAM,GAC3CsnD,GAA+B9mD,IAAIR,UAAM,GACzCunD,GAAiC/mD,IAAIR,UAAM,GAG3CwnD,GAAoChnD,IAAIR,UAAM,GAC9CD,GAAuBC,KAAMqnD,GAAkC/c,EAAU,KACzEvqC,GAAuBC,KAAMsnD,GAAgC,KAAM,KACnEvnD,GAAuBC,KAAMunD,GAAkC,IAAM,KACrExnD,GAAuBC,KAAMwnD,IAAsC,EAAG,KAEtEa,sBAAoB,OAAO5nD,GAAuBT,KAAMunD,GAAkC,KAC1Fc,oBAAgBtqD,GAASgC,GAAuBC,KAAMunD,GAAkCxpD,EAAO,KACnG8X,QACI,GAAIpV,GAAuBT,KAAMsnD,GAAgC,KAC7D,MAAM,IAAInoD,MAAM,8BAEpBsB,GAAuBT,KAAMonD,GAAmC,IAAKK,IAA8BlnD,KAAKP,MACxGD,GAAuBC,KAAMsnD,GAAgC7mD,GAAuBT,KAAMqnD,GAAkC,KAAKiB,YAAY7nD,GAAuBT,KAAMonD,GAAmC,IAAKK,IAA8BxtC,KAAKja,MAAOS,GAAuBT,KAAMunD,GAAkC,MAAO,KAEtUgB,OACI,IAAK9nD,GAAuBT,KAAMsnD,GAAgC,KAC9D,MAAM,IAAInoD,MAAM,0BAEpBsB,GAAuBT,KAAMqnD,GAAkC,KAAKmB,cAAc/nD,GAAuBT,KAAMsnD,GAAgC,MAC/IvnD,GAAuBC,KAAMsnD,GAAgC,KAAM,KAEvEmB,MAAMC,GACF1oD,KAAKuoD,OACDG,GACA3oD,GAAuBC,KAAMwnD,IAAsC,EAAG,KAG9EmB,SACI3oD,KAAK6V,SAGbwxC,GAAmC,IAAI5lD,QAAW6lD,GAAiC,IAAI7lD,QAAW8lD,GAAmC,IAAI9lD,QAAW+lD,GAAsC,IAAI/lD,QAAW2lD,GAAoC,IAAI9gD,QAAWmhD,GAA+B5pD,eAAe4pD,IACtS,MAAMxF,QAAoBxhD,GAAuBT,KAAMqnD,GAAkC,KAAKrE,iBAC9F,IAAgF,IAA5EviD,GAAuBT,KAAMwnD,GAAqC,KAAtE,CAKA,GAAIvF,IAAgBxhD,GAAuBT,KAAMwnD,GAAqC,KAAM,CACxF,IAAK,IAAIr1C,EAAI1R,GAAuBT,KAAMwnD,GAAqC,KAAO,EAAGr1C,GAAK8vC,EAAa9vC,IACvG1R,GAAuBT,KAAMqnD,GAAkC,KAAKuB,KAAK,QAASz2C,GAEtFpS,GAAuBC,KAAMwnD,GAAqCvF,EAAa,KAEnFliD,GAAuBC,KAAMsnD,GAAgC7mD,GAAuBT,KAAMqnD,GAAkC,KAAKiB,YAAY7nD,GAAuBT,KAAMonD,GAAmC,IAAKK,GAA8BxtC,KAAKja,MAAOS,GAAuBT,KAAMunD,GAAkC,MAAO,UAV9TxnD,GAAuBC,KAAMwnD,GAAqCvF,EAAa,MAYhF,MAAM4G,GACTjoD,YAAY0pC,GACRod,GAA4BlnD,IAAIR,UAAM,GACtC2nD,GAAwBnnD,IAAIR,UAAM,GAClCD,GAAuBC,KAAM0nD,GAA6Bpd,EAAU,KACpEvqC,GAAuBC,KAAM2nD,IAA0B1F,IACnDjiD,KAAK8oD,MAAM7G,EAAaxhD,GAAuBT,KAAM0nD,GAA6B,QACnF,KAEP7pD,YAAYokD,EAAa3X,GACrB,MAAM,IAAInrC,MAAM,kCAEpB0W,QACIpV,GAAuBT,KAAM2nD,GAAyB,KAAKpnD,KAAKP,MAAO,GACvES,GAAuBT,KAAM0nD,GAA6B,KAAKqB,GAAG,QAAStoD,GAAuBT,KAAM2nD,GAAyB,MAErIY,OACI9nD,GAAuBT,KAAM0nD,GAA6B,KAAK1mD,IAAI,QAASP,GAAuBT,KAAM2nD,GAAyB,MAEtIc,MAAMC,GAAmB1oD,KAAKuoD,OAC9BI,SAAW3oD,KAAK6V,SAEpB6xC,GAA8B,IAAIjmD,QAAWkmD,GAA0B,IAAIlmD,QACpE,MAAMunD,WAAgCH,GACzCjoD,YAAY0pC,EAAUvpC,GAClBsN,MAAMi8B,GACNsd,GAAgCpnD,IAAIR,UAAM,GAC1CD,GAAuBC,KAAM4nD,GAAiCrhD,GAAKxF,GAAS,KAEhFlD,YAAYokD,EAAa3X,GACrB,MAAM,IAAInrC,MAAM,UAIxByoD,GAAkC,IAAInmD,QAC/B,MAAMwnD,WAAqCJ,GAC9CjoD,YAAY0pC,EAAUjvB,GAClBhN,MAAMi8B,GACNud,GAAmCrnD,IAAIR,UAAM,GAC7CD,GAAuBC,KAAM6nD,GAAoCxsC,EAAM,KAE3Exd,YAAYokD,EAAa3X,GACrB,MAAMjW,QAAWiW,EAAS+X,sBAAsB5hD,GAAuBT,KAAM6nD,GAAoC,MAC7GxzB,GACAiW,EAASse,KAAKnoD,GAAuBT,KAAM6nD,GAAoC,KAAMxzB,IAIjGwzB,GAAqC,IAAIpmD,QAClC,MAAMynD,GACTtoD,YAAY0pC,EAAUvpC,GAClB+mD,GAAkCvkD,IAAIvD,MACtC+nD,GAAiCvnD,IAAIR,UAAM,GAC3CgoD,GAA+BxnD,IAAIR,UAAM,GACzCioD,GAA+BznD,IAAIR,UAAM,GAGzCkoD,GAAoC1nD,IAAIR,UAAM,GAC9CD,GAAuBC,KAAM+nD,GAAkCzd,EAAU,KACzEvqC,GAAuBC,KAAMgoD,GAAgCzhD,GAAKxF,GAAS,KAC3EhB,GAAuBC,KAAMioD,GAAgCxnD,GAAuBT,KAAM8nD,GAAmC,IAAKK,IAA8BluC,KAAKja,MAAO,KAC5KD,GAAuBC,KAAMkoD,IAAsC,EAAG,KAE1EryC,SACoF,IAA5EpV,GAAuBT,KAAMkoD,GAAqC,MAClEznD,GAAuBT,KAAM+nD,GAAkC,KAAK/E,iBAAiBt1C,MAAMu0C,IACvFliD,GAAuBC,KAAMkoD,GAAqCjG,EAAa,QAGvFxhD,GAAuBT,KAAM+nD,GAAkC,KAAKgB,GAAG,QAAStoD,GAAuBT,KAAMioD,GAAgC,MAEjJM,OACI9nD,GAAuBT,KAAM+nD,GAAkC,KAAK/mD,IAAI,QAASP,GAAuBT,KAAMioD,GAAgC,MAElJQ,MAAMC,GACF1oD,KAAKuoD,OACDG,GACA3oD,GAAuBC,KAAMkoD,IAAsC,EAAG,KAG9ES,SACI3oD,KAAK6V,SAGbkyC,GAAmC,IAAItmD,QAAWumD,GAAiC,IAAIvmD,QAAWwmD,GAAiC,IAAIxmD,QAAWymD,GAAsC,IAAIzmD,QAAWqmD,GAAoC,IAAIxhD,QAAW6hD,GAA+BtqD,eAA4CokD,GAEjU,IAAgF,IAA5ExhD,GAAuBT,KAAMkoD,GAAqC,KAClE,OAEJ,MAAMnnD,EAASwF,GAAK9F,GAAuBT,KAAMgoD,GAAgC,MACjFjnD,EAAOmjD,UAAYzjD,GAAuBT,KAAMkoD,GAAqC,KAAO,EAC5FnnD,EAAOqjD,QAAUnC,EACjB,MAAMO,QAAa/hD,GAAuBT,KAAM+nD,GAAkC,KAAKoB,QAAQpoD,GAG/F,GAAoB,IAAhByhD,EAAKtjD,OAAT,CAMAa,GAAuBC,KAAMkoD,GAAqCjG,EAAa,KAC/E,IAAK,MAAMl7C,KAAOy7C,EACd/hD,GAAuBT,KAAM+nD,GAAkC,KAAKa,KAAKnoD,GAAuBT,KAAMgoD,GAAgC,KAAMjhD,QAPxItG,GAAuBT,KAAMkoD,GAAqC,KAAOjG,EAAc,IACvFliD,GAAuBC,KAAMkoD,GAAqCjG,EAAc,GAAI,MC9KhG,IAWImH,GAA6BC,GAAwBC,GAA2BC,GAA+BC,GAAkCC,GAA8BC,GAAgCC,GAA6BC,GAA0BC,GAAmCC,GAA2BC,GAAwBC,GAA4BC,GAA0BC,GAXlZnqD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAgBxF,MAAM2sC,GAAOnnC,OAAO,GAEpB,SAAS0kD,GAAOlU,EAAQl4C,GACpB,OAAOk4C,EAAS,IAAMtyC,KAAKC,UAAU7F,GAAO,CAACM,EAAGI,KAC5C,GAAmB,iBAAP,EACR,MAAO,UAAUA,EAAEqL,aAEvB,GAAmB,iBAAP,EACR,OAAOrL,EAAE2H,cAGb,GAAmB,iBAAf,IAA4B2G,MAAMN,QAAQhO,GAAI,CAC9C,MAAMT,EAAOC,OAAOD,KAAKS,GAEzB,OADAT,EAAKghC,OACEhhC,EAAKO,QAAO,CAACC,EAAOgB,KACvBhB,EAAMgB,GAAOf,EAAEe,GACRhB,IACR,IAEP,OAAOC,KAGR,MAAM2rD,GACTxpD,YAAYkC,GAAQ1D,EAAiBY,KAAM,CAAE8C,KAAAA,IAC7C+S,SACA0yC,QACAE,MAAMC,IACNC,WAKJ,SAAS0B,GAAU3iD,GAGf,OAFAA,EAAQqF,MAAM5B,KAAK,IAAKxD,IAAID,GAAQpI,WAC9B0/B,OACCt3B,EAMX7J,eAAeysD,GAAgBC,EAAQjgB,GACnC,GAAc,MAAVigB,EACA,MAAM,IAAIprD,MAAM,iBAMpB,GAHI4N,MAAMN,QAAQ89C,KACdA,EAAS,CAAEpnB,OAAQonB,IAEC,iBAAZ,EACR,OAAQA,GACJ,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,UACD,MAAO,CAAE3rD,KAAM2rD,EAAQC,IAAKD,GAIxC,GAAI/1C,GAAY+1C,EAAQ,IAAK,CACzB,MAAMlvC,EAAOkvC,EAAOnkD,cACpB,MAAO,CAAExH,KAAM,cAAe4rD,IAAKL,GAAO,KAAM,CAAE9uC,KAAAA,IAASA,KAAAA,GAE/D,GAAIkvC,EAAO1I,OAAQ,CACf,MAAMlzC,EAAQ47C,EAEd,MAAO,CAAE3rD,KAAM,SAAU4rD,IAAKL,GAAO,SAAUx7C,GAAQ5N,QArCjDhD,EAqC8D4Q,EApCjEhL,KAAK6I,MAAM7I,KAAKC,UAAU7F,MADrC,IAAcA,EAuCV,GAAKwsD,EAAOh4B,SAAWg4B,EAAOpnB,OAAS,CACnC,MAAMx0B,EAAQ47C,EACRxpD,EAAS,CACXoiC,QAAUx0B,EAAMw0B,QAAU,IAAI/kC,KAAKW,GACtB,MAALA,EACO,KAEPgO,MAAMN,QAAQ1N,GACPsrD,GAAUtrD,EAAEX,KAAKW,GAAMA,EAAEqH,iBAE7BrH,EAAEqH,iBAGjB,GAAIuI,EAAM4jB,QAAS,CACf,MAAMk4B,EAAY,GACZz9C,EAAW,GACX09C,EAAc3e,IACZv3B,GAAYu3B,GACZ0e,EAAU9nD,KAAKopC,GAGf/+B,EAASrK,KAAK,WACV8nD,EAAU9nD,WAAWmyB,GAAeiX,EAAMzB,KADhC,KAKlBv9B,MAAMN,QAAQkC,EAAM4jB,SACpB5jB,EAAM4jB,QAAQ3qB,QAAQ8iD,GAGtBA,EAAW/7C,EAAM4jB,SAEjBvlB,EAAS9N,cACHhB,QAAQC,IAAI6O,GAEtBjM,EAAOwxB,QAAU83B,GAAUI,EAAUrsD,KAAK8T,GAAMA,EAAE9L,iBAEtD,MAAO,CAAErF,OAAAA,EAAQypD,IAAKL,GAAO,QAASppD,GAASnC,KAAM,SAEzD,OAAOqI,GAAOlD,mBAAmB,wBAAyB,QAASwmD,GAEvE,SAAS1iB,KAAY,OAAO,IAAKptB,MAAQotB,UAKlC,MAAM8iB,GAGT/pD,YAAYgqD,GAYR,GAXAxB,GAA4B7lD,IAAIvD,MAChCqpD,GAAuB7oD,IAAIR,UAAM,GACjCspD,GAA0B9oD,IAAIR,UAAM,GAEpCupD,GAA8B/oD,IAAIR,UAAM,GACxCwpD,GAAiChpD,IAAIR,UAAM,GAC3CypD,GAA6BjpD,IAAIR,UAAM,GACvC0pD,GAA+BlpD,IAAIR,UAAM,GACzC2pD,GAA4BnpD,IAAIR,UAAM,GACtC4pD,GAAyBppD,IAAIR,UAAM,GACnC6pD,GAAkCrpD,IAAIR,UAAM,GAC3B,QAAb4qD,EACA7qD,GAAuBC,KAAMypD,IAA8B,EAAM,KACjE1pD,GAAuBC,KAAMwpD,GAAkC,KAAM,UAEpE,GAAIoB,EAAU,CACf,MAAMpe,EAAU0Z,GAAQ/6C,KAAKy/C,GAC7B7qD,GAAuBC,KAAMypD,IAA8B,EAAO,KAClE1pD,GAAuBC,KAAMwpD,GAAkCtrD,QAAQI,QAAQkuC,GAAU,KACzFryB,YAAW,KAAQna,KAAK4oD,KAAK,UAAWpc,EAAS,QAAU,QAG3DzsC,GAAuBC,KAAMypD,IAA8B,EAAO,KAClE1pD,GAAuBC,KAAMwpD,GAAkC,KAAM,KAEzEzpD,GAAuBC,KAAM0pD,GAAgC,IAAIryC,IAAO,KACxEtX,GAAuBC,KAAMqpD,GAAwB,IAAIhyC,IAAO,KAChEtX,GAAuBC,KAAMspD,GAA2B,IAAIjyC,IAAO,KACnEtX,GAAuBC,KAAMupD,GAA+B,KAAM,KAClExpD,GAAuBC,KAAM2pD,GAA6B,EAAG,KAC7D5pD,GAAuBC,KAAM4pD,GAA0B,IAAIvyC,IAAO,KAClEtX,GAAuBC,KAAM6pD,IAAmC,EAAO,KAEvEvf,eAAa,OAAOtqC,KACpBkrC,cACA,OAAOn+B,MAAM5B,KAAK1K,GAAuBT,KAAMspD,GAA2B,KAAKhqD,UAEnF8mD,aAAanb,GACT,GAAIxqC,GAAuBT,KAAMspD,GAA2B,KAAK5oD,IAAIuqC,EAAOnoC,MACxE,MAAM,IAAI3D,MAAM,mCAAmC8rC,EAAOnoC,SAG9D,OADArC,GAAuBT,KAAMspD,GAA2B,KAAK9oD,IAAIyqC,EAAOnoC,KAAMmoC,EAAOlB,SAAS/pC,OACvFA,KAEX0sC,UAAU5pC,GACN,OAAQrC,GAAuBT,KAAMspD,GAA2B,KAAK5oD,IAAIoC,IAAU,KAEnF+nD,oBAAgB9sD,GAASgC,GAAuBC,KAAM6pD,KAAqC9rD,EAAO,KAClG8sD,sBAAoB,OAAOpqD,GAAuBT,KAAM6pD,GAAmC,KAC/FhsD,oBAAoBw2B,EAAIgX,EAAUyf,GAC9B,GAAI9qD,KAAK6qD,iBAAmC,IAAhBC,EAAK5rD,QAAyB,MAATm1B,EAAGjpB,GAChD,OAAO,KAEX,MAAM2/C,EAAS12B,EAAGjpB,GAAGhF,cACfyO,EAAOw2B,EAASjlC,cAChB4kD,EAAgB,GACtB,IAAK,IAAI/rD,EAAI,EAAGA,EAAI6rD,EAAK5rD,OAAQD,IAAK,CAClC,MAAMonC,EAAMykB,EAAK7rD,GAEXgsD,EAAO5kB,EAAI5N,QAAQ,WAAYsyB,GAAQtyB,QAAQ,SAAU5jB,GAOzDqwB,EAAU,IAAI8B,GAAaikB,IACF,IAA3B5kB,EAAIxhC,QAAQ,YACZqgC,EAAQD,KAAO,CAAEpwB,KAAAA,EAAMk2C,OAAAA,IAE3B,IAAIG,EAAe,gBACnB,MAAMxkB,QAAaqB,GAAU7C,GAC7B,IACI,MAAMx+B,EAASggC,EAAKrB,SACpB,GAAI3+B,EAAOmO,KACP,OAAOnO,EAAOmO,KAEdnO,EAAOjD,UACPynD,EAAexkD,EAAOjD,SAG9B,MAAOnC,IAEP,GAAIolC,EAAK5B,YAAc,KAAO4B,EAAK5B,WAAa,IAC5C,OAAO79B,GAAOnD,WAAW,yCAAyConD,IAAgB,iBAAkB,CAChGlzB,OAAQ,uBACR8K,YAAazO,EAAIpyB,KAAM,CAAEokC,IAAAA,EAAK6kB,aAAAA,KAItCF,EAAcroD,KAAKuoD,GAEvB,OAAOjkD,GAAOnD,WAAW,wCAAwCknD,EAAc5sD,KAAKsmC,GAAM/gC,KAAKC,UAAU8gC,KAAI7gC,KAAK,QAAS,iBAAkB,CACzIm0B,OAAQ,mBACR8K,YAAazO,EAAIpyB,KAAM,CAAE6oD,KAAAA,EAAME,cAAAA,KAGvCG,iBAAiB92B,EAAIhZ,EAAM4mC,GACvB,OAAO5tB,EAEX+2B,iBACI,OAAOnkD,GAAOnD,WAAW,kCAAmC,wBAAyB,CACjFY,UAAW,mBAGnB7G,eAAeqoC,GACX,OAAOj/B,GAAOnD,WAAW,uBAAuBoiC,EAAIhhC,SAAU,wBAAyB,CACnFR,UAAWwhC,EAAIhhC,OACfjD,KAAMikC,IAIdroC,uBACI,OAAOoJ,GAAOzB,gBAAgB/E,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAAEkF,OAAQ,mBAAqB,aAEtKrH,kBAAkB00B,GACd,MAAyB,iBAAb,EACDA,QAEEA,EAAQW,aAEzBr1B,mBAAmB2lD,GACf,MAAMhX,QAAgBxsC,KAAK6qC,aAC3B,GAA0B,iBAAd,GAA0BtmC,OAAO4W,cAAcqoC,IAAaA,EAAW,EAAG,CAElF,IAAIvB,QAAoBjiD,KAAKgjD,iBAK7B,OAJAf,GAAeuB,EACXvB,EAAc,IACdA,EAAc,GAEXzV,EAAQ1B,UAAU0Y,SAASvB,GAEtC,OAAOzV,EAAQ1B,UAAU0Y,SAASA,GAEtC3lD,mBAEI,GAA2E,MAAvE4C,GAAuBT,KAAMwpD,GAAkC,KAAc,CAE7E,MAAM6B,EAAgBrrD,KAAKorD,iBAAiB19C,MAAM8+B,IAC9CxsC,KAAK4oD,KAAK,UAAWpc,EAAS,MACvBA,KACPlrC,IAKA,MAHIb,GAAuBT,KAAMwpD,GAAkC,OAAS6B,GACxEtrD,GAAuBC,KAAMwpD,GAAkC,KAAM,KAEnEloD,KAGV,OADAvB,GAAuBC,KAAMwpD,GAAkC6B,EAAe,WACjEA,EAEjB,MAAMC,EAAiB7qD,GAAuBT,KAAMwpD,GAAkC,MAC/E+B,EAAUC,SAAgBttD,QAAQC,IAAI,CACzCmtD,EACAtrD,KAAKorD,mBAkBT,OAhBIG,EAAS9tB,UAAY+tB,EAAO/tB,UACxBh9B,GAAuBT,KAAMypD,GAA8B,MAE3DzpD,KAAK4oD,KAAK,UAAW4C,EAAQD,GAEzB9qD,GAAuBT,KAAMwpD,GAAkC,OAAS8B,GACxEvrD,GAAuBC,KAAMwpD,GAAkCtrD,QAAQI,QAAQktD,GAAS,MAK5FvkD,GAAOnD,WAAW,oBAAoBynD,EAAS9tB,cAAc+tB,EAAO/tB,WAAY,gBAAiB,CAC7F9uB,MAAO,aAIZ48C,EAASziD,QAAQjB,SAE5BhK,mBACI,MAAMk1B,MAAEA,EAAKisB,SAAEA,SAAmBlhD,EAAkB,CAChDi1B,MAAO/yB,KAAKoiD,SAAS,UACrBpD,SAAW,WACP,IACI,MAAMA,QAAiBv+C,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAAEkF,OAAQ,gBACtI,OAAO+B,GAAOtB,UAAUq5C,EAAU,aAEtC,MAAO19C,IACP,OAAO,MANA,KASf,IAAIk+C,EAAe,KAAMD,EAAuB,KAChD,GAAIxsB,GAASA,EAAMyuB,cAAe,CAI9BjC,EAAuB95C,OAAO,cAE9B,MAAMgmD,SAA2BzrD,KAAK6qC,cAAc6B,UAAU,uCAC1D+e,IACAlM,QAA6BkM,EAAkBC,eAAe1rD,OAElEw/C,EAAgBzsB,EAAMyuB,cAAgB5U,GAAQ2S,EAElD,OAAO,IAAIuB,GAAQ9B,EAAUQ,EAAcD,GAE/C1hD,sBAAsB8tD,GAClB,MAAMnf,QAAgBxsC,KAAK6qC,aAErB3F,EAAUjnC,OAAOoN,OAAO,GAAIsgD,QAAgB7tD,EAAkB,CAChEsN,GAAKugD,EAASvgD,GAAK0pB,GAAe62B,EAASvgD,GAAIpL,WAAQN,EACvDyL,KAAOwgD,EAASxgD,KAAO2pB,GAAe62B,EAASxgD,KAAMnL,WAAQN,KAEjE,OAAO8sC,EAAQ1B,UAAUuZ,mBAAmBnf,GAEhDrnC,kBAAkB+tD,GACd,MAAM9oB,QAAoB9iC,KAAK6rD,gBAAgBD,GAC/C,OAAO3kD,GAAOtB,gBAAgBlF,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAC/HkF,OAAQ,cAAe49B,YAAAA,IACvB,aAERjlC,WAAW+tD,GACP,MAAMv3B,GAAEA,EAAEmvB,SAAEA,SAAmB1lD,EAAkB,CAC7Cu2B,GAAIr0B,KAAK6rD,gBAAgBD,GACzBpI,SAAUxjD,KAAK8rD,aAAaF,EAAIpI,YAEpC,OAAO/iD,GAAuBT,KAAMopD,GAA6B,IAAKW,IAAwBxpD,KAAKP,KAAMq0B,EAAImvB,EAAUoI,EAAIlhB,eAAiB,GAAK,GAGrJ7sC,mBAAmBkuD,EAAUC,GACzB,MAAMz5B,QAAEA,EAAOixB,SAAEA,SAAmB1lD,EAAkB,CAClDy0B,QAASuC,GAAei3B,GACxBvI,SAAUxjD,KAAK8rD,aAAaE,KAEhC,OAAO/kD,GAAOtB,gBAAgBlF,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAC/HkF,OAAQ,aAAcqtB,QAAAA,EAASixB,SAAAA,IAC/B,aAER3lD,4BAA4BkuD,EAAUC,GAClC,MAAMz5B,QAAEA,EAAOixB,SAAEA,SAAmB1lD,EAAkB,CAClDy0B,QAASuC,GAAei3B,GACxBvI,SAAUxjD,KAAK8rD,aAAaE,KAEhC,OAAO/kD,GAAOzB,gBAAgB/E,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAC/HkF,OAAQ,sBAAuBqtB,QAAAA,EAASixB,SAAAA,IACxC,aAER3lD,cAAckuD,EAAUC,GACpB,MAAMz5B,QAAEA,EAAOixB,SAAEA,SAAmB1lD,EAAkB,CAClDy0B,QAASuC,GAAei3B,GACxBvI,SAAUxjD,KAAK8rD,aAAaE,KAEhC,OAAO32C,SAAc5U,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CACtHkF,OAAQ,UAAWqtB,QAAAA,EAASixB,SAAAA,KAGpC3lD,mBAAmBkuD,EAAUE,EAAWD,GACpC,MAAMvI,EAAWx8C,GAAOtB,UAAUsmD,IAC5B15B,QAAEA,EAAOixB,SAAEA,SAAmB1lD,EAAkB,CAClDy0B,QAASuC,GAAei3B,GACxBvI,SAAUxjD,KAAK8rD,aAAaE,KAEhC,OAAO32C,SAAc5U,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CACtHkF,OAAQ,eAAgBqtB,QAAAA,EAASkxB,SAAAA,EAAUD,SAAAA,KAInD3lD,2BAA2B6lD,GACvB,MAAM,IAAIvkD,MAIdtB,eAAek1B,GACX,MAAM5mB,SAAgBnM,KAAK6qC,cAAcC,UACnCv8B,QAAe9N,GAAuBT,KAAMopD,GAA6B,IAAKY,IAA4BzpD,KAAKP,KAAM+yB,GAAO,GAClI,OAAc,MAAVxkB,EACO,KAEJpC,EAAO4mB,MAAMxkB,EAAQvO,MAEhCnC,+BAA+Bk1B,GAC3B,MAAM5mB,SAAgBnM,KAAK6qC,cAAcC,UACnCv8B,EAAS9N,GAAuBT,KAAMopD,GAA6B,IAAKY,IAA4BzpD,KAAKP,KAAM+yB,GAAO,GAC5H,OAAc,MAAVxkB,EACO,KAEJpC,EAAOo4C,sBAAsBh2C,EAAQvO,MAEhDnC,qBAAqBwd,GACjB,MAAMlP,SAAgBnM,KAAK6qC,cAAcC,UACnCv8B,QAAe9N,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAAEkF,OAAQ,iBAAkBmW,KAAAA,IACtJ,OAAOlP,EAAOm4C,oBAAoB/1C,EAAQvO,MAE9CnC,4BAA4Bwd,GACxB,MAAMlP,SAAgBnM,KAAK6qC,cAAcC,UACnC2Z,QAAgBhkD,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAAEkF,OAAQ,wBAAyBmW,KAAAA,IAC9J,GAAe,MAAXopC,EACA,OAAO,KAIX,GAAwB,MAApBA,EAAQzF,UAAiD,MAA7ByF,EAAQ7B,kBAA2B,CAC/D,MAAMvuB,QAAW5zB,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAAEkF,OAAQ,iBAAkBmW,KAAAA,IAClJopC,EAAQ7B,kBAAoBvuB,EAAG2qB,SAEnC,OAAO7yC,EAAOs4C,QAAQA,EAASzkD,MAEnCnC,iBAAiBkD,GAEb,MAAMoiC,GAAUpiC,EAAOoiC,QAAU,IAAI/kC,KAAKW,GAC7B,MAALA,EACO,KAEPgO,MAAMN,QAAQ1N,GACPsrD,GAAUtrD,EAAEX,KAAKW,GAAMA,EAAEqH,iBAE7BrH,EAAEqH,gBAEP47C,EAAa,cAAejhD,EAAUA,EAAOihD,eAAYtiD,EACzDwsD,EAAS,GAEXnrD,EAAOwxB,UACHxlB,MAAMN,QAAQ1L,EAAOwxB,SACrB25B,EAAO35B,QAAUr0B,QAAQC,IAAI4C,EAAOwxB,QAAQn0B,KAAK8T,GAAM4iB,GAAe5iB,EAAGlS,SAGzEksD,EAAO35B,QAAUuC,GAAe/zB,EAAOwxB,QAASvyB,OAIxD,MAAMmsD,EAAe3sD,IACE,MAAfuB,EAAOvB,KAGX0sD,EAAO1sD,GAAOQ,KAAK8rD,aAAa/qD,EAAOvB,MAE3C2sD,EAAY,aACZA,EAAY,WAEZ,MAAMzlD,QAAe5I,EAAkBouD,GAMvC,GAJIn/C,MAAMN,QAAQ/F,EAAO6rB,UACrB7rB,EAAO6rB,QAAQyM,OAEnBt4B,EAAOy8B,OAASA,EACZ6e,EAAW,CACX,GAAIjhD,EAAOmjD,WAAanjD,EAAOqjD,QAC3B,MAAM,IAAIjlD,MAAM,kBAEpBuH,EAAOs7C,UAAYA,EAEvB,OAAOt7C,EAGX7I,cAAcuuD,GACV,MAAM5f,QAAEA,EAAOzrC,OAAEA,SAAiBjD,EAAkB,CAChD0uC,QAASxsC,KAAK6qC,aACd9pC,OAAQf,KAAKqsD,WAAWD,KAE5B,aAAc3rD,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAAEkF,OAAQ,UAAWnE,OAAAA,KAAW3C,KAAKkhB,GAC7IktB,EAAQ1B,UAAU/jC,IAAIuY,EAAGtf,QAIxCssD,aAAa7uB,GACT,OAAOx2B,GAAOnD,WAAW,4CAA6C,wBAAyB,CAC3FY,UAAW,mBAGnB7G,kBAAkBiF,GACd,aAAaunC,GAAYkiB,SAASvsD,KAAM8C,GAE5CjF,gBAAgBiF,GACZ,MAAMiyB,QAAiB/0B,KAAKwsD,YAAY1pD,GACxC,OAAIiyB,QACaA,EAAS03B,YAEnB,KAEX5uD,kBAAkBiF,GACd,GAAsB,iBAAV,EAMP,CACD,MAAMyvB,QAAgBzvB,EAAKowB,aAC3B,OAAe,MAAXX,EACOtrB,GAAOlD,mBAAmB,kCAAmC,OAAQjB,GAEzEyvB,EAXqB,CAC5B,MAAMwC,QAAiB/0B,KAAKwsD,YAAY1pD,GACxC,GAAIiyB,EACA,aAAaA,EAAS7B,aAU9B,OAAO,KAEXr1B,oBAAoB00B,GAChB,MAAM,IAAIpzB,MAGdtB,yBAAyBwd,EAAMgoC,EAAW,EAAGld,GACzC,OAAiB,IAAbkd,EACOrjD,KAAKqiD,sBAAsBhnC,GAE/B,IAAInd,SAAQL,MAAOS,EAASouD,KAC/B,IAAIC,EAAQ,KACZ,MAAM7rD,EAAY,MAAOmhD,IACrB,IACI,MAAMwC,QAAgBzkD,KAAKqiD,sBAAsBhnC,GACjD,GAAe,MAAXopC,GACIxC,EAAcwC,EAAQxC,YAAc,GAAKoB,EAOzC,OANA/kD,EAAQmmD,GACRzkD,KAAKgB,IAAI,QAASF,QACd6rD,IACAC,aAAaD,GACbA,EAAQ,OAMxB,MAAOrrD,GACHwF,QAAQC,IAAI,MAAOzF,GAEvBtB,KAAK6sD,KAAK,QAAS/rD,IAER,MAAXqlC,IACAwmB,EAAQxyC,YAAW,KACF,MAATwyC,IAGJA,EAAQ,KACR3sD,KAAKgB,IAAI,QAASF,GAClB4rD,EAAOzlD,GAAOzD,UAAU,UAAW,UAAW,CAAEw0B,OAAQ,gBACzDmO,IAEPrlC,QAAed,KAAKgjD,qBAG5BnlD,mBAAmB2lD,GACf,MAAM,IAAIrkD,MAGdqpD,cAAcsE,GACV,MAAMH,EAAQlsD,GAAuBT,KAAM4pD,GAA0B,KAAKlpD,IAAIosD,GACzEH,IAGDA,EAAMA,OACNC,aAAaD,EAAMA,OAEvBlsD,GAAuBT,KAAM4pD,GAA0B,KAAK9qB,OAAOguB,IAEvExE,YAAYpuB,EAAOiM,EAAU,GACzB,IAAIt8B,EAAIkjD,EACR,MAAMD,GAAW/sD,GAAuBC,KAAM2pD,IAA8BoD,EAAKtsD,GAAuBT,KAAM2pD,GAA6B,KAAM9/C,EAAKkjD,IAAMA,GAAK,KAAMljD,GACjKod,EAAO,KACTxmB,GAAuBT,KAAM4pD,GAA0B,KAAK9qB,OAAOguB,GACnE5yB,KAEJ,GAAIl6B,KAAKgtD,OACLvsD,GAAuBT,KAAM4pD,GAA0B,KAAKppD,IAAIssD,EAAS,CAAEH,MAAO,KAAM1lC,KAAAA,EAAMgmC,KAAM9mB,QAEnG,CACD,MAAMwmB,EAAQxyC,WAAW8M,EAAMkf,GAC/B1lC,GAAuBT,KAAM4pD,GAA0B,KAAKppD,IAAIssD,EAAS,CAAEH,MAAAA,EAAO1lC,KAAAA,EAAMgmC,KAAMplB,OAElG,OAAOilB,EAEXI,mBAAmBjmC,GACf,IAAK,MAAMkmC,KAAO1sD,GAAuBT,KAAMqpD,GAAwB,KAAK/pD,SACxE2nB,EAAKkmC,EAAIC,YAKjBC,eAAeF,GACX,OAAQA,EAAIvuD,MACR,IAAK,QACL,IAAK,UACD,OAAO,IAAIwrD,GAAoB+C,EAAIvuD,MACvC,IAAK,QACD,OAAO,IAAIwpD,GAAuBpoD,MACtC,IAAK,QACD,OAAO,IAAIkpD,GAAuBlpD,KAAMmtD,EAAIpsD,QAChD,IAAK,cACD,OAAO,IAAIkoD,GAA6BjpD,KAAMmtD,EAAI9xC,MACtD,IAAK,SACD,OAAO,IAAI2tC,GAAwBhpD,KAAMmtD,EAAIpsD,QAErD,MAAM,IAAI5B,MAAM,sBAAsBguD,EAAIvuD,QAE9C0uD,mBAAmBC,EAAQC,GACvB,IAAK,MAAML,KAAO1sD,GAAuBT,KAAMqpD,GAAwB,KAAK/pD,SACxE,GAAI6tD,EAAIC,aAAeG,EAAQ,CACvBJ,EAAIM,SACJN,EAAIC,WAAW7E,OAEnB4E,EAAIC,WAAaI,EACbL,EAAIM,SACJD,EAAO33C,QAE6D,MAApEpV,GAAuBT,KAAMupD,GAA+B,MAC5DiE,EAAO/E,MAAMhoD,GAAuBT,KAAMupD,GAA+B,MAE7E,OAIZ1rD,SAAS8Q,EAAO7N,GACZ,MAAMqsD,QAAY1sD,GAAuBT,KAAMopD,GAA6B,IAAKc,IAA0B3pD,KAAKP,KAAM2O,GAStH,OARAw+C,EAAIO,UAAU/qD,KAAK,CAAE7B,SAAAA,EAAU+rD,MAAM,IAChCM,EAAIM,UACLN,EAAIC,WAAWv3C,QACfs3C,EAAIM,SAAU,EAC0D,MAApEhtD,GAAuBT,KAAMupD,GAA+B,MAC5D4D,EAAIC,WAAW3E,MAAMhoD,GAAuBT,KAAMupD,GAA+B,OAGlFvpD,KAEXnC,WAAW8Q,EAAO7N,GACd,MAAMqsD,QAAY1sD,GAAuBT,KAAMopD,GAA6B,IAAKc,IAA0B3pD,KAAKP,KAAM2O,GAStH,OARAw+C,EAAIO,UAAU/qD,KAAK,CAAE7B,SAAAA,EAAU+rD,MAAM,IAChCM,EAAIM,UACLN,EAAIC,WAAWv3C,QACfs3C,EAAIM,SAAU,EAC0D,MAApEhtD,GAAuBT,KAAMupD,GAA+B,MAC5D4D,EAAIC,WAAW3E,MAAMhoD,GAAuBT,KAAMupD,GAA+B,OAGlFvpD,KAEXnC,WAAW8Q,KAAU/I,GACjB,MAAMunD,QAAY1sD,GAAuBT,KAAMopD,GAA6B,IAAKa,IAA0B1pD,KAAKP,KAAM2O,EAAO/I,GAC7H,IAAKunD,EACD,OAAO,EAGX,MAAM/nD,EAAQ+nD,EAAIO,UAAUxuD,OAS5B,OARAiuD,EAAIO,UAAYP,EAAIO,UAAU3sD,QAAO,EAAGD,SAAAA,EAAU+rD,KAAAA,MAC9C,MAAMr5B,EAAU,IAAI7yB,EAAaX,KAAO6sD,EAAO,KAAO/rD,EAAW6N,GACjE,IACI7N,EAASP,KAAKP,QAAS4F,EAAM4tB,GAEjC,MAAOlyB,IACP,OAAQurD,KAEJznD,EAAQ,EAEpBvH,oBAAoB8Q,GAChB,GAAIA,EAAO,CACP,MAAMw+C,QAAY1sD,GAAuBT,KAAMopD,GAA6B,IAAKa,IAA0B1pD,KAAKP,KAAM2O,GACtH,OAAKw+C,EAGEA,EAAIO,UAAUxuD,OAFV,EAIf,IAAIyuD,EAAQ,EACZ,IAAK,MAAMD,UAAEA,KAAejtD,GAAuBT,KAAMqpD,GAAwB,KAAK/pD,SAClFquD,GAASD,EAAUxuD,OAEvB,OAAOyuD,EAEX9vD,gBAAgB8Q,GACZ,GAAIA,EAAO,CACP,MAAMw+C,QAAY1sD,GAAuBT,KAAMopD,GAA6B,IAAKa,IAA0B1pD,KAAKP,KAAM2O,GACtH,OAAKw+C,EAGEA,EAAIO,UAAUtvD,KAAI,EAAG0C,SAAAA,KAAeA,IAFhC,GAIf,IAAI4F,EAAS,GACb,IAAK,MAAMgnD,UAAEA,KAAejtD,GAAuBT,KAAMqpD,GAAwB,KAAK/pD,SAClFoH,EAASA,EAAO8O,OAAOk4C,EAAUtvD,KAAI,EAAG0C,SAAAA,KAAeA,KAE3D,OAAO4F,EAEX7I,UAAU8Q,EAAO7N,GACb,MAAMqsD,QAAY1sD,GAAuBT,KAAMopD,GAA6B,IAAKa,IAA0B1pD,KAAKP,KAAM2O,GACtH,IAAKw+C,EACD,OAAOntD,KAEX,GAAIc,EAAU,CACV,MAAMpC,EAAQyuD,EAAIO,UAAUtvD,KAAI,EAAG0C,SAAAA,KAAeA,IAAU+D,QAAQ/D,GAChEpC,GAAS,GACTyuD,EAAIO,UAAUnpB,OAAO7lC,EAAO,GASpC,OANKoC,GAAqC,IAAzBqsD,EAAIO,UAAUxuD,SACvBiuD,EAAIM,SACJN,EAAIC,WAAW7E,OAEnB9nD,GAAuBT,KAAMqpD,GAAwB,KAAKvqB,OAAOquB,EAAI3C,MAElExqD,KAEXnC,yBAAyB8Q,GACrB,GAAIA,EAAO,CACP,MAAM67C,IAAEA,EAAGiD,QAAEA,EAAOL,WAAEA,SAAqB3sD,GAAuBT,KAAMopD,GAA6B,IAAKc,IAA0B3pD,KAAKP,KAAM2O,GAC3I8+C,GACAL,EAAW7E,OAEf9nD,GAAuBT,KAAMqpD,GAAwB,KAAKvqB,OAAO0rB,QAGjE,IAAK,MAAOA,GAAKiD,QAAEA,EAAOL,WAAEA,MAAiB3sD,GAAuBT,KAAMqpD,GAAwB,KAC1FoE,GACAL,EAAW7E,OAEf9nD,GAAuBT,KAAMqpD,GAAwB,KAAKvqB,OAAO0rB,GAGzE,OAAOxqD,KAGXnC,kBAAkB8Q,EAAO7N,GACrB,aAAad,KAAK+oD,GAAGp6C,EAAO7N,GAGhCjD,qBAAqB8Q,EAAO7N,GACxB,OAAOd,KAAKgB,IAAI2N,EAAO7N,GAI3BjD,iBAEImC,KAAK4tD,qBAEL,IAAK,MAAMd,KAAWrsD,GAAuBT,KAAM4pD,GAA0B,KAAK5rD,OAC9EgC,KAAKwoD,cAAcsE,GAGvBE,aAAW,OAA4E,MAApEvsD,GAAuBT,KAAMupD,GAA+B,KACnFd,MAAMC,GACF,GAAwE,MAApEjoD,GAAuBT,KAAMupD,GAA+B,KAAc,CAC1E,GAAI9oD,GAAuBT,KAAMupD,GAA+B,QAAUb,EACtE,OAEJ,OAAOzhD,GAAOnD,WAAW,yCAA0C,wBAAyB,CACxFY,UAAW,UAGnB1E,KAAKktD,oBAAoB3rC,GAAMA,EAAEknC,MAAMC,KACvC3oD,GAAuBC,KAAMupD,KAAiCb,EAAiB,KAC/E,IAAK,MAAMiE,KAASlsD,GAAuBT,KAAM4pD,GAA0B,KAAKtqD,SAExEqtD,EAAMA,OACNC,aAAaD,EAAMA,OAGvBA,EAAMM,KAAOplB,KAAY8kB,EAAMM,KAGvCtE,SACI,GAAwE,MAApEloD,GAAuBT,KAAMupD,GAA+B,KAAhE,CAGAvpD,KAAKktD,oBAAoB3rC,GAAMA,EAAEonC,WACjC5oD,GAAuBC,KAAMupD,GAA+B,KAAM,KAClE,IAAK,MAAMoD,KAASlsD,GAAuBT,KAAM4pD,GAA0B,KAAKtqD,SAAU,CAEtF,IAAI6mC,EAAUwmB,EAAMM,KAChB9mB,EAAU,IACVA,EAAU,GAGdwmB,EAAMM,KAAOplB,KAEb1tB,WAAWwyC,EAAM1lC,KAAMkf,MAwGnC,SAAS0nB,GAAannD,EAAQmP,GAC1B,IACI,MAAMP,EAAQw4C,GAAYpnD,EAAQmP,GAClC,GAAIP,EACA,OAAOukB,GAAavkB,GAG5B,MAAOhU,IACP,OAAO,KAEX,SAASwsD,GAAYpnD,EAAQmP,GACzB,GAAe,OAAXnP,EACA,OAAO,KAEX,IACI,MAAMC,EAASM,GAAOzB,UAAUoQ,GAAUlP,EAAQmP,EAAOA,EAAQ,KAC3D3W,EAAS+H,GAAOzB,UAAUoQ,GAAUlP,EAAQC,EAAQA,EAAS,KACnE,OAAOiP,GAAUlP,EAAQC,EAAS,GAAIA,EAAS,GAAKzH,GAExD,MAAOoC,IACP,OAAO,KAEX,SAASkoC,GAAOzrC,GACZ,MAAM2I,EAASqJ,GAAQhS,GACvB,GAAI2I,EAAOxH,OAAS,GAChB,MAAM,IAAIC,MAAM,+BAEpB,MAAMsqC,EAAS,IAAIjjC,WAAW,IAE9B,OADAijC,EAAOjpC,IAAIkG,EAAQ,GAAKA,EAAOxH,QACxBuqC,EAEX,SAASC,GAAS3rC,GACd,GAAKA,EAAMmB,OAAS,IAAQ,EACxB,OAAOnB,EAEX,MAAM2I,EAAS,IAAIF,WAA0C,GAA/BwS,KAAKC,KAAKlb,EAAMmB,OAAS,KAEvD,OADAwH,EAAOlG,IAAIzC,GACJ2I,EAzIX2iD,GAAyB,IAAI5nD,QAAW6nD,GAA4B,IAAI7nD,QAAW8nD,GAAgC,IAAI9nD,QAAW+nD,GAAmC,IAAI/nD,QAAWgoD,GAA+B,IAAIhoD,QAAWioD,GAAiC,IAAIjoD,QAAWkoD,GAA8B,IAAIloD,QAAWmoD,GAA2B,IAAInoD,QAAWooD,GAAoC,IAAIpoD,QAAW2nD,GAA8B,IAAI9iD,QAAWwjD,GAEzcjsD,eAAyCqoC,GAErC,MAAMskB,EAAML,GAAOjkB,EAAIhhC,OAAQghC,GAC/B,IAAI6nB,EAAUttD,GAAuBT,KAAM0pD,GAAgC,KAAKhpD,IAAI8pD,GAUpF,OATKuD,IACDA,EAAU/tD,KAAKguD,SAAS9nB,GACxBzlC,GAAuBT,KAAM0pD,GAAgC,KAAKlpD,IAAIgqD,EAAKuD,GAC3E5zC,YAAW,KACH1Z,GAAuBT,KAAM0pD,GAAgC,KAAKhpD,IAAI8pD,KAASuD,GAC/EttD,GAAuBT,KAAM0pD,GAAgC,KAAK5qB,OAAO0rB,KAE9E,YAEMuD,GACdhE,GAAyBlsD,eAAeksD,EAAuB11B,EAAImvB,EAAUyK,GACxEA,GAjyBmB,IAkyBnBhnD,GAAOnD,WAAW,0CAA2C,iBAAkB,CAC3Ek0B,OAAQ,qBACR8K,YAAa7kC,OAAOoN,OAAO,GAAIgpB,EAAI,CAAEmvB,SAAAA,EAAU9Y,gBAAgB,MAGvE,MAAM5H,EAA0BzO,EAChC,IACI,OAAOhf,SAAcrV,KAAKguD,SAAS,CAAE9oD,OAAQ,OAAQ49B,YAAAA,EAAa0gB,SAAAA,KAEtE,MAAOliD,GAEH,IAAKtB,KAAK6qD,iBAAmBrpD,EAAgBF,IAAU2sD,GAAW,GAAkB,WAAbzK,GAA2C,MAAlB1gB,EAAY13B,IAA8C,eAAhCwK,GAAUtU,EAAMuT,KAAM,EAAG,GAAqB,CACpK,MAAMA,EAAOvT,EAAMuT,KACbq5C,QAAiBp5B,GAAegO,EAAY13B,GAAIpL,MAEtD,IAAImuD,EACJ,IACIA,EA8HhB,SAA6Bt5C,GACzB,MAAMnO,EAAS,CACXqkD,OAAQ,GAAID,KAAM,GAAIzf,SAAU,GAAIvK,SAAU,GAAIygB,UAAW,GAAI7e,UAAW,IAEhF,GAAI/sB,GAAWd,GAAQ,IACnB,MAAM,IAAI1V,MAAM,oCAEpB,MAAM4rD,EAASn1C,GAAUf,EAAM,EAAG,IAClC,GAAIe,GAAUm1C,EAAQ,EAAG,MAAQn1C,GAAU/E,GAAO,EAAG,IACjD,MAAM,IAAI1R,MAAM,iCAEpBuH,EAAOqkD,OAASn1C,GAAUm1C,EAAQ,IAElC,IACI,MAAMD,EAAO,GACPsD,EAAannD,GAAOzB,UAAUoQ,GAAUf,EAAM,GAAI,KAClDw5C,EAAapnD,GAAOzB,UAAUoQ,GAAUf,EAAMu5C,EAAYA,EAAa,KACvEE,EAAW14C,GAAUf,EAAMu5C,EAAa,IAC9C,IAAK,IAAIpwC,EAAI,EAAGA,EAAIqwC,EAAYrwC,IAAK,CACjC,MAAMqoB,EAAMwnB,GAAaS,EAAc,GAAJtwC,GACnC,GAAW,MAAPqoB,EACA,MAAM,IAAIlnC,MAAM,SAEpB2rD,EAAKnoD,KAAK0jC,GAEd3/B,EAAOokD,KAAOA,EAElB,MAAOxpD,GACH,MAAM,IAAInC,MAAM,+BAGpB,IACI,MAAMksC,EAAWyiB,GAAYj5C,EAAM,IACnC,GAAgB,MAAZw2B,EACA,MAAM,IAAIlsC,MAAM,SAEpBuH,EAAO2kC,SAAWA,EAEtB,MAAO/pC,GACH,MAAM,IAAInC,MAAM,mCAGpB,GAAIyW,GAAUf,EAAM,IAAK,OAASe,GAAU/E,GAAO,EAAG,IAClD,MAAM,IAAI1R,MAAM,4CAEpBuH,EAAOo6B,SAAWlrB,GAAUf,EAAM,GAAI,KAEtC,IACI,MAAM0sC,EAAYuM,GAAYj5C,EAAM,KACpC,GAAiB,MAAb0sC,EACA,MAAM,IAAIpiD,MAAM,SAEpBuH,EAAO66C,UAAYA,EAEvB,MAAOjgD,GACH,MAAM,IAAInC,MAAM,oCAGpB,OADAuH,EAAOg8B,UAAY,0CAA0C5jC,MAAM,KAAKV,KAAKC,GAAMqI,EAAOrI,KACnFqI,EAxLgB6nD,CAAoB34C,GAAUtU,EAAMuT,KAAM,IAEzD,MAAOvT,GACH,OAAO2F,GAAOnD,WAAWxC,EAAMmC,QAAS,iBAAkB,CACtDu0B,OAAQ,WACR8K,YAAAA,EAAa7gC,KAAM,CAAE4S,KAAAA,KAI7B,GAAIs5C,EAASpD,OAAO3kD,gBAAkB8nD,EAAS9nD,cAC3C,OAAOa,GAAOnD,WAAW,4BAA6B,iBAAkB,CACpE+Q,KAAAA,EAAMiuB,YAAAA,EACNF,eAAgB,sDAChBD,UAAW,iBACXD,UAAWyrB,EAASzrB,YAG5B,MAAM8rB,QAAmBxuD,KAAKyuD,cAAc3rB,EAAaqrB,EAAS9iB,SAAU8iB,EAASrD,MACrF,OAAkB,MAAd0D,EACOvnD,GAAOnD,WAAW,iCAAkC,iBAAkB,CACzEk0B,OAAQ,eACR8K,YAAAA,EAAa7gC,KAAM,CAAE4S,KAAMvT,EAAMuT,KAAM6tB,UAAWyrB,EAASzrB,aAG5DjiC,GAAuBT,KAAMopD,GAA6B,IAAKW,GAAwBxpD,KAAKP,KAAM,CACrGoL,GAAI8iD,EACJr5C,KAAMW,GAAO,CACT24C,EAASrtB,SAAU6I,GAAY,CAAC6kB,EAAYL,EAAS5M,eAE1DiC,EAAUyK,EAAU,GAE3B,MAAM3sD,IAEX0oD,GAA6BnsD,eAA0Ck1B,EAAO27B,GAC7E,MAAMviD,SAAgBnM,KAAK6qC,cAAcC,UACzC,OAAIt2B,GAAYue,EAAO,UACNtyB,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAC9GkF,OAAQ,WAAY88C,UAAWjvB,EAAO27B,oBAAAA,UAGjCjuD,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAC9GkF,OAAQ,WAAYs+C,SAAUr3C,EAAOq3C,SAASzwB,GAAQ27B,oBAAAA,KAE3DzE,GAA2BpsD,eAAwC8Q,EAAOggD,GACzE,IAAIxB,QAAY7C,GAAgB37C,EAAO3O,MAMvC,MAHiB,UAAbmtD,EAAIvuD,MAAoB+vD,GAAYA,EAASzvD,OAAS,IAA6B,IAAxByvD,EAAS,GAAGzM,UACvEiL,QAAY7C,GAAgB,CAAEzI,OAAQ,WAAY96C,IAAK4nD,EAAS,IAAM3uD,OAEnES,GAAuBT,KAAMqpD,GAAwB,KAAK3oD,IAAIysD,EAAI3C,MAAQ,MAClFN,GAA2BrsD,eAAwC8Q,GAClE,MAAMigD,QAAqBtE,GAAgB37C,EAAO3O,MAE5CwqD,EAAMoE,EAAapE,IACzB,IAAI2C,EAAM1sD,GAAuBT,KAAMqpD,GAAwB,KAAK3oD,IAAI8pD,GACxE,IAAK2C,EAAK,CAINA,EAAM,CAAEC,WAHWptD,KAAKqtD,eAAeuB,GAGnBpE,IAAAA,EAAKqE,eAFF,IAAIptD,QAEcqtD,QADzB,IAAIz3C,IAC8Bo2C,SAAS,EAAOC,UAAW,IAC7EjtD,GAAuBT,KAAMqpD,GAAwB,KAAK7oD,IAAIgqD,EAAK2C,GAEvE,OAAOA,GAyCX,MAAM4B,GAAQ,IAAIvoD,WAAW,IAE7B,SAASmjC,GAAYl0B,GACjB,MAAM/O,EAAS,GACf,IAAIkjC,EAAY,EAEhB,IAAK,IAAI3qC,EAAI,EAAGA,EAAIwW,EAAMvW,OAAQD,IAC9ByH,EAAO/D,KAAKosD,IACZnlB,GAAa,GAEjB,IAAK,IAAI3qC,EAAI,EAAGA,EAAIwW,EAAMvW,OAAQD,IAAK,CACnC,MAAM4V,EAAO5N,GAAO3B,SAASmQ,EAAMxW,IAEnCyH,EAAOzH,GAAKuqC,GAAOI,GAEnBljC,EAAO/D,KAAK6mC,GAAO30B,EAAK3V,SACxBwH,EAAO/D,KAAK+mC,GAAS70B,IACrB+0B,GAAa,GAAmC,GAA9B5wB,KAAKC,KAAKpE,EAAK3V,OAAS,IAE9C,OAAOsW,GAAO9O,GAElB,MAAMmK,GAAQ,qECj9Bd,IAWIm+C,GAA2BC,GAA+BC,GAAyBC,GAAuBC,GAA8BC,GAXxI5uD,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAEpFF,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAMjG,MAAMuxD,GACT1uD,YAAY0pC,GACR0kB,GAA0BzrD,IAAIvD,MAC9BZ,EAAiBY,KAAM,CAAEsqC,SAAWA,GAAY,OAEpDzsC,iBAAiB2lD,GACb,OAAO/iD,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,cAAcuvD,mBAAmBvvD,KAAKkzB,aAAcswB,GAEtK3lD,0BAA0B2lD,GACtB,OAAO/iD,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,uBAAuBwvD,4BAA4BxvD,KAAKkzB,aAAcswB,GAExL3lD,kBAAkBw2B,GACd,OAAO5zB,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,eAAeyvD,kBAAkBhvD,GAAuBT,KAAMgvD,GAA2B,IAAKE,IAAyB3uD,KAAKP,KAAMq0B,IAEpPx2B,WAAWw2B,GACP,OAAO5zB,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,QAAQO,WAAWE,GAAuBT,KAAMgvD,GAA2B,IAAKE,IAAyB3uD,KAAKP,KAAMq0B,IAEtOx2B,0BAA0Bw2B,GACtB,MAAMiW,EAAW7pC,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,uBAExH,IAAIqJ,EAAMpL,OAAOoN,OAAO,GAAIgpB,GAS5B,GARc,MAAVhrB,EAAI+B,KACJ/B,EAAI+B,GAAKk/B,EAAStV,YAAY3rB,EAAI+B,IAAIsC,MAAMtC,GAC9B,MAANA,EACOnE,GAAOlD,mBAAmB,yCAA0C,QAASsF,EAAI+B,IAErFA,KAGC,MAAZ/B,EAAI8B,KAAc,CAClB,MAAMA,EAAO9B,EAAI8B,KACjB9B,EAAI8B,KAAOjN,QAAQC,IAAI,CACnB6B,KAAKkzB,aACLlzB,KAAKg1B,YAAY7pB,KAClBuC,MAAK,EAAE6kB,EAASpnB,KACVA,GAAQonB,EAAQnsB,gBAAkB+E,EAAK/E,cAGrCmsB,EAFItrB,GAAOlD,mBAAmB,4BAA6B,UAAWoH,KAcrF,OATiB,MAAb9B,EAAIkrB,QACJlrB,EAAIkrB,MAAQv0B,KAAK0vD,uBAErBrmD,EAAMvL,EAAkBuL,GACJ,MAAhBA,EAAI41C,WACJ51C,EAAI41C,SAAW3U,EAASmlB,YAAYpmD,IAExCA,EAAMvL,EAAkBuL,SAEXvL,EAAkBuL,GAEnCxL,kBAAkBiF,GACd,MAAMwnC,EAAW7pC,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,eACxH,aAAasqC,EAAStV,YAAYlyB,GAEtCjF,sBAAsBw2B,GAClB,MAAMiW,EAAW7pC,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,mBAClH2vD,EAAQhQ,GAAYx0C,WAAWnL,KAAK4vD,oBAAoBv7B,IAC9D,aAAaiW,EAASulB,2BAA2B7vD,KAAK8vD,gBAAgBH,KAG9EX,GAA4B,IAAI1oD,QAAW2oD,GAAgC,SAAuCvqD,GAC9G,OAAI1E,KAAKsqC,SACEtqC,KAAKsqC,SAETrjC,GAAOnD,WAAW,mBAAoB,wBAAyB,CAAEY,UAAAA,KACzEwqD,GAA0BrxD,eAAuCw2B,GAEhE,MAAM07B,EAAU,GAChB,GAAe,OAFf17B,EAAKp2B,OAAOoN,OAAO,GAAIgpB,IAEhBlpB,KAAc,CACjB,MAAMA,EAAOkpB,EAAGlpB,KAChB4kD,EAAQptD,KAAKzE,QAAQC,IAAI,CACrB6B,KAAKkzB,aACLlzB,KAAKg1B,YAAY7pB,KAClBuC,MAAK,EAAE6kB,EAASpnB,MACVA,GAAQonB,EAAQnsB,gBAAkB+E,EAAK/E,eACxCa,GAAOlD,mBAAmB,4BAA6B,UAAWoH,GAEtEkpB,EAAGlpB,KAAOonB,MAIlB,aADMr0B,QAAQC,IAAI4xD,GACX17B,GAEJ,MAAM27B,WAAmBV,GAC5B1uD,YAAY2xB,EAAS+X,GACjBj8B,MAAMi8B,GACN6kB,GAAsB5rD,IAAIvD,MAC1BZ,EAAiBY,KAAM,CAAEuyB,QAAAA,IAE7B10B,mBAAqB,OAAOmC,KAAKuyB,QACjC09B,QAAQ3lB,GACJ,OAAO,IAAI0lB,GAAWhwD,KAAKuyB,QAAS+X,GAExCzsC,sBAAsBw2B,GAClB5zB,GAAuBT,KAAMmvD,GAAuB,IAAKC,IAA8B7uD,KAAKP,KAAM,eAAgB,mBAEtHnC,kBAAkB4F,GACdhD,GAAuBT,KAAMmvD,GAAuB,IAAKC,IAA8B7uD,KAAKP,KAAM,WAAY,eAElHnC,oBAAoB2hC,EAAQ3gC,EAAOd,GAC/B0C,GAAuBT,KAAMmvD,GAAuB,IAAKC,IAA8B7uD,KAAKP,KAAM,aAAc,kBAGxHmvD,GAAwB,IAAI7oD,QAAW8oD,GAA+B,SAAsC9kD,EAAQ5F,GAChH,OAAOuC,GAAOnD,WAAW,0BAA0BwG,IAAU,wBAAyB,CAClF5F,UAAAA,KAGD,MAAMwrD,WAAsBZ,GAE/B1uD,YAAYuvD,GACR9hD,MAAM8hD,EAAO7lB,UACb+kB,GAAsB7uD,IAAIR,UAAM,GAChCD,GAAuBC,KAAMqvD,GAAuBc,EAAQ,KAEhEtyD,mBACI,aAAa4C,GAAuBT,KAAMqvD,GAAuB,KAAKn8B,aAE1E+8B,QAAQ3lB,GACJ,OAAO,IAAI4lB,GAAczvD,GAAuBT,KAAMqvD,GAAuB,KAAKY,QAAQ3lB,IAE9FzsC,sBAAsBw2B,GAClB,aAAa5zB,GAAuBT,KAAMqvD,GAAuB,KAAKS,gBAAgBz7B,GAE1Fx2B,sBAAsBw2B,GAClB,aAAa5zB,GAAuBT,KAAMqvD,GAAuB,KAAKe,gBAAgB/7B,GAE1Fx2B,kBAAkB4F,GACd,aAAahD,GAAuBT,KAAMqvD,GAAuB,KAAKgB,YAAY5sD,GAEtF5F,oBAAoB2hC,EAAQ3gC,EAAOd,GAC/B,aAAa0C,GAAuBT,KAAMqvD,GAAuB,KAAKiB,cAAc9wB,EAAQ3gC,EAAOd,IAG3GsxD,GAAwB,IAAI5tD,QCtJ5B,MAAM8uD,GAAQ,IAAI5oD,IACX,SAAS6oD,GAAoBC,GAC5BF,GAAMjwD,IAAImwD,KAGdF,GAAMhtD,IAAIktD,GACV3pD,QAAQC,IAAI,8BACZD,QAAQC,IAAI,6BAA6B0pD,yCACzC3pD,QAAQC,IAAI,IACZD,QAAQC,IAAI,6EACZD,QAAQC,IAAI,sEACZD,QAAQC,IAAI,IACZD,QAAQC,IAAI,2EACZD,QAAQC,IAAI,0EACZD,QAAQC,IAAI,iFACZD,QAAQC,IAAI,IACZD,QAAQC,IAAI,sDACZD,QAAQC,IAAI,+BClBhB,IAWI2pD,GAA+BC,GAA8BC,GAAqCC,GAA4BC,GAA6BC,GAA0BC,GAA8BC,GAXnNlxD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAOjF,MAAMixD,GACTtwD,YAAY0pC,GACRomB,GAA8BntD,IAAIvD,MAClC2wD,GAA6BnwD,IAAIR,UAAM,GACvC4wD,GAAoCpwD,IAAIR,UAAM,GAC9C6wD,GAA2BrwD,IAAIR,UAAM,GACrC8wD,GAA4BtwD,IAAIR,UAAM,GACtCD,GAAuBC,KAAM2wD,GAA8BrmB,EAAU,KACrEvqC,GAAuBC,KAAM4wD,GAAqC,KAAM,KACxE7wD,GAAuBC,KAAM6wD,GAA4BpwD,GAAuBT,KAAM0wD,GAA+B,IAAKK,IAA0B92C,KAAKja,MAAO,KAChKD,GAAuBC,KAAM8wD,GAA6B,KAAM,KAEpEK,WAAW7mB,GACP,MAAM,IAAInrC,MAAM,iCAEpBiyD,aAAa9mB,EAAU5jC,GACnB,MAAM,IAAIvH,MAAM,iCAEpBkyD,SAAS/mB,GACL,MAAM,IAAInrC,MAAM,iCAEpB0W,QAAUpV,GAAuBT,KAAM0wD,GAA+B,IAAKK,IAA0BxwD,KAAKP,MAAO,GACjHuoD,OACI9nD,GAAuBT,KAAM0wD,GAA+B,IAAKM,IAA8BzwD,KAAKP,MACpGS,GAAuBT,KAAM2wD,GAA8B,KAAK3vD,IAAI,QAASP,GAAuBT,KAAM6wD,GAA4B,MAE1IpI,MAAMC,GACEA,GACAjoD,GAAuBT,KAAM0wD,GAA+B,IAAKM,IAA8BzwD,KAAKP,MAExGS,GAAuBT,KAAM2wD,GAA8B,KAAK3vD,IAAI,QAASP,GAAuBT,KAAM6wD,GAA4B,MAE1IlI,SAAW3oD,KAAK6V,SAEpB86C,GAA+B,IAAIlvD,QAAWmvD,GAAsC,IAAInvD,QAAWovD,GAA6B,IAAIpvD,QAAWqvD,GAA8B,IAAIrvD,QAAWivD,GAAgC,IAAIpqD,QAAWyqD,GAA2BlzD,eAAwCokD,GAC1S,IACkF,MAA1ExhD,GAAuBT,KAAM4wD,GAAqC,MAClE7wD,GAAuBC,KAAM4wD,GAAqC5wD,KAAKmxD,WAAW1wD,GAAuBT,KAAM2wD,GAA8B,MAAO,KAExJ,MAAMW,QAAiB7wD,GAAuBT,KAAM4wD,GAAqC,KACzF,GAAgB,MAAZU,EAEA,YADA7wD,GAAuBT,KAAM2wD,GAA8B,KAAKrD,mBAAmBttD,KAAMA,KAAKqxD,SAAS5wD,GAAuBT,KAAM2wD,GAA8B,OAGtK,MAAMnkB,QAAgB/rC,GAAuBT,KAAM2wD,GAA8B,KAAK9lB,aAItF,GAHKpqC,GAAuBT,KAAM8wD,GAA6B,MAC3D/wD,GAAuBC,KAAM8wD,GAA6BtkB,EAAS,KAEnE/rC,GAAuBT,KAAM8wD,GAA6B,KAAKrzB,UAAY+O,EAAQ/O,QACnF,MAAM,IAAIt+B,MAAM,iBAEpB,MAAMuH,QAAejG,GAAuBT,KAAM2wD,GAA8B,KAAKY,KAAK,uBAAwB,CAACD,UAC7GtxD,KAAKoxD,aAAa3wD,GAAuBT,KAAM2wD,GAA8B,KAAMjqD,GAE7F,MAAOpF,GACHwF,QAAQC,IAAI,QAASzF,GAEzBb,GAAuBT,KAAM2wD,GAA8B,KAAK9D,KAAK,QAASpsD,GAAuBT,KAAM6wD,GAA4B,OACxIG,GAA+B,WAC9B,MAAMQ,EAAkB/wD,GAAuBT,KAAM4wD,GAAqC,KACtFY,IACAzxD,GAAuBC,KAAM4wD,GAAqC,KAAM,KACxEY,EAAgB9jD,MAAM4jD,IAClB7wD,GAAuBT,KAAM2wD,GAA8B,KAAKY,KAAK,sBAAuB,CAACD,SAIlG,MAAMG,WAAgCP,GACzCtwD,YAAY0pC,EAAUvpC,GAvE1B,IAAckM,EAwENoB,MAAMi8B,GACN2mB,GAA+BzwD,IAAIR,UAAM,GACzCD,GAAuBC,KAAMixD,IA1EvBhkD,EA0E4DlM,EAzE/D4C,KAAK6I,MAAM7I,KAAKC,UAAUqJ,KAyE8C,KAE/EokD,SAAS/mB,GACL,OAAO,IAAI4e,GAAuB5e,EAAU7pC,GAAuBT,KAAMixD,GAAgC,MAE7GpzD,iBAAiBysC,GACb,MAAMgnB,QAAiBhnB,EAASinB,KAAK,gBAAiB,CAAC9wD,GAAuBT,KAAMixD,GAAgC,OAEpH,OADAnqD,QAAQC,IAAI,UAAWuqD,GAChBA,EAEXzzD,mBAAmBysC,EAAUonB,GACzB,MAAMllB,QAAgBlC,EAASO,aAC/B,IAAK,MAAMnkC,KAAUgrD,EAAS,CAC1B,MAAM3qD,EAAMylC,EAAQ1B,UAAU/jC,IAAIL,EAAQ4jC,GAC1CA,EAASse,KAAKnoD,GAAuBT,KAAMixD,GAAgC,KAAMlqD,KAI7FkqD,GAAiC,IAAIxvD,QAC9B,MAAMkwD,WAAkCT,GAC3CrzD,iBAAiBysC,GACb,aAAaA,EAASinB,KAAK,kCAAmC,IAElE1zD,mBAAmBysC,EAAUonB,GACzB,MAAMllB,QAAgBlC,EAASO,aAC/B,IAAK,MAAMnkC,KAAUgrD,EACjBpnB,EAASse,KAAK,UAAWpc,EAAQ1B,UAAUzvB,KAAK3U,KC/G5D,IAWIkrD,GAA4BC,GAA6BC,GAA0BC,GAXnFhyD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAkBxF,MAAM+xD,GAAY,+CAA+ClzD,MAAM,MAEvE,SAASmzD,GAASl0D,GACd,GAAa,MAATA,GAAiBi0D,GAAUntD,mBAA2B,EACtD,OAAO9G,EAGX,GAAkC,mBAAtBA,EAAgB,WACxB,OAAOA,EAEX,GAAIgP,MAAMN,QAAQ1O,GACd,OAAQA,EAAMK,IAAI6zD,IAEtB,GAAuB,iBAAX,EACR,OAAOh0D,OAAOD,KAAKD,GAAOQ,QAAO,CAACC,EAAOgB,KACrChB,EAAMgB,GAAOzB,EAAMyB,GACZhB,IACR,IAEP,MAAM,IAAIW,MAAM,sBAAsBpB,mBAE1C,SAASm0D,GAAan0D,GAClB,OAAIA,EACOA,EAAMqI,cAEVrI,EAKX,MAAMo0D,GAAiB,CAGnBC,SAAS,EAETC,aAAe,GAAK,GAEpBC,eAAgB,KAGb,MAAMC,GACT3xD,YAAY0pC,EAAU/X,GAClBnzB,EAAiBY,KAAM,CAAEsqC,SAAAA,EAAU/X,QAAAA,IAEvC09B,QAAQ3lB,GACJ,OAAOrjC,GAAOnD,WAAW,iCAAkC,wBAAyB,CAChFY,UAAW,mBAGnB7G,mBACI,OAAOmC,KAAKuyB,QAEhB10B,mBACI,aAAamC,KAAKsqC,SAASO,aAE/BhtC,mBACI,aAAamC,KAAKsqC,SAASkoB,aAE/B30D,kBAAkBw2B,GACd,aAAar0B,KAAKsqC,SAASmlB,YAAYp7B,GAE3Cx2B,WAAWw2B,GACP,aAAar0B,KAAKsqC,SAAS/pC,KAAK8zB,GAEpCx2B,kBAAkBiF,GACd,aAAa9C,KAAKsqC,SAAStV,YAAYlyB,GAE3CjF,iBAAiB2lD,GACb,aAAaxjD,KAAKsqC,SAASilB,aAAavvD,KAAKuyB,SAEjD10B,0BAA0B2lD,GACtB,aAAaxjD,KAAKsqC,SAASklB,sBAAsBxvD,KAAKuyB,SAI1D10B,+BAA+B+tD,GAC3B,MAAMv3B,EAAK49B,GAASrG,GACd5+C,EAAW,GAEjB,GAAIqnB,EAAGlpB,KAAM,CACT,MAAMspB,EAAQJ,EAAGlpB,KACjB6B,EAASrK,KAAK,WACV,MAAMwI,QAAa2pB,GAAeL,EAAOz0B,KAAKsqC,UAClC,MAARn/B,GAAgBA,EAAK/E,gBAAkBpG,KAAKuyB,QAAQnsB,eACpDa,GAAOlD,mBAAmB,wBAAyB,cAAe6nD,GAEtEv3B,EAAGlpB,KAAOA,GALA,SASdkpB,EAAGlpB,KAAOnL,KAAKuyB,QAWnB,GANmB,MAAf8B,EAAG4qB,UACHjyC,EAASrK,KAAK,WACV0xB,EAAG4qB,eAAiBj/C,KAAKsqC,SAASmlB,YAAYxxD,OAAOoN,OAAOpN,OAAOoN,OAAO,GAAIgpB,GAAK,CAAElpB,KAAMnL,KAAKuyB,YADtF,IAKL,MAAT8B,EAAGjpB,GAAY,CACf,MAAMqnD,EAAMp+B,EAAGjpB,GACf4B,EAASrK,KAAK,WACV0xB,EAAGjpB,SAAW0pB,GAAe29B,EAAKzyD,KAAKsqC,WAD7B,IAKdt9B,EAAS9N,cACHhB,QAAQC,IAAI6O,GAEtB,MAAM0lD,EAAQ1yD,KAAKsqC,SAASqoB,kBAAkBt+B,GAC9C,OAAOr0B,KAAKsqC,SAASinB,KAAK,sBAAuB,CAACmB,IAEtD70D,sBAAsBw2B,GAElB,MAAM4tB,QAAoBjiD,KAAKsqC,SAAS0Y,iBAElC3nC,QAAarb,KAAK4yD,yBAAyBv+B,GAIjD,iBAAkBn2B,SAAQ,CAACI,EAASouD,KAChC,MAAMmG,EAAW,CAAC,IAAM,KAClBC,EAAUj1D,UAEZ,MAAMw2B,QAAWr0B,KAAKsqC,SAASoX,eAAermC,GACpC,MAANgZ,EAKJr0B,KAAKsqC,SAASge,aAAY,KAAQwK,MAAcD,EAASxpD,OAAS,KAJ9D/K,EAAQ0B,KAAKsqC,SAAS6gB,iBAAiB92B,EAAIhZ,EAAM4mC,KAMzD6Q,OAGRj1D,sBAAsB+tD,GAClB,MAAMv3B,EAAK49B,GAASrG,GAEpB,GAAIv3B,EAAGlpB,KAAM,CACT,MAAMA,QAAa2pB,GAAeT,EAAGlpB,KAAMnL,KAAKsqC,UAChD,GAAY,MAARn/B,GAAgBA,EAAK/E,gBAAkBpG,KAAKuyB,QAAQnsB,cACpD,OAAOa,GAAOlD,mBAAmB,wBAAyB,cAAe6nD,GAE7Ev3B,EAAGlpB,KAAOA,OAGVkpB,EAAGlpB,KAAOnL,KAAKuyB,QAEnB,MAAMmgC,EAAQ1yD,KAAKsqC,SAASqoB,kBAAkBt+B,GAC9C,aAAar0B,KAAKsqC,SAASinB,KAAK,uBAAwB,CAACmB,IAE7D70D,kBAAkBk1D,GACd,MAAMtvD,EAAkC,iBAAtB,EAAkC21B,GAAY25B,GAAYA,EAC5E,aAAa/yD,KAAKsqC,SAASinB,KAAK,gBAAiB,CAC7Cl8C,GAAQ5R,GAAUzD,KAAKuyB,QAAQnsB,gBAGvCvI,oBAAoB2hC,EAAQ3gC,EAAO6Q,GAC/B,MAAM3R,EAAQk0D,GAASviD,GAEjBsjD,QAAkB50B,GAAiB60B,aAAazzB,EAAQ3gC,EAAOd,GAAOF,MAAOE,IAC/E,MAAMw0B,QAAgBuC,GAAe/2B,GACrC,OAAe,MAAXw0B,EACOtrB,GAAOlD,mBAAmB,0CAA2C,QAAShG,GAElFw0B,KAEX,aAAavyB,KAAKsqC,SAASinB,KAAK,uBAAwB,CACpDvxD,KAAKuyB,QAAQnsB,cACbzC,KAAKC,UAAUw6B,GAAiB80B,WAAWF,EAAUxzB,OAAQ3gC,EAAOm0D,EAAUj1D,UAGtFF,aAAasf,GACT,OAAOnd,KAAKsqC,SAASinB,KAAK,yBAA0B,CAChDvxD,KAAKuyB,QAAQnsB,cAAe+W,EAAU,OAI9Ctf,yBAAyBk1D,GACrB,MAAMtvD,EAAkC,iBAAtB,EAAkC21B,GAAY25B,GAAYA,EAC5E,aAAa/yD,KAAKsqC,SAASinB,KAAK,WAAY,CACxCvxD,KAAKuyB,QAAQnsB,cAAeiP,GAAQ5R,MAIzC,MAAM0vD,WAA2BxI,GACpC/pD,YAAY4rC,GACRn+B,MAAMm+B,GACNolB,GAA2BpxD,IAAIR,UAAM,GACrC6xD,GAA4BrxD,IAAIR,UAAM,GACtCD,GAAuBC,KAAM4xD,GAA4B,EAAG,KAC5D7xD,GAAuBC,KAAM6xD,GAA6B5zD,OAAOoN,OAAO,GAAI8mD,IAAiB,KAEjGiB,YAAY5zD,GACR,OAAOiB,GAAuBT,KAAM6xD,GAA6B,KAAKryD,GAE1E6zD,YAAY/9B,GAER,IAAK,MAAMhZ,KAAQgZ,EAAS,CACxB,MAAM91B,EAAM8c,EACNve,EAAQu3B,EAAQ91B,GACtB,UAAY,UAAmBiB,GAAuBT,KAAM6xD,GAA6B,KAAKryD,GAC1F,OAAOyH,GAAOlD,mBAAmB,uBAAwB,WAAWvE,IAAOzB,GAInF,IAAK,MAAMue,KAAQgZ,EAAS,CACxB,MAAM91B,EAAM8c,EACZ7b,GAAuBT,KAAM6xD,GAA6B,KAAKryD,GAAQ81B,EAAQ91B,IAGvF8zD,eAAepuD,EAAQqJ,GACnB,IAAI1E,EAAIkjD,EACR,MAAO,CACH7nD,OAAAA,EAAQqJ,OAAAA,EAAQwtB,IAAKh8B,GAAuBC,KAAM4xD,IAA6B7E,EAAKtsD,GAAuBT,KAAM4xD,GAA4B,KAAM/nD,EAAKkjD,IAAMA,GAAK,KAAMljD,GAAK0pD,QAAS,OAO/L11D,WAAWqH,EAAQqJ,GAEf,MAAM,IAAIpP,MAAM,iCAEpBtB,gBAAgB00B,EAAU,GACtB,MAAMia,QAAgBxsC,KAAK6qC,aACrB2oB,QAAiBxzD,KAAKuxD,KAAK,eAAgB,IAEjD,GAAyB,iBAAb,EAAuB,CAC/B,GAAIh/B,EAAUihC,EAASt0D,OACnB,MAAM,IAAIC,MAAM,mBAEpB,OAAO,IAAIozD,GAAcvyD,KAAMwzD,EAASjhC,IAG5CA,EAAUia,EAAQ1B,UAAUvY,QAAQA,GACpC,IAAK,MAAMkhC,KAAWD,EAClB,GAAIhnB,EAAQ1B,UAAUvY,QAAQkhC,KAAaA,EACvC,OAAO,IAAIlB,GAAcvyD,KAAMyzD,GAGvC,MAAM,IAAIt0D,MAAM,mBAIpBtB,uBACI,OAAOqoD,GAAQ/6C,KAAKlE,GAAOtB,gBAAgB3F,KAAKguD,SAAS,CAAE9oD,OAAQ,cAEvEmoD,eAAeF,GAEX,MAAiB,YAAbA,EAAIvuD,KACG,IAAI+yD,GAA0B3xD,MAExB,UAAbmtD,EAAIvuD,KACG,IAAI6yD,GAAwBzxD,KAAMmtD,EAAIpsD,QAIhC,WAAbosD,EAAIvuD,MAA2C,aAAtBuuD,EAAIpsD,OAAO8gD,OAC7B,IAAIuI,GAAoB,UAE5B/7C,MAAMg/C,eAAeF,GAEhCwF,kBAAkBt+B,GACd,MAAM3tB,EAAS,GAuBf,MArBA,CAAC,UAAW,WAAY,WAAY,OAAQ,eAAgB,uBAAwB,QAAS,SAASkB,SAASpI,IAC3G,GAAe,MAAX60B,EAAG70B,GACH,OAEJ,IAAIk0D,EAASl0D,EACD,aAARA,IACAk0D,EAAS,OAEbhtD,EAAOgtD,GAAUn+C,GAAS8e,EAAG70B,OAGjC,CAAC,OAAQ,KAAM,QAAQoI,SAASpI,IACb,MAAX60B,EAAG70B,KAGPkH,EAAOlH,GAAO6V,GAAQgf,EAAG70B,QAGzB60B,EAAGorB,aACH/4C,EAAmB,WAAIu3C,GAAc5pB,EAAGorB,aAErC/4C,EAEXitD,cAAcztB,GACV,OAAQA,EAAIhhC,QACR,IAAK,UACD,MAAO,CAAEA,OAAQ,cAAeU,KAAM,IAC1C,IAAK,iBACD,MAAO,CAAEV,OAAQ,kBAAmBU,KAAM,IAC9C,IAAK,cACD,MAAO,CAAEV,OAAQ,eAAgBU,KAAM,IAC3C,IAAK,aACD,MAAO,CACHV,OAAQ,iBACRU,KAAM,CAACssD,GAAahsB,EAAI3T,SAAU2T,EAAIsd,WAE9C,IAAK,sBACD,MAAO,CACHt+C,OAAQ,0BACRU,KAAM,CAACssD,GAAahsB,EAAI3T,SAAU2T,EAAIsd,WAE9C,IAAK,UACD,MAAO,CACHt+C,OAAQ,cACRU,KAAM,CAACssD,GAAahsB,EAAI3T,SAAU2T,EAAIsd,WAE9C,IAAK,eACD,MAAO,CACHt+C,OAAQ,mBACRU,KAAM,CACFssD,GAAahsB,EAAI3T,SAChB,KAAO2T,EAAIud,SAAS35C,SAAS,IAC9Bo8B,EAAIsd,WAGhB,IAAK,kBACD,MAAO,CACHt+C,OAAQ,yBACRU,KAAM,CAACsgC,EAAI0tB,oBAEnB,IAAK,WACD,GAAI,aAAc1tB,EACd,MAAO,CACHhhC,OAAQ,uBACRU,KAAM,CAACsgC,EAAIsd,WAAYtd,EAAIwoB,sBAG9B,GAAI,cAAexoB,EACpB,MAAO,CACHhhC,OAAQ,qBACRU,KAAM,CAACsgC,EAAI8b,YAAa9b,EAAIwoB,sBAGpC,MACJ,IAAK,iBACD,MAAO,CACHxpD,OAAQ,2BACRU,KAAM,CAACsgC,EAAI7qB,OAEnB,IAAK,wBACD,MAAO,CACHnW,OAAQ,4BACRU,KAAM,CAACsgC,EAAI7qB,OAEnB,IAAK,OACD,MAAO,CACHnW,OAAQ,WACRU,KAAM,CAAC5F,KAAK2yD,kBAAkBzsB,EAAIpD,aAAcoD,EAAIsd,WAE5D,IAAK,cACD,MAAO,CACHt+C,OAAQ,kBACRU,KAAM,CAAC5F,KAAK2yD,kBAAkBzsB,EAAIpD,eAG1C,IAAK,UASD,OARIoD,EAAInlC,QAAgC,MAAtBmlC,EAAInlC,OAAOwxB,UACrBxlB,MAAMN,QAAQy5B,EAAInlC,OAAOwxB,SACzB2T,EAAInlC,OAAOwxB,QAAU2T,EAAInlC,OAAOwxB,QAAQn0B,IAAI8zD,IAG5ChsB,EAAInlC,OAAOwxB,QAAU2/B,GAAahsB,EAAInlC,OAAOwxB,UAG9C,CAAErtB,OAAQ,cAAeU,KAAM,CAACsgC,EAAInlC,SAEnD,OAAO,KAEX8yD,YAAY3uD,EAAQU,EAAMtE,GACtB,GAAe,aAAX4D,EAAuB,CACvB,MAAMwB,EAASotD,GAAYxyD,GAC3B,OAAIoF,EAGOO,GAAOzD,UAAU,0CAA2C,iBAAkB,CACjFqR,KAAMnO,EAAOmO,KACbiuB,YAAal9B,EAAK,KAGnBqB,GAAOzD,UAAU,2CAA4C,iBAAkB,CAClFqR,KAAM,KAAMiuB,YAAal9B,EAAK,GAAI3D,KAAM,CAAEX,MAAAA,KAKlD,MAAMmC,EAAUE,KAAKC,UA8K7B,SAAwB7F,GACpB,MAAM2I,EAAS,GAEf,OADAqtD,GAAgBh2D,EAAO2I,GAChBA,EAjL4BstD,CAAe1yD,IAC9C,OAAImC,EAAQgD,MAAM,iDACPQ,GAAOzD,UAAU,oDAAqD,qBAAsB,CAC/Fs/B,YAAal9B,EAAK,KAGtBnC,EAAQgD,MAAM,UAAYhD,EAAQgD,MAAM,WACjCQ,GAAOzD,UAAU,8BAA+B,gBAAiB,CACpEs/B,YAAal9B,EAAK,KAItBnC,EAAQgD,MAAM,4BAA8BhD,EAAQgD,MAAM,eACnDQ,GAAOzD,UAAU,0BAA2B,0BAA2B,CAC1Es/B,YAAal9B,EAAK,KAGtBnC,EAAQgD,MAAM,yBACPQ,GAAOzD,UAAU,gDAAiD,wBAAyB,CAC9FkB,UAAWQ,EAAQjD,KAAM,CAAE6gC,YAAal9B,EAAK,MAGtC,gBAAXV,GAA4BzB,EAAQgD,MAAM,gFACnCQ,GAAOzD,UAAU,4EAA6E,0BAA2B,CAC5Hs/B,YAAal9B,EAAK,KAGnBtE,EAEXzD,eAAeqoC,GAGX,GAAmB,SAAfA,EAAIhhC,QAAoC,gBAAfghC,EAAIhhC,OAA0B,CACvD,IAAImvB,EAAK6R,EAAIpD,YACb,GAAIzO,GAAiB,MAAXA,EAAGz1B,MAAgBqI,GAAOtB,UAAU0uB,EAAGz1B,OAEtB,MAAnBy1B,EAAGmrB,cAAmD,MAA3BnrB,EAAGkrB,qBAA8B,CAC5D,MAAM0U,QAAgBj0D,KAAKwyD,aACC,MAAxByB,EAAQzU,cAAwD,MAAhCyU,EAAQ1U,uBAExCrZ,EAAMjoC,OAAOoN,OAAO,GAAI66B,EAAK,CACzBpD,YAAa7kC,OAAOoN,OAAO,GAAIgpB,EAAI,CAAEz1B,UAAMc,QAM/D,MAAMwlC,EAAUllC,KAAK2zD,cAAcztB,GACnC,GAAe,MAAXhB,EAAiB,CACjBllC,KAAK4oD,KAAK,QAAS,CAAEhqD,KAAM,cAAesmC,QAAAA,IAC1C,IACI,MAAMx+B,QAAe1G,KAAKuxD,KAAKrsB,EAAQhgC,OAAQggC,EAAQt/B,MAGvD,OADA5F,KAAK4oD,KAAK,QAAS,CAAEhqD,KAAM,cAAe8H,OAAAA,IACnCA,EAEX,MAAOpF,GAEH,MADAtB,KAAK4oD,KAAK,QAAS,CAAEhqD,KAAM,WAAY0C,MAAAA,IACjCtB,KAAK6zD,YAAY3uB,EAAQhgC,OAAQggC,EAAQt/B,KAAMtE,IAG7D,OAAO+M,MAAM2/C,SAAS9nB,IAG9B0rB,GAA6B,IAAInwD,QAAWowD,GAA8B,IAAIpwD,QACvE,MAAMyyD,WAAwBf,GACjCvyD,YAAYylC,EAAKmG,GACF,MAAPnG,IACAA,EAAM,yBAEVh4B,MAAMm+B,GACNslB,GAAyBtxD,IAAIR,UAAM,GACnC+xD,GAAiCvxD,IAAIR,UAAM,GACtB,iBAAT,EACRD,GAAuBC,KAAM8xD,GAA0B,CAAE5sB,QAAS,IAAI8B,GAAaX,IAAQ,MAG3FtmC,GAAuBC,KAAM8xD,GAA0B7zD,OAAOoN,OAAO,GAAIg7B,GAAM,KAC/E5lC,GAAuBT,KAAM8xD,GAA0B,KAAK5sB,QAAUzkC,GAAuBT,KAAM8xD,GAA0B,KAAK5sB,QAAQp8B,SAE9I/I,GAAuBC,KAAM+xD,GAAkC,IAAM,KAEzEl0D,WAAWqH,EAAQqJ,GA/dvB,IAAcxQ,EAAAA,EAgeQwQ,EAAdA,EA/dG5K,KAAK6I,MAAM7I,KAAKC,UAAU7F,IAie7B,MAAMiqC,EAAa/pC,OAAOoN,OAAO,GAAI5K,GAAuBT,KAAM8xD,GAA0B,MAC5F9pB,EAAW9C,QAAU8C,EAAW9C,QAAQp8B,QACxCk/B,EAAW9C,QAAQD,KAAOjlC,KAAKszD,eAAepuD,EAAQqJ,GACtD,MAAM62B,QAAiB2C,GAAUC,GACjC5C,EAASY,WACT,MAAMt/B,EAAS0+B,EAASC,SACxB,MAAI,UAAW3+B,EACJO,GAAOnD,WAAW,sBAAuB,gBAAiB,CAC7D4C,OAAAA,IAGDA,EAAOA,OAEd2hD,sBAAoB,OAAO5nD,GAAuBT,KAAM+xD,GAAkC,KAC1F1J,oBAAgBtqD,GAChB,IAAKwG,OAAOC,UAAUzG,IAAUA,EAAQ,EACpC,MAAM,IAAIoB,MAAM,oBAEpBY,GAAuBC,KAAM+xD,GAAkCh0D,EAAO,KACtEiC,KAAKktD,oBAAoBC,KAvdjC,SAAoBpvD,GAChB,OAAQA,GAA4C,iBAA3BA,EAAqB,iBAudlCo2D,CAAWhH,KACXA,EAAI9E,gBAAkB5nD,GAAuBT,KAAM+xD,GAAkC,UAKrGD,GAA2B,IAAIrwD,QAAWswD,GAAmC,IAAItwD,QAK1E,MAAM2yD,WAA8BF,GACvCtzD,YAAYylC,EAAKmG,GACbn+B,MAAMg4B,EAAKmG,GACXptC,EAAiBY,KAAM,CAAEwsC,QAAAA,IAE7B3uC,uBACI,OAAOmC,KAAKwsC,SAGpB,SAASsnB,GAAY/1D,GACjB,GAAa,MAATA,EACA,OAAO,KAGX,GAA+B,iBAAnBA,EAAa,SAAkBA,EAAM0F,QAAQgD,MAAM,aAAe+N,GAAYzW,EAAM8W,MAC5F,MAAO,CAAEpR,QAAS1F,EAAM0F,QAASoR,KAAM9W,EAAM8W,MAGjD,GAAuB,iBAAX,EAAqB,CAC7B,IAAK,MAAMrV,KAAOzB,EAAO,CACrB,MAAM2I,EAASotD,GAAY/1D,EAAMyB,IACjC,GAAIkH,EACA,OAAOA,EAGf,OAAO,KAGX,GAAuB,iBAAX,EACR,IACI,OAAOotD,GAAYnwD,KAAK6I,MAAMzO,IAElC,MAAOuD,IAEX,OAAO,KAEX,SAASyyD,GAAgBh2D,EAAO2I,GAC5B,GAAa,MAAT3I,EAAJ,CAQA,GAJ+B,iBAAnBA,EAAa,SACrB2I,EAAO/D,KAAK5E,EAAM0F,SAGC,iBAAX,EACR,IAAK,MAAMjE,KAAOzB,EACdg2D,GAAgBh2D,EAAMyB,GAAMkH,GAIpC,GAAuB,iBAAX,EACR,IACI,OAAOqtD,GAAgBpwD,KAAK6I,MAAMzO,GAAQ2I,GAE9C,MAAOpF,MC5kBf,MAAM+yD,GAAgB,mEAYf,MAAMC,WAAqBF,GAC9BxzD,YAAYgqD,EAAW,YAAa2J,GAChC,MAAM/nB,EAAU0Z,GAAQ/6C,KAAKy/C,GACf,MAAV2J,IACAA,EAASF,IAGbhmD,MADmBimD,GAAaE,cAAchoB,EAAS+nB,GACrC/nB,GAClBptC,EAAiBY,KAAM,CAAEu0D,OAAAA,IAEzBlmD,MAAMglD,YAAY,CAAEjB,SAAS,IAEjC9F,aAAa7uB,GACT,IACI,OAAO,IAAI62B,GAAa72B,EAASz9B,KAAKu0D,QAE1C,MAAOjzD,IACP,OAAO+M,MAAMi+C,aAAa7uB,GAE9Bx3B,qBAAqBumC,EAAS+nB,GACZ,MAAVA,IACAA,EAASF,IAEb,MAAMnvB,EAAU,IAAI8B,GAAa,WAlCzC,SAAiBlkC,GACb,OAAQA,GACJ,IAAK,YACD,MAAO,mBACX,IAAK,QACD,MAAO,uBACX,IAAK,WACD,MAAO,wBAEf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAWjB,GAyBlB2xD,CAAQjoB,EAAQ1pC,SAASyxD,KACtErvB,EAAQkC,WAAY,EAOpB,MAAO,CAAElC,QAAAA,EAASqD,cANI1qC,MAAOqnC,EAASE,EAAU6oB,KACxCsG,IAAWF,IACX7D,GAAoB,iBAEjB,IAIfkE,sBACI,OAAQ10D,KAAKu0D,SAAWF,IC9ChC,MAAMA,GAAgB,mCA4Bf,MAAMM,WAAwBP,GACjCxzD,YAAYgqD,EAAW,YAAa2J,GAChC,MAAM/nB,EAAU0Z,GAAQ/6C,KAAKy/C,GACf,MAAV2J,IACAA,EAASF,IAEbhmD,MAAMsmD,GAAgBH,cAAchoB,EAAS+nB,GAAS/nB,GACtDptC,EAAiBY,KAAM,CAAEu0D,OAAAA,IAE7BjI,aAAa7uB,GACT,IACI,OAAO,IAAIk3B,GAAgBl3B,EAASz9B,KAAKu0D,QAE7C,MAAOjzD,IACP,OAAO+M,MAAMi+C,aAAa7uB,GAE9Bi3B,sBACI,OAAQ10D,KAAKu0D,SAAWF,GAE5BpuD,qBAAqBumC,EAAS+nB,GACZ,MAAVA,IACAA,EAASF,IAEb,MAAMnvB,EAAU,IAAI8B,GAAa,WAlDzC,SAAiBlkC,GACb,OAAQA,GACJ,IAAK,YACD,MAAO,4BACX,IAAK,UACD,MAAO,4BACX,IAAK,UACD,MAAO,4BACX,IAAK,SACD,MAAO,2BACX,IAAK,QACD,MAAO,0BACX,IAAK,QACD,MAAO,gCACX,IAAK,WACD,MAAO,+BACX,IAAK,WACD,MAAO,4BACX,IAAK,mBACD,MAAO,4BACX,IAAK,WACD,MAAO,4BACX,IAAK,iBACD,MAAO,0BAEf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAWjB,GAyBlB2xD,CAAQjoB,EAAQ1pC,YAAYyxD,KACzErvB,EAAQkC,WAAY,EAOpB,MAAO,CAAElC,QAAAA,EAASqD,cANI1qC,MAAOqnC,EAASE,EAAU6oB,KACxCsG,IAAWF,IACX7D,GAAoB,YAEjB,KC5DZ,MAAMoE,WAA2BR,GACpCxzD,YAAYgqD,EAAW,aACnB,MAAMpe,EAAU0Z,GAAQ/6C,KAAKy/C,GAC7B,GAAqB,cAAjBpe,EAAQ1pC,KACR,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAW6mD,GAEvEv8C,MAAM,8BAAgCm+B,ICG9C,MAAM6nB,GAAgB,qCAChBQ,GAAoB,+BACnB,MAAMC,WAAwBzP,GACjCzkD,YAAYm0D,EAASC,GACjB3mD,MAAMwmD,IAENz1D,EAAiBY,KAAM,CAAE+0D,QAAAA,EAASC,gBAAAA,IAEtClsD,QACI,OAAO,IAAIgsD,GAAgB90D,KAAK+0D,QAAS/0D,KAAKg1D,kBAG/C,MAAMC,WAA0BtK,GACnC/pD,YAAYgqD,EAAU2J,GAClBlmD,QACA,MAAMm+B,EAAU0Z,GAAQ/6C,KAAKy/C,GAC7B,GAAc,MAAV2J,EAAgB,CAChB,MAAMtpB,EAASuB,EAAQE,UAAUmoB,IAE7BN,EADAtpB,EACSA,EAAO+pB,gBAGPX,GAGjBj1D,EAAiBY,KAAM,CAAEu0D,OAAAA,EAAQ/nB,QAAAA,IAEjCxsC,KAAKk1D,aAETA,aACI,MAAMjqB,EAASjrC,KAAKwsC,QAAQE,UAAUmoB,IACtC,GAAI5pB,EACA,OAAOA,EAAO8pB,QAElB,OAAQ/0D,KAAKwsC,QAAQ1pC,MACjB,IAAK,YACD,MAAO,2BACX,IAAK,UACD,MAAO,mCACX,IAAK,UACD,MAAO,mCACX,IAAK,QACD,MAAO,iCACX,IAAK,SACD,MAAO,kCAGf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAW/D,KAAKwsC,SAE5EvG,OAAOlsB,EAAQxL,GACX,MAAM4mD,EAAQl3D,OAAOD,KAAKuQ,GAAQhQ,QAAO,CAACC,EAAOgB,KAC7C,MAAMzB,EAAQwQ,EAAO/O,GAIrB,OAHa,MAATzB,IACAS,GAAS,IAAIgB,KAAOzB,KAEjBS,IACR,IACG+1D,EAAWv0D,KAAW,OAAI,WAAWA,KAAKu0D,SAAW,GAC3D,MAAO,GAAGv0D,KAAKk1D,2BAA2Bn7C,IAASo7C,IAAQZ,IAE/Da,aACI,MAAO,GAAGp1D,KAAKk1D,mBAEnBG,YAAYt7C,EAAQxL,GAGhB,OAFAA,EAAOwL,OAASA,EAChBxL,EAAO+mD,OAASt1D,KAAKu0D,OACdhmD,EAEX1Q,sBACI,OAAOmC,KAAKwsC,QAEhB3uC,YAAYkc,EAAQxL,EAAQgnD,GACxB,MAAMlvB,EAAOkvB,EAAOv1D,KAAKo1D,aAAep1D,KAAKimC,OAAOlsB,EAAQxL,GACtDilB,EAAW+hC,EAAOv1D,KAAKq1D,YAAYt7C,EAAQxL,GAAU,KAQrD22B,EAAU,IAAI8B,GAAaX,GAC3B2B,EAAa,CACf9C,QAAAA,EACAmD,qBAAsB,IACtBI,gBAAiB5qC,MAAOqnC,EAASE,KAC7B,MAAM1+B,EAAS0+B,EAASU,UAAYniC,KAAK6I,MAAMqtB,GAAauL,EAASH,OAAS,GACxEW,GAAwC,iBAAnBl/B,EAAa,OAAkBA,EAAOA,OAAS,IAAIN,cAAcvB,QAAQ,eAAiB,EAYrH,MAXe,UAAXkV,EAEIrT,GAA2B,GAAjBA,EAAOmgC,QAAiC,SAAlBngC,EAAOjD,SAAsBmiC,GAC7DR,EAASM,mBAAmBh/B,EAAOA,QAInCk/B,GACAR,EAASM,mBAAmBh/B,EAAOA,QAGpC0+B,IAGX5R,IACA0R,EAAQmC,UAAU,eAAgB,oDAClCnC,EAAQD,KAAOhnC,OAAOD,KAAKw1B,GAASp1B,KAAKC,GAAM,GAAGA,KAAKm1B,EAAQn1B,OAAMwF,KAAK,MAE9E,MAAMuhC,QAAiB2C,GAAUC,GAEjC,GADA5C,EAASY,YACJZ,EAASU,UACV,MAAM,IAAI3mC,MAUd,MAAMuH,EAAS/C,KAAK6I,MAAMqtB,GAAauL,EAASH,OAChD,GAAe,UAAXlrB,EAAoB,CACpB,GAAsB,OAAlBrT,EAAO6sD,QAAkB,CAEzB,MAAMjyD,EAAQ,IAAInC,MAAM,oBAExB,MADAmC,EAAMoF,OAAS/C,KAAKC,UAAU8C,GACxBpF,EAEV,GAAIoF,EAAOpF,MAAO,CAEd,MAAMA,EAAQ,IAAInC,MAAMuH,EAAOpF,MAAMmC,SAAW,iBAOhD,MANIiD,EAAOpF,MAAMC,OACbD,EAAMC,KAAOmF,EAAOpF,MAAMC,MAE1BmF,EAAOpF,MAAMuT,OACbvT,EAAMuT,KAAOnO,EAAOpF,MAAMuT,MAExBvT,EAEV,OAAOoF,EAAOA,OAId,GAAqB,GAAjBA,EAAOmgC,SAAmC,qBAAnBngC,EAAOjD,SAAqD,0BAAnBiD,EAAOjD,SACvE,OAAOiD,EAAOA,OAElB,GAAqB,GAAjBA,EAAOmgC,QAAiC,MAAlBngC,EAAOjD,QAAiB,CAC9C,MAAMnC,EAAQ,IAAInC,MAAM,oBAKxB,MAJAmC,EAAMoF,OAAS/C,KAAKC,UAAU8C,GAIxBpF,EAEV,OAAOoF,EAAOA,OAItB8uD,wBAAwB1yB,GACpB,MAAMp8B,EAAS,GACf,IAAK,IAAIlH,KAAOsjC,EAAa,CACzB,GAAwB,MAApBA,EAAYtjC,GACZ,SAEJ,IAAIzB,EAAQ+kC,EAAYtjC,GACZ,SAARA,GAA4B,IAAVzB,IAQlBA,EAJA,CAAEa,MAAM,EAAMqgD,UAAU,EAAMD,UAAU,EAAMyW,aAAa,EAAMlW,sBAAsB,EAAMhrB,OAAO,EAAMx2B,OAAO,GAAOyB,GAChH+V,GAASF,GAAQtX,IAEZ,eAARyB,EACG,IAAMQ,KAAKwsC,QAAQ1B,UAAU2U,WAAW1hD,GAAOK,KAAKoC,GACjD,aAAaA,EAAI+xB,0BAA0B/xB,EAAIu9C,YAAYl6C,KAAK,cACxEA,KAAK,KAAO,IAGPwR,GAAQtX,GAEpB2I,EAAOlH,GAAOzB,GAElB,OAAO2I,EAEXgvD,YAAYxvB,EAAK5kC,EAAOwhC,GAoEpB,MAAMxhC,EAEVzD,uBACI,OAAOmC,KAAKwsC,QAEhB3uC,eAAeqoC,GACX,OAAQA,EAAIhhC,QACR,IAAK,UACD,OAAOlF,KAAKwsC,QAAQ/O,QACxB,IAAK,iBACD,OAAOz9B,KAAK2mC,MAAM,QAAS,CAAEgvB,OAAQ,oBACzC,IAAK,cACD,OAAO31D,KAAK2mC,MAAM,QAAS,CAAEgvB,OAAQ,iBACzC,IAAK,aAED,OAAO31D,KAAK2mC,MAAM,UAAW,CACzBgvB,OAAQ,UACRpjC,QAAS2T,EAAI3T,QACbi4B,IAAKtkB,EAAIsd,WAEjB,IAAK,sBACD,OAAOxjD,KAAK2mC,MAAM,QAAS,CACvBgvB,OAAQ,0BACRpjC,QAAS2T,EAAI3T,QACbi4B,IAAKtkB,EAAIsd,WAEjB,IAAK,UACD,OAAOxjD,KAAK2mC,MAAM,QAAS,CACvBgvB,OAAQ,cACRpjC,QAAS2T,EAAI3T,QACbi4B,IAAKtkB,EAAIsd,WAEjB,IAAK,eACD,OAAOxjD,KAAK2mC,MAAM,QAAS,CACvBgvB,OAAQ,mBACRpjC,QAAS2T,EAAI3T,QACbkxB,SAAUvd,EAAIud,SACd+G,IAAKtkB,EAAIsd,WAEjB,IAAK,kBACD,OAAOxjD,KAAK2mC,MAAM,QAAS,CACvBgvB,OAAQ,yBACR3lD,IAAKk2B,EAAI0tB,oBACV,GAAMrpB,OAAOjpC,GACLtB,KAAK01D,YAAYxvB,EAAK5kC,EAAO4kC,EAAI0tB,qBAEhD,IAAK,WACD,MAAI,aAAc1tB,EACPlmC,KAAK2mC,MAAM,QAAS,CACvBgvB,OAAQ,uBACRnL,IAAKtkB,EAAIsd,SACTgB,QAAUte,EAAIwoB,oBAAsB,OAAS,UAG9CznD,GAAOnD,WAAW,mDAAoD,wBAAyB,CAClGY,UAAW,wBAEnB,IAAK,iBACD,OAAO1E,KAAK2mC,MAAM,QAAS,CACvBgvB,OAAQ,2BACRC,OAAQ1vB,EAAI7qB,OAEpB,IAAK,wBACD,OAAOrb,KAAK2mC,MAAM,QAAS,CACvBgvB,OAAQ,4BACRC,OAAQ1vB,EAAI7qB,OAEpB,IAAK,OAAQ,CACT,GAAqB,WAAjB6qB,EAAIsd,SACJ,MAAM,IAAIrkD,MAAM,wDAEpB,MAAM02D,EAAW71D,KAAKw1D,wBAAwBtvB,EAAIpD,aAClD+yB,EAAS97C,OAAS,QAClB87C,EAASF,OAAS,WAClB,IACI,aAAa31D,KAAK2mC,MAAM,QAASkvB,GAAU,GAE/C,MAAOv0D,GACH,OAAOtB,KAAK01D,YAAYxvB,EAAK5kC,EAAO4kC,EAAIpD,cAGhD,IAAK,cAAe,CAChB,MAAM+yB,EAAW71D,KAAKw1D,wBAAwBtvB,EAAIpD,aAClD+yB,EAAS97C,OAAS,QAClB87C,EAASF,OAAS,kBAClB,IACI,aAAa31D,KAAK2mC,MAAM,QAASkvB,GAAU,GAE/C,MAAOv0D,GACH,OAAOtB,KAAK01D,YAAYxvB,EAAK5kC,EAAO4kC,EAAIpD,eA2DpD,OAAOz0B,MAAM2/C,SAAS9nB,GAE1BroC,mBACI,OAAOmC,KAAKwsC,QAEhB3uC,sBACI,MAA0B,cAAtBmC,KAAKwsC,QAAQ1pC,KACN,EAEJuQ,kBAAkBrT,KAAK2mC,MAAM,QAAS,CAAEgvB,OAAQ,cAAeG,QAE1EpB,sBACI,MAAMzpB,EAASjrC,KAAKwsC,QAAQE,UAAUmoB,IACtC,OAAI5pB,EACQA,EAAO+pB,kBAAoBh1D,KAAKu0D,OAEpCF,KAAkBr0D,KAAKu0D,QCravC,MAAMwB,GAAmB,mCA4BlB,MAAMC,WAAuB5B,GAChCxzD,YAAYgqD,EAAW,YAAaqL,EAAWC,GAC3C,MAAM1pB,EAAU0Z,GAAQ/6C,KAAKy/C,GACZ,MAAbqL,IACAA,EAAYF,IAEK,MAAjBG,IACAA,EAAgB,MAGpB7nD,MADmB2nD,GAAexB,cAAchoB,EAASypB,EAAWC,GAClD1pB,GAClBptC,EAAiBY,KAAM,CAAEi2D,UAAAA,EAAWC,cAAAA,IAExC5J,aAAa7uB,GACT,IACI,OAAO,IAAIu4B,GAAev4B,EAASz9B,KAAKi2D,UAAWj2D,KAAKk2D,eAE5D,MAAO50D,IACP,OAAO+M,MAAMi+C,aAAa7uB,GAE9Bx3B,qBAAqBumC,EAASypB,EAAWC,GACpB,MAAbD,IACAA,EAAYF,IAEK,MAAjBG,IACAA,EAAgB,MAEpB,MAAMhxB,EAAU,IAAI8B,GAAa,WAtDzC,SAAiBlkC,GACb,OAAQA,GACJ,IAAK,YACD,MAAO,oBACX,IAAK,UACD,MAAO,oBACX,IAAK,UACD,MAAO,oBACX,IAAK,QACD,MAAO,kBACX,IAAK,SACD,MAAO,mBACX,IAAK,QACD,MAAO,4BACX,IAAK,WACD,MAAO,2BACX,IAAK,WACD,MAAO,6BACX,IAAK,iBACD,MAAO,2BACX,IAAK,WACD,MAAO,6BACX,IAAK,mBACD,MAAO,6BAEf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAWjB,GA6BlB2xD,CAAQjoB,EAAQ1pC,YAAYmzD,KACzE/wB,EAAQkC,WAAY,EAChB8uB,GACAhxB,EAAQqC,eAAe,GAAI2uB,GAQ/B,MAAO,CAAEhxB,QAAAA,EAASqD,cANI1qC,MAAOqnC,EAASE,EAAU6oB,KACxCgI,IAAcF,IACdvF,GAAoB,mBAEjB,IAIfkE,sBACI,OAAQ10D,KAAKi2D,YAAcF,ICpEnC,MAAMI,GAAgB,CAClBC,UAAW,2BACXC,QAAS,2BACTC,QAAS,2BACTC,OAAQ,4BAeZ,SAASC,GAAgBhqB,EAASiqB,EAAQC,EAAsBC,GAC5DA,IAAiBA,EACjB,IAAIC,GAAY,EACZC,EAAgBJ,EAgBpB,OAfqB,MAAjBI,GACAA,EAAgBV,GAAc3pB,EAAQ1pC,MACjB,MAAjB+zD,GACA5vD,GAAOlD,mBAAmB,iDAAkD,gBAAiB0yD,GAEjGE,GAAe,EACfC,GAAY,GAEPC,IAAkBV,GAAc3pB,EAAQ1pC,QAC7C6zD,GAAe,EACfC,GAAY,GAEY,MAAxBF,IACAA,EAAuB,MAEpB,CAAEG,cAAAA,EAAeH,qBAAAA,EAAsBE,UAAAA,EAAWD,aAAAA,GAEtD,MAAMG,WAAuB1C,GAChCxzD,YAAYgqD,EAAW,YAAa6L,EAAQM,EAAYC,GACpD,MAAMxqB,EAAU0Z,GAAQ/6C,KAAKy/C,IACvBiM,cAAEA,EAAaH,qBAAEA,EAAoBC,aAAEA,GAAiBH,GAAgBhqB,EAASiqB,EAAQM,EAAYC,GAE3G3oD,MADmByoD,GAAetC,cAAchoB,EAASqqB,EAAeH,EAAsBC,GAC5EnqB,GAClBptC,EAAiBY,KAAM,CAAE62D,cAAAA,EAAeH,qBAAAA,EAAsBC,aAAAA,IAElE1wD,qBAAqBumC,EAASiqB,EAAQM,EAAYC,GAC9C,MAAMH,cAAEA,EAAaH,qBAAEA,EAAoBE,UAAEA,EAASD,aAAEA,GAAiBH,GAAgBhqB,EAASiqB,EAAQM,EAAYC,GACtH,IAAI3wB,EAAM,WA5ClB,SAAiBvjC,GACb,OAAQA,GACJ,IAAK,YACD,MAAO,mCACX,IAAK,UACD,MAAO,mCACX,IAAK,UACD,MAAO,mCACX,IAAK,SACD,MAAO,kCAEf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAWjB,GAiCzC2xD,CAAQjoB,EAAQ1pC,YAClC6zD,IACAtwB,GAAO,OAEXA,GAAOwwB,EACP,MAAM3xB,EAAU,IAAI8B,GAAaX,GACjCnB,EAAQkC,WAAY,EAChBsvB,GACAxxB,EAAQqC,eAAe,GAAImvB,GAQ/B,MAAO,CAAExxB,QAAAA,EAASqD,cANI1qC,MAAOqnC,EAASE,EAAU6oB,KACxC2I,GACApG,GAAoB,mBAEjB,IAIfkE,sBACI,OAAQ10D,KAAK62D,gBAAkBV,GAAcn2D,KAAKwsC,QAAQ1pC,OC5ElE,IAWIm0D,GAA6BC,GAA2BC,GAA0BC,GAAsCC,GAAiCC,GAA6BC,GAA+BC,GAA+BC,GAXpP13D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IASxF,MAAMgQ,GAAOxK,OAAO,KACdmnC,GAAOnnC,OAAO,KAIpB,SAASoiC,KAAY,OAAO,IAAKptB,MAAQotB,UAEzC,MAAM6vB,GAAgB,CAAEC,aAAc,IAAKC,SAAU,EAAGC,OAAQ,GAC1DC,GAAe,CACjB7V,aAAc,EAAG8V,SAAU,EAAGC,cAAe,EAAGC,eAAgB,EAChEC,WAAY,EAAGC,kBAAmB,EAAGC,gBAAiB,EAAGC,MAAO,EAChEzN,SAAU,KAAM0N,cAAe,KAAMC,WAAY,GAmBrD,SAASh2D,GAAUiqC,EAASzuC,EAAOmoC,GAC/B,OAAQA,EAAIhhC,QACR,IAAK,UAIL,IAAK,cAEL,IAAK,aAmBL,IAAK,cACD,OAAO+B,GAAOtB,UAAU5H,GAAO+L,WAxBnC,IAAK,iBAML,IAAK,sBACD,OAAO7C,GAAOzB,UAAUzH,GAAO+L,WACnC,IAAK,UAEL,IAAK,eAWL,IAAK,OACD,OAAOuL,GAAQtX,GAVnB,IAAK,WACD,OAAImoC,EAAIwoB,oBACG/qD,KAAKC,UAAU4oC,EAAQ1B,UAAUyZ,sBAAsBxmD,IAE3D4F,KAAKC,UAAU4oC,EAAQ1B,UAAU/X,MAAMh1B,IAClD,IAAK,iBACD,OAAO4F,KAAKC,UAAU4oC,EAAQ1B,UAAUwZ,oBAAoBvmD,IAChE,IAAK,wBACD,OAAO4F,KAAKC,UAAU4oC,EAAQ1B,UAAU2Z,QAAQ1mD,IAKpD,IAAK,UACD,OAAO4F,KAAKC,UAAU7F,EAAMK,KAAKK,GAAM+tC,EAAQ1B,UAAU/jC,IAAItI,MAErE,OAAOwI,GAAOnD,WAAW,qBAAsB,wBAAyB,CACpEY,UAAW,YAAYf,KAAKC,UAAUsiC,EAAIhhC,aAKlD,SAASszD,GAAYC,EAAQ/G,GACzB,MAAMgH,EAAQ,IAAIrhD,IAClB,IAAK,MAAM3Q,OAAEA,EAAMiyD,OAAEA,EAAMd,OAAEA,KAAYnG,EAAS,CAC9C,MAAM3yD,EAAI25D,EAAMh4D,IAAIi4D,IAAW,CAAEjyD,OAAAA,EAAQmxD,OAAQ,GACjD94D,EAAE84D,QAAUA,EACZa,EAAMl4D,IAAIm4D,EAAQ55D,GAEtB,IACI65D,EADAC,EAAa,EAEjB,IAAK,MAAMhB,OAAEA,EAAMnxD,OAAEA,KAAYgyD,EAAMp5D,SAC/Bu4D,GAAUY,GAAUZ,EAASgB,IAC7BA,EAAahB,EACbe,EAAalyD,GAGrB,OAAOkyD,EAQX,SAASE,GAAUpH,GAEf,MAAMpyD,EAASoyD,EAAQtzD,KAAK4xB,GAAMvqB,OAAOuqB,EAAEtpB,UAC3CpH,EAAO0/B,MAAK,CAAC9sB,EAAGC,IAAQD,EAAIC,GAAM,EAAKA,EAAID,EAAK,EAAI,IACpD,MAAM6mD,EAAMz5D,EAAOJ,OAAS,EAE5B,OAAII,EAAOJ,OAAS,EACTI,EAAOy5D,IAGVz5D,EAAOy5D,EAAM,GAAKz5D,EAAOy5D,GAAO9oD,IAAQ28B,GA+B7C,MAAMosB,WAAyBrO,GAClC/pD,YAAYq4D,EAAWzsB,GACnBn+B,MAAMm+B,GACNyqB,GAA4B1zD,IAAIvD,MAChCk3D,GAA0B12D,IAAIR,UAAM,GACpCm3D,GAAyB32D,IAAIR,UAAM,GACnCo3D,GAAqC52D,IAAIR,UAAM,GAC/CD,GAAuBC,KAAMk3D,GAA2B+B,EAAU76D,KAAKoQ,GAC/DA,aAAam8C,GACN1sD,OAAOoN,OAAO,CAAEi/B,SAAU97B,GAAKkpD,GAAeI,IAG9C75D,OAAOoN,OAAO,GAAIqsD,GAAelpD,EAAGspD,MAE/C,KACJ/3D,GAAuBC,KAAMm3D,IAA2B,EAAG,KAC3Dp3D,GAAuBC,KAAMo3D,GAAsC,KAAM,KACzEp3D,KAAKy4D,OAAS,EACdz4D,KAAKk5D,YAAc,EACnBl5D,KAAKm5D,aAAe,EAChBn5D,KAAKy4D,OAASh4D,GAAuBT,KAAMk3D,GAA2B,KAAK34D,QAAO,CAAC2T,EAAG3F,IAAO2F,EAAI3F,EAAEsrD,QAAS,IAC5G5wD,GAAOlD,mBAAmB,gCAAiC,SAAU/D,KAAKy4D,QAI9EW,sBACA,OAAO34D,GAAuBT,KAAMk3D,GAA2B,KAAKruD,QAExEhL,uBACI,OAAOqoD,GAAQ/6C,KAAKlE,GAAOtB,gBAAgB3F,KAAKguD,SAAS,CAAE9oD,OAAQ,cAAe2C,SAEtFhK,eAAeqoC,SACLzlC,GAAuBT,KAAMi3D,GAA6B,IAAKM,IAA+Bh3D,KAAKP,MAEzG,MAAMq5D,EAAU,IAAI1xD,IACpB,IAAK,IAAI1I,EAAI,EAAGA,EAAIe,KAAKy4D,OAAQx5D,IAC7BwB,GAAuBT,KAAMi3D,GAA6B,IAAKK,IAA6B/2D,KAAKP,KAAMq5D,EAASnzB,GAEpH,MAAMx/B,EAASjG,GAAuBT,KAAMi3D,GAA6B,IAAKQ,IAAiCl3D,KAAKP,KAAMq5D,EAASnzB,GACnI,IAAK,MAAMozB,KAAUD,EACjBC,EAAO9zB,MAAO,EAElB,OAAO9+B,GAGfwwD,GAA4B,IAAIz1D,QAAW01D,GAA2B,IAAI11D,QAAW21D,GAAuC,IAAI31D,QAAWw1D,GAA8B,IAAI3wD,QAAW+wD,GAAkC,SAAyCkC,GAE/P,MAAMC,EAAa/4D,GAAuBT,KAAMk3D,GAA2B,KAAKruD,SCrM7E,SAAiB8vC,GACpB,IAAK,IAAI15C,EAAI05C,EAAMz5C,OAAS,EAAGD,EAAI,EAAGA,IAAK,CACvC,MAAM6oB,EAAI9O,KAAKxG,MAAMwG,KAAK6vB,UAAY5pC,EAAI,IACpCmd,EAAMu8B,EAAM15C,GAClB05C,EAAM15C,GAAK05C,EAAM7wB,GACjB6wB,EAAM7wB,GAAK1L,GDiMfq9C,CAAQD,GACRA,EAAWx6B,MAAK,CAAC9sB,EAAGC,IAAOA,EAAEylD,SAAW1lD,EAAE0lD,WAC1C,IAAK,MAAM8B,KAAUF,EACjB,IAAiC,IAA7BD,EAAQ10D,QAAQ60D,GAChB,OAAOA,EAGf,OAAO,MACRpC,GAA8B,SAAqC+B,EAASnzB,GAC3E,MAAMwzB,EAASj5D,GAAuBT,KAAMi3D,GAA6B,IAAKI,IAAiC92D,KAAKP,KAAM+M,MAAM5B,KAAKkuD,GAASj7D,KAAK4xB,GAAMA,EAAE0pC,UAC3J,GAAc,MAAVA,EACA,OAAO,KAEX,MAAMhzD,EAAS,GACT4yD,EAAS,CACXI,OAAAA,EAAQhzD,OAAAA,EAAQizD,SAAS,EAAOn0B,MAAM,EACtCuoB,QAAS,KAAM6L,QAAS,MAEtBl/C,EAAMmtB,KAuBZ,OAtBAyxB,EAAOvL,QAAU,WACb,IACI2L,EAAO3B,WACPrxD,EAAOA,aAAegzD,EAAOpvB,SAAS0jB,SAAS9nB,GAEnD,MAAO5kC,GACHo4D,EAAOzB,iBACPvxD,EAAOpF,MAAQA,EAEfg4D,EAAO9zB,MACPk0B,EAAO1B,gBAEX,MAAM6B,EAAMhyB,KAAYntB,EACxBg/C,EAAOnB,YAAcsB,EACrBH,EAAOtB,gBAAkB,IAAOsB,EAAOtB,gBAAkB,IAAOyB,EAChEP,EAAOvL,QAAU,MAfJ,GAiBjBuL,EAAOM,QAAU,WAtNrB,IAAehyB,QAAAA,EAuNK8xB,EAAO/B,aAtNhB,IAAIz5D,SAASI,IAAc6b,WAAW7b,EAASspC,OAuNlD0xB,EAAOM,QAAU,MAFJ,GAIjBP,EAAQ91D,IAAI+1D,GACLA,GACR/B,GAGH15D,iBACI,IAAIi8D,EAAcr5D,GAAuBT,KAAMo3D,GAAsC,KACrF,IAAK0C,EAAa,CACd,MAAM9sD,EAAW,GACjBvM,GAAuBT,KAAMk3D,GAA2B,KAAKtvD,SAAS8xD,IAClE1sD,EAASrK,KAzNrB9E,eAA2B67D,EAAQzX,GAC/B,KAAOyX,EAAOzX,YAAc,GAAKyX,EAAOzX,YAAcA,GAC7CyX,EAAOpB,gBACRoB,EAAOpB,cAAgB,WACnB,MAAMrW,QAAoByX,EAAOpvB,SAAS0Y,iBACtCf,EAAcyX,EAAOzX,cACrByX,EAAOzX,YAAcA,GAEzByX,EAAOpB,cAAgB,MALJ,UAQrBoB,EAAOpB,cACboB,EAAOxB,YA6MW6B,CAAYL,EAAQ,IAClC1sD,EAASrK,KAAK,WACV+2D,EAAO9O,eAAiB8O,EAAOpvB,SAASO,cAD9B,OAIlB9qC,GAAuBC,KAAMo3D,GAAsC0C,EAAc,iBAEvE57D,QAAQC,IAAI6O,GAElB,IAAIywB,EAAU,KACd,IAAK,MAAMi8B,KAAUj5D,GAAuBT,KAAMk3D,GAA2B,KAAM,CAC/E,MAAM1qB,EAAWktB,EAAe,SACjB,MAAXj8B,EACAA,EAAU+O,EAAQ/O,QAEb+O,EAAQ/O,UAAYA,GACzBx2B,GAAOnD,WAAW,6CAA8C,wBAAyB,CACrFY,UAAW,2BAZsD,GAgB3E,WAEJo1D,GACPtC,GAAgC35D,eAA6Cw7D,EAASnzB,GAErF,MAAMwrB,EAAU,GAChB,IAAK,MAAM4H,KAAUD,EACjB,GAAI,WAAYC,EAAO5yD,OAAQ,CAC3B,MAAMA,EAAS4yD,EAAO5yD,OAAOA,OAC7BgrD,EAAQ/uD,KAAK,CACT+D,OAAAA,EACAiyD,OAAQp2D,GAAW+2D,EAAOI,OAAe,SAAGhzD,EAAQw/B,GACpD2xB,OAAQyB,EAAOI,OAAO7B,SAKlC,KAAInG,EAAQnzD,QAAO,CAAC2T,EAAG8d,IAAO9d,EAAI8d,EAAE6nC,QAAS,GAAK73D,KAAKy4D,QAAvD,CAGA,OAAQvyB,EAAIhhC,QACR,IAAK,iBAAkB,CAEnB,IAAqE,IAAjEzE,GAAuBT,KAAMm3D,GAA0B,KAAa,CACpE,MAAM6C,EAAShhD,KAAKC,KAAKhS,GAAOzB,UAAUszD,GAAUr4D,GAAuBT,KAAMk3D,GAA2B,KAAK94D,KAAKmO,IAAO,CACzH7F,OAAQ6F,EAAE01C,YACV0W,OAAQ1xD,GAAOzB,UAAU+G,EAAE01C,aAAan4C,WACxC+tD,OAAQtrD,EAAEsrD,YACR,cACN93D,GAAuBC,KAAMm3D,GAA0B6C,EAAQ,KAEnE,MAAMC,EAnLlB,SAAsBxB,EAAQ/G,GAC1B,GAAe,IAAX+G,EACA,OAAOxxD,GAAOzB,UAAUszD,GAAUpH,GAAU,aAEhD,MAAMgH,EAAQ,IAAIrhD,IACZ9T,EAAM,CAACmD,EAAQmxD,KACjB,MAAM94D,EAAI25D,EAAMh4D,IAAIgG,IAAW,CAAEA,OAAAA,EAAQmxD,OAAQ,GACjD94D,EAAE84D,QAAUA,EACZa,EAAMl4D,IAAIkG,EAAQ3H,IAEtB,IAAK,MAAM84D,OAAEA,EAAMnxD,OAAEA,KAAYgrD,EAAS,CACtC,MAAM1hC,EAAI/oB,GAAOzB,UAAUkB,GAC3BnD,EAAIysB,EAAI,EAAG6nC,GACXt0D,EAAIysB,EAAG6nC,GACPt0D,EAAIysB,EAAI,EAAG6nC,GAEf,IACIe,EADAC,EAAa,EAEjB,IAAK,MAAMhB,OAAEA,EAAMnxD,OAAEA,KAAYgyD,EAAMp5D,SAI/Bu4D,GAAUY,IAAWZ,EAASgB,GAA6B,MAAdD,GAAsBf,IAAWgB,GAAcnyD,EAASkyD,KACrGC,EAAahB,EACbe,EAAalyD,GAGrB,OAAOkyD,EAwJcsB,CAAal6D,KAAKy4D,OAAQ/G,GACvC,QAAahyD,IAATu6D,EACA,OAKJ,OAHIA,EAAOx5D,GAAuBT,KAAMm3D,GAA0B,MAC9Dp3D,GAAuBC,KAAMm3D,GAA0B8C,EAAM,KAE1Dx5D,GAAuBT,KAAMm3D,GAA0B,KAElE,IAAK,cACL,IAAK,cACD,OAAO2B,GAAUpH,GACrB,IAAK,WAGD,MAAI,aAAcxrB,GAAwB,YAAjBA,EAAIsd,SAClBkO,EAAQ,GAAGhrD,OAEf8xD,GAAYx4D,KAAKy4D,OAAQ/G,GACpC,IAAK,UACL,IAAK,aACL,IAAK,sBACL,IAAK,UACL,IAAK,eACL,IAAK,iBACL,IAAK,wBACL,IAAK,UAEL,IAAK,OAED,OAAO8G,GAAYx4D,KAAKy4D,OAAQ/G,GACpC,IAAK,kBACD,MAAM,IAAIvyD,MAAM,QAExB,OAAO8H,GAAOnD,WAAW,qBAAsB,wBAAyB,CACpEY,UAAW,YAAYf,KAAKC,UAAUsiC,EAAIhhC,eAE/CuyD,GAAkC55D,eAAe45D,EAAgC4B,EAASnzB,GACzF,GAAqB,IAAjBmzB,EAAQ7tD,KACR,MAAM,IAAIrM,MAAM,gBAIpB,MAAMg7D,EAAc,GAGpB,IAAIC,EAAa,EACjB,IAAK,MAAMd,KAAUD,EAUbC,EAAOvL,SACPoM,EAAYx3D,KAAK22D,EAAOvL,SAGxBuL,EAAOM,QACPO,EAAYx3D,KAAK22D,EAAOM,SAIxBN,EAAOK,UAIXL,EAAOK,SAAU,EACjBS,KAaJ,MAAMr8D,QAAc0C,GAAuBT,KAAMi3D,GAA6B,IAAKO,IAA+Bj3D,KAAKP,KAAMq5D,EAASnzB,GACtI,QAAcxmC,IAAV3B,EAAqB,CACrB,GAAIA,aAAiBoB,MACjB,MAAMpB,EAEV,OAAOA,EAIX,IAAK,IAAIkB,EAAI,EAAGA,EAAIm7D,EAAYn7D,IAC5BwB,GAAuBT,KAAMi3D,GAA6B,IAAKK,IAA6B/2D,KAAKP,KAAMq5D,EAASnzB,GAEpH,GAA2B,IAAvBi0B,EAAYj7D,OACZ,MAAM,IAAIC,MAAM,kBAMpB,aADMjB,QAAQm8D,KAAKF,SACN15D,GAAuBT,KAAMi3D,GAA6B,IAAKQ,GAAiCl3D,KAAKP,KAAMq5D,EAASnzB,IEtYrI,MAAMo0B,GAbN,WACI,GAAoB,oBAATx0C,KACP,OAAOA,KAEX,GAAsB,oBAAXC,OACP,OAAOA,OAEX,GAAsB,oBAAXC,OACP,OAAOA,OAEX,MAAM,IAAI7mB,MAAM,kCAGD8mB,GAAYs0C,UCH/B,IAWIC,GAA4BC,GAA0BC,GAA4BC,GAA0BC,GAA+BC,GAAkCC,GAAkCC,GAA2BC,GAAuBC,GAAsBC,GAXvRn7D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAMjF,MAAMk7D,GACTv6D,YAAY0pC,EAAUvpC,GAClBy5D,GAA2Bh6D,IAAIR,UAAM,GACrCy6D,GAAyBj6D,IAAIR,UAAM,GACnC06D,GAA2Bl6D,IAAIR,UAAM,GACrC26D,GAAyBn6D,IAAIR,UAAM,GACnC46D,GAA8Bp6D,IAAIR,UAAM,GACxCD,GAAuBC,KAAMw6D,GAA4BlwB,EAAU,KACnEvqC,GAAuBC,KAAMy6D,GAA0B92D,KAAKC,UAAU7C,GAAS,KAC/EhB,GAAuBC,KAAM06D,GAA4B,KAAM,KAC/D36D,GAAuBC,KAAM26D,GAA0B,KAAM,KAC7D56D,GAAuBC,KAAM46D,GAA+B,KAAM,KAElE75D,aAAW,OAAO4C,KAAK6I,MAAM/L,GAAuBT,KAAMy6D,GAA0B,MACxF5kD,QACI9V,GAAuBC,KAAM06D,GAA4Bj6D,GAAuBT,KAAMw6D,GAA4B,KAAKjJ,KAAK,gBAAiBvxD,KAAKe,QAAQ2M,MAAM4jD,IAE5J7wD,GAAuBT,KAAMw6D,GAA4B,KAAKY,UAAU9J,EAAUtxD,MAC3EsxD,KACP,KAER/I,OACK9nD,GAAuBT,KAAM06D,GAA4B,KAAMhtD,MAAM4jD,IAClE7wD,GAAuBT,KAAMw6D,GAA4B,KAAKjJ,KAAK,kBAAmB,CAACD,OAE3FvxD,GAAuBC,KAAM06D,GAA4B,KAAM,KAInEjS,MAAMC,GACGA,GACDzhD,GAAOnD,WAAW,mEAAoE,wBAAyB,CAC3GY,UAAW,iBAGnB3E,GAAuBC,KAAM26D,KAA4BjS,EAAiB,KAE9EC,SACI5oD,GAAuBC,KAAM26D,GAA0B,KAAM,KAEjEU,eAAe53D,GACX,GAAqE,MAAjEhD,GAAuBT,KAAM06D,GAA4B,MAGO,OAAhEj6D,GAAuBT,KAAM26D,GAA0B,KAAe,CACtE,IAAIW,EAAc76D,GAAuBT,KAAM46D,GAA+B,KAE1EU,EADe,MAAfA,EACct7D,KAAKu7D,MAAM96D,GAAuBT,KAAMw6D,GAA4B,KAAM/2D,GAG1E63D,EAAY5tD,MAAK7P,gBACrBmC,KAAKu7D,MAAM96D,GAAuBT,KAAMw6D,GAA4B,KAAM/2D,MAGxF1D,GAAuBC,KAAM46D,GAA+BU,EAAY5tD,MAAK,KACrEjN,GAAuBT,KAAM46D,GAA+B,OAASU,GACrEv7D,GAAuBC,KAAM46D,GAA+B,KAAM,QAEtE,MAGZ/8D,YAAYysC,EAAU7mC,GAClB,MAAM,IAAItE,MAAM,4CAGxBq7D,GAA6B,IAAI/4D,QAAWg5D,GAA2B,IAAIh5D,QAAWi5D,GAA6B,IAAIj5D,QAAWk5D,GAA2B,IAAIl5D,QAAWm5D,GAAgC,IAAIn5D,QACzM,MAAM+5D,WAA8BL,GACvCv6D,YAAY0pC,GACRj8B,MAAMi8B,EAAU,CAAC,aAErBzsC,YAAYysC,EAAU7mC,GAClB6mC,EAASse,KAAK,QAAShiD,SAASnD,EAAQu1C,UAGzC,MAAMyiB,WAAgCN,GACzCv6D,YAAY0pC,GACRj8B,MAAMi8B,EAAU,CAAC,2BAErBzsC,YAAYysC,EAAU7mC,GAClB6mC,EAASse,KAAK,UAAWnlD,IAG1B,MAAMi4D,WAA8BP,GACvCv6D,YAAY0pC,EAAUvpC,GAClBsN,MAAMi8B,EAAU,CAAC,OAAQvpC,IACzB85D,GAAiCr6D,IAAIR,UAAM,GAC3C86D,GAAiCt6D,IAAIR,UAAM,GAC3CD,GAAuBC,KAAM66D,GAAkCl3D,KAAKC,UAAU7C,GAAS,KACvFhB,GAAuBC,KAAM86D,GAAkCxwB,EAASO,aAAan9B,MAAM8+B,GAAYA,EAAQ1B,YAAY,KAE3H6wB,gBAAc,OAAOh4D,KAAK6I,MAAM/L,GAAuBT,KAAM66D,GAAkC,MACnGh9D,YAAYysC,EAAU7mC,GAClB,MAAMqnC,QAAkBrqC,GAAuBT,KAAM86D,GAAkC,KACvFxwB,EAASse,KAAKnoD,GAAuBT,KAAM66D,GAAkC,KAAM/vB,EAAU/jC,IAAItD,EAAS6mC,KAGlHuwB,GAAmC,IAAIp5D,QAAWq5D,GAAmC,IAAIr5D,QAClF,MAAMm6D,WAAuBzI,GAChCvyD,YAAY4rC,GACRn+B,MAAMm+B,GACNuuB,GAA0Bv6D,IAAIR,UAAM,GACpCg7D,GAAsBx6D,IAAIR,UAAM,GAEhCi7D,GAAqBz6D,IAAIR,UAAM,GAG/Bk7D,GAAwB16D,IAAIR,UAAM,GAClCD,GAAuBC,KAAM+6D,GAA2B,IAAI1jD,IAAO,KACnEtX,GAAuBC,KAAMg7D,IAAuB,EAAO,KAC3Dj7D,GAAuBC,KAAMi7D,GAAsB,IAAI5jD,IAAO,KAC9DtX,GAAuBC,KAAMk7D,GAAyB,IAAI7jD,IAAO,KAErEg2C,eAAeF,GACX,OAAQA,EAAIvuD,MACR,IAAK,QACD,OAAO,IAAIwrD,GAAoB,SACnC,IAAK,QACD,OAAO,IAAIoR,GAAsBx7D,MACrC,IAAK,UACD,OAAO,IAAIy7D,GAAwBz7D,MACvC,IAAK,QACD,OAAO,IAAI07D,GAAsB17D,KAAMmtD,EAAIpsD,QAC/C,IAAK,SAGD,GAA0B,aAAtBosD,EAAIpsD,OAAO8gD,OACX,OAAO,IAAIuI,GAAoB,YAG3C,OAAO/7C,MAAMg/C,eAAeF,GAEhCiO,UAAU9J,EAAUlE,GAChB3sD,GAAuBT,KAAMi7D,GAAsB,KAAKz6D,IAAI8wD,EAAUlE,GACtE,MAAMyO,EAAUp7D,GAAuBT,KAAMk7D,GAAyB,KAAKx6D,IAAI4wD,GAC/E,GAAIuK,EAAS,CACT,IAAK,MAAMp4D,KAAWo4D,EAClBzO,EAAWiO,eAAe53D,GAE9BhD,GAAuBT,KAAMk7D,GAAyB,KAAKp8B,OAAOwyB,IAG1EzzD,WAAWqH,EAAQqJ,GACf,MAAMilB,EAAUxzB,KAAKszD,eAAepuD,EAAQqJ,GACtCutD,EAAU,IAAI59D,SAAQ,CAACI,EAASouD,KAClCjsD,GAAuBT,KAAM+6D,GAA2B,KAAKv6D,IAAIgzB,EAAQuI,GAAI,CAAEvI,QAAAA,EAASl1B,QAAAA,EAASouD,OAAAA,OAKrG,OAHIjsD,GAAuBT,KAAMg7D,GAAuB,YAC9Ch7D,KAAK+7D,OAAOp4D,KAAKC,UAAU4vB,UAExBsoC,EAGjBj+D,eACI,IAAI4C,GAAuBT,KAAMg7D,GAAuB,KAAxD,CAGAj7D,GAAuBC,KAAMg7D,IAAuB,EAAM,KAC1D,IAAK,MAAMxnC,QAAEA,KAAa/yB,GAAuBT,KAAM+6D,GAA2B,KAAKz7D,eAC7EU,KAAK+7D,OAAOp4D,KAAKC,UAAU4vB,KAIzC31B,sBAAsB4F,GAClB,MAAMiD,EAAS/C,KAAK6I,MAAM/I,GAC1B,GAAI,OAAQiD,EAAQ,CAChB,MAAMo1D,EAAUr7D,GAAuBT,KAAM+6D,GAA2B,KAAKr6D,IAAIgG,EAAOq1B,IACxF,IAAK+/B,EAED,YADAh1D,QAAQC,IAAI,6CAIhB,GADAtG,GAAuBT,KAAM+6D,GAA2B,KAAKj8B,OAAOp4B,EAAOq1B,IACvE,UAAWr1B,EAAQ,CACnB,MAAMjD,QAAEA,EAAOlC,KAAEA,EAAIsT,KAAEA,GAASnO,EAAOpF,MACjCA,EAAQ2F,GAAOzD,UAAUC,GAAW,gBAAiB,eAAgB,CACvEyhC,QAAS,MAAMvhC,KAAKC,UAAUk4D,EAAQtoC,WACtCvxB,KAAM,CAAEV,KAAAA,EAAMsT,KAAAA,KAElBinD,EAAQpP,OAAOprD,QAGfw6D,EAAQx9D,QAAQoI,EAAOA,aAG1B,GAAsB,qBAAlBA,EAAOxB,OAA+B,CAC3C,MAAMosD,EAAW5qD,EAAO6H,OAAOqgD,aACzBxB,EAAa3sD,GAAuBT,KAAMi7D,GAAsB,KAAKv6D,IAAI4wD,GAC/E,GAAIlE,EACAA,EAAWiO,eAAe30D,EAAO6H,OAAO7H,YAEvC,CACD,IAAIm1D,EAAUp7D,GAAuBT,KAAMk7D,GAAyB,KAAKx6D,IAAI4wD,GAC9D,MAAXuK,IACAA,EAAU,GACVp7D,GAAuBT,KAAMk7D,GAAyB,KAAK16D,IAAI8wD,EAAUuK,IAE7EA,EAAQl5D,KAAK+D,EAAO6H,OAAO7H,UAIvC7I,aAAa4F,GACT,MAAM,IAAItE,MAAM,mCAGxB47D,GAA4B,IAAIt5D,QAAWu5D,GAAwB,IAAIv5D,QAAWw5D,GAAuB,IAAIx5D,QAAWy5D,GAA0B,IAAIz5D,QCpOtJ,IAWIu6D,GAXAj8D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAKjF,MAAMg8D,WAA0BL,GACnCh7D,YAAYylC,EAAKmG,GACbn+B,MAAMm+B,GACNwvB,GAA6Bx7D,IAAIR,UAAM,GAEnCD,GAAuBC,KAAMg8D,GADZ,iBAAT,EACmD,IAAIzB,GAAUl0B,GAGdA,EAHoB,KAKnFrmC,KAAKk8D,UAAUC,OAAS,KACpBn8D,KAAKo8D,UAETp8D,KAAKk8D,UAAUG,UAAa54D,IACxBzD,KAAKs8D,gBAAgB74D,EAAQoR,OAGjCqnD,gBAAc,OAAOz7D,GAAuBT,KAAMg8D,GAA8B,KACpFn+D,aAAa4F,GACTzD,KAAKk8D,UAAU3K,KAAK9tD,ICpBrB,SAAS84D,GAAmB/vB,EAASlX,GAIxC,GAHe,MAAXA,IACAA,EAAU,IAEW,iBAArB,GAAiCkX,EAAQ/lC,MAAM,YAC/C,OAAO,IAAIytD,GAAgB1nB,GAE/B,GAAyB,iBAAb,GAAyBA,EAAQ/lC,MAAM,YAX9B1I,EAW2DyuC,IAVvC,mBAAhBzuC,EAAU,MACN,mBAAjBA,EAAW,MAUnB,OAAO,IAAIk+D,GAAkBzvB,GAZrC,IAAyBzuC,EAcrB,MAAMk7D,EAAY,GAClB,GAAwB,MAApB3jC,EAAQknC,QACR,IACIvD,EAAUt2D,KAAK,IAAIgyD,GAAgBnoB,EAASlX,EAAQknC,UAExD,MAAOl7D,GACHwF,QAAQC,IAAIzF,GAGpB,GAAqB,MAAjBg0B,EAAQmnC,KACR,IACIxD,EAAUt2D,KAAK,IAAI2xD,GAAa9nB,EAASlX,EAAQmnC,OAErD,MAAOn7D,GACHwF,QAAQC,IAAIzF,GAGpB,GAA2B,MAAvBg0B,EAAQonC,WACR,IACIzD,EAAUt2D,KAAK,IAAIiyD,GAAmBpoB,IAE1C,MAAOlrC,GACHwF,QAAQC,IAAIzF,GAGpB,GAA0B,MAAtBg0B,EAAQqnC,UACR,IACI1D,EAAUt2D,KAAK,IAAIsyD,GAAkBzoB,EAASlX,EAAQqnC,YAE1D,MAAOr7D,GACHwF,QAAQC,IAAIzF,GAGpB,GAAuB,MAAnBg0B,EAAQsnC,OACR,IACI,IACI1G,EADAD,EAAY3gC,EAAQsnC,OAEG,iBAAf,IACR1G,EAAgBD,EAAUC,cAC1BD,EAAYA,EAAUA,WAE1BgD,EAAUt2D,KAAK,IAAIqzD,GAAexpB,EAASypB,EAAWC,IAE1D,MAAO50D,GACHwF,QAAQC,IAAIzF,GAGpB,GAAuB,MAAnBg0B,EAAQunC,OACR,IACI,IACIC,EACAnG,EAFAoG,EAAQznC,EAAQunC,OAGG,iBAAX,IACRlG,IAAiBoG,EAAMpG,aACvBmG,EAAYC,EAAMD,UAClBC,EAAQA,EAAMA,OAElB9D,EAAUt2D,KAAK,IAAIm0D,GAAetqB,EAASuwB,EAAOD,EAAWnG,IAEjE,MAAOr1D,GACHwF,QAAQC,IAAIzF,GAGpB,GAAyB,IAArB23D,EAAU/5D,OACV,MAAM,IAAIC,MAAM,QAEpB,OAAyB,IAArB85D,EAAU/5D,OACH+5D,EAAU,GAEd,IAAID,GAAiBC,GDxDhC+C,GAA+B,IAAIv6D,QEmC9B,MAACykD,GAnEN,SAA8BA,GAE1B,SAAS8W,EAAYl6D,EAAM26B,EAASnI,GAChC,MAAMrO,EAAO,WACT,MAAMulB,EAAU,IAAI0Z,EAAQpjD,EAAM26B,GAQlC,GAN0B,MAAtBnI,EAAQ2xB,YACRza,EAAQ4Z,aAAa,IAAIT,GAAU,KAAMrwB,EAAQ2xB,aAEjD3xB,EAAQwwB,aACRtZ,EAAQ4Z,aAAa,IAAIP,GAAqBvwB,EAAQwwB,cAEtDxwB,EAAQqnC,UAAW,CACnB,MAAMt2B,IAAEA,EAAGkuB,OAAEA,GAAWj/B,EAAQqnC,UAChCnwB,EAAQ4Z,aAAa,IAAI0O,GAAgBzuB,EAAKkuB,IAGlD,OADA/nB,EAAQ4Z,aAAa,IAAId,IAClB9Y,GAGX0Z,EAAQl/B,SAASlkB,EAAMmkB,GACvBi/B,EAAQl/B,SAASyW,EAASxW,GACtBqO,EAAQ0vB,UACR1vB,EAAQ0vB,SAASp9C,SAAS9E,IACtBojD,EAAQl/B,SAASlkB,EAAMmkB,MAyCnC,OArCA+1C,EAAY,YAAa,EAAG,CAAE/V,WAAY,EAAGjC,SAAU,CAAC,aACxDgY,EAAY,UAAW,EAAG,CAAE/V,WAAY,IACxC+V,EAAY,UAAW,EAAG,CAAE/V,WAAY,IACxC+V,EAAY,SAAU,EAAG,CAAE/V,WAAY,IACvC+V,EAAY,QAAS,GAAI,CAAE/V,WAAY,KACvC+V,EAAY,UAAW,GAAI,IAC3BA,EAAY,eAAgB,EAAG,IAC/BA,EAAY,OAAQ,IAAK,CAAE/V,WAAY,IAEvC+V,EAAY,QAAS,IAAK,CACtB/V,WAAY,EACZnB,YAAa,KACb6W,UAAW,CACPpI,OAAQ,qCACRluB,IAAK,kCAGb22B,EAAY,cAAe,MAAO,CAC9BlX,YAAa,KACb6W,UAAW,CACPpI,OAAQ,qCACRluB,IAAK,0CAGb22B,EAAY,MAAO,GAAI,CACnB/V,WAAY,EACZ0V,UAAW,CACPpI,OAAQ,qCACRluB,IAAK,4BAGb22B,EAAY,OAAQ,GAAI,CACpBL,UAAW,CACPpI,OAAQ,qCACRluB,IAAK,oCAGN6f,EAEK+W,CAAqBC,ICvE/BC,QAAoBz9D,ECA1B,IAWI09D,GAAuCC,GAXvCt9D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAKjF,MAAMq9D,WAAiBxb,GAC1BlhD,YAAYmG,EAAKw2D,EAAO78B,GACpBryB,MAAMtH,EAAKA,EAAIujC,UAEflrC,EAAiBY,KAAM,CAAE4F,KADZ23D,EAAM/5B,eAAe9C,EAAU35B,EAAI8N,KAAM9N,EAAIo8B,QAC3BzC,SAAAA,EAAU88B,UAAWD,IAEpDE,gBAAc,OAAOz9D,KAAK0gC,SAAS59B,KACnC46D,qBAAmB,OAAO19D,KAAK0gC,SAASv0B,UAEzC,MAAMwxD,WAAmCpb,GAC5C3hD,YAAY28D,EAAOjzB,EAAUjW,GACzBhmB,MAAMgmB,EAAIiW,GACV8yB,GAAsC58D,IAAIR,UAAM,GAChDD,GAAuBC,KAAMo9D,GAAuCG,EAAO,KAE3E/a,WACA,OAAOn0C,MAAMm0C,KAAKpkD,KAAK2I,IACnB,MAAM25B,EAAW35B,EAAIo8B,OAAOjkC,OAASuB,GAAuBT,KAAMo9D,GAAuC,KAAKv7B,SAAS96B,EAAIo8B,OAAO,IAAM,KACxI,OAAIzC,EACO,IAAI48B,GAASv2D,EAAKtG,GAAuBT,KAAMo9D,GAAuC,KAAM18B,GAG5F35B,MAKvBq2D,GAAwC,IAAI37D,QACrC,MAAMm8D,WAAoCxa,GAC7CxiD,YAAY28D,EAAOjzB,EAAUjW,GACzBhmB,MAAMgmB,EAAIiW,GACV+yB,GAAuC78D,IAAIR,UAAM,GACjDD,GAAuBC,KAAMq9D,GAAwCE,EAAO,KAEhF1/D,WAAWwlD,GACP,MAAMoB,QAAgBp2C,MAAMwvD,OAC5B,OAAe,MAAXpZ,EACO,KAEJ,IAAIkZ,GAA2Bl9D,GAAuBT,KAAMq9D,GAAwC,KAAMr9D,KAAKsqC,SAAUma,IAGxI4Y,GAAyC,IAAI57D,QACtC,MAAMq8D,WAA6Bn9D,EACtCC,YAAYm9D,EAAUj9D,EAAUC,EAAQ2/B,EAAUs9B,GAC9C3vD,MAAM0vD,EAAUj9D,EAAUC,GAC1B,MAAMgG,EAAM,IAAIu2D,GAASU,EAAMD,EAASP,UAAW98B,GAEnDthC,EAAiBY,KAAM,CAAE4F,KADZm4D,EAASP,UAAUh6B,eAAe9C,EAAU35B,EAAI8N,KAAM9N,EAAIo8B,QACxCzC,SAAAA,EAAU35B,IAAAA,IAEzC02D,gBACA,OAAOz9D,KAAK0gC,SAAS59B,KAErB46D,qBACA,OAAO19D,KAAK0gC,SAASv0B,SAEzBtO,iBACI,aAAamC,KAAK+G,IAAIq7C,WAE1BvkD,uBACI,aAAamC,KAAK+G,IAAI26C,iBAE1B7jD,8BACI,aAAamC,KAAK+G,IAAIs7C,yBC7EvB,MCEMp7C,GAAS,IAAI5D,EDFH,wCEAvB,IAWI46D,GAXAl+D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAiBxF,SAASi+D,GAAWngE,GAChB,OAAQA,GAAwC,mBAAvBA,EAAiB,YAU9C,MAAMogE,GACFv9D,YAAYm9D,EAAUr9B,EAAU96B,GAG5B,GAFAq4D,GAA4Bz9D,IAAIR,UAAM,GACtCZ,EAAiBY,KAAM,CAAE0gC,SAAAA,IACrBA,EAAS9yB,OAAO1O,OAAS0G,EAAK1G,OAC9B,MAAM,IAAIC,MAAM,sBAGpB,MAAMm6D,EAAS8E,GAAUL,EAASzE,OAAQ,eACpCvkC,EAAWmpC,GAAW5E,GAAUA,EAAS,KAC/Cv5D,GAAuBC,KAAMi+D,GAA6B,iBACtD,MAAMI,QAAqBngE,QAAQC,IAAIuiC,EAAS9yB,OAAOxP,KAAI,CAACqP,EAAO/O,IACxD+O,EAAM6wD,UAAU14D,EAAKlH,IAAQ,CAACE,EAAMb,IAC1B,YAATa,EACOk2B,GAAe/2B,EAAOg3B,GAE1Bh3B,OAGf,OAAOggE,EAASP,UAAUv6B,mBAAmBvC,EAAU29B,GATD,GAUpD,KAEVE,iBACI,OAAO99D,GAAuBT,KAAMi+D,GAA6B,MAazE,SAASG,GAAUrgE,EAAOygE,GACtB,OAAa,MAATzgE,EACO,KAEqB,mBAApBA,EAAMygE,GACPzgE,EAEPA,EAAMusC,UAAiD,mBAA7BvsC,EAAMusC,SAASk0B,GAClCzgE,EAAMusC,SAEV,KAEX,SAASm0B,GAAY1gE,GACjB,OAAa,MAATA,EACO,KAEJA,EAAMusC,UAAY,KAEtBzsC,eAAe6gE,GAAcC,GAEhC,MAAMC,E3B3CH,SAAqB14B,GACxB,MAAMx/B,EAAS,GAEXw/B,EAAI96B,KACJ1E,EAAO0E,GAAK86B,EAAI96B,IAEhB86B,EAAI/6B,OACJzE,EAAOyE,KAAO+6B,EAAI/6B,MAElB+6B,EAAIrxB,OACJnO,EAAOmO,KAAOQ,GAAQ6wB,EAAIrxB,OAE9B,MAAMgqD,EAAa,qEAAqE//D,MAAM,KAC9F,IAAK,MAAMU,KAAOq/D,EACRr/D,KAAO0mC,GAAoB,MAAZA,EAAI1mC,KAGzBkH,EAAOlH,GAAOyH,GAAOtB,UAAUugC,EAAI1mC,GAAM,WAAWA,MAExD,MAAMs/D,EAAa,aAAahgE,MAAM,KACtC,IAAK,MAAMU,KAAOs/D,EACRt/D,KAAO0mC,GAAoB,MAAZA,EAAI1mC,KAGzBkH,EAAOlH,GAAOyH,GAAOzB,UAAU0gC,EAAI1mC,GAAM,WAAWA,MAcxD,OAZI0mC,EAAIuZ,aACJ/4C,EAAO+4C,WAAaxB,GAAc/X,EAAIuZ,aAEtC,aAAcvZ,IACdx/B,EAAO88C,SAAWtd,EAAIsd,UAEtB,mBAAoBtd,IACpBx/B,EAAOq4D,wBAA0B74B,EAAIwE,gBAErC,eAAgBxE,IAChBx/B,EAAOs4D,WAAa94B,EAAI84B,YAErBt4D,E2BKWu4D,CAAY9pC,GAAMW,YAAY6oC,EAAK,cAarD,OAVIC,EAAUxzD,GACVnE,GAAOlD,mBAAmB,qBAAsB,eAAgB66D,EAAUxzD,IAErEwzD,EAAU/pD,MACf5N,GAAOlD,mBAAmB,uBAAwB,iBAAkB66D,EAAU/pD,MAG9E+pD,EAAUzzD,OACVyzD,EAAUzzD,WAAa2pB,GAAe8pC,EAAUzzD,OAE7CyzD,EA3CXX,GAA8B,IAAIx8D,QA0DlC,MAAMy9D,WAnDN,WACI,OAAOC,SAkDiBC,IACxBx+D,YAAYm9D,EAAUv+D,GAClB6O,QACAjP,EAAiBY,KAAM,CACnB8C,KAAMi7D,EAASP,UAAU97B,gBAAgBliC,GACzC6/D,UAAWtB,EAAUzhD,KAAM9c,IAY/B,OAVc,IAAI8X,MAAMtX,KAAM,CAE1BgH,MAAOnJ,MAAOwB,EAAQigE,EAAS15D,IACVvG,EAAOkgE,eAAe35D,GAC1BqJ,eACI5P,EAAOmgE,cAAc55D,SAEzBvG,EAAOkyD,QAAQ3rD,KAMpC86B,eACA,OAAO1gC,KAAKq/D,UAAU7B,UAAU77B,YAAY3hC,KAAKsc,MAErDijD,eAAe35D,GACX,OAAO5F,KAAKq/D,UAAU7B,UAAU77B,YAAY3hC,KAAKsc,KAAM1W,GAE3D/H,6BAA6B+H,GACzB,MAAM86B,EAAW1gC,KAAKu/D,eAAe35D,GAErC,IAAIg5D,EAAY,GAIhB,GAHIl+B,EAAS9yB,OAAO1O,OAAS,IAAM0G,EAAK1G,SACpC0/D,QAAkBF,GAAc94D,EAAKyD,QAErCq3B,EAAS9yB,OAAO1O,SAAW0G,EAAK1G,OAChC,MAAM,IAAIC,MAAM,8EAEpB,MAAMk/D,QAjDPxgE,eAA2B4hE,EAAS7xD,EAAQhI,GAE/C,MAAM0zD,EAAS8E,GAAUqB,EAAS,eAC5B1qC,EAAWmpC,GAAW5E,GAAUA,EAAS,KAC/C,aAAap7D,QAAQC,IAAIyP,EAAOxP,KAAI,CAACqP,EAAO/O,IACjC+O,EAAM6wD,UAAU14D,EAAKlH,IAAQ,CAACE,EAAMb,IAC1B,YAATa,EACOk2B,GAAe/2B,EAAOg3B,GAE1Bh3B,OAwCgB2hE,CAAY1/D,KAAKq/D,UAAU/F,OAAQ54B,EAAS9yB,OAAQhI,GAC/E,OAAO3H,OAAOoN,OAAO,GAAIuzD,QAAiB9gE,EAAkB,CACxDsN,GAAIpL,KAAKq/D,UAAUnsC,aACnBre,KAAM7U,KAAKq/D,UAAU7B,UAAUh7B,mBAAmB9B,EAAU29B,MAGpExgE,oBAAoB+H,GAChB,MAAMc,QAAe1G,KAAK2/D,oBAAoB/5D,GAC9C,OAAsB,IAAlBc,EAAOxH,OACAwH,EAAO,GAEXA,EAEX7I,cAAc+H,GACV,MAAM0zD,EAASt5D,KAAKq/D,UAAU/F,OAC9B,KA/ISv7D,EA+IIu7D,IA9ImC,mBAA3Bv7D,EAAqB,gBA+ItC,OAAOkJ,GAAOnD,WAAW,wDAAyD,wBAAyB,CACvGY,UAAW,oBAjJ3B,IAAiB3G,EAoJT,MAAMs2B,QAAWilC,EAAOlJ,sBAAsBpwD,KAAK4vD,uBAAuBhqD,IACpE0kC,EAAWm0B,GAAYz+D,KAAKq/D,UAAU/F,QAC5C,OAAO,IAAIsE,GAA4B59D,KAAKq/D,UAAU7B,UAAWlzB,EAAUjW,GAE/Ex2B,qBAAqB+H,GACjB,MAAM0zD,EAAS8E,GAAUp+D,KAAKq/D,UAAU/F,OAAQ,eAChD,OAhKav7D,EAgKIu7D,IA/J2B,mBAAvBv7D,EAAiB,kBAoKzBu7D,EAAO7J,kBAAkBzvD,KAAK4vD,uBAAuBhqD,IAJvDqB,GAAOnD,WAAW,kDAAmD,wBAAyB,CACjGY,UAAW,gBAlK3B,IAAqB3G,EAuKjBF,0BAA0B+H,GACtB,MAAM0zD,EAAS8E,GAAUp+D,KAAKq/D,UAAU/F,OAAQ,QAChD,KA5KSv7D,EA4KIu7D,IA3KwB,mBAAhBv7D,EAAU,KA4K3B,OAAOkJ,GAAOnD,WAAW,2CAA4C,wBAAyB,CAC1FY,UAAW,SA9K3B,IAAiB3G,EAiLT,MAAM2iC,EAAW1gC,KAAKu/D,eAAe35D,GAC/ByuB,QAAWr0B,KAAK4vD,uBAAuBhqD,GAC7C,IAAIc,EAAS,KACb,IACIA,QAAe4yD,EAAO/4D,KAAK8zB,GAE/B,MAAO/yB,GACH,GAAIE,EAAgBF,GAChB,MAAMtB,KAAKq/D,UAAU7B,UAAUh6D,UAAUk9B,EAAUp/B,EAAMuT,KAAMwf,GAEnE,MAAM/yB,EAEV,OAAOtB,KAAKq/D,UAAU7B,UAAU/6B,qBAAqB/B,EAAUh6B,IAMvE,MAAMk5D,WAHN,WACI,OAAOT,SAEgBU,IACvBj/D,YAAYm9D,EAAUv+D,GAMlB,OALA6O,QACAjP,EAAiBY,KAAM,CACnB8C,KAAMi7D,EAASP,UAAU57B,aAAapiC,GACtC6/D,UAAWtB,EAAUzhD,KAAM9c,IAExB,IAAI8X,MAAMtX,KAAM,CAEnBgH,MAAOnJ,MAAOwB,EAAQigE,EAAS15D,IACpB,IAAIu4D,GAAoBJ,EAAU1+D,EAAOkgE,eAAe35D,GAAOA,KAK9E86B,eACA,OAAO1gC,KAAKq/D,UAAU7B,UAAU37B,SAAS7hC,KAAKsc,MAElDijD,eAAe35D,GACX,OAAO5F,KAAKq/D,UAAU7B,UAAU37B,SAAS7hC,KAAKsc,KAAM1W,IAQ5D,MAAM8F,GAAWC,OAAOC,IAAI,4BACtBk0D,GAAiB,IAAIr+D,QAI3B,SAASs+D,GAAYhC,GACjB,OAAO+B,GAAep/D,IAAIq9D,EAASryD,KAMvC7N,eAAemiE,GAAUjC,EAAUpvD,GAC/B,IAAI+xB,EACAyC,EACJ,GAAIp2B,MAAMN,QAAQkC,GAEd+xB,EAAWq9B,EAASP,UAAU37B,SAASlzB,EAAM,IAC7Cw0B,EAASx0B,OAER,GAAuB,iBAAX,EAEb+xB,EAAWq9B,EAASP,UAAU37B,SAASlzB,GACvCw0B,EAAS,CAAC46B,EAASP,UAAUv7B,cAAcvB,SAE1C,IAjBW3iC,EAiBI4Q,IAhBgB,iBAAnB,GAAgC,mBAAoB5Q,GAC9B,mBAA1BA,EAAoB,gBAAqBA,EAAM2iC,SAiBxDA,EAAW/xB,EAAM+xB,SACjByC,QAAex0B,EAAM4vD,qBAEpB,CAAA,KAAI,aAAc5vD,GAOnB,MADA7H,QAAQC,IAAI4H,GACN,IAAIxP,MAAM,QALhBuhC,EAAW/xB,EAAM+xB,SACjByC,EAAS,CAAC46B,EAASP,UAAUv7B,cAAcvB,IAzBnD,IAAoB3iC,EAgChBolC,EAASA,EAAO/kC,KAAKW,IACjB,OAAS,MAALA,EACO,KAEPgO,MAAMN,QAAQ1N,IA9PP2I,EA+PU3I,EAAEX,KAAKW,GAAMA,EAAEqH,iBA9PxCsB,EAAQqF,MAAM5B,KAAK,IAAKxD,IAAID,GAAQpI,WAC9B0/B,OACCt3B,GA8PI3I,EAAEqH,cAjQjB,IAAmBsB,KA4Qf,MAAO,CAAEg5B,SAAAA,EAAU8pB,IATPrnB,EAAO/kC,KAAKW,GACX,MAALA,EACO,OAEPgO,MAAMN,QAAQ1N,GACPA,EAAE8E,KAAK,KAEX9E,IACR8E,KAAK,KACgBs/B,OAAAA,GAE5BtlC,eAAeoiE,GAAOlC,EAAUpvD,GAC5B,MAAMuxD,KAAEA,GAASH,GAAYhC,GAC7B,OAAOmC,EAAKx/D,WAAWs/D,GAAUjC,EAAUpvD,IAAQ67C,MAAQ,KAE/D3sD,eAAesiE,GAAOpC,EAAUpvD,GAE5B,MAAM27B,EAAWm0B,GAAYV,EAASzE,QACtC,IAAKhvB,EACD,OAAOrjC,GAAOnD,WAAW,+CAAgD,wBAAyB,CAC9FY,UAAW,OAGnB,MAAMg8B,SAAEA,EAAQ8pB,IAAEA,EAAGrnB,OAAEA,SAAiB68B,GAAUjC,EAAUpvD,IACtDo9B,KAAEA,EAAIm0B,KAAEA,GAASH,GAAYhC,GACnC,IAAI5Q,EAAM+S,EAAKx/D,IAAI8pD,GACnB,IAAK2C,EAAK,CACN,MACMpsD,EAAS,CAAEwxB,QADAwZ,GAAcgyB,EACL56B,OAAAA,GACpBriC,EAAYiG,IACd,MAAMysB,EAAU,IAAIsqC,GAAqBC,EAAU,KAAMpvD,EAAO+xB,EAAU35B,GAC1E6hD,GAAKmV,EAAUpvD,EAAO6kB,EAAQ5tB,KAAM4tB,IAExC,IAAIi6B,GAAU,EAedN,EAAM,CAAE3C,IAAAA,EAAKkD,UAAW,GAAI73C,MAdd,KACN43C,IAGJnjB,EAASye,GAAGhoD,EAAQD,GACpB2sD,GAAU,IASqBlF,KAPtB,KACJkF,IAGLnjB,EAAStpC,IAAID,EAAQD,GACrB2sD,GAAU,KAGdyS,EAAK1/D,IAAIgqD,EAAK2C,GAElB,OAAOA,EAyBX,IAAIiT,GAAWliE,QAAQI,UACvBT,eAAe+qD,GAAKmV,EAAUpvD,EAAO/I,EAAM4tB,GACvC,UACU4sC,GAEV,MAAO9+D,IACP,MAAM++D,EA7BVxiE,eAAqBkgE,EAAUpvD,EAAO/I,EAAM4tB,SAClC4sC,GACN,MAAMjT,QAAY8S,GAAOlC,EAAUpvD,GACnC,IAAKw+C,EACD,OAAO,EAEX,MAAM/nD,EAAQ+nD,EAAIO,UAAUxuD,OAY5B,OAXAiuD,EAAIO,UAAYP,EAAIO,UAAU3sD,QAAO,EAAGD,SAAAA,EAAU+rD,KAAAA,MAC9C,MAAMyT,EAAW16D,EAAKiD,QAClB2qB,GACA8sC,EAAS39D,KAAK,IAAIm7D,GAAqBC,EAAWlR,EAAO,KAAO/rD,EAAW6N,EAAO6kB,EAAQkN,SAAUlN,EAAQzsB,MAEhH,IACIjG,EAASP,KAAKw9D,KAAauC,GAE/B,MAAOh/D,IACP,OAAQurD,KAEJznD,EAAQ,EAWMm2D,CAAMwC,EAAUpvD,EAAO/I,EAAM4tB,GAEnD,OADA4sC,GAAWC,QACEA,EAEjB,MAAMlpD,GAAiB,CAAC,QACjB,MAAMopD,GACT3/D,YAAYvB,EAAQiiC,EAAKg4B,EAAS,KAAMkH,GAIpC,IAAIC,EAFJrhE,EAAiBY,KAAM,CAAEX,OAAAA,EAAQi6D,OAAAA,EAAQkE,UAD3Bp8B,GAAUj2B,KAAKm2B,KAE7BrjC,OAAO0B,eAAeK,KAAM0L,GAAU,CAAE3N,MAAO,KAE/C,IAAIguC,EAAO,KACP20B,EAAW,KACf,GAAIF,EAAW,CACX,MAAMl2B,EAAWm0B,GAAYnF,GAC7BoH,EAAW,IAAI9C,GAA4B59D,KAAKw9D,UAAWlzB,EAAUk2B,GAEzE,IAAIN,EAAO,IAAI7oD,IAEf,GAAwB,iBAAZ,EACR,GAAI7C,GAAYnV,GACZ0sC,EAAO1sC,EACPohE,EAAcviE,QAAQI,QAAQe,OAE7B,CACD,MAAM01B,EAAWqpC,GAAU9E,EAAQ,eACnC,IAAK4E,GAAWnpC,GACZ,MAAM9tB,GAAOzD,UAAU,mDAAoD,wBAAyB,CAChGkB,UAAW,gBAGnB+7D,EAAc1rC,EAASC,YAAY31B,GAAQqO,MAAMq+B,IAC7C,GAAY,MAARA,EACA,MAAM,IAAI5sC,MAAM,QAGpB,OADA4gE,GAAY//D,MAAM+rC,KAAOA,EAClBA,UAKf00B,EAAcphE,EAAO6zB,aAAaxlB,MAAMq+B,IACpC,GAAY,MAARA,EACA,MAAM,IAAI5sC,MAAM,QAGpB,OADA4gE,GAAY//D,MAAM+rC,KAAOA,EAClBA,KA/KvB,IAAqBgyB,EAAUz+D,EAAVy+D,EAmLD/9D,KAnLWV,EAmLL,CAAEmhE,YAAAA,EAAa10B,KAAAA,EAAM20B,SAAAA,EAAUR,KAAAA,GAlLrDJ,GAAet/D,IAAIu9D,EAASryD,IAAWpM,GAoLnC,MAAMqhE,EAAU,IAAIrpD,MAAM,GAAI,CAC1B5W,IAAK,CAACrB,EAAQuhE,EAAO3gE,KAEjB,GAAIkX,GAAetS,QAAQ+7D,IAAU,EACjC,OAAOnpD,QAAQ/W,IAAIrB,EAAQuhE,EAAO3gE,GAEtC,MAAMsX,EAAO9U,OAAOm+D,GACdl6D,EAAS1G,KAAK6hC,SAAStqB,GAC7B,GAAI7Q,EACA,OAAOA,EAEX,MAAM,IAAIvH,MAAM,2BAA2BoY,QAKnD,OAFAnY,EAAiBY,KAAM,CAAE2gE,QAAAA,IAElB,IAAIrpD,MAAMtX,KAAM,CACnBU,IAAK,CAACrB,EAAQuhE,EAAO3gE,KACjB,GAAI2gE,KAASvhE,GAAU8X,GAAetS,QAAQ+7D,IAAU,EACpD,OAAOnpD,QAAQ/W,IAAIrB,EAAQuhE,EAAO3gE,GAEtC,MAAMsX,EAAO9U,OAAOm+D,GACdl6D,EAASrH,EAAOsiC,YAAYpqB,GAClC,GAAI7Q,EACA,OAAOA,EAEX,MAAM,IAAIvH,MAAM,4BAA4BoY,QAIxD1Z,mBAAqB,aAAakiE,GAAY//D,MAAMygE,YACpD5iE,wBACI,MAAMysC,EAAWm0B,GAAYz+D,KAAKs5D,QAClC,IAAKhvB,EACD,OAAOrjC,GAAOnD,WAAW,oCAAqC,wBAAyB,CACnFY,UAAW,oBAGnB,MAAMnD,QAAa+oC,EAASu2B,cAAc7gE,KAAKkzB,cAC/C,MAAa,OAAT3xB,EACO,KAEJA,EAEX1D,0BAEI,MAAM6iE,EAAW1gE,KAAK8gE,wBACtB,GAAIJ,EAEA,aADMA,EAAS7C,OACR79D,KAIX,GAAY,YADOA,KAAK+gE,kBAEpB,OAAO/gE,KAGX,MAAMsqC,EAAWm0B,GAAYz+D,KAAKs5D,QAClC,OAAgB,MAAZhvB,EACOrjC,GAAOnD,WAAW,6CAA8C,wBAAyB,CAC5FY,UAAW,sBAGZ,IAAIxG,SAAQ,CAACI,EAASouD,KACzB,MAAMsU,EAAYnjE,UACd,IAEI,GAAY,YADOmC,KAAK+gE,kBAEpB,OAAOziE,EAAQ0B,MAEnBsqC,EAASuiB,KAAK,QAASmU,GAE3B,MAAO1/D,GACHorD,EAAOprD,KAGf0/D,OAGRF,wBACI,OAAOf,GAAY//D,MAAM0gE,SAE7B/+B,YAAYniC,GAIR,MAHqB,iBAAT,IACRA,EAAMA,EAAI2M,UAEd,IAAY+yD,GAAcl/D,KAAMR,GAEpCqiC,SAASriC,GAIL,MAHqB,iBAAT,IACRA,EAAMA,EAAI2M,UAEd,IAAYyzD,GAAa5/D,KAAMR,GAEnC3B,uBAAuBwd,GAEnB,MAAM,IAAIlc,MAAM,SAEpBtB,kBAAkB8Q,EAAOu1C,EAAY,EAAGE,EAAU,UAC9C,MAAMrY,KAAEA,EAAI00B,YAAEA,GAAgBV,GAAY//D,MACpCuyB,EAAWwZ,SAAqB00B,GAChC//B,SAAEA,EAAQyC,OAAEA,SAAiB68B,GAAUhgE,KAAM2O,GAC7C5N,EAAS,CAAEwxB,QAAAA,EAAS4Q,OAAAA,EAAQ+gB,UAAAA,EAAWE,QAAAA,GACvC9Z,EAAWm0B,GAAYz+D,KAAKs5D,QAClC,OAAKhvB,SAKSA,EAAS6e,QAAQpoD,IAAS3C,KAAK2I,GAClC,IAAIu2D,GAASv2D,EAAK/G,KAAKw9D,UAAW98B,KALlCz5B,GAAOnD,WAAW,2CAA4C,wBAAyB,CAC1FY,UAAW,gBAOvB7G,SAAS8Q,EAAO7N,GACZ,MAAMqsD,QAAYgT,GAAOngE,KAAM2O,GAG/B,OAFAw+C,EAAIO,UAAU/qD,KAAK,CAAE7B,SAAAA,EAAU+rD,MAAM,IACrCM,EAAIt3C,QACG7V,KAEXnC,WAAW8Q,EAAO7N,GACd,MAAMqsD,QAAYgT,GAAOngE,KAAM2O,GAG/B,OAFAw+C,EAAIO,UAAU/qD,KAAK,CAAE7B,SAAAA,EAAU+rD,MAAM,IACrCM,EAAIt3C,QACG7V,KAEXnC,WAAW8Q,KAAU/I,GACjB,aAAagjD,GAAK5oD,KAAM2O,EAAO/I,EAAM,MAEzC/H,oBAAoB8Q,GAChB,GAAIA,EAAO,CACP,MAAMw+C,QAAY8S,GAAOjgE,KAAM2O,GAC/B,OAAKw+C,EAGEA,EAAIO,UAAUxuD,OAFV,EAIf,MAAMghE,KAAEA,GAASH,GAAY//D,MAC7B,IAAI2tD,EAAQ,EACZ,IAAK,MAAMD,UAAEA,KAAewS,EAAK5gE,SAC7BquD,GAASD,EAAUxuD,OAEvB,OAAOyuD,EAEX9vD,gBAAgB8Q,GACZ,GAAIA,EAAO,CACP,MAAMw+C,QAAY8S,GAAOjgE,KAAM2O,GAC/B,OAAKw+C,EAGEA,EAAIO,UAAUtvD,KAAI,EAAG0C,SAAAA,KAAeA,IAFhC,GAIf,MAAMo/D,KAAEA,GAASH,GAAY//D,MAC7B,IAAI0G,EAAS,GACb,IAAK,MAAMgnD,UAAEA,KAAewS,EAAK5gE,SAC7BoH,EAASA,EAAO8O,OAAOk4C,EAAUtvD,KAAI,EAAG0C,SAAAA,KAAeA,KAE3D,OAAO4F,EAEX7I,UAAU8Q,EAAO7N,GACb,MAAMqsD,QAAY8S,GAAOjgE,KAAM2O,GAC/B,IAAKw+C,EACD,OAAOntD,KAEX,GAAIc,EAAU,CACV,MAAMpC,EAAQyuD,EAAIO,UAAUtvD,KAAI,EAAG0C,SAAAA,KAAeA,IAAU+D,QAAQ/D,GAChEpC,GAAS,GACTyuD,EAAIO,UAAUnpB,OAAO7lC,EAAO,GAOpC,OAJgB,MAAZoC,GAA6C,IAAzBqsD,EAAIO,UAAUxuD,SAClCiuD,EAAI5E,OACJwX,GAAY//D,MAAMkgE,KAAKphC,OAAOquB,EAAI3C,MAE/BxqD,KAEXnC,yBAAyB8Q,GACrB,GAAIA,EAAO,CACP,MAAMw+C,QAAY8S,GAAOjgE,KAAM2O,GAC/B,IAAKw+C,EACD,OAAOntD,KAEXmtD,EAAI5E,OACJwX,GAAY//D,MAAMkgE,KAAKphC,OAAOquB,EAAI3C,SAEjC,CACD,MAAM0V,KAAEA,GAASH,GAAY//D,MAC7B,IAAK,MAAMwqD,IAAEA,EAAGjC,KAAEA,KAAU2X,EAAK5gE,SAC7BipD,IACA2X,EAAKphC,OAAO0rB,GAGpB,OAAOxqD,KAGXnC,kBAAkB8Q,EAAO7N,GACrB,aAAad,KAAK+oD,GAAGp6C,EAAO7N,GAGhCjD,qBAAqB8Q,EAAO7N,GACxB,aAAad,KAAKgB,IAAI2N,EAAO7N,GAEjCmF,kBAAkBq7B,GAMd,OALA,cAA6Bi/B,GACzB3/D,YAAY2xB,EAAS+mC,EAAS,MAC1BjrD,MAAMkkB,EAAS+O,EAAKg4B,KAMhCrzD,YAAY5G,EAAQiiC,EAAKg4B,EAAS,MAE9B,OADiB,IAAIt5D,KAAKX,EAAQiiC,EAAKg4B,IAOxC,MAAM2H,WAHb,WACI,OAAOV,GAEmBW,KCnoB9B,MAAMC,GAAW,gCACXC,GAAO,YACb,SAASC,GAAOC,EAAOC,GACnB,IAAIC,EAAU,GACd,OAAOF,EAAM/iE,QAAO,CAACC,EAAOkb,KACpBA,IAAS6nD,EACTC,IAEK9nD,EAAKjT,MAAM26D,IAChB5iE,EAAMmE,KAAKF,OAAOC,aAAa8+D,GAAW9nD,IAG1C8nD,EAAU,GACVhjE,EAAMmE,KAAK+W,IAERlb,IACR,IAyBA,SAASijE,GAAU5sD,GACtB,GAAgB,MAAZA,EAAK,GACL,MAAMxU,UAAU,yBAEpB,OA3BG,SAAgBwU,EAAMqrD,GAEzB,IAAK,IAAIjhE,EAAIkiE,GAASjiE,OAAS,EAAGD,GAAK,EAAGA,IACtC4V,EAAOA,EAAK/V,MAAMqiE,GAASliE,IAAI4E,KAAKq8D,EAAKr5D,UAAU,EAAI5H,EAAG,EAAIA,EAAI,IAGtE,MAAMyiE,EAAS,GACTC,EAAW9sD,EAAK4jB,QAAQ,8BAA8B,CAACt6B,EAAKqZ,EAAMoqD,EAAMloD,KAC1E,GAAIkoD,EACA,IAAK,IAAI3iE,EAAI2H,SAASg7D,GAAO3iE,GAAK,EAAGA,IACjCyiE,EAAO/+D,KAAK,UAIhB++D,EAAO/+D,KAAK6U,EAAKpR,eAErB,MAAO,MAEX,GAAIu7D,EACA,MAAM,IAAIxiE,MAAM,cAAcwE,KAAKC,UAAU+9D,MAEjD,OAAON,GAAOA,GAAOK,EAAQ,KAAM,KAM5B3rC,CAAOlhB,EAAKhO,UAAU,EAAI,EAAIs6D,GAASjiE,QAAS2V,EAAKhO,UAAU,EAAG,EAAI,EAAIs6D,GAASjiE,SC7CvF,MCEM+H,GAAS,IAAI5D,EDFH,yCEChB,MAAMw+D,GACTjhE,YAAYkhE,GACR1iE,EAAiBY,KAAM,CAAE8hE,OAAAA,IAG7BhjE,MAAMijE,GACF,OAAOA,EAAS37D,cAActH,MAAM,OAGxC+E,KAAKy9D,GACD,OAAOA,EAAMz9D,KAAK,MCT1B,IAWIm+D,GAAwBC,GAAmBC,GAAuBC,GAAoBC,GAXtFriE,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAOjF,MAAMoiE,WAAoBR,GAC7BjhE,YAAYkhE,EAAQjtD,EAAMme,GACtB3kB,MAAMyzD,GACNE,GAAuBz+D,IAAIvD,MAC3BiiE,GAAkBzhE,IAAIR,UAAM,GAC5BkiE,GAAsB1hE,IAAIR,UAAM,GAChCmiE,GAAmB3hE,IAAIR,UAAM,GAC7BD,GAAuBC,KAAMiiE,GAAmBptD,EAAM,KACtD9U,GAAuBC,KAAMkiE,GAAuBlvC,EAAU,KAC9DjzB,GAAuBC,KAAMmiE,GAAoB,KAAM,KAEvDt7C,YAAU,OAAOpmB,GAAuBT,KAAMiiE,GAAmB,KACrEK,eACI,OAAOb,GAAUhhE,GAAuBT,KAAMiiE,GAAmB,MAErEM,QAAQ7jE,GACJ,MAAM4iE,EAAQ7gE,GAAuBT,KAAMgiE,GAAwB,IAAKI,IAAwB7hE,KAAKP,MAIrG,OAHItB,EAAQ,GAAKA,GAAS4iE,EAAMpiE,SAC5B+H,GAAOlD,mBAAmB,uBAAuBrF,IAAS,QAASA,GAEhE4iE,EAAM5iE,GAEjB8jE,aAAa9oD,GACT,OAAOjZ,GAAuBT,KAAMgiE,GAAwB,IAAKI,IAAwB7hE,KAAKP,MAAM6E,QAAQ6U,IAGpHuoD,GAAoB,IAAIxgE,QAAWygE,GAAwB,IAAIzgE,QAAW0gE,GAAqB,IAAI1gE,QAAWugE,GAAyB,IAAI17D,QAAW87D,GAAyB,WAC3K,GAA6D,MAAzD3hE,GAAuBT,KAAMmiE,GAAoB,KAAc,CAC/D,MAAMb,EAAQthE,KAAKsiE,eAInB,GAFiBvmC,GAAGulC,EAAMz9D,KAAK,MAAQ,QAEtBpD,GAAuBT,KAAMkiE,GAAuB,KACjE,MAAM,IAAI/iE,MAAM,sBAAsBa,KAAK8hE,iBAG/C/hE,GAAuBC,KAAMmiE,GAAoBb,EAAO,KAE5D,OAAO7gE,GAAuBT,KAAMmiE,GAAoB,MClDrD,MAAMM,GAAS,IAHf,cAAqBJ,GACxBzhE,cAAgByN,MAAM,KAHZ,w3LACG,wECAJpH,GAAS,IAAI5D,ECFH,sCCCVq/D,GAAYzkE,OAAO4J,OAAO,CACvC86D,GAAIA,KCFJ,IAWIC,GAXA7iE,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAKjF,MAAM4iE,WAAqBR,GAC9BzhE,YAAYkhE,EAAQjtD,EAAMiuD,EAAQ9vC,GAC9B3kB,MAAMyzD,EAAQjtD,EAAMme,GACpB4vC,GAAqBpiE,IAAIR,UAAM,GAC/BD,GAAuBC,KAAM4iE,GAAsBE,EAAQ,KAE3DC,cAAY,OAAOtiE,GAAuBT,KAAM4iE,GAAsB,KAC1EN,eACI,OCpBD,SAAoBztD,EAAMmuD,GAC7B,IAAI1B,EAAQG,GAAU5sD,GAAMhR,KAAK,KAoBjC,OAlBAm/D,EAAQlkE,MAAM,MAAM8I,SAASk7D,IACzB,MAAMr8D,EAAQq8D,EAAOr8D,MAAM,iCAC3B,IAAKA,EACD,MAAM,IAAItH,MAAM,kCAEpB,IAAI8jE,EAAY,EAChB,MAAMC,ECVP,SAAoBpzD,EAAO+E,GAC9B,MAAM9R,GAAY,GAAK+M,GAAS,EAC1BpJ,EAAS,GACf,IAAIlI,EAAQ,EAAG8R,EAAO,EAAG6yD,EAAQ,EACjC,IAAK,IAAIlkE,EAAI,EAAGA,EAAI4V,EAAK3V,OAAQD,IAK7B,IAHAT,EAAUA,GAAS,EAPZ,mEAOwBqG,QAAQgQ,EAAK5V,IAC5CqR,GAAQ,EAEDA,GAAQR,GAAO,CAElB,MAAM/R,EAASS,GAAU8R,EAAOR,EAChCtR,IAAU,GAAM8R,EAAOR,GAAU,EACjCQ,GAAQR,EAGM,IAAV/R,EACAolE,GAASpgE,GAGT2D,EAAO/D,KAAK5E,EAAQolE,GACpBA,EAAQ,GAIpB,OAAOz8D,EDfe08D,CAAWx8D,SAASH,EAAM,IAAKA,EAAM,IACjD48D,EAAWz8D,SAASH,EAAM,IAC1B68D,EAAQ,IAAI/6D,OAAO,KAAK9B,EAAM,OAAQ,KAC5C66D,EAAQA,EAAM7oC,QAAQ6qC,GAAO,CAACnlE,EAAK0V,KAEnB,KADEqvD,EAAUD,KAEpBpvD,EAASpR,OAAOC,aAAamR,EAAO6e,WAAW,GAAI2wC,GACnDJ,KAEGpvD,QAGRytD,EAAMxiE,MAAM,KDDRykE,CAAWvjE,KAAK6mB,MAAO7mB,KAAK+iE,UGf3C,SAASS,GAAalzD,GAClB,OAAS,GAAKA,GAAQ,GAAO,EAAIA,EAAQ,IAM7C,SAASmzD,GAAkB1B,EAAU2B,EAAWjB,IAC5Cx7D,GAAOrC,gBAAgB,QACP,MAAZ8+D,IACAA,EAAWjB,IAEf,MAAMnB,EAAQoC,EAAS5kE,MAAMijE,IACxBT,EAAMpiE,OAAS,GAAO,GAAKoiE,EAAMpiE,OAAS,IAAMoiE,EAAMpiE,OAAS,KAChE+H,GAAOlD,mBAAmB,0BAA2B,WAAY,gBAErE,MAAM4/D,EAAU/uD,GAAS,IAAIpO,WAAWwS,KAAKC,KAAK,GAAKqoD,EAAMpiE,OAAS,KACtE,IAAIyH,EAAS,EACb,IAAK,IAAI1H,EAAI,EAAGA,EAAIqiE,EAAMpiE,OAAQD,IAAK,CACnC,IAAIP,EAAQglE,EAASlB,aAAalB,EAAMriE,GAAGsD,UAAU,UACtC,IAAX7D,GACAuI,GAAOlD,mBAAmB,kCAAkC9E,IAAK,WAAY,gBAEjF,IAAK,IAAI2kE,EAAM,EAAGA,EAAM,GAAIA,IACpBllE,EAAS,GAAM,GAAKklE,IACpBD,EAAQh9D,GAAU,IAAO,GAAM,EAAKA,EAAS,GAEjDA,IAGR,MAAMk9D,EAAc,GAAKvC,EAAMpiE,OAAS,EAElC4kE,EAAeN,GADAlC,EAAMpiE,OAAS,GAMpC,OAJiB0V,GAASmM,GAAO4iD,EAAQ96D,MAAM,EAAGg7D,EAAc,KAAK,GAAKC,MACxDH,EAAQA,EAAQzkE,OAAS,GAAK4kE,IAC5C78D,GAAOlD,mBAAmB,4BAA6B,WAAY,gBAEhEsR,GAAQsuD,EAAQ96D,MAAM,EAAGg7D,EAAc,IAElD,SAASE,GAAkBJ,EAASD,EAAWjB,KACtCkB,EAAQzkE,OAAS,GAAMykE,EAAQzkE,OAAS,IAAMykE,EAAQzkE,OAAS,KAChE+H,GAAOlD,mBAAmB,uBAAwB,UAAW,gBAEjD,MAAZ2/D,IACAA,EAAWjB,IAEf,MAAMuB,EAAU,CAAC,GACjB,IAAIC,EAAgB,GACpB,IAAK,IAAIhlE,EAAI,EAAGA,EAAI0kE,EAAQzkE,OAAQD,IAE5BglE,EAAgB,GAChBD,EAAQA,EAAQ9kE,OAAS,KAAO,EAChC8kE,EAAQA,EAAQ9kE,OAAS,IAAMykE,EAAQ1kE,GACvCglE,GAAiB,IAIjBD,EAAQA,EAAQ9kE,OAAS,KAAO+kE,EAChCD,EAAQA,EAAQ9kE,OAAS,IAAMykE,EAAQ1kE,IAAO,EAAIglE,EAElDD,EAAQrhE,KAAKghE,EAAQ1kE,KAvDpB,GAuDsC,EAAIglE,GAvD7B,EAAK,MAwDnBA,GAAiB,GAIzB,MAAMC,EAAeP,EAAQzkE,OAAS,EAChC8zB,EAAWpsB,SAASma,GAAO4iD,GAAS98D,UAAU,EAAG,GAAI,IAAM28D,GAAaU,GAI9E,OAFAF,EAAQA,EAAQ9kE,OAAS,KAAOglE,EAChCF,EAAQA,EAAQ9kE,OAAS,IAAO8zB,GAAa,EAAIkxC,EAC1CR,EAAS7/D,KAAKmgE,EAAQ5lE,KAAKM,GAAUglE,EAASnB,QAAQ7jE,MHpDjEkkE,GAAuB,IAAInhE,QGsD3B,MAAMgK,GAAS,GACR,MAAM04D,GACTvjE,YAAYoE,EAAO2+D,EAASS,EAAQjnD,EAAUumD,GAC1B,MAAZvmD,IACAA,EAAW,IAEC,MAAZumD,IACAA,EAAWjB,IAEfx7D,GAAOnC,cAAcE,EAAOyG,GAAQ,YACpCrM,EAAiBY,KAAM,CAAEokE,OAAAA,EAAQjnD,SAAAA,EAAUumD,SAAAA,EAAUC,QAAAA,IAEzDU,cACI,MAAMjnD,EAAOgc,GAAY,WAAap5B,KAAKmd,SAAU0a,EAAAA,yBAAyBysC,MAC9E,OAAOpnD,GAAOkc,GAAYp5B,KAAKokE,OAAQvsC,EAAwBA,yBAACysC,MAAOlnD,EAAM,KAAM,GAAI,UAE3FnX,kBAAkBm+D,EAAQjnD,EAAUumD,GAEhC,MAAMC,EAAUF,GAAkBW,EAAQV,GAE1C,OADAU,EAASL,GAAkB98D,GAAO3B,SAASq+D,GAAUD,GAC9C,IAAIS,GAAS14D,GAAQk4D,EAASS,EAAQjnD,EAAUumD,GAE3Dz9D,mBAAmBs+D,EAAUpnD,EAAUumD,GACnC,MAAMC,EAAU18D,GAAO3B,SAASi/D,EAAU,WACpCH,EAASL,GAAkBJ,EAASD,GAC1C,OAAO,IAAIS,GAAS14D,GAAQ4J,GAAQsuD,GAAUS,EAAQjnD,EAAUumD,GAEpEz9D,uBAAuBs+D,EAAUb,GAE7B,OAAOK,GADS98D,GAAO3B,SAASi/D,EAAU,WACRb,GAEtCz9D,uBAAuBm+D,EAAQV,GAC3B,OAAOD,GAAkBW,EAAQV,GAErCz9D,uBAAuBm+D,EAAQV,GAC3B,IAEI,OADAD,GAAkBW,EAAQV,IACnB,EAEX,MAAOpiE,IACP,OAAO,GCvHf,IAWIkjE,GAXAzkE,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IASjF,MAAMwkE,WAAmBnV,GAC5B1uD,YAAY40C,EAAYlL,GACpBj8B,MAAMi8B,GACNk6B,GAAuBhkE,IAAIR,UAAM,GACjCD,GAAuBC,KAAMwkE,GAAwBhvB,EAAY,KAEjEp2C,EAAiBY,KAAM,CAAEuyB,QADT4rB,GAAen+C,KAAK0kE,WAAWjqB,aAI/CiqB,iBAAe,OAAOjkE,GAAuBT,KAAMwkE,GAAwB,KAC3EhvB,iBAAe,OAAOx1C,KAAK0kE,WAAWlvB,WAC1C33C,mBAAqB,OAAOmC,KAAKuyB,QACjC09B,QAAQ3lB,GACJ,OAAO,IAAIm6B,GAAWhkE,GAAuBT,KAAMwkE,GAAwB,KAAMl6B,GAErFzsC,sBAAsB+tD,GAElB,MAAMv3B,EAAKp2B,OAAOoN,OAAO,GAAIugD,QAAW9tD,EAAkB,CACtDsN,GAAKwgD,EAAIxgD,GAAK0pB,GAAe82B,EAAIxgD,GAAIpL,KAAKsqC,eAAY5qC,EACtDyL,KAAOygD,EAAIzgD,KAAO2pB,GAAe82B,EAAIzgD,KAAMnL,KAAKsqC,eAAY5qC,KAEjD,MAAX20B,EAAGlpB,OACC+nB,GAAWmB,EAAGlpB,QAAUnL,KAAKuyB,SAC7BtrB,GAAOlD,mBAAmB,oCAAqC,UAAW6nD,EAAIzgD,aAE3EkpB,EAAGlpB,MAGd,MAAMw5D,EAAMhlB,GAAYx0C,KAAKkpB,GAE7B,OADAswC,EAAI/jC,UAAY5gC,KAAK0kE,WAAWroB,KAAKsoB,EAAI9kB,cAClC8kB,EAAIn3B,WAEf3vC,kBAAkB4F,GACd,OAAOzD,KAAK0kE,WAAWroB,KAAK9f,GAAY94B,IAAU+pC,WAEtD3vC,oBAAoB2hC,EAAQ3gC,EAAOd,GAE/B,MAAMi1D,QAAkB50B,GAAiB60B,aAAazzB,EAAQ3gC,EAAOd,GAAOF,MAAOiF,IAC/E,GAAqB,MAAjB9C,KAAKsqC,SACL,OAAOrjC,GAAOnD,WAAW,8CAA+C,wBAAyB,CAC7FY,UAAW,cACXzC,KAAM,CAAEa,KAAAA,KAGhB,MAAMyvB,QAAgBvyB,KAAKsqC,SAAStV,YAAYlyB,GAChD,OAAe,MAAXyvB,EACOtrB,GAAOnD,WAAW,wBAAyB,oBAAqB,CACnE/F,MAAO+E,IAGRyvB,KAEX,OAAOvyB,KAAK0kE,WAAWroB,KAAKje,GAAiB/iB,KAAK23C,EAAUxzB,OAAQ3gC,EAAOm0D,EAAUj1D,QAAQyvC,YAGrGg3B,GAAyB,IAAI/iE,QCzE7B,IAWIoI,GAAI+6D,GAAwBC,GAX5BpkE,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAEpFF,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAc3F+mE,MAAAA,GAAc,mBAErBC,GAAe,IAAIv+D,WAAW,CAAC,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,MACnFw+D,GAAc,WACd30C,GAAI5qB,OAAO,sEAEjB,SAASw/D,GAAKlnE,EAAOmB,GACjB,IAAIwH,EAAS,GACb,KAAO3I,GACH2I,EAJQ,mBAIS3I,EAAQ,IAAM2I,EAC/B3I,EAAQib,KAAK4vB,MAAM7qC,EAAQ,IAE/B,KAAO2I,EAAOxH,OAAkB,EAATA,GACnBwH,EAAS,IAAMA,EAEnB,MAAO,KAAOA,EAElB,SAASw+D,GAAkBx1D,GACvB,MAAM3R,EAAQkJ,GAAO3B,SAASoK,GAG9B,OAAOqE,GADOyB,GAAO,CAACzX,EADR6X,GAAUmL,GAAOA,GAAOhjB,IAAS,EAAG,MAItD,MAAM0N,GAAS,GACf,SAAS05D,GAAMzmE,EAAO0mE,EAAW3qB,EAAWjF,GACxC,MAAM3gC,EAAO,IAAIrO,WAAW,IAC5B,GAAI9H,EAAQsmE,GAAa,CACrB,GAAkB,MAAdxvB,EACA,OAAOvuC,GAAOnD,WAAW,uCAAwC,wBAAyB,CACtFY,UAAW,gBAInBmQ,EAAKrU,IAAIoU,GAAS4gC,GAAa,QAI/B3gC,EAAKrU,IAAIoU,GAAS6lC,IAGtB,IAAK,IAAIx7C,EAAI,GAAIA,GAAK,EAAGA,GAAK,EAC1B4V,EAAK,IAAM5V,GAAK,IAAQP,GAAU,GAAKO,EAAM,IAEjD,MAAMomE,EAAIzwD,GAASgS,GAAY,SAAUw+C,EAAWvwD,IACpD,MAAO,CAAEywD,GAAID,EAAEx8D,MAAM,EAAG,IAAK08D,GAAIF,EAAEx8D,MAAM,KAE7C,SAAS28D,GAAW9pB,EAAM+pB,GACtB,MAAMz5D,EAAay5D,EAAK3mE,MAAM,KAC9B,GAA0B,IAAtBkN,EAAW9M,QAAmC,MAAlB8M,EAAW,IAA6B,IAAf0vC,EAAKtxC,MAC1D,MAAM,IAAIjL,MAAM,kBAAoBsmE,GAElB,MAAlBz5D,EAAW,IACXA,EAAW2N,QAEf,IAAIjT,EAASg1C,EACb,IAAK,IAAIz8C,EAAI,EAAGA,EAAI+M,EAAW9M,OAAQD,IAAK,CACxC,MAAMymE,EAAY15D,EAAW/M,GAC7B,GAAIymE,EAAUj/D,MAAM,aAAc,CAC9B,MAAM/H,EAAQkI,SAAS8+D,EAAU7+D,UAAU,EAAG6+D,EAAUxmE,OAAS,IACjE,GAAIR,GAASsmE,GACT,MAAM,IAAI7lE,MAAM,wBAA0BumE,GAE9Ch/D,EAASA,EAAOi/D,YAAYX,GAActmE,OAEzC,CAAA,IAAIgnE,EAAUj/D,MAAM,YAQrB,MAAM,IAAItH,MAAM,4BAA8BumE,GARZ,CAClC,MAAMhnE,EAAQkI,SAAS8+D,GACvB,GAAIhnE,GAASsmE,GACT,MAAM,IAAI7lE,MAAM,wBAA0BumE,GAE9Ch/D,EAASA,EAAOi/D,YAAYjnE,KAMpC,OAAOgI,EAEJ,MAAMk/D,WAAqBnB,GAC9B7jE,YAAYoE,EAAO0/D,EAAYmB,EAAmBT,EAAWK,EAAM/mE,EAAO0L,EAAO23D,EAAUz3B,GACvFj8B,MAAMq2D,EAAYp6B,GAClBrjC,GAAOnC,cAAcE,EAAOyG,GAAQ,gBACpCrM,EAAiBY,KAAM,CAAEy6C,UAAWiqB,EAAW/nB,sBAE/Cv9C,EAAiBY,KAAM,CACnB6lE,kBAAAA,EAAmBC,YAFHlwD,GAAUgX,GAAU7L,GAAO/gB,KAAKy6C,YAAa,EAAG,GAGhE2qB,UAAAA,EAAWK,KAAAA,EAAM/mE,MAAAA,EAAO0L,MAAAA,IAE5BhL,EAAiBY,KAAM,CAAE+hE,SAAAA,IAE7B9R,QAAQ3lB,GACJ,OAAO,IAAIs7B,GAAan6D,GAAQzL,KAAK0kE,WAAY1kE,KAAK6lE,kBAAmB7lE,KAAKolE,UAAWplE,KAAKylE,KAAMzlE,KAAKtB,MAAOsB,KAAKoK,MAAOpK,KAAK+hE,SAAUz3B,GAE3Iy7B,kBAMA,GAAI/lE,KAAKoK,OAAS,IACd,MAAM,IAAIjL,MAAM,oBAEpB,OAAO+lE,GAAkB1vD,GAAO,CAC5B,aAAcyvD,GAAKjlE,KAAKoK,MAAO,GAAIpK,KAAK6lE,kBACxCZ,GAAKjlE,KAAKtB,MAAO,GAAIsB,KAAKolE,UAC1B5vD,GAAO,CAAC,OAAQxV,KAAKw1C,gBAG7BwwB,UAAY,OAAqB,MAAbhmE,KAAKylE,KACzBQ,SACI,OAAO,IAAIC,GAAiBz6D,GAAQzL,KAAKuyB,QAASvyB,KAAKy6C,UAAWz6C,KAAK6lE,kBAAmB7lE,KAAKolE,UAAWplE,KAAKylE,KAAMzlE,KAAKtB,MAAOsB,KAAKoK,MAAOpK,KAAKsqC,UAEtJq7B,YAAYQ,GACR,MAAMznE,EAAQuI,GAAOzB,UAAU2gE,EAAQ,SACvC,GAAIznE,EAAQ,WACR,MAAM,IAAIS,MAAM,mBAAqBsD,OAAO/D,IAGhD,IAAI+mE,EAAOzlE,KAAKylE,KACZA,IACAA,GAAQ,KAAe,WAAR/mE,GACXA,EAAQsmE,KACRS,GAAQ,MAGhB,MAAMF,GAAEA,EAAED,GAAEA,GAAOH,GAAMzmE,EAAOsB,KAAKolE,UAAWplE,KAAKy6C,UAAWz6C,KAAKw1C,YAC/D4wB,EAAK,IAAI3pB,GAAW7sC,IAAOH,GAAS61D,GAAM7/D,OAAOzF,KAAKw1C,aAAenlB,GAAG,KAC9E,OAAO,IAAIu1C,GAAan6D,GAAQ26D,EAAIpmE,KAAK8lE,YAAazwD,GAAQkwD,GAAKE,EAAM/mE,EAAOsB,KAAKoK,MAAQ,EAAGpK,KAAK+hE,SAAU/hE,KAAKsqC,UAExHk7B,WAAWC,GACP,OAAOD,GAAWxlE,KAAMylE,GAE5Bx/D,gBAAgB8zC,GACZ,OAAOt5C,GAAuBmlE,GAAc/7D,GAAI,IAAK+6D,IAAwBrkE,KAAKqlE,GAAc7rB,EAAM,MAE1G9zC,kBAAkBm+D,EAAQjnD,EAAW,GAAIsoD,EAAOX,GAAapB,EAAWjB,IAC/DgD,IACDA,EAAOX,IAEX,MAAM/C,EAAWoC,GAASkC,WAAWjC,EAAQjnD,EAAUumD,GACvD,OAAOjjE,GAAuBmlE,GAAc/7D,GAAI,IAAK+6D,IAAwBrkE,KAAKqlE,GAAc7D,EAASsC,cAAetC,GAAUyD,WAAWC,GAEjJx/D,oBAAoB87D,EAAU0D,EAAOX,IAIjC,OAHKW,IACDA,EAAOX,IAEJrkE,GAAuBmlE,GAAc/7D,GAAI,IAAK+6D,IAAwBrkE,KAAKqlE,GAAc7D,EAASsC,cAAetC,GAAUyD,WAAWC,GAEjJx/D,uBAAuB8/D,GACnB,MAAMzwD,EAAQV,GAASZ,GAAa+xD,IACf,KAAjBzwD,EAAMpW,QAAiBgmE,GAAkB5vD,EAAMzM,MAAM,EAAG,OAASk9D,GACjE9+D,GAAOlD,mBAAmB,uBAAwB,cAAe,gBAErE,MAAMqG,EAAQkL,EAAM,GACduwD,EAAoBxwD,GAAQC,EAAMzM,MAAM,EAAG,IAC3CnK,EAAQkI,SAASyO,GAAQC,EAAMzM,MAAM,EAAG,KAAKhC,UAAU,GAAI,IAC3Du+D,EAAY/vD,GAAQC,EAAMzM,MAAM,GAAI,KACpCrJ,EAAM8V,EAAMzM,MAAM,GAAI,IAC5B,OAAQwM,GAAQC,EAAMzM,MAAM,EAAG,KAE3B,IAAK,aACL,IAAK,aAAc,CACf,MAAM4xC,EAAYplC,GAAQ7V,GAC1B,OAAO,IAAI0mE,GAAiBz6D,GAAQ0yC,GAAe1D,GAAYA,EAAWorB,EAAmBT,EAAW,KAAM1mE,EAAO0L,EAAO,MAGhI,IAAK,aACL,IAAK,cACD,GAAe,IAAX5K,EAAI,GACJ,MAEJ,OAAO,IAAIomE,GAAan6D,GAAQ,IAAIgxC,GAAWj9C,EAAIqJ,MAAM,IAAKg9D,EAAmBT,EAAW,KAAM1mE,EAAO0L,EAAO,KAAM,MAE9H,OAAOnD,GAAOlD,mBAAmB,8BAA+B,cAAe,gBAEnFkC,oBAAoBkX,EAAW,GAAIsoD,EAAOX,GAAapB,EAAWjB,IACzDgD,IACDA,EAAOX,IAEX,MAAM/C,EAAWoC,GAASmC,YAAY74C,GAAY,IAAKtQ,EAAUumD,GACjE,OAAOjjE,GAAuBmlE,GAAc/7D,GAAI,IAAK+6D,IAAwBrkE,KAAKqlE,GAAc7D,EAASsC,cAAetC,GAAUyD,WAAWC,IAGrJ57D,GAAK+7D,GAAchB,GAAyB,SAAgC2B,EAAOxE,GAC/E,MAAMhoB,EAAO9yC,GAAO3B,SAASihE,EAAO,QACpC,GAAIxsB,EAAK76C,OAAS,IAAM66C,EAAK76C,OAAS,GAClC,MAAM,IAAIC,MAAM,gBAEpB,MAAMkmE,EAAIzwD,GAASgS,GAAY,SAAUm+C,GAAchrB,IACjD2qB,EAAa,IAAIjoB,GAAWpnC,GAAQgwD,EAAEx8D,MAAM,EAAG,MACrD,OAAO,IAAI+8D,GAAan6D,GAAQi5D,EAAY,aAAcrvD,GAAQgwD,EAAEx8D,MAAM,KAAM,IAAK,EAAG,EAAGk5D,EAAU,OAElG,MAAMmE,WAAyBlW,GAClCpvD,YAAYoE,EAAOutB,EAASkoB,EAAWorB,EAAmBT,EAAWK,EAAM/mE,EAAO0L,EAAOkgC,GACrFj8B,MAAMkkB,EAAS+X,GACfrjC,GAAOnC,cAAcE,EAAOyG,GAAQ,oBACpCrM,EAAiBY,KAAM,CAAEy6C,UAAAA,IAEzBr7C,EAAiBY,KAAM,CACnBy6C,UAAAA,EAAWqrB,YAFKlwD,GAAUgX,GAAU7L,GAAO05B,IAAa,EAAG,GAEnCorB,kBAAAA,EAAmBT,UAAAA,EAAWK,KAAAA,EAAM/mE,MAAAA,EAAO0L,MAAAA,IAG3E6lD,QAAQ3lB,GACJ,OAAO,IAAI47B,GAAiBz6D,GAAQzL,KAAKuyB,QAASvyB,KAAKy6C,UAAWz6C,KAAK6lE,kBAAmB7lE,KAAKolE,UAAWplE,KAAKylE,KAAMzlE,KAAKtB,MAAOsB,KAAKoK,MAAOkgC,GAE7Iy7B,kBAMA,GAAI/lE,KAAKoK,OAAS,IACd,MAAM,IAAIjL,MAAM,oBAEpB,OAAO+lE,GAAkB1vD,GAAO,CAC5B,aACAyvD,GAAKjlE,KAAKoK,MAAO,GACjBpK,KAAK6lE,kBACLZ,GAAKjlE,KAAKtB,MAAO,GACjBsB,KAAKolE,UACLplE,KAAKy6C,aAGburB,UAAY,OAAqB,MAAbhmE,KAAKylE,KACzBE,YAAYQ,GACR,MAAMznE,EAAQuI,GAAOzB,UAAU2gE,EAAQ,SACvC,GAAIznE,EAAQ,WACR,MAAM,IAAIS,MAAM,mBAAqBsD,OAAO/D,IAGhD,IAAI+mE,EAAOzlE,KAAKylE,KACZA,IACAA,GAAQ,KAAe,WAAR/mE,GACXA,EAAQsmE,KACRS,GAAQ,MAGhB,MAAMF,GAAEA,EAAED,GAAEA,GAAOH,GAAMzmE,EAAOsB,KAAKolE,UAAWplE,KAAKy6C,UAAW,MAC1D+rB,EAAK/pB,GAAWgqB,WAAWnB,EAAItlE,KAAKy6C,WAAW,GAC/CloB,EAAU4rB,GAAeqoB,GAC/B,OAAO,IAAIN,GAAiBz6D,GAAQ8mB,EAASi0C,EAAIxmE,KAAK8lE,YAAazwD,GAAQkwD,GAAKE,EAAM/mE,EAAOsB,KAAKoK,MAAQ,EAAGpK,KAAKsqC,UAEtHk7B,WAAWC,GACP,OAAOD,GAAWxlE,KAAMylE,IAGzB,MAAMiB,GACT9lE,YAAYwjE,EAAQjnD,EAAW,GAAIsoD,EAAO,iBAAkB3D,EAASW,IACjEoC,GAA0BrkE,IAAIR,UAAM,GACpCD,GAAuBC,KAAM6kE,GAA2Be,GAAaS,WAAWjC,EAAQjnD,EAAUsoD,EAAM3D,GAAS,KAErH6E,UAAUjoE,EAAQ,GACd,OAAO+B,GAAuBT,KAAM6kE,GAA2B,KAAKc,YAAYjnE,IAIjF,SAASkoE,GAAeT,GAC3B,MAAMznE,EAAQuI,GAAOzB,UAAU2gE,EAAQ,SAIvC,OAHIznE,EAAQ,GAAKA,GAASsmE,KACtB/9D,GAAOlD,mBAAmB,wBAAyB,QAASrF,GAEzD,aAAaA;uFANxBmmE,GAA4B,IAAIpjE,QCpRhC,IAWIolE,GAAUC,GAASC,GAXnBhnE,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAIxF,MAAM+mE,GAAiB,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,IAEvCC,GAAO,CAAC,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,KAEtLC,GAAI,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CC,GAAK,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAEhgDtmD,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FsmD,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAE1/FC,GAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAE1/Fr3B,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/Fq3B,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAA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"} \ No newline at end of file +{"version":3,"file":"ethers.umd.min.js","sources":["../../properties/lib/properties.js","../../properties/lib/events.js","../../properties/lib/storage.js","../../logger/lib/errors.js","../../logger/lib/logger.js","../../logger/lib/_version.js","../../abi/lib/_version.js","../../abi/lib/logger.js","../../abi/lib/fragments.js","../../math/lib/_version.js","../../math/lib/logger.js","../../math/lib/convert.js","../../math/lib/maths.js","../../math/lib/fixednumber.js","../../math/lib/base58.js","../../math/lib/units.js","../../bytes/lib/check.js","../../bytes/lib/_version.js","../../bytes/lib/logger.js","../../bytes/lib/array.js","../../bytes/lib/base64.js","../../bytes/lib/hex.js","../../bytes/lib/data.js","../../bytes/lib/pad.js","../../abi/lib/coders/abstract-coder.js","../../../node_modules/@noble/hashes/esm/utils.js","../../../node_modules/@noble/hashes/esm/hmac.js","../../../node_modules/@noble/hashes/esm/pbkdf2.js","../../../node_modules/@noble/hashes/esm/_sha2.js","../../../node_modules/@noble/hashes/esm/sha256.js","../../../node_modules/@noble/hashes/esm/_u64.js","../../../node_modules/@noble/hashes/esm/sha512.js","../../crypto/lib/_version.js","../../crypto/lib/logger.js","../../crypto/lib/crypto-browser.js","../../crypto/lib/hmac.js","../../../node_modules/@noble/hashes/esm/sha3.js","../../crypto/lib/keccak.js","../../../node_modules/@noble/hashes/esm/ripemd160.js","../../crypto/lib/ripemd160.js","../../crypto/lib/pbkdf2.js","../../crypto/lib/random.js","../../../node_modules/@noble/hashes/esm/scrypt.js","../../crypto/lib/scrypt.js","../../crypto/lib/sha2.js","../../crypto/lib/index.js","../../address/lib/_version.js","../../address/lib/logger.js","../../address/lib/address.js","../../rlp/lib/_version.js","../../rlp/lib/logger.js","../../rlp/lib/encode.js","../../rlp/lib/decode.js","../../address/lib/contract-address.js","../../address/lib/checks.js","../../abi/lib/typed.js","../../abi/lib/coders/address.js","../../abi/lib/coders/anonymous.js","../../abi/lib/coders/array.js","../../abi/lib/coders/boolean.js","../../abi/lib/coders/bytes.js","../../abi/lib/coders/fixed-bytes.js","../../abi/lib/coders/null.js","../../abi/lib/coders/number.js","../../strings/lib/_version.js","../../strings/lib/logger.js","../../strings/lib/utf8.js","../../strings/lib/bytes32.js","../../strings/lib/idna.js","../../abi/lib/coders/string.js","../../abi/lib/coders/tuple.js","../../abi/lib/abi-coder.js","../../hash/lib/id.js","../../hash/lib/_version.js","../../hash/lib/logger.js","../../hash/lib/namehash.js","../../hash/lib/message.js","../../hash/lib/solidity.js","../../hash/lib/typed-data.js","../../abi/lib/interface.js","../../web/lib/_version.js","../../web/lib/logger.js","../../web/lib/response.js","../../web/lib/get-url-browser.js","../../web/lib/request.js","../../web/lib/fetch-data.js","../../providers/lib/_version.js","../../providers/lib/logger.js","../../providers/lib/ens-resolver.js","../../signing-key/lib/_version.js","../../signing-key/lib/logger.js","../../signing-key/lib/signature.js","../../../node_modules/@noble/secp256k1/lib/esm/index.js","../../signing-key/lib/signing-key.js","../../transaction/lib/accesslist.js","../../transaction/lib/address.js","../../transaction/lib/_version.js","../../transaction/lib/logger.js","../../transaction/lib/transaction.js","../../providers/lib/provider.js","../../providers/lib/formatter.js","../../providers/lib/plugins-network.js","../../providers/lib/network.js","../../providers/lib/subscriber-polling.js","../../providers/lib/abstract-provider.js","../../providers/lib/abstract-signer.js","../../providers/lib/community.js","../../providers/lib/subscriber-filterid.js","../../providers/lib/provider-jsonrpc.js","../../providers/lib/provider-ankr.js","../../providers/lib/provider-alchemy.js","../../providers/lib/provider-cloudflare.js","../../providers/lib/provider-etherscan.js","../../providers/lib/provider-infura.js","../../providers/lib/provider-pocket.js","../../providers/lib/provider-fallback.js","../../providers/lib/shuffle.js","../../providers/lib/ws-browser.js","../../providers/lib/provider-socket.js","../../providers/lib/provider-websocket.js","../../providers/lib/default-provider.js","../../providers/lib/provider-ipcsocket-browser.js","../../contract/lib/wrappers.js","../../contract/lib/_version.js","../../contract/lib/logger.js","../../contract/lib/contract.js","../../wordlists/lib/decode-owl.js","../../wordlists/lib/_version.js","../../wordlists/lib/logger.js","../../wordlists/lib/wordlist.js","../../wordlists/lib/wordlist-owl.js","../../wordlists/lib/lang-en.js","../../wallet/lib/logger.js","../../wallet/lib/_version.js","../../wordlists/lib/wordlists-en.js","../../wordlists/lib/wordlist-owla.js","../../wordlists/lib/decode-owla.js","../../wordlists/lib/bit-reader.js","../../wallet/lib/mnemonic.js","../../wallet/lib/base-wallet.js","../../wallet/lib/hdwallet.js","../../../node_modules/aes-js/lib/aes.js","../../../node_modules/aes-js/lib/mode.js","../../../node_modules/aes-js/lib/mode-cbc.js","../../../node_modules/aes-js/lib/mode-cfb.js","../../../node_modules/aes-js/lib/mode-ctr.js","../../wallet/lib/utils.js","../../wallet/lib/json-crowdsale.js","../../../node_modules/aes-js/lib/padding.js","../../../node_modules/aes-js/lib/mode-ofb.js","../../wallet/lib/json-keystore.js","../../wallet/lib/wallet.js","../lib/_version.js"],"sourcesContent":["//import type { BigNumber, BigNumberish } from \"./big-number\";\n//import type { Bytes, BytesLike } from \"./bytes\";\n//import type { Signature, SignatureLike } from \"./signature\";\n/*\nexport type Loose = T extends BigNumber ? BigNumberish:\n T extends number ? BigNumberish:\n T extends Bytes ? BytesLike:\n T extends Signature ? SignatureLike:\n T;\nexport type LooseObject = { [P in keyof T]?: Loose; };\n*/\n//export type Deferrable = T | Promise;\n/*\nexport type DeferrableObject = {\n [ P in keyof T ]: Deferrable\n};\n*/\n/*\nexport type Frozen = Readonly<{\n [ P in keyof T ]: T[P] extends Freezable ? Frozen: T[P];\n}>;\n\nexport interface Freezable {\n clone(): T;\n freeze(): Frozen;\n isFrozen(): boolean;\n}\n*/\n/*\nconst _data: WeakMap = new WeakMap();\n\nexport class Data implements Freezable {\n #props: {\n data: Uint8Array\n };\n\n [ index: number ]: number;\n\n constructor(lengthOrData: number | Uint8Array) {\n if (typeof(lengthOrData) === \"number\") {\n _data[this] = new Uint8Array(lengthOrData);\n } else {\n _data[this] = lengthOrData;\n }\n\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return Reflect.get(target, prop, receiver); }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n throw new Error(\"\");\n }\n return data[index];\n },\n\n set: (target, prop, value, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return false; }\n\n if (value < 0 || value > 255 || value % 1) { return false; }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n return false;\n }\n\n data[index] = value;\n\n return true;\n },\n });\n }\n\n toString(): string {\n return this.slice().toString();\n }\n\n slice(): Uint8Array {\n return _data.get(this).slice();\n }\n\n clone(): Data {\n return new Data(this.slice());\n }\n\n freeze(): Frozen {\n //Object.freeze(this.#props);\n return this;\n }\n\n isFrozen(): boolean {\n return Object.isFrozen(this.#props);\n }\n}\nconst d = new Data(4);\nconsole.log(d.toString());\nd[0] = 45;\nconsole.log(d.toString());\n*/\n/*\nexport type DeferrableObject = {\n [ P in keyof T ]: Deferrable\n};\n*/\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n/*\nexport type IsCancelled = () => Promise;\n\nexport function createPromise(resolve: (isCancelled: IsCancelled, (result: T) => void) => void, reject: (error: Error) => void, isCancelled: IsCancelled): CancellablePromise {\n let cancelled = false;\n\n const promise = new Promise((resolve, reject) => {\n \n });\n\n (>promise).cancel = function() {\n cancelled = true;\n };\n\n return (>promise);\n}\n*/\n/*\nexport class A implements Freezable {\n foo: number;\n constructor(foo: number) {\n this.foo = foo;\n }\n freeze(): Frozen {\n Object.freeze(this);\n return this;\n }\n clone(): A {\n return new A(this.foo);\n }\n}\n\nexport class B implements Freezable {\n a: A;\n constructor(a: A) {\n this.a = a;\n }\n freeze(): Frozen {\n this.a.freeze();\n Object.freeze(this);\n return this;\n }\n clone(): B {\n return new B(this.a);\n }\n}\n\nexport function test() {\n const a = new A(123);\n const b = new B(a);\n b.a = new A(234);\n const b2 = b.freeze();\n b2.a.foo = 123; // = a;\n}\n*/\nfunction checkType(value, type) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n throw new Error(\"invalid value for type\");\n}\nexport function defineProperties(target, values, types, defaults) {\n for (let key in values) {\n let value = values[key];\n const fallback = (defaults ? defaults[key] : undefined);\n if (fallback !== undefined) {\n value = fallback;\n }\n else {\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type);\n }\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _EventPayload_listener;\nimport { defineProperties } from \"./properties.js\";\nexport class EventPayload {\n constructor(emitter, listener, filter) {\n _EventPayload_listener.set(this, void 0);\n __classPrivateFieldSet(this, _EventPayload_listener, listener, \"f\");\n defineProperties(this, { emitter, filter });\n }\n async removeListener() {\n if (__classPrivateFieldGet(this, _EventPayload_listener, \"f\") == null) {\n return;\n }\n await this.emitter.off(this.filter, __classPrivateFieldGet(this, _EventPayload_listener, \"f\"));\n }\n}\n_EventPayload_listener = new WeakMap();\n//# sourceMappingURL=events.js.map","export function getStore(store, key) {\n return store[key];\n}\nexport function setStore(store, key, value) {\n if (Object.isFrozen(store)) {\n throw new Error(\"frozen object is immuatable; cannot set \" + key);\n }\n store[key] = value;\n}\n//# sourceMappingURL=storage.js.map","//export type TransactionReceipt {\n//}\n/**\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, errors.CALL_EXCEPTION)) {\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n//# sourceMappingURL=errors.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Logger_instances, _Logger_getBytes, _Logger_log;\nimport { version } from \"./_version.js\";\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\n;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nlet _globalLogger = null;\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\nfunction defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true, writable: false, value,\n });\n}\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\n// The type of error to use for various error codes\nconst ErrorConstructors = {};\nErrorConstructors.INVALID_ARGUMENT = TypeError;\nErrorConstructors.NUMERIC_FAULT = RangeError;\nErrorConstructors.BUFFER_OVERRUN = RangeError;\nexport class Logger {\n constructor(version) {\n _Logger_instances.add(this);\n defineReadOnly(this, \"version\", version || \"_\");\n }\n makeError(message, code, info) {\n {\n const details = [];\n if (info) {\n for (const key in info) {\n const value = (info[key]);\n try {\n details.push(key + \"=\" + JSON.stringify(value));\n }\n catch (error) {\n details.push(key + \"=[could not serialize object]\");\n }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${this.version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n const create = ErrorConstructors[code] || Error;\n const error = (new create(message));\n defineReadOnly(error, \"code\", code);\n if (info) {\n for (const key in info) {\n defineReadOnly(error, key, (info[key]));\n }\n }\n return error;\n }\n throwError(message, code, info) {\n throw this.makeError(message, code, info);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, \"INVALID_ARGUMENT\", {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, info) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code || \"UNKNOWN_ERROR\", info);\n }\n assertArgument(condition, message, name, value) {\n return this.assert(condition, message, \"INVALID_ARGUMENT\", {\n argument: name,\n value\n });\n }\n assertIntegerArgument(name, value, lower, upper) {\n let message = null;\n if (typeof (value) !== \"number\") {\n message = \"expected a number\";\n }\n else if (!Number.isInteger(value)) {\n message = \"invalid integer\";\n }\n else if ((lower != null && value < lower) || (upper != null && value > upper)) {\n message = \"value is out of range\";\n }\n if (message) {\n this.throwArgumentError(message, name, value);\n }\n }\n assertSafeUint53(value, message) {\n this.assertArgument((typeof (value) === \"number\"), \"invalid number\", \"value\", value);\n if (message == null) {\n message = \"value not safe\";\n }\n const operation = \"assertSafeInteger\";\n this.assert((value >= 0 && value < 0x1fffffffffffff), message, \"NUMERIC_FAULT\", {\n operation, fault: \"out-of-safe-range\", value\n });\n this.assert((value % 1) === 0, message, \"NUMERIC_FAULT\", {\n operation, fault: \"non-integer\", value\n });\n }\n assertNormalize(form) {\n if (_normalizeForms.indexOf(form) === -1) {\n this.throwError(\"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n }\n }\n assertPrivate(givenGuard, guard, className = \"\") {\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n this.throwError(`private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n }\n assertArgumentCount(count, expectedCount, message = \"\") {\n if (message) {\n message = \": \" + message;\n }\n this.assert((count >= expectedCount), \"missing arguemnt\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n this.assert((count >= expectedCount), \"too many arguemnts\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n }\n getBytes(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, false);\n }\n getBytesCopy(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, true);\n }\n getNumber(value, name) {\n switch (typeof (value)) {\n case \"bigint\":\n if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return Number(value);\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return value;\n case \"string\":\n try {\n return this.getNumber(BigInt(value), name);\n }\n catch (e) {\n this.throwArgumentError(`invalid numeric string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid numeric value\", name || \"value\", value);\n }\n getBigInt(value, name) {\n switch (typeof (value)) {\n case \"bigint\": return value;\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return BigInt(value);\n case \"string\":\n try {\n return BigInt(value);\n }\n catch (e) {\n this.throwArgumentError(`invalid BigNumberish string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid BigNumberish value\", name || \"value\", value);\n }\n debug(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.DEBUG, args);\n }\n info(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.INFO, args);\n }\n warn(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.WARNING, args);\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setLogLevel(logLevel) {\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_Logger_instances = new WeakSet(), _Logger_getBytes = function _Logger_getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x([0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n return this.throwArgumentError(\"invalid BytesLike value\", name || \"value\", value);\n}, _Logger_log = function _Logger_log(logLevel, args) {\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]) {\n return;\n }\n console.log.apply(console, args);\n};\nLogger.LogLevels = LogLevel;\n//# sourceMappingURL=logger.js.map","export const version = \"@ethersproject/logger@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","export const version = \"@ethersproject/abi@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TokenString_instances, _TokenString_offset, _TokenString_tokens, _TokenString_subTokenString, _ParamType_instances, _ParamType_walkAsync;\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n;\nexport var FormatType;\n(function (FormatType) {\n // Bare formatting, as is needed for computing a sighash of an event or function\n FormatType[\"sighash\"] = \"sighash\";\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n FormatType[\"minimal\"] = \"minimal\";\n // Human-Readable with nice spacing, including all names\n FormatType[\"full\"] = \"full\";\n // JSON-format a la Solidity\n FormatType[\"json\"] = \"json\";\n})(FormatType || (FormatType = {}));\n;\n// [ \"a\", \"b\" ] => { \"a\": 1, \"b\": 1 }\nfunction setify(items) {\n const result = new Set();\n items.forEach((k) => result.add(k));\n return Object.freeze(result);\n}\n// Visibility Keywords\nconst _kwVisib = \"constant external internal payable private public pure view\";\nconst KwVisib = setify(_kwVisib.split(\" \"));\nconst _kwTypes = \"constructor error event function struct\";\nconst KwTypes = setify(_kwTypes.split(\" \"));\nconst _kwModifiers = \"calldata memory storage payable indexed\";\nconst KwModifiers = setify(_kwModifiers.split(\" \"));\nconst _kwOther = \"tuple returns\";\n// All Keywords\nconst _keywords = [_kwTypes, _kwModifiers, _kwOther, _kwVisib].join(\" \");\nconst Keywords = setify(_keywords.split(\" \"));\n// Single character tokens\nconst SimpleTokens = {\n \"(\": \"OPEN_PAREN\", \")\": \"CLOSE_PAREN\",\n \"[\": \"OPEN_BRACKET\", \"]\": \"CLOSE_BRACKET\",\n \",\": \"COMMA\", \"@\": \"AT\"\n};\n// Parser regexes to consume the next token\nconst regexWhitespace = new RegExp(\"^(\\\\s*)\");\nconst regexNumber = new RegExp(\"^([0-9]+)\");\nconst regexIdentifier = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)\");\nconst regexType = new RegExp(\"^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))\");\nexport class TokenString {\n constructor(tokens) {\n _TokenString_instances.add(this);\n _TokenString_offset.set(this, void 0);\n _TokenString_tokens.set(this, void 0);\n __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\");\n __classPrivateFieldSet(this, _TokenString_tokens, tokens.slice(), \"f\");\n }\n get offset() { return __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n get length() { return __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length - __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n clone() { return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\")); }\n reset() { __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\"); }\n // Pops and returns the value of the next token, if it is a keyword in allowed; throws if out of tokens\n popKeyword(allowed) {\n const top = this.peek();\n if (top.type !== \"KEYWORD\" || !allowed.has(top.text)) {\n throw new Error(`expected keyword ${top.text}`);\n }\n return this.pop().text;\n }\n // Pops and returns the value of the next token if it is `type`; throws if out of tokens\n popType(type) {\n if (this.peek().type !== type) {\n throw new Error(`expected ${type}; got ${JSON.stringify(this.peek())}`);\n }\n return this.pop().text;\n }\n // Pops and returns a \"(\" TOKENS \")\"\n popParen() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = __classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, top.match + 1);\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Pops and returns the items within \"(\" ITEM1 \",\" ITEM2 \",\" ... \")\"\n popParams() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = [];\n while (__classPrivateFieldGet(this, _TokenString_offset, \"f\") < top.match - 1) {\n const link = this.peek().linkNext;\n result.push(__classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, link));\n __classPrivateFieldSet(this, _TokenString_offset, link, \"f\");\n }\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Returns the top Token, throwing if out of tokens\n peek() {\n if (__classPrivateFieldGet(this, _TokenString_offset, \"f\") >= __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length) {\n throw new Error(\"out-of-bounds\");\n }\n return __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[__classPrivateFieldGet(this, _TokenString_offset, \"f\")];\n }\n // Returns the next value, if it is a keyword in `allowed`\n peekKeyword(allowed) {\n const top = this.peekType(\"KEYWORD\");\n return (top != null && allowed.has(top)) ? top : null;\n }\n // Returns the value of the next token if it is `type`\n peekType(type) {\n if (this.length === 0) {\n return null;\n }\n const top = this.peek();\n return (top.type === type) ? top.text : null;\n }\n // Returns the next token; throws if out of tokens\n pop() {\n var _a;\n const result = this.peek();\n __classPrivateFieldSet(this, _TokenString_offset, (_a = __classPrivateFieldGet(this, _TokenString_offset, \"f\"), _a++, _a), \"f\");\n return result;\n }\n toString() {\n const tokens = [];\n for (let i = __classPrivateFieldGet(this, _TokenString_offset, \"f\"); i < __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length; i++) {\n const token = __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[i];\n tokens.push(`${token.type}:${token.text}`);\n }\n return ``;\n }\n}\n_TokenString_offset = new WeakMap(), _TokenString_tokens = new WeakMap(), _TokenString_instances = new WeakSet(), _TokenString_subTokenString = function _TokenString_subTokenString(from = 0, to = 0) {\n return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\").slice(from, to).map((t) => {\n return Object.freeze(Object.assign({}, t, {\n match: (t.match - from),\n linkBack: (t.linkBack - from),\n linkNext: (t.linkNext - from),\n }));\n return t;\n }));\n};\nexport function lex(text) {\n const tokens = [];\n const throwError = (message) => {\n const token = (offset < text.length) ? JSON.stringify(text[offset]) : \"$EOI\";\n throw new Error(`invalid token ${token} at ${offset}: ${message}`);\n };\n let brackets = [];\n let commas = [];\n let offset = 0;\n while (offset < text.length) {\n // Strip off any leading whitespace\n let cur = text.substring(offset);\n let match = cur.match(regexWhitespace);\n if (match) {\n offset += match[1].length;\n cur = text.substring(offset);\n }\n const token = { depth: brackets.length, linkBack: -1, linkNext: -1, match: -1, type: \"\", text: \"\", offset, value: -1 };\n tokens.push(token);\n let type = (SimpleTokens[cur[0]] || \"\");\n if (type) {\n token.type = type;\n token.text = cur[0];\n offset++;\n if (type === \"OPEN_PAREN\") {\n brackets.push(tokens.length - 1);\n commas.push(tokens.length - 1);\n }\n else if (type == \"CLOSE_PAREN\") {\n if (brackets.length === 0) {\n throwError(\"no matching open bracket\");\n }\n token.match = brackets.pop();\n (tokens[token.match]).match = tokens.length - 1;\n token.depth--;\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n }\n else if (type === \"COMMA\") {\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n commas.push(tokens.length - 1);\n }\n else if (type === \"OPEN_BRACKET\") {\n token.type = \"BRACKET\";\n }\n else if (type === \"CLOSE_BRACKET\") {\n // Remove the CLOSE_BRACKET\n let suffix = tokens.pop().text;\n if (tokens.length > 0 && tokens[tokens.length - 1].type === \"NUMBER\") {\n const value = tokens.pop().text;\n suffix = value + suffix;\n (tokens[tokens.length - 1]).value = logger.getNumber(value);\n }\n if (tokens.length === 0 || tokens[tokens.length - 1].type !== \"BRACKET\") {\n throw new Error(\"missing opening bracket\");\n }\n (tokens[tokens.length - 1]).text += suffix;\n }\n continue;\n }\n match = cur.match(regexIdentifier);\n if (match) {\n token.text = match[1];\n offset += token.text.length;\n if (Keywords.has(token.text)) {\n token.type = \"KEYWORD\";\n continue;\n }\n if (token.text.match(regexType)) {\n token.type = \"TYPE\";\n continue;\n }\n token.type = \"ID\";\n continue;\n }\n match = cur.match(regexNumber);\n if (match) {\n token.text = match[1];\n token.type = \"NUMBER\";\n offset += token.text.length;\n continue;\n }\n throw new Error(`unexpected token ${JSON.stringify(cur[0])} at position ${offset}`);\n }\n return new TokenString(tokens.map((t) => Object.freeze(t)));\n}\n// Check only one of `allowed` is in `set`\nfunction allowSingle(set, allowed) {\n let included = [];\n for (const key in allowed.keys()) {\n if (set.has(key)) {\n included.push(key);\n }\n }\n if (included.length > 1) {\n throw new Error(`conflicting types: ${included.join(\", \")}`);\n }\n}\n// Functions to process a Solidity Signature TokenString from left-to-right for...\n// ...the name with an optional type, returning the name\nfunction consumeName(type, tokens) {\n if (tokens.peekKeyword(KwTypes)) {\n const keyword = tokens.pop().text;\n if (keyword !== type) {\n throw new Error(`expected ${type}, got ${keyword}`);\n }\n }\n return tokens.popType(\"ID\");\n}\n// ...all keywords matching allowed, returning the keywords\nfunction consumeKeywords(tokens, allowed) {\n const keywords = new Set();\n while (true) {\n const keyword = tokens.peekType(\"KEYWORD\");\n if (keyword == null || (allowed && !allowed.has(keyword))) {\n break;\n }\n tokens.pop();\n if (keywords.has(keyword)) {\n throw new Error(`duplicate keywords: ${JSON.stringify(keyword)}`);\n }\n keywords.add(keyword);\n }\n return Object.freeze(keywords);\n}\n// ...all visibility keywords, returning the coalesced mutability\nfunction consumeMutability(tokens) {\n let modifiers = consumeKeywords(tokens, KwVisib);\n // Detect conflicting modifiers\n allowSingle(modifiers, setify(\"constant payable nonpayable\".split(\" \")));\n allowSingle(modifiers, setify(\"pure view payable nonpayable\".split(\" \")));\n // Process mutability states\n if (modifiers.has(\"view\")) {\n return \"view\";\n }\n if (modifiers.has(\"pure\")) {\n return \"pure\";\n }\n if (modifiers.has(\"payable\")) {\n return \"payable\";\n }\n if (modifiers.has(\"nonpayable\")) {\n return \"nonpayable\";\n }\n // Process legacy `constant` last\n if (modifiers.has(\"constant\")) {\n return \"view\";\n }\n return \"nonpayable\";\n}\n// ...a parameter list, returning the ParamType list\nfunction consumeParams(tokens, allowIndexed) {\n return tokens.popParams().map((t) => ParamType.fromTokens(t, allowIndexed));\n}\n// ...a gas limit, returning a BigNumber or null if none\nfunction consumeGas(tokens) {\n if (tokens.peekType(\"AT\")) {\n tokens.pop();\n if (tokens.peekType(\"NUMBER\")) {\n return logger.getBigInt(tokens.pop().text);\n }\n throw new Error(\"invalid gas\");\n }\n return null;\n}\nfunction consumeEoi(tokens) {\n if (tokens.length) {\n throw new Error(`unexpected tokens: ${tokens.toString()}`);\n }\n}\nconst regexArrayType = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nfunction verifyBasicType(type) {\n const match = type.match(regexType);\n if (!match) {\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n }\n if (type === \"uint\") {\n return \"uint256\";\n }\n if (type === \"int\") {\n return \"int256\";\n }\n if (match[2]) {\n // bytesXX\n const length = parseInt(match[2]);\n if (length === 0 || length > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"type\", type);\n }\n }\n else if (match[3]) {\n // intXX or uintXX\n const size = parseInt(match[3]);\n if (size === 0 || size > 256 || size % 8) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n }\n return type;\n}\n// Make the Fragment constructors effectively private\nconst _guard = {};\nconst internal = Symbol.for(\"_ethers_internal\");\nconst ParamTypeInternal = \"_ParamTypeInternal\";\nexport class ParamType {\n constructor(guard, name, type, baseType, indexed, components, arrayLength, arrayChildren) {\n _ParamType_instances.add(this);\n logger.assertPrivate(guard, _guard, \"ParamType\");\n Object.defineProperty(this, internal, { value: ParamTypeInternal });\n if (components) {\n components = Object.freeze(components.slice());\n }\n if (baseType === \"array\") {\n if (arrayLength == null || arrayChildren == null) {\n throw new Error(\"\");\n }\n }\n else if (arrayLength != null || arrayChildren != null) {\n throw new Error(\"\");\n }\n if (baseType === \"tuple\") {\n if (components == null) {\n throw new Error(\"\");\n }\n }\n else if (components != null) {\n throw new Error(\"\");\n }\n defineProperties(this, {\n name, type, baseType, indexed, components, arrayLength, arrayChildren\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 = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n let result = {\n type: ((this.baseType === \"tuple\") ? \"tuple\" : this.type),\n name: (this.name || undefined)\n };\n if (typeof (this.indexed) === \"boolean\") {\n result.indexed = this.indexed;\n }\n if (this.isTuple()) {\n result.components = this.components.map((c) => JSON.parse(c.format(format)));\n }\n return JSON.stringify(result);\n }\n let result = \"\";\n // Array\n if (this.isArray()) {\n result += this.arrayChildren.format(format);\n result += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n }\n else {\n if (this.isTuple()) {\n if (format !== FormatType.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map((comp) => comp.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n }\n else {\n result += this.type;\n }\n }\n if (format !== FormatType.sighash) {\n if (this.indexed === true) {\n result += \" indexed\";\n }\n if (format === FormatType.full && this.name) {\n result += \" \" + this.name;\n }\n }\n return result;\n }\n static isArray(value) {\n return value && (value.baseType === \"array\");\n }\n isArray() {\n return (this.baseType === \"array\");\n }\n isTuple() {\n return (this.baseType === \"tuple\");\n }\n isIndexable() {\n return (this.indexed != null);\n }\n walk(value, process) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v) => (this.arrayChildren.walk(v, process)));\n }\n if (this.isTuple()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid tuple value\");\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v, i) => (this.components[i].walk(v, process)));\n }\n return process(this.type, value);\n }\n async walkAsync(value, process) {\n const promises = [];\n const result = [value];\n __classPrivateFieldGet(this, _ParamType_instances, \"m\", _ParamType_walkAsync).call(this, promises, value, process, (value) => {\n result[0] = value;\n });\n if (promises.length) {\n await Promise.all(promises);\n }\n return result[0];\n }\n static from(obj, allowIndexed) {\n if (ParamType.isParamType(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n return ParamType.fromTokens(lex(obj), allowIndexed);\n }\n if (obj instanceof TokenString) {\n return ParamType.fromTokens(obj, allowIndexed);\n }\n const name = obj.name;\n if (name && (typeof (name) !== \"string\" || !name.match(regexIdentifier))) {\n logger.throwArgumentError(\"invalid name\", \"obj.name\", name);\n }\n let indexed = obj.indexed;\n if (indexed != null) {\n if (!allowIndexed) {\n logger.throwArgumentError(\"parameter cannot be indexed\", \"obj.indexed\", obj.indexed);\n }\n indexed = !!indexed;\n }\n let type = obj.type;\n let arrayMatch = type.match(regexArrayType);\n if (arrayMatch) {\n const arrayLength = arrayMatch[2];\n const arrayChildren = ParamType.from({\n type: arrayMatch[1],\n components: obj.components\n });\n return new ParamType(_guard, name, type, \"array\", indexed, null, arrayLength, arrayChildren);\n }\n if (type.substring(0, 5) === \"tuple(\" || type[0] === \"(\") {\n const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;\n const tuple = new ParamType(_guard, name, type, \"tuple\", indexed, comps, null, null);\n // @TODO: use lexer to validate and normalize type\n return tuple;\n }\n type = verifyBasicType(obj.type);\n return new ParamType(_guard, name, type, type, indexed, null, null, null);\n }\n static fromObject(obj, allowIndexed) {\n throw new Error(\"@TODO\");\n }\n static fromTokens(tokens, allowIndexed) {\n let type = \"\", baseType = \"\";\n let comps = null;\n if (consumeKeywords(tokens, setify([\"tuple\"])).has(\"tuple\") || tokens.peekType(\"OPEN_PAREN\")) {\n // Tuple\n baseType = \"tuple\";\n comps = tokens.popParams().map((t) => ParamType.from(t));\n type = `tuple(${comps.map((c) => c.format()).join(\",\")})`;\n }\n else {\n // Normal\n type = verifyBasicType(tokens.popType(\"TYPE\"));\n baseType = type;\n }\n // Check for Array\n let arrayChildren = null;\n let arrayLength = null;\n while (tokens.length && tokens.peekType(\"BRACKET\")) {\n const bracket = tokens.pop(); //arrays[i];\n arrayChildren = new ParamType(_guard, \"\", type, baseType, null, comps, arrayLength, arrayChildren);\n arrayLength = bracket.value;\n type += bracket.text;\n baseType = \"array\";\n comps = null;\n }\n let indexed = null;\n const keywords = consumeKeywords(tokens, KwModifiers);\n if (keywords.has(\"indexed\")) {\n if (!allowIndexed) {\n throw new Error(\"\");\n }\n indexed = true;\n }\n const name = (tokens.peekType(\"ID\") ? tokens.pop().text : \"\");\n if (tokens.length) {\n throw new Error(\"leftover tokens\");\n }\n return new ParamType(_guard, name, type, baseType, indexed, comps, arrayLength, arrayChildren);\n }\n static isParamType(value) {\n return (value && value[internal] === ParamTypeInternal);\n }\n}\n_ParamType_instances = new WeakSet(), _ParamType_walkAsync = function _ParamType_walkAsync(promises, value, process, setValue) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const childType = this.arrayChildren;\n const result = value.slice();\n result.forEach((value, index) => {\n __classPrivateFieldGet(childType, _ParamType_instances, \"m\", _ParamType_walkAsync).call(childType, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n if (this.isTuple()) {\n const components = this.components;\n // Convert the object into an array\n let result;\n if (Array.isArray(value)) {\n result = value.slice();\n }\n else {\n if (value == null || typeof (value) !== \"object\") {\n throw new Error(\"invlaid tuple value\");\n }\n result = components.map((param) => {\n if (!param.name) {\n throw new Error(\"cannot use object value with unnamed components\");\n }\n if (!(param.name in value)) {\n throw new Error(`missing value for component ${param.name}`);\n }\n return value[param.name];\n });\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n result.forEach((value, index) => {\n var _a;\n __classPrivateFieldGet((_a = components[index]), _ParamType_instances, \"m\", _ParamType_walkAsync).call(_a, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n const result = process(this.type, value);\n if (result.then) {\n promises.push((async function () { setValue(await result); })());\n }\n else {\n setValue(result);\n }\n};\nexport var FragmentType;\n(function (FragmentType) {\n FragmentType[\"constructor\"] = \"constructor\";\n FragmentType[\"error\"] = \"error\";\n FragmentType[\"event\"] = \"event\";\n FragmentType[\"function\"] = \"function\";\n FragmentType[\"struct\"] = \"struct\";\n})(FragmentType || (FragmentType = {}));\n;\nexport class Fragment {\n constructor(guard, type, inputs) {\n logger.assertPrivate(guard, _guard, \"Fragment\");\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { type, inputs });\n }\n static from(obj) {\n if (typeof (obj) === \"string\") {\n return this.fromString(obj);\n }\n if (obj instanceof TokenString) {\n return this.fromTokens(obj);\n }\n if (typeof (obj) === \"object\") {\n return this.fromObject(obj);\n }\n throw new Error(`unsupported type: ${obj}`);\n }\n static fromObject(obj) {\n switch (obj.type) {\n case \"constructor\": return ConstructorFragment.fromObject(obj);\n case \"error\": return ErrorFragment.fromObject(obj);\n case \"event\": return EventFragment.fromObject(obj);\n case \"function\": return FunctionFragment.fromObject(obj);\n case \"struct\": return StructFragment.fromObject(obj);\n }\n throw new Error(\"not implemented yet\");\n }\n static fromString(text) {\n try {\n Fragment.from(JSON.parse(text));\n }\n catch (e) { }\n return Fragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const type = tokens.popKeyword(KwTypes);\n switch (type) {\n case \"constructor\": return ConstructorFragment.fromTokens(tokens);\n case \"error\": return ErrorFragment.fromTokens(tokens);\n case \"event\": return EventFragment.fromTokens(tokens);\n case \"function\": return FunctionFragment.fromTokens(tokens);\n case \"struct\": return StructFragment.fromTokens(tokens);\n }\n throw new Error(`unsupported type: ${type}`);\n }\n /*\n static fromTokens(tokens: TokenString): Fragment {\n const assertDone = () => {\n if (tokens.length) { throw new Error(`unexpected tokens: ${ tokens.toString() }`); }\n });\n\n const type = (tokens.length && tokens.peek().type === \"KEYWORD\") ? tokens.peek().text: \"unknown\";\n\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens, type === \"event\");\n\n switch (type) {\n case \"event\": case \"struct\":\n assertDone();\n }\n\n }\n */\n static isConstructor(value) {\n return (value && value.type === \"constructor\");\n }\n static isError(value) {\n return (value && value.type === \"error\");\n }\n static isEvent(value) {\n return (value && value.type === \"event\");\n }\n static isFunction(value) {\n return (value && value.type === \"function\");\n }\n static isStruct(value) {\n return (value && value.type === \"struct\");\n }\n}\nexport class NamedFragment extends Fragment {\n constructor(guard, type, name, inputs) {\n super(guard, type, inputs);\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { name });\n }\n}\nfunction joinParams(format, params) {\n return \"(\" + params.map((p) => p.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n}\nexport class ErrorFragment extends NamedFragment {\n constructor(guard, name, inputs) {\n super(guard, FragmentType.error, name, inputs);\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"error\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n return result.join(\" \");\n }\n static fromString(text) {\n return ErrorFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new ErrorFragment(_guard, name, inputs);\n }\n}\nexport class EventFragment extends NamedFragment {\n constructor(guard, name, inputs, anonymous) {\n super(guard, FragmentType.event, name, inputs);\n defineProperties(this, { anonymous });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"event\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash && this.anonymous) {\n result.push(\"anonymous\");\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return EventFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"event\", tokens);\n const inputs = consumeParams(tokens, true);\n const anonymous = !!consumeKeywords(tokens, setify([\"anonymous\"])).has(\"anonymous\");\n consumeEoi(tokens);\n return new EventFragment(_guard, name, inputs, anonymous);\n }\n}\nexport class ConstructorFragment extends Fragment {\n constructor(guard, type, inputs, payable, gas) {\n super(guard, type, inputs);\n defineProperties(this, { payable, gas });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", \"UNSUPPORTED_OPERATION\", {\n operation: \"format(sighash)\"\n });\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: (this.payable ? \"payable\" : \"undefined\"),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [`constructor${joinParams(format, this.inputs)}`];\n result.push((this.payable) ? \"payable\" : \"nonpayable\");\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return ConstructorFragment.fromTokens(lex(text));\n }\n static fromObject(obj) {\n throw new Error(\"TODO\");\n }\n static fromTokens(tokens) {\n consumeKeywords(tokens, setify([\"constructor\"]));\n const inputs = consumeParams(tokens);\n const payable = !!consumeKeywords(tokens, setify([\"payable\"])).has(\"payable\");\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new ConstructorFragment(_guard, FragmentType.constructor, inputs, payable, gas);\n }\n}\nexport class FunctionFragment extends NamedFragment {\n constructor(guard, name, stateMutability, inputs, outputs, gas) {\n super(guard, FragmentType.function, name, inputs);\n outputs = Object.freeze(outputs.slice());\n const constant = (stateMutability === \"view\" || stateMutability === \"pure\");\n const payable = (stateMutability === \"payable\");\n defineProperties(this, { constant, gas, outputs, payable, stateMutability });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format))),\n outputs: this.outputs.map((o) => JSON.parse(o.format(format))),\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"function\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash) {\n if (this.stateMutability !== \"nonpayable\") {\n result.push(this.stateMutability);\n }\n if (this.outputs && this.outputs.length) {\n result.push(\"returns\");\n result.push(joinParams(format, this.outputs));\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return FunctionFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"function\", tokens);\n const inputs = consumeParams(tokens);\n const mutability = consumeMutability(tokens);\n let outputs = [];\n if (consumeKeywords(tokens, setify([\"returns\"])).has(\"returns\")) {\n outputs = consumeParams(tokens);\n }\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new FunctionFragment(_guard, name, mutability, inputs, outputs, gas);\n }\n}\nexport class StructFragment extends NamedFragment {\n format() {\n throw new Error(\"@TODO\");\n }\n static fromString(text) {\n return StructFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"struct\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new StructFragment(_guard, FragmentType.struct, name, inputs);\n }\n}\n//# sourceMappingURL=fragments.js.map","export const version = \"@ethersproject/math@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\nconst nibbles = \"0123456789abcdef\";\nconst BN_0 = BigInt(0);\n// Converts a value to a BigInt, including big endian data\nexport function toBigInt(_value) {\n if (_value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of _value) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return logger.getBigInt(_value, \"value\");\n}\nexport function toNumber(_value) {\n const value = toBigInt(_value);\n if (value < -maxValue || value > maxValue) {\n logger.throwArgumentError(\"overflow\", \"value\", _value);\n }\n return Number(value);\n}\n// Converts value to hex, optionally padding on the left to width bytes\nexport function toHex(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n let result = value.toString(16);\n if (_width == null) {\n // Ensure the value is of even length\n if (result.length % 2) {\n result = \"0\" + result;\n }\n }\n else {\n const width = logger.getNumber(_width, \"width\");\n if (width * 2 < result.length) {\n throw new Error(`value ${value} exceeds width ${width}`);\n }\n // Pad the value to the required width\n while (result.length < (width * 2)) {\n result = \"0\" + result;\n }\n }\n return \"0x\" + result;\n}\nexport function toArray(_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n//# sourceMappingURL=convert.js.map","import { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\n// Convert a value from a twos-compliment value\nexport function fromTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n // Top bit set; treat as a negative value\n if (value >> (width - BN_1)) {\n const mask = (BN_1 << width) - BN_1;\n return -(((~value) & mask) + BN_1);\n }\n return value;\n}\n// Convert value to a twos-compliment value\nexport function toTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n if (value < BN_0) {\n const mask = (BN_1 << width) - BN_1;\n return ((~(-value)) & mask) + BN_1;\n }\n return value;\n}\nexport function mask(_value, _bits) {\n const value = logger.getBigInt(_value, \"value\");\n const bits = logger.getBigInt(_bits, \"bits\");\n return value & ((BN_1 << bits) - BN_1);\n}\n//# sourceMappingURL=maths.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FixedNumber_instances, _FixedNumber_value, _FixedNumber_checkFormat;\nimport { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nimport { fromTwos, toTwos } from \"./maths.js\";\nconst _constructorGuard = {};\n//const Zero = BigInt(0);\nconst NegativeOne = BigInt(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, \"NUMERIC_FAULT\", params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\" || decimals < 0 || decimals > 256 || decimals % 1) {\n logger.throwArgumentError(\"invalid decimal length\", \"decimals\", decimals);\n }\n return BigInt(\"1\" + zeros.substring(0, decimals));\n}\nexport function formatFixed(_value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n let value = logger.getBigInt(_value, \"value\");\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n const multiplierStr = String(multiplier);\n const negative = (value < 0);\n if (negative) {\n value *= NegativeOne;\n }\n let fraction = String(value % multiplier);\n // Make sure there are enough place-holders\n while (fraction.length < multiplierStr.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n while (fraction.length > 1 && fraction.substring(fraction.length - 1) === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n let result = String(value / multiplier);\n if (multiplierStr.length !== 1) {\n result += \".\" + fraction;\n }\n if (negative) {\n result = \"-\" + result;\n }\n return result;\n}\nexport function parseFixed(value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\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 let whole = (comps[0] || \"0\"), fraction = (comps[1] || \"0\");\n // Trim trialing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > String(multiplier).length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < String(multiplier).length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigInt(whole);\n const fractionValue = BigInt(fraction);\n let wei = (wholeValue * multiplier) + fractionValue;\n if (negative) {\n wei *= NegativeOne;\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n return logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\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 if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n _FixedNumber_instances.add(this);\n //#hex: string;\n _FixedNumber_value.set(this, void 0);\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.format = FixedFormat.from(format);\n //this.#hex = hex;\n __classPrivateFieldSet(this, _FixedNumber_value, value, \"f\");\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n addUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a + b, this.format.decimals, this.format);\n }\n subUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a - b, this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * b) / this.format._multiplier, this.format.decimals, this.format);\n }\n divUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * this.format._multiplier) / b, this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0.0\" || __classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0\");\n }\n isNegative() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\")[0] === \"-\");\n }\n toString() { return __classPrivateFieldGet(this, _FixedNumber_value, \"f\"); }\n toHexString(_width) {\n throw new Error(\"TODO\");\n /*\n return toHex();\n if (width == null) { return this.#hex; }\n\n const width = logger.getNumeric(_width);\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n\n const hex = BigNumber.from(this.#hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return zeroPadLeft(hex, width / 8);\n */\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), format);\n }\n static fromValue(value, decimals = 0, format = \"fixed\") {\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format = \"fixed\") {\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric < 0) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n const hex = (function () {\n if (fixedFormat.signed) {\n return toHex(toTwos(numeric, fixedFormat.width));\n }\n return toHex(numeric, fixedFormat.width / 8);\n })();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(_value, format = \"fixed\") {\n const value = logger.getBytes(_value, \"value\");\n const fixedFormat = FixedFormat.from(format);\n if (value.length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = toBigInt(value);\n if (fixedFormat.signed) {\n numeric = fromTwos(numeric, fixedFormat.width);\n }\n const hex = toHex(toTwos(numeric, (fixedFormat.signed ? 0 : 1) + fixedFormat.width));\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (value instanceof Uint8Array) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== \"INVALID_ARGUMENT\") {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\n_FixedNumber_value = new WeakMap(), _FixedNumber_instances = new WeakSet(), _FixedNumber_checkFormat = function _FixedNumber_checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n};\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","import { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nconst Alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nlet Lookup = null;\nfunction getAlpha(letter) {\n if (Lookup == null) {\n Lookup = {};\n for (let i = 0; i < Alphabet.length; i++) {\n Lookup[Alphabet[i]] = BigInt(i);\n }\n }\n const result = Lookup[letter];\n if (result == null) {\n logger.throwArgumentError(`invalid base58 value`, \"letter\", letter);\n }\n return result;\n}\nconst BN_0 = BigInt(0);\nconst BN_58 = BigInt(58);\nexport function encodeBase58(_value) {\n let value = toBigInt(logger.getBytes(_value));\n let result = \"\";\n while (value) {\n result = Alphabet[Number(value % BN_58)] + result;\n value /= BN_58;\n }\n return result;\n}\nexport function decodeBase58(value) {\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result *= BN_58;\n result += getAlpha(value[i]);\n }\n return toHex(result);\n}\n//# sourceMappingURL=base58.js.map","import { formatFixed, parseFixed } from \"./fixednumber.js\";\nimport { logger } from \"./logger.js\";\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\nexport function formatUnits(value, unit) {\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return formatFixed(value, (unit != null) ? unit : 18);\n}\nexport function parseUnits(value, unit) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return parseFixed(value, (unit != null) ? unit : 18);\n}\nexport function formatEther(wei) {\n return formatUnits(wei, 18);\n}\nexport function parseEther(ether) {\n return parseUnits(ether, 18);\n}\n//# sourceMappingURL=units.js.map","export function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\n//# sourceMappingURL=check.js.map","export const version = \"@ethersproject/bytes@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { isBytesLike } from \"./check.js\";\nimport { logger } from \"./logger.js\";\nlet BN_8 = null;\nlet BN_255 = null;\ntry {\n BN_8 = BigInt(\"8\");\n BN_255 = BigInt(\"255\");\n}\ncatch (error) {\n console.log(\"Unsupported bigint\", error);\n}\nfunction isHexable(value) {\n return (value && typeof (value.toHexString) === \"function\");\n}\nexport function arrayify(data) {\n if (data == null) {\n logger.throwArgumentError(\"cannot arrayify nullish\", \"data\", data);\n }\n if (typeof (data) === \"number\") {\n let v = logger.getNumber(data, \"data\");\n const result = [];\n while (v) {\n result.unshift(v & 0xff);\n v = parseInt(String(v / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (BN_8 && typeof (data) === \"bigint\") {\n const result = [];\n while (data) {\n result.unshift(Number(data & BN_255));\n data >>= BN_8;\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (isHexable(data)) {\n return arrayify(data.toHexString());\n }\n if (typeof (data) === \"string\") {\n let hex = data;\n //if (options.allowMissingPrefix && hex.substring(0, 2) !== \"0x\") {\n // hex = \"0x\" + hex;\n //}\n if (!hex.match(/^0x[0-9a-f]*$/i)) {\n throw new RangeError(`invalid hex data string (${JSON.stringify(data)})`);\n }\n const result = [];\n for (let i = 2; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return new Uint8Array(result);\n }\n if (data instanceof Uint8Array) {\n return new Uint8Array(data);\n }\n throw new TypeError(`cannot arrayify ${JSON.stringify(data)}`);\n}\nexport function _noCopyArrayify(data) {\n if (!isBytesLike(data)) {\n logger.throwArgumentError(\"invalid BytesLike value\", \"data\", data);\n } // @TODO: ArgumentE>\n if (data instanceof Uint8Array) {\n return data;\n }\n return arrayify(data);\n}\n//# sourceMappingURL=array.js.map","import { logger } from \"./logger.js\";\nexport function decodeBase64(textData) {\n return new Uint8Array(Buffer.from(textData, \"base64\"));\n}\n;\nexport function encodeBase64(data) {\n return Buffer.from(logger.getBytes(data, \"data\")).toString(\"base64\");\n}\n//# sourceMappingURL=base64.js.map","import { arrayify, _noCopyArrayify } from \"./array.js\";\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(data) {\n const bytes = _noCopyArrayify(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\nexport function quantity(value) {\n let result = hexlify(arrayify(value)).substring(2);\n while (result.substring(0, 1) === \"0\") {\n result = result.substring(1);\n }\n if (result === \"\") {\n result = \"0\";\n }\n return \"0x\" + result;\n}\n//# sourceMappingURL=hex.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { isHexString } from \"./check.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return _noCopyArrayify(data).length;\n}\nexport function dataSlice(data, start, end) {\n const bytes = _noCopyArrayify(data);\n if (end != null && end > bytes.length) {\n logger.throwError(\"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.substring(0, 2) == \"00\") {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\n//# sourceMappingURL=data.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nfunction zeroPad(data, length, left) {\n const bytes = _noCopyArrayify(data);\n if (length < bytes.length) {\n logger.throwError(\"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n }\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=pad.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Result_instances, _Result_indices, _Result_throwError, _Writer_instances, _Writer_data, _Writer_dataLength, _Writer_writeData, _Reader_instances, _Reader_data, _Reader_offset, _Reader_peekBytes;\nimport { toArray, toBigInt, toNumber } from \"@ethersproject/math\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nexport const WordSize = 32;\nconst Padding = new Uint8Array(WordSize);\n// Properties used to immediate pass through to the underlying object\n// - `then` is used to detect if an object is a Promise for await\nconst passProperties = [\"then\"];\nconst _guard = {};\nexport class Result extends Array {\n constructor(guard, items, keys) {\n logger.assertPrivate(guard, _guard, \"Result\");\n super(...items);\n _Result_instances.add(this);\n _Result_indices.set(this, void 0);\n // Name lookup table\n __classPrivateFieldSet(this, _Result_indices, new Map(), \"f\");\n if (keys) {\n keys.forEach((key, index) => {\n if (key == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _Result_indices, \"f\").has(key)) {\n (__classPrivateFieldGet(this, _Result_indices, \"f\").get(key)).push(index);\n }\n else {\n __classPrivateFieldGet(this, _Result_indices, \"f\").set(key, [index]);\n }\n });\n }\n Object.freeze(this);\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"string\") {\n if (prop.match(/^[0-9]+$/)) {\n const index = logger.getNumber(prop, \"%index\");\n if (index < 0 || index >= this.length) {\n throw new RangeError(\"out of result range\");\n }\n const item = target[index];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `index ${index}`, item);\n }\n return item;\n }\n // Pass important checks (like `then` for Promise) through\n if (prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n // Something that could be a result keyword value\n if (!(prop in target)) {\n return target.getValue(prop);\n }\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n }\n slice(start, end) {\n if (start == null) {\n start = 0;\n }\n if (end == null) {\n end = this.length;\n }\n const result = [];\n for (let i = start; i < end; i++) {\n let value;\n try {\n value = this[i];\n }\n catch (error) {\n value = error.error;\n }\n result.push(value);\n }\n return result;\n }\n getValue(name) {\n const index = __classPrivateFieldGet(this, _Result_indices, \"f\").get(name);\n if (index != null && index.length === 1) {\n const item = this[index[0]];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `property ${JSON.stringify(name)}`, item);\n }\n return item;\n }\n throw new Error(`no named parameter: ${JSON.stringify(name)}`);\n }\n static fromItems(items, keys) {\n return new Result(_guard, items, keys);\n }\n}\n_Result_indices = new WeakMap(), _Result_instances = new WeakSet(), _Result_throwError = function _Result_throwError(name, error) {\n const wrapped = new Error(`deferred error during ABI decoding triggered accessing ${name}`);\n wrapped.error = error;\n throw wrapped;\n};\nexport function checkResultErrors(result) {\n // Find the first error (if any)\n const errors = [];\n const checkErrors = function (path, object) {\n if (!Array.isArray(object)) {\n return;\n }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n try {\n checkErrors(childPath, object[key]);\n }\n catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n };\n checkErrors([], result);\n return errors;\n}\nfunction getValue(value) {\n let bytes = toArray(value);\n if (bytes.length > WordSize) {\n logger.throwError(\"value out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes,\n length: WordSize,\n offset: bytes.length\n });\n }\n if (bytes.length !== WordSize) {\n bytes = arrayify(concat([Padding.slice(bytes.length % WordSize), bytes]));\n }\n return bytes;\n}\nexport class Coder {\n constructor(name, type, localName, dynamic) {\n defineProperties(this, { name, type, localName, dynamic }, {\n name: \"string\", type: \"string\", localName: \"string\", dynamic: \"boolean\"\n });\n }\n _throwError(message, value) {\n return logger.throwArgumentError(message, this.localName, value);\n }\n}\nexport class Writer {\n constructor() {\n _Writer_instances.add(this);\n // An array of WordSize lengthed objects to concatenation\n _Writer_data.set(this, void 0);\n _Writer_dataLength.set(this, void 0);\n __classPrivateFieldSet(this, _Writer_data, [], \"f\");\n __classPrivateFieldSet(this, _Writer_dataLength, 0, \"f\");\n }\n get data() {\n return concat(__classPrivateFieldGet(this, _Writer_data, \"f\"));\n }\n get length() { return __classPrivateFieldGet(this, _Writer_dataLength, \"f\"); }\n appendWriter(writer) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, arrayify(writer.data));\n }\n // Arrayish item; pad on the right to *nearest* WordSize\n writeBytes(value) {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % WordSize;\n if (paddingOffset) {\n bytes = arrayify(concat([bytes, Padding.slice(paddingOffset)]));\n }\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, bytes);\n }\n // Numeric item; pad on the left *to* WordSize\n writeValue(value) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, getValue(value));\n }\n // Inserts a numeric place-holder, returning a callback that can\n // be used to asjust the value later\n writeUpdatableValue() {\n const offset = __classPrivateFieldGet(this, _Writer_data, \"f\").length;\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(Padding);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + WordSize, \"f\");\n return (value) => {\n __classPrivateFieldGet(this, _Writer_data, \"f\")[offset] = getValue(value);\n };\n }\n}\n_Writer_data = new WeakMap(), _Writer_dataLength = new WeakMap(), _Writer_instances = new WeakSet(), _Writer_writeData = function _Writer_writeData(data) {\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(data);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + data.length, \"f\");\n return data.length;\n};\nexport class Reader {\n constructor(data, allowLoose) {\n _Reader_instances.add(this);\n _Reader_data.set(this, void 0);\n _Reader_offset.set(this, void 0);\n defineProperties(this, { allowLoose: !!allowLoose });\n __classPrivateFieldSet(this, _Reader_data, arrayify(data), \"f\");\n __classPrivateFieldSet(this, _Reader_offset, 0, \"f\");\n }\n get data() { return hexlify(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n get dataLength() { return __classPrivateFieldGet(this, _Reader_data, \"f\").length; }\n get consumed() { return __classPrivateFieldGet(this, _Reader_offset, \"f\"); }\n get bytes() { return new Uint8Array(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n // Create a sub-reader with the same underlying data, but offset\n subReader(offset) {\n return new Reader(__classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\") + offset), this.allowLoose);\n }\n // Read bytes\n readBytes(length, loose) {\n let bytes = __classPrivateFieldGet(this, _Reader_instances, \"m\", _Reader_peekBytes).call(this, 0, length, !!loose);\n __classPrivateFieldSet(this, _Reader_offset, __classPrivateFieldGet(this, _Reader_offset, \"f\") + bytes.length, \"f\");\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n // Read a numeric values\n readValue() {\n return toBigInt(this.readBytes(WordSize));\n }\n readIndex() {\n return toNumber(this.readBytes(WordSize));\n }\n}\n_Reader_data = new WeakMap(), _Reader_offset = new WeakMap(), _Reader_instances = new WeakSet(), _Reader_peekBytes = function _Reader_peekBytes(offset, length, loose) {\n let alignedLength = Math.ceil(length / WordSize) * WordSize;\n if (__classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength > __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n if (this.allowLoose && loose && __classPrivateFieldGet(this, _Reader_offset, \"f\") + length <= __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n alignedLength = length;\n }\n else {\n logger.throwError(\"data out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: arrayify(__classPrivateFieldGet(this, _Reader_data, \"f\")),\n length: __classPrivateFieldGet(this, _Reader_data, \"f\").length,\n offset: __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength\n });\n }\n }\n return __classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\"), __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength);\n};\n//# sourceMappingURL=abstract-coder.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianess.\n// So, just to be sure not to corrupt anything.\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nexport function bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('deadbeef')\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte))\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// Currently avoid insertion of polyfills with packers (browserify/webpack/etc)\n// But setTimeout is pretty slow, maybe worth to investigate howto do minimal polyfill here\nexport const nextTick = (() => {\n const nodeRequire = typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n try {\n if (nodeRequire) {\n const { setImmediate } = nodeRequire('timers');\n return () => new Promise((resolve) => setImmediate(resolve));\n }\n }\n catch (e) { }\n return () => new Promise((resolve) => setTimeout(resolve, 0));\n})();\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\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)\n continue;\n await nextTick();\n ts += diff;\n }\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nexport function assertNumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexport function assertBool(b) {\n if (typeof b !== 'boolean') {\n throw new Error(`Expected boolean, not ${b}`);\n }\n}\nexport function assertBytes(bytes, ...lengths) {\n if (bytes instanceof Uint8Array && (!lengths.length || lengths.includes(bytes.length))) {\n return;\n }\n throw new TypeError(`Expected ${lengths} bytes, not ${typeof bytes} with length=${bytes.length}`);\n}\nexport function assertHash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n assertNumber(hash.outputLen);\n assertNumber(hash.blockLen);\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(def, _opts) {\n if (_opts !== undefined && (typeof _opts !== 'object' || !isPlainObject(_opts)))\n throw new TypeError('Options should be object or undefined');\n const opts = Object.assign(def, _opts);\n return opts;\n}\nexport function wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n return new Uint8Array(crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\n","import { assertHash, Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nclass HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (!(this.iHash instanceof Hash))\n throw new TypeError('Expected instance of class which extends utils.Hash');\n const blockLen = (this.blockLen = this.iHash.blockLen);\n this.outputLen = this.iHash.outputLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > this.iHash.blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length !== this.outputLen)\n throw new Error('HMAC: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n","import { hmac } from './hmac.js';\n// prettier-ignore\nimport { createView, toBytes, assertNumber, assertHash, checkOpts, asyncLoop } from './utils.js';\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n assertHash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n assertNumber(c);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n if (c < 1)\n throw new Error('PBKDF2: iterations (c) should be >= 1');\n const password = toBytes(_password);\n const salt = toBytes(_salt);\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n u.fill(0);\n return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n */\nexport function pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexport async function pbkdf2Async(hash, password, salt, opts) {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await asyncLoop(c - 1, asyncTick, (i) => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n","import { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n const { view, buffer, blockLen, finished } = this;\n if (finished)\n throw new Error('digest() was already called');\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 // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length < this.outputLen)\n throw new Error('_Sha2: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // NOTE: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64bit of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n this.get().forEach((v, i) => oview.setUint32(4 * i, v, isLE));\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = wrapConstructor(() => new SHA256());\n","const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\nexport function fromBig(n, le = false) {\n if (le)\n 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}\nexport function split(lst, 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}\nexport const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nexport const shrSH = (h, l, s) => h >>> s;\nexport const shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nexport const rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexport const rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexport const rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nexport const rotr32H = (h, l) => l;\nexport const rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nexport const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexport const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexport const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\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.\nexport function add(Ah, Al, Bh, Bl) {\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\nexport const add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexport const add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexport const add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexport const add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexport const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexport const add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n","import { SHA2 } from './_sha2.js';\nimport * as u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = wrapConstructor(() => new SHA512());\nexport const sha512_256 = wrapConstructor(() => new SHA512_256());\nexport const sha384 = wrapConstructor(() => new SHA384());\n","export const version = \"@ethersproject/crypto@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","/* Browser Crypto Shims */\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { pbkdf2 } from \"@noble/hashes/pbkdf2\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nimport { logger } from \"./logger.js\";\nfunction getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst anyGlobal = getGlobal();\nlet crypto = anyGlobal.crypto || anyGlobal.msCrypto;\nexport function createHash(algo) {\n switch (algo) {\n case \"sha256\": return sha256.create();\n case \"sha512\": return sha512.create();\n }\n return logger.throwArgumentError(\"invalid hashing algorithm name\", \"algorithm\", algo);\n}\nexport function createHmac(_algo, key) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid hmac algorithm\", \"algorithm\", _algo);\n }\n return hmac.create(algo, key);\n}\nexport function pbkdf2Sync(password, salt, iterations, keylen, _algo) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid pbkdf2 algorithm\", \"algorithm\", _algo);\n }\n return pbkdf2(algo, password, salt, { c: iterations, dkLen: keylen });\n}\nexport function randomBytes(length) {\n if (crypto == null) {\n return logger.throwError(\"platform does not support secure random numbers\", \"UNSUPPORTED_OPERATION\", {\n operation: \"randomBytes\"\n });\n }\n if (length <= 0 || length > 1024 || (length % 1) || length != length) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return result;\n}\n//# sourceMappingURL=crypto-browser.js.map","import { createHmac } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _computeHmac = function (algorithm, key, data) {\n return \"0x\" + createHmac(algorithm, key).update(data).digest(\"hex\");\n};\nlet __computeHmac = _computeHmac;\nexport function computeHmac(algorithm, _key, _data) {\n const key = logger.getBytes(_key, \"key\");\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__computeHmac(algorithm, key, data));\n}\ncomputeHmac._ = _computeHmac;\ncomputeHmac.lock = function () { locked = true; };\ncomputeHmac.register = function (func) {\n if (locked) {\n throw new Error(\"computeHmac is locked\");\n }\n __computeHmac = func;\n};\nObject.freeze(computeHmac);\n//# sourceMappingURL=hmac.js.map","import * as u64 from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapConstructorWithOpts, assertNumber, } from './utils.js';\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = 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)\n t ^= _1n << ((_1n << BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = u64.split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => s > 32 ? u64.rotlBH(h, l, s) : u64.rotlSH(h, l, s);\nconst rotlL = (h, l, s) => s > 32 ? u64.rotlBL(h, l, s) : u64.rotlSL(h, l, s);\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 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++)\n 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++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n 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}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n assertNumber(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 keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (this.finished)\n throw new Error('digest() was already called');\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++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n 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)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array))\n throw new Error('Keccak: invalid output buffer');\n this.finish();\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= this.blockLen)\n this.keccak();\n const take = Math.min(this.blockLen - this.posOut, len - pos);\n out.set(this.state.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n assertNumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n if (out.length < this.outputLen)\n throw new Error('Keccak: invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finish();\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) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (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}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = gen(0x06, 136, 256 / 8);\nexport const sha3_384 = gen(0x06, 104, 384 / 8);\nexport const sha3_512 = gen(0x06, 72, 512 / 8);\nexport const keccak_224 = 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 = gen(0x01, 136, 256 / 8);\nexport const keccak_384 = gen(0x01, 104, 384 / 8);\nexport const keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen !== undefined ? opts.dkLen : outputLen, true));\nexport const shake128 = genShake(0x1f, 168, 128 / 8);\nexport const shake256 = genShake(0x1f, 136, 256 / 8);\n","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\nexport function keccak256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","import { SHA2 } from './_sha2.js';\nimport { wrapConstructor } from './utils.js';\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\nconst Rho = new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = Uint8Array.from({ length: 16 }, (_, i) => i);\nconst Pi = Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n for (let j of [idxL, idxR])\n j.push(j[i].map((k) => Rho[k]));\nconst shifts = [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = new Uint32Array([0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]);\nconst Kr = new Uint32Array([0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]);\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | (word >>> (32 - shift));\n// It's called f() in spec.\nfunction f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n else if (group === 1)\n return (x & y) | (~x & z);\n else if (group === 2)\n return (x | ~y) ^ z;\n else if (group === 3)\n return (x & z) | (y & ~z);\n else\n return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst BUF = new Uint32Array(16);\nexport class RIPEMD160 extends SHA2 {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + f(group, bl, cl, dl) + BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + f(rGroup, br, cr, dr) + BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n BUF.fill(0);\n }\n destroy() {\n this.destroyed = true;\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a hash function from 1990s.\n * @param message - msg that would be hashed\n */\nexport const ripemd160 = wrapConstructor(() => new RIPEMD160());\n","import { ripemd160 as noble_ripemd160 } from \"@noble/hashes/ripemd160\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _ripemd160 = function (data) {\n return noble_ripemd160(data);\n};\nlet __ripemd160 = _ripemd160;\nexport function ripemd160(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__ripemd160(data));\n}\nripemd160._ = _ripemd160;\nripemd160.lock = function () { locked = true; };\nripemd160.register = function (func) {\n if (locked) {\n throw new TypeError(\"ripemd160 is locked\");\n }\n __ripemd160 = func;\n};\nObject.freeze(ripemd160);\n//# sourceMappingURL=ripemd160.js.map","import { pbkdf2Sync } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _pbkdf2 = function (password, salt, iterations, keylen, algo) {\n return pbkdf2Sync(password, salt, iterations, keylen, algo);\n};\nlet __pbkdf2 = _pbkdf2;\nexport function pbkdf2(_password, _salt, iterations, keylen, algo) {\n const password = logger.getBytes(_password, \"password\");\n const salt = logger.getBytes(_salt, \"salt\");\n return hexlify(__pbkdf2(password, salt, iterations, keylen, algo));\n}\npbkdf2._ = _pbkdf2;\npbkdf2.lock = function () { locked = true; };\npbkdf2.register = function (func) {\n if (locked) {\n throw new Error(\"pbkdf2 is locked\");\n }\n __pbkdf2 = func;\n};\nObject.freeze(pbkdf2);\n//# sourceMappingURL=pbkdf2.js.map","import { randomBytes as crypto_random } from \"crypto\"; /*-browser*/\nlet locked = false;\nconst _randomBytes = function (length) {\n return new Uint8Array(crypto_random(length));\n};\nlet __randomBytes = _randomBytes;\nexport function randomBytes(length) {\n return __randomBytes(length);\n}\nrandomBytes._ = _randomBytes;\nrandomBytes.lock = function () { locked = true; };\nrandomBytes.register = function (func) {\n if (locked) {\n throw new Error(\"random is locked\");\n }\n __randomBytes = func;\n};\nObject.freeze(randomBytes);\n//# sourceMappingURL=random.js.map","import { sha256 } from './sha256.js';\nimport { pbkdf2 } from './pbkdf2.js';\nimport { assertNumber, asyncLoop, checkOpts, u32 } from './utils.js';\n// RFC 7914 Scrypt KDF\n// Left rotate for uint32\nconst rotl = (a, b) => (a << b) | (a >>> (32 - b));\n// The main Scrypt loop: uses Salsa extensively.\n// Six versions of the function were tried, this is the fastest one.\n// prettier-ignore\nfunction XorAndSalsa(prev, pi, input, ii, out, oi) {\n // Based on https://cr.yp.to/salsa20.html\n // Xor blocks\n let y00 = prev[pi++] ^ input[ii++], y01 = prev[pi++] ^ input[ii++];\n let y02 = prev[pi++] ^ input[ii++], y03 = prev[pi++] ^ input[ii++];\n let y04 = prev[pi++] ^ input[ii++], y05 = prev[pi++] ^ input[ii++];\n let y06 = prev[pi++] ^ input[ii++], y07 = prev[pi++] ^ input[ii++];\n let y08 = prev[pi++] ^ input[ii++], y09 = prev[pi++] ^ input[ii++];\n let y10 = prev[pi++] ^ input[ii++], y11 = prev[pi++] ^ input[ii++];\n let y12 = prev[pi++] ^ input[ii++], y13 = prev[pi++] ^ input[ii++];\n let y14 = prev[pi++] ^ input[ii++], y15 = prev[pi++] ^ input[ii++];\n // Save state to temporary variables (salsa)\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n // Main loop (salsa)\n for (let i = 0; i < 8; i += 2) {\n x04 ^= rotl(x00 + x12 | 0, 7);\n x08 ^= rotl(x04 + x00 | 0, 9);\n x12 ^= rotl(x08 + x04 | 0, 13);\n x00 ^= rotl(x12 + x08 | 0, 18);\n x09 ^= rotl(x05 + x01 | 0, 7);\n x13 ^= rotl(x09 + x05 | 0, 9);\n x01 ^= rotl(x13 + x09 | 0, 13);\n x05 ^= rotl(x01 + x13 | 0, 18);\n x14 ^= rotl(x10 + x06 | 0, 7);\n x02 ^= rotl(x14 + x10 | 0, 9);\n x06 ^= rotl(x02 + x14 | 0, 13);\n x10 ^= rotl(x06 + x02 | 0, 18);\n x03 ^= rotl(x15 + x11 | 0, 7);\n x07 ^= rotl(x03 + x15 | 0, 9);\n x11 ^= rotl(x07 + x03 | 0, 13);\n x15 ^= rotl(x11 + x07 | 0, 18);\n x01 ^= rotl(x00 + x03 | 0, 7);\n x02 ^= rotl(x01 + x00 | 0, 9);\n x03 ^= rotl(x02 + x01 | 0, 13);\n x00 ^= rotl(x03 + x02 | 0, 18);\n x06 ^= rotl(x05 + x04 | 0, 7);\n x07 ^= rotl(x06 + x05 | 0, 9);\n x04 ^= rotl(x07 + x06 | 0, 13);\n x05 ^= rotl(x04 + x07 | 0, 18);\n x11 ^= rotl(x10 + x09 | 0, 7);\n x08 ^= rotl(x11 + x10 | 0, 9);\n x09 ^= rotl(x08 + x11 | 0, 13);\n x10 ^= rotl(x09 + x08 | 0, 18);\n x12 ^= rotl(x15 + x14 | 0, 7);\n x13 ^= rotl(x12 + x15 | 0, 9);\n x14 ^= rotl(x13 + x12 | 0, 13);\n x15 ^= rotl(x14 + x13 | 0, 18);\n }\n // Write output (salsa)\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\nfunction BlockMix(input, ii, out, oi, r) {\n // The block B is r 128-byte chunks (which is equivalent of 2r 64-byte chunks)\n let head = oi + 0;\n let tail = oi + 16 * r;\n for (let i = 0; i < 16; i++)\n out[tail + i] = input[ii + (2 * r - 1) * 16 + i]; // X ← B[2r−1]\n for (let i = 0; i < r; i++, head += 16, ii += 16) {\n // We write odd & even Yi at same time. Even: 0bXXXXX0 Odd: 0bXXXXX1\n XorAndSalsa(out, tail, input, ii, out, head); // head[i] = Salsa(blockIn[2*i] ^ tail[i-1])\n if (i > 0)\n tail += 16; // First iteration overwrites tmp value in tail\n XorAndSalsa(out, head, input, (ii += 16), out, tail); // tail[i] = Salsa(blockIn[2*i+1] ^ head[i])\n }\n}\n// Common prologue and epilogue for sync/async functions\nfunction scryptInit(password, salt, _opts) {\n // Maxmem - 1GB+1KB by default\n const opts = checkOpts({\n dkLen: 32,\n asyncTick: 10,\n maxmem: 1024 ** 3 + 1024,\n }, _opts);\n const { N, r, p, dkLen, asyncTick, maxmem, onProgress } = opts;\n assertNumber(N);\n assertNumber(r);\n assertNumber(p);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n assertNumber(maxmem);\n if (onProgress !== undefined && typeof onProgress !== 'function')\n throw new Error('progressCb should be function');\n const blockSize = 128 * r;\n const blockSize32 = blockSize / 4;\n if (N <= 1 || (N & (N - 1)) !== 0 || N >= 2 ** (blockSize / 8) || N > 2 ** 32) {\n // NOTE: we limit N to be less than 2**32 because of 32 bit variant of Integrify function\n // There is no JS engines that allows alocate more than 4GB per single Uint8Array for now, but can change in future.\n throw new Error('Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32');\n }\n if (p < 0 || p > ((2 ** 32 - 1) * 32) / blockSize) {\n throw new Error('Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)');\n }\n if (dkLen < 0 || dkLen > (2 ** 32 - 1) * 32) {\n throw new Error('Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32');\n }\n const memUsed = blockSize * (N + p);\n if (memUsed > maxmem) {\n throw new Error(`Scrypt: parameters too large, ${memUsed} (128 * r * (N + p)) > ${maxmem} (maxmem)`);\n }\n // [B0...Bp−1] ← PBKDF2HMAC-SHA256(Passphrase, Salt, 1, blockSize*ParallelizationFactor)\n // Since it has only one iteration there is no reason to use async variant\n const B = pbkdf2(sha256, password, salt, { c: 1, dkLen: blockSize * p });\n const B32 = u32(B);\n // Re-used between parallel iterations. Array(iterations) of B\n const V = u32(new Uint8Array(blockSize * N));\n const tmp = u32(new Uint8Array(blockSize));\n let blockMixCb = () => { };\n if (onProgress) {\n const totalBlockMix = 2 * N * p;\n // Invoke callback if progress changes from 10.01 to 10.02\n // Allows to draw smooth progress bar on up to 8K screen\n const callbackPer = Math.max(Math.floor(totalBlockMix / 10000), 1);\n let blockMixCnt = 0;\n blockMixCb = () => {\n blockMixCnt++;\n if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix))\n onProgress(blockMixCnt / totalBlockMix);\n };\n }\n return { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick };\n}\nfunction scryptOutput(password, dkLen, B, V, tmp) {\n const res = pbkdf2(sha256, password, B, { c: 1, dkLen });\n B.fill(0);\n V.fill(0);\n tmp.fill(0);\n return res;\n}\n/**\n * Scrypt KDF from RFC 7914.\n * @param password - pass\n * @param salt - salt\n * @param opts - parameters\n * - `N` is cpu/mem work factor (power of 2 e.g. 2**18)\n * - `r` is block size (8 is common), fine-tunes sequential memory read size and performance\n * - `p` is parallelization factor (1 is common)\n * - `dkLen` is output key length in bytes e.g. 32.\n * - `asyncTick` - (default: 10) max time in ms for which async function can block execution\n * - `maxmem` - (default: `1024 ** 3 + 1024` aka 1GB+1KB). A limit that the app could use for scrypt\n * - `onProgress` - callback function that would be executed for progress report\n * @returns Derived key\n */\nexport function scrypt(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n for (let i = 0, pos = 0; i < N - 1; i++) {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n }\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n for (let i = 0; i < N; i++) {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n }\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n/**\n * Scrypt KDF from RFC 7914.\n */\nexport async function scryptAsync(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n let pos = 0;\n await asyncLoop(N - 1, asyncTick, (i) => {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n });\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n await asyncLoop(N, asyncTick, (i) => {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n });\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n","import { scrypt as _nobleSync, scryptAsync as _nobleAsync } from \"@noble/hashes/scrypt\";\nimport { hexlify as H } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet lockedSync = false, lockedAsync = false;\nconst _scryptAsync = async function (passwd, salt, N, r, p, dkLen, onProgress) {\n return await _nobleAsync(passwd, salt, { N, r, p, dkLen, onProgress });\n};\nconst _scryptSync = function (passwd, salt, N, r, p, dkLen) {\n return _nobleSync(passwd, salt, { N, r, p, dkLen });\n};\nlet __scryptAsync = _scryptAsync;\nlet __scryptSync = _scryptSync;\nexport async function scrypt(_passwd, _salt, N, r, p, dkLen, progress) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(await __scryptAsync(passwd, salt, N, r, p, dkLen, progress));\n}\nscrypt._ = _scryptAsync;\nscrypt.lock = function () { lockedAsync = true; };\nscrypt.register = function (func) {\n if (lockedAsync) {\n throw new Error(\"scrypt is locked\");\n }\n __scryptAsync = func;\n};\nObject.freeze(scrypt);\nexport function scryptSync(_passwd, _salt, N, r, p, dkLen) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(__scryptSync(passwd, salt, N, r, p, dkLen));\n}\nscryptSync._ = _scryptSync;\nscryptSync.lock = function () { lockedSync = true; };\nscryptSync.register = function (func) {\n if (lockedSync) {\n throw new Error(\"scryptSync is locked\");\n }\n __scryptSync = func;\n};\nObject.freeze(scryptSync);\n//# sourceMappingURL=scrypt.js.map","import { createHash } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nconst _sha256 = function (data) {\n return createHash(\"sha256\").update(data).digest();\n};\nconst _sha512 = function (data) {\n return createHash(\"sha512\").update(data).digest();\n};\nlet __sha256 = _sha256;\nlet __sha512 = _sha512;\nlet locked256 = false, locked512 = false;\nexport function sha256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha256(data));\n}\nsha256._ = _sha256;\nsha256.lock = function () { locked256 = true; };\nsha256.register = function (func) {\n if (locked256) {\n throw new Error(\"sha256 is locked\");\n }\n __sha256 = func;\n};\nObject.freeze(sha256);\nexport function sha512(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha512(data));\n}\nsha512._ = _sha512;\nsha512.lock = function () { locked512 = true; };\nsha512.register = function (func) {\n if (locked512) {\n throw new Error(\"sha512 is locked\");\n }\n __sha512 = func;\n};\nObject.freeze(sha256);\n//# sourceMappingURL=sha2.js.map","// We import all these so we can export lock()\nimport { computeHmac } from \"./hmac.js\";\nimport { keccak256 } from \"./keccak.js\";\nimport { ripemd160 } from \"./ripemd160.js\";\nimport { pbkdf2 } from \"./pbkdf2.js\";\nimport { randomBytes } from \"./random.js\";\nimport { scrypt, scryptSync } from \"./scrypt.js\";\nimport { sha256, sha512 } from \"./sha2.js\";\nexport { computeHmac, randomBytes, keccak256, ripemd160, sha256, sha512, pbkdf2, scrypt, scryptSync };\nexport function lock() {\n computeHmac.lock();\n keccak256.lock();\n pbkdf2.lock();\n randomBytes.lock();\n ripemd160.lock();\n scrypt.lock();\n scryptSync.lock();\n sha256.lock();\n sha512.lock();\n}\n//# sourceMappingURL=index.js.map","export const version = \"@ethersproject/address@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { arrayify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\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 return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\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 let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\nexport function getAddress(address) {\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\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 return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\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 let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n return logger.throwArgumentError(\"invalid address\", \"address\", address);\n}\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/rlp@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { logger } from \"./logger.js\";\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n const data = Array.prototype.slice.call(logger.getBytes(object, \"object\"));\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 const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nconst nibbles = \"0123456789abcdef\";\nexport function encodeRlp(object) {\n let result = \"0x\";\n for (const v of _encode(object)) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0xf];\n }\n return result;\n}\n//# sourceMappingURL=encode.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction hexlifyByte(value) {\n let result = value.toString(16);\n while (result.length < 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length, offset\n });\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: 0, offset: 1\n });\n }\n const checkOffset = (offset) => {\n if (offset > data.length) {\n logger.throwError(\"data short segment too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: data.length, offset\n });\n }\n };\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n checkOffset(offset + 1 + length);\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\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 checkOffset(offset + 1 + length);\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlifyByte(data[offset]) };\n}\nexport function decodeRlp(_data) {\n const data = logger.getBytes(_data, \"data\");\n const decoded = _decode(data, 0);\n if (decoded.consumed !== data.length) {\n logger.throwArgumentError(\"unexpected junk after rlp payload\", \"data\", _data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=decode.js.map","import { concat, dataSlice } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { encodeRlp } from \"@ethersproject/rlp\";\nimport { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getCreateAddress(tx) {\n const from = getAddress(tx.from);\n const nonce = logger.getBigInt(tx.nonce, \"tx.nonce\");\n let nonceHex = nonce.toString(16);\n if (nonceHex === \"0\") {\n nonceHex = \"0x\";\n }\n else if (nonceHex.length % 2) {\n nonceHex = \"0x0\" + nonceHex;\n }\n else {\n nonceHex = \"0x\" + nonceHex;\n }\n return getAddress(dataSlice(keccak256(encodeRlp([from, nonceHex])), 12));\n}\nexport function getCreate2Address(_from, _salt, _initCodeHash) {\n const from = getAddress(_from);\n const salt = logger.getBytes(_salt, \"salt\");\n const initCodeHash = logger.getBytes(_initCodeHash, \"initCodeHash\");\n if (salt.length !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", _salt);\n }\n if (initCodeHash.length !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", _initCodeHash);\n }\n return getAddress(dataSlice(keccak256(concat([\"0xff\", from, salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=contract-address.js.map","import { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\n// Resolves an Ethereum address, ENS name or Addressable object,\n// throwing if the result is null; an explicit null returns null\n//export async function resolveAddress(target?: null, resolver?: null | NameResolver): Promise;\n//export async function resolveAddress(target: string | Addressable, resolver?: null | NameResolver): Promise;\n//export async function resolveAddress(target: null | undefined | string | Addressable, resolver?: null | NameResolver) {\nexport async function resolveAddress(target, resolver) {\n //if (target == null) { return null; }\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n if (resolver == null) {\n return logger.throwError(\"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n });\n }\n const result = await resolver.resolveName(target);\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n return logger.throwError(\"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n }\n return getAddress(result);\n }\n else if (isAddressable(target)) {\n const result = await target.getAddress();\n if (result == null) {\n logger.throwArgumentError(\"addressable resolved to null\", \"target\", target);\n }\n return getAddress(result);\n }\n return logger.throwArgumentError(\"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Typed_options;\nimport { defineProperties } from \"@ethersproject/properties\";\nconst _gaurd = {};\nfunction n(value, width) {\n let signed = false;\n if (width < 0) {\n signed = true;\n width *= -1;\n }\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `${signed ? \"\" : \"u\"}int${width}`, value, { signed, width });\n}\nfunction b(value, size) {\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `bytes${(size) ? size : \"\"}`, value, { size });\n}\nconst _typedSymbol = Symbol.for(\"_ethers_typed\");\nexport class Typed {\n constructor(gaurd, type, value, options = null) {\n _Typed_options.set(this, void 0);\n if (gaurd !== _gaurd) {\n throw new Error(\"private constructor\");\n }\n defineProperties(this, { _typedSymbol, type, value });\n __classPrivateFieldSet(this, _Typed_options, options, \"f\");\n // Check the value is valid\n this.format();\n }\n format() {\n if (this.type === \"array\") {\n throw new Error(\"\");\n }\n else if (this.type === \"dynamicArray\") {\n throw new Error(\"\");\n }\n else if (this.type === \"tuple\") {\n return `tuple(${this.value.map((v) => v.format()).join(\",\")})`;\n }\n return this.type;\n }\n defaultValue() {\n return 0;\n }\n minValue() {\n return 0;\n }\n maxValue() {\n return 0;\n }\n isBigInt() {\n return !!(this.type.match(/^u?int[0-9]+$/));\n }\n isData() {\n return (this.type.substring(0, 5) === \"bytes\");\n }\n isString() {\n return (this.type === \"string\");\n }\n get tupleName() {\n if (this.type !== \"tuple\") {\n throw TypeError(\"not a tuple\");\n }\n return __classPrivateFieldGet(this, _Typed_options, \"f\");\n }\n // Returns the length of this type as an array\n // - `null` indicates the length is unforced, it could be dynamic\n // - `-1` indicates the length is dynamic\n // - any other value indicates it is a static array and is its length\n get arrayLength() {\n if (this.type !== \"array\") {\n throw TypeError(\"not an array\");\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === true) {\n return -1;\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === false) {\n return (this.value).length;\n }\n return null;\n }\n static from(type, value) {\n return new Typed(_gaurd, type, value);\n }\n static uint8(v) { return n(v, 8); }\n static uint16(v) { return n(v, 16); }\n static uint24(v) { return n(v, 24); }\n static uint32(v) { return n(v, 32); }\n static uint40(v) { return n(v, 40); }\n static uint48(v) { return n(v, 46); }\n static uint56(v) { return n(v, 56); }\n static uint64(v) { return n(v, 64); }\n static uint72(v) { return n(v, 72); }\n static uint80(v) { return n(v, 80); }\n static uint88(v) { return n(v, 88); }\n static uint96(v) { return n(v, 96); }\n static uint104(v) { return n(v, 104); }\n static uint112(v) { return n(v, 112); }\n static uint120(v) { return n(v, 120); }\n static uint128(v) { return n(v, 128); }\n static uint136(v) { return n(v, 136); }\n static uint144(v) { return n(v, 144); }\n static uint152(v) { return n(v, 152); }\n static uint160(v) { return n(v, 160); }\n static uint168(v) { return n(v, 168); }\n static uint176(v) { return n(v, 176); }\n static uint184(v) { return n(v, 184); }\n static uint192(v) { return n(v, 192); }\n static uint200(v) { return n(v, 200); }\n static uint208(v) { return n(v, 208); }\n static uint216(v) { return n(v, 216); }\n static uint224(v) { return n(v, 224); }\n static uint232(v) { return n(v, 232); }\n static uint240(v) { return n(v, 240); }\n static uint248(v) { return n(v, 248); }\n static uint256(v) { return n(v, 256); }\n static uint(v) { return n(v, 256); }\n static int8(v) { return n(v, -8); }\n static int16(v) { return n(v, -16); }\n static int24(v) { return n(v, -24); }\n static int32(v) { return n(v, -32); }\n static int40(v) { return n(v, -40); }\n static int48(v) { return n(v, -46); }\n static int56(v) { return n(v, -56); }\n static int64(v) { return n(v, -64); }\n static int72(v) { return n(v, -72); }\n static int80(v) { return n(v, -80); }\n static int88(v) { return n(v, -88); }\n static int96(v) { return n(v, -96); }\n static int104(v) { return n(v, -104); }\n static int112(v) { return n(v, -112); }\n static int120(v) { return n(v, -120); }\n static int128(v) { return n(v, -128); }\n static int136(v) { return n(v, -136); }\n static int144(v) { return n(v, -144); }\n static int152(v) { return n(v, -152); }\n static int160(v) { return n(v, -160); }\n static int168(v) { return n(v, -168); }\n static int176(v) { return n(v, -176); }\n static int184(v) { return n(v, -184); }\n static int192(v) { return n(v, -192); }\n static int200(v) { return n(v, -200); }\n static int208(v) { return n(v, -208); }\n static int216(v) { return n(v, -216); }\n static int224(v) { return n(v, -224); }\n static int232(v) { return n(v, -232); }\n static int240(v) { return n(v, -240); }\n static int248(v) { return n(v, -248); }\n static int256(v) { return n(v, -256); }\n static int(v) { return n(v, -256); }\n static bytes(v) { return b(v); }\n static bytes1(v) { return b(v, 1); }\n static bytes2(v) { return b(v, 2); }\n static bytes3(v) { return b(v, 3); }\n static bytes4(v) { return b(v, 4); }\n static bytes5(v) { return b(v, 5); }\n static bytes6(v) { return b(v, 6); }\n static bytes7(v) { return b(v, 7); }\n static bytes8(v) { return b(v, 8); }\n static bytes9(v) { return b(v, 9); }\n static bytes10(v) { return b(v, 10); }\n static bytes11(v) { return b(v, 11); }\n static bytes12(v) { return b(v, 12); }\n static bytes13(v) { return b(v, 13); }\n static bytes14(v) { return b(v, 14); }\n static bytes15(v) { return b(v, 15); }\n static bytes16(v) { return b(v, 16); }\n static bytes17(v) { return b(v, 17); }\n static bytes18(v) { return b(v, 18); }\n static bytes19(v) { return b(v, 19); }\n static bytes20(v) { return b(v, 20); }\n static bytes21(v) { return b(v, 21); }\n static bytes22(v) { return b(v, 22); }\n static bytes23(v) { return b(v, 23); }\n static bytes24(v) { return b(v, 24); }\n static bytes25(v) { return b(v, 25); }\n static bytes26(v) { return b(v, 26); }\n static bytes27(v) { return b(v, 27); }\n static bytes28(v) { return b(v, 28); }\n static bytes29(v) { return b(v, 29); }\n static bytes30(v) { return b(v, 30); }\n static bytes31(v) { return b(v, 31); }\n static bytes32(v) { return b(v, 32); }\n static address(v) { return new Typed(_gaurd, \"address\", v); }\n static bool(v) { return new Typed(_gaurd, \"bool\", !!v); }\n static string(v) { return new Typed(_gaurd, \"string\", v); }\n static array(v, dynamic) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"array\", v, dynamic);\n }\n static tuple(v, name) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"tuple\", v, name);\n }\n static overrides(v) {\n return new Typed(_gaurd, \"overrides\", Object.assign({}, v));\n }\n static isTyped(value) {\n return (value && value._typedSymbol === _typedSymbol);\n }\n static dereference(value, type) {\n if (Typed.isTyped(value)) {\n if (value.type !== type) {\n throw new Error(`invalid type: expecetd ${type}, got ${value.type}`);\n }\n return value.value;\n }\n return value;\n }\n}\n_Typed_options = new WeakMap();\n//# sourceMappingURL=typed.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class AddressCoder extends Coder {\n constructor(localName) {\n super(\"address\", \"address\", localName, false);\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000\";\n }\n encode(writer, _value) {\n let value = Typed.dereference(_value, \"string\");\n try {\n value = getAddress(value);\n }\n catch (error) {\n return this._throwError(error.message, _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n return getAddress(toHex(reader.readValue(), 20));\n }\n}\n//# sourceMappingURL=address.js.map","import { Coder } from \"./abstract-coder.js\";\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n constructor(coder) {\n super(coder.name, coder.type, \"_\", coder.dynamic);\n this.coder = coder;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(writer, value) {\n return this.coder.encode(writer, value);\n }\n decode(reader) {\n return this.coder.decode(reader);\n }\n}\n//# sourceMappingURL=anonymous.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { isError } from \"@ethersproject/logger\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, Result, WordSize, Writer } from \"./abstract-coder.js\";\nimport { AnonymousCoder } from \"./anonymous.js\";\nexport function pack(writer, coders, values) {\n let arrayValues = [];\n if (Array.isArray(values)) {\n arrayValues = values;\n }\n else if (values && typeof (values) === \"object\") {\n let unique = {};\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n unique[name] = true;\n return values[name];\n });\n }\n else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n let staticWriter = new Writer();\n let dynamicWriter = new Writer();\n let updateFuncs = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n }\n else {\n coder.encode(staticWriter, value);\n }\n });\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\nexport function unpack(reader, coders) {\n let values = [];\n let keys = [];\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n coders.forEach((coder) => {\n let value = null;\n if (coder.dynamic) {\n let offset = reader.readIndex();\n let offsetReader = baseReader.subReader(offset);\n try {\n value = coder.decode(offsetReader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\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 }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n if (value == undefined) {\n throw new Error(\"investigate\");\n }\n values.push(value);\n keys.push(coder.localName || null);\n });\n return Result.fromItems(values, keys);\n}\nexport class ArrayCoder extends Coder {\n constructor(coder, length, localName) {\n const type = (coder.type + \"[\" + (length >= 0 ? length : \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n defineProperties(this, { coder, length });\n }\n defaultValue() {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n const result = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"array\");\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n let count = this.length;\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n logger.assertArgumentCount(value.length, count, \"coder array\" + (this.localName ? (\" \" + this.localName) : \"\"));\n let coders = [];\n for (let i = 0; i < value.length; i++) {\n coders.push(this.coder);\n }\n return pack(writer, coders, value);\n }\n decode(reader) {\n let count = this.length;\n if (count === -1) {\n count = reader.readIndex();\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 * WordSize > reader.dataLength) {\n logger.throwError(\"insufficient data length\", \"BUFFER_OVERRUN\", {\n buffer: reader.bytes,\n offset: count * WordSize,\n length: reader.dataLength\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) {\n coders.push(new AnonymousCoder(this.coder));\n }\n return unpack(reader, coders);\n }\n}\n//# sourceMappingURL=array.js.map","import { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class BooleanCoder extends Coder {\n constructor(localName) {\n super(\"bool\", \"bool\", localName, false);\n }\n defaultValue() {\n return false;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"bool\");\n return writer.writeValue(value ? 1 : 0);\n }\n decode(reader) {\n return !!reader.readValue();\n }\n}\n//# sourceMappingURL=boolean.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class DynamicBytesCoder extends Coder {\n constructor(type, localName) {\n super(type, type, localName, true);\n }\n defaultValue() {\n return \"0x\";\n }\n encode(writer, value) {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n decode(reader) {\n return reader.readBytes(reader.readIndex(), true);\n }\n}\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"bytes\", localName);\n }\n decode(reader) {\n return hexlify(super.decode(reader));\n }\n}\n//# sourceMappingURL=bytes.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class FixedBytesCoder extends Coder {\n constructor(size, localName) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n defineProperties(this, { size }, { size: \"number\" });\n }\n defaultValue() {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n encode(writer, _value) {\n let data = arrayify(Typed.dereference(_value, this.type));\n if (data.length !== this.size) {\n this._throwError(\"incorrect data length\", _value);\n }\n return writer.writeBytes(data);\n }\n decode(reader) {\n return hexlify(reader.readBytes(this.size));\n }\n}\n//# sourceMappingURL=fixed-bytes.js.map","import { Coder } from \"./abstract-coder.js\";\nconst Empty = new Uint8Array([]);\nexport class NullCoder extends Coder {\n constructor(localName) {\n super(\"null\", \"\", localName, false);\n }\n defaultValue() {\n return null;\n }\n encode(writer, value) {\n if (value != null) {\n this._throwError(\"not null\", value);\n }\n return writer.writeBytes(Empty);\n }\n decode(reader) {\n reader.readBytes(0);\n return null;\n }\n}\n//# sourceMappingURL=null.js.map","import { fromTwos, mask, toTwos } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, WordSize } from \"./abstract-coder.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nexport class NumberCoder extends Coder {\n constructor(size, signed, localName) {\n const name = ((signed ? \"int\" : \"uint\") + (size * 8));\n super(name, name, localName, false);\n defineProperties(this, { size, signed }, { size: \"number\", signed: \"boolean\" });\n }\n defaultValue() {\n return 0;\n }\n encode(writer, _value) {\n let value = logger.getBigInt(Typed.dereference(_value, this.type));\n // Check bounds are safe for encoding\n let maxUintValue = mask(BN_MAX_UINT256, WordSize * 8);\n if (this.signed) {\n let bounds = mask(maxUintValue, (this.size * 8) - 1);\n if (value > bounds || value < -(bounds + BN_1)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n }\n else if (value < BN_0 || value > mask(maxUintValue, this.size * 8)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n value = mask(toTwos(value, this.size * 8), this.size * 8);\n if (this.signed) {\n value = toTwos(fromTwos(value, this.size * 8), 8 * WordSize);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n let value = mask(reader.readValue(), this.size * 8);\n if (this.signed) {\n value = fromTwos(value, this.size * 8);\n }\n return value;\n }\n}\n//# sourceMappingURL=number.js.map","export const version = \"@ethersproject/strings@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\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 Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\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 Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\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) {\n break;\n }\n i++;\n }\n return i;\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 // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push((badCodepoint != null) ? badCodepoint : -1);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = logger.getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\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 }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\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 // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\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 // See above loop for invalid continuation byte\n if (res === null) {\n 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 // 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 // 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 result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\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 if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\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 return new Uint8Array(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\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 if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","import { zeroPadBytes } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nimport { toUtf8Bytes, toUtf8String } from \"./utf8.js\";\nexport function formatBytes32String(text) {\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n // Check we have room for null-termination\n if (bytes.length > 31) {\n throw new Error(\"bytes32 string must be less than 32 bytes\");\n }\n // Zero-pad (implicitly null-terminates)\n return zeroPadBytes(bytes, 32);\n}\nexport function parseBytes32String(_bytes) {\n const data = logger.getBytes(_bytes, \"bytes\");\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) {\n throw new Error(\"invalid bytes32 - not 32 bytes long\");\n }\n if (data[31] !== 0) {\n throw new Error(\"invalid bytes32 string - no null terminator\");\n }\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) {\n length--;\n }\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n//# sourceMappingURL=bytes32.js.map","import { logger } from \"./logger.js\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8.js\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"should not happen; bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, _func) {\n const func = _func || function (value) { return [parseInt(value, 16)]; };\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n const range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n if (range.s == null) {\n throw new Error(\"should not happenl bad range\");\n }\n return [codepoint + range.s];\n }\n const codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n const shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n const complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_PROHIBITED\", \"value\", value);\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_UNASSIGNED\", \"value\", value);\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n logger.throwArgumentError(\"invalid hyphen\", \"value\", value);\n }\n // IDNA: 4.2.4\n if (name.length > 63) {\n logger.throwArgumentError(\"too long\", \"value\", value);\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","import { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { Typed } from \"../typed.js\";\nimport { DynamicBytesCoder } from \"./bytes.js\";\nexport class StringCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"string\", localName);\n }\n defaultValue() {\n return \"\";\n }\n encode(writer, _value) {\n return super.encode(writer, toUtf8Bytes(Typed.dereference(_value, \"string\")));\n }\n decode(reader) {\n return toUtf8String(super.decode(reader));\n }\n}\n//# sourceMappingURL=string.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nimport { pack, unpack } from \"./array.js\";\nexport class TupleCoder extends Coder {\n constructor(coders, localName) {\n let dynamic = false;\n const types = [];\n coders.forEach((coder) => {\n if (coder.dynamic) {\n dynamic = true;\n }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n super(\"tuple\", type, localName, dynamic);\n defineProperties(this, { coders: Object.freeze(coders.slice()) });\n }\n defaultValue() {\n const values = [];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\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]) {\n accum[name] = 0;\n }\n accum[name]++;\n }\n return accum;\n }, {});\n // Add named values\n this.coders.forEach((coder, index) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) {\n return;\n }\n if (name === \"length\") {\n name = \"_length\";\n }\n if (values[name] != null) {\n return;\n }\n values[name] = values[index];\n });\n return Object.freeze(values);\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"tuple\");\n return pack(writer, this.coders, value);\n }\n decode(reader) {\n return unpack(reader, this.coders);\n }\n}\n//# sourceMappingURL=tuple.js.map","// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbiCoder_instances, _AbiCoder_getCoder;\nimport { logger } from \"./logger.js\";\nimport { Reader, Writer } from \"./coders/abstract-coder.js\";\nimport { AddressCoder } from \"./coders/address.js\";\nimport { ArrayCoder } from \"./coders/array.js\";\nimport { BooleanCoder } from \"./coders/boolean.js\";\nimport { BytesCoder } from \"./coders/bytes.js\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes.js\";\nimport { NullCoder } from \"./coders/null.js\";\nimport { NumberCoder } from \"./coders/number.js\";\nimport { StringCoder } from \"./coders/string.js\";\nimport { TupleCoder } from \"./coders/tuple.js\";\nimport { ParamType } from \"./fragments.js\";\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\nexport class AbiCoder {\n constructor() {\n _AbiCoder_instances.add(this);\n }\n getDefaultValue(types) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n encode(types, values) {\n logger.assertArgumentCount(values.length, types.length, \"types/values length mismatch\");\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n const writer = new Writer();\n coder.encode(writer, values);\n return writer.data;\n }\n decode(types, data, loose) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(new Reader(data, loose));\n }\n}\n_AbiCoder_instances = new WeakSet(), _AbiCoder_getCoder = function _AbiCoder_getCoder(param) {\n if (param.isArray()) {\n return new ArrayCoder(__classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, param.arrayChildren), param.arrayLength, param.name);\n }\n if (param.isTuple()) {\n return new TupleCoder(param.components.map((c) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, c)), param.name);\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 \"\":\n return new NullCoder(param.name);\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 // 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 return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n};\nexport const defaultAbiCoder = new AbiCoder();\n//# sourceMappingURL=abi-coder.js.map","import { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","export const version = \"@ethersproject/hash@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { nameprep, toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nconst Partition = new RegExp(\"^((.*)\\\\.)?([^.]+)$\");\nexport function isValidName(name) {\n try {\n const comps = name.split(\".\");\n for (let i = 0; i < comps.length; i++) {\n if (nameprep(comps[i]).length === 0) {\n throw new Error(\"empty\");\n }\n }\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let current = name;\n let result = Zeros;\n while (current.length) {\n const partition = current.match(Partition);\n if (partition == null || partition[2] === \"\") {\n return logger.throwArgumentError(\"invalid ENS name; missing component\", \"name\", name);\n }\n const label = toUtf8Bytes(nameprep(partition[3]));\n result = keccak256(concat([result, keccak256(label)]));\n current = partition[2] || \"\";\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid DNS name; not a string\", \"name\", name);\n }\n if (name === \"\") {\n return \"0x00\";\n }\n // @TODO: should we enforce the 255 octet limit?\n return concat(name.split(\".\").map((comp) => {\n if (comp === \"\") {\n logger.throwArgumentError(\"invalid DNS name; missing component\", \"name\", name);\n }\n // We jam in an _ prefix to fill in with the length later\n // Note: Nameprep throws if the component is over 63 bytes\n const bytes = toUtf8Bytes(\"_\" + nameprep(comp));\n bytes[0] = bytes.length - 1;\n return bytes;\n })) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","import { concat, dataLength, hexlify, zeroPadBytes, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 as _keccak256, sha256 as _sha256 } from \"@ethersproject/crypto\";\nimport { toTwos } from \"@ethersproject/math\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\nfunction _pack(type, value, isArray) {\n switch (type) {\n case \"address\":\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return logger.getBytes(value);\n case \"bool\":\n value = (!!value ? \"0x01\" : \"0x00\");\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n }\n let match = type.match(regexNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n return logger.throwArgumentError(\"invalid number type\", \"type\", type);\n }\n if (isArray) {\n size = 256;\n }\n value = toTwos(value, size);\n return logger.getBytes(zeroPadValue(value, size / 8));\n }\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n if (String(size) !== match[1] || size === 0 || size > 32) {\n return logger.throwArgumentError(\"invalid bytes type\", \"type\", type);\n }\n if (dataLength(value) !== size) {\n return logger.throwArgumentError(`invalid value for ${type}`, \"value\", value);\n }\n if (isArray) {\n return logger.getBytes(zeroPadBytes(value, 32));\n }\n return value;\n }\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(`invalid array length for ${type}`, \"value\", value);\n }\n const result = [];\n value.forEach(function (value) {\n result.push(_pack(baseType, value, true));\n });\n return logger.getBytes(concat(result));\n }\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n}\n// @TODO: Array Enum\nexport function solidityPacked(types, values) {\n if (types.length != values.length) {\n logger.throwArgumentError(\"wrong number of values; expected ${ types.length }\", \"values\", values);\n }\n const tight = [];\n types.forEach(function (type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\nexport function solidityPackedKeccak256(types, values) {\n return _keccak256(solidityPacked(types, values));\n}\nexport function solidityPackedSha256(types, values) {\n return _sha256(solidityPacked(types, values));\n}\n//# sourceMappingURL=solidity.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TypedDataEncoder_instances, _TypedDataEncoder_types, _TypedDataEncoder_fullTypes, _TypedDataEncoder_encoderCache, _TypedDataEncoder_getEncoder;\n//import { TypedDataDomain, TypedDataField } from \"@ethersproject/providerabstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { mask, toHex, toTwos } from \"@ethersproject/math\";\nimport { id } from \"./id.js\";\nimport { logger } from \"./logger.js\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst BN__1 = BigInt(-1);\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n;\n;\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return concat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = toHex(BN_1, 32);\nconst hexFalse = toHex(BN_0, 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n return logger.getBigInt(value, \"domain.chainId\");\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n const bytes = logger.getBytes(value, \"domain.salt\");\n if (bytes.length !== 32) {\n logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n return hexlify(bytes);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\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 const boundsUpper = mask(BN_MAX_UINT256, signed ? (width - 1) : width);\n const boundsLower = signed ? ((boundsUpper + BN_1) * BN__1) : BN_0;\n return function (_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < boundsLower || value > boundsUpper) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return toHex(toTwos(value, 256), 32);\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 return function (value) {\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 switch (type) {\n case \"address\": return function (value) {\n return zeroPadValue(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n _TypedDataEncoder_instances.add(this);\n _TypedDataEncoder_types.set(this, void 0);\n _TypedDataEncoder_fullTypes.set(this, void 0);\n _TypedDataEncoder_encoderCache.set(this, void 0);\n __classPrivateFieldSet(this, _TypedDataEncoder_types, JSON.stringify(types), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_fullTypes, new Map(), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_encoderCache, new Map(), \"f\");\n // Link struct types to their direct child structs\n const links = new Map();\n // Link structs to structs which contain them as a child\n const parents = new Map();\n // Link all subtypes within a given struct\n const subtypes = new Map();\n Object.keys(types).forEach((type) => {\n links.set(type, new Set());\n parents.set(type, []);\n subtypes.set(type, new Set());\n });\n for (const name in types) {\n const uniqueNames = new Set();\n for (const field of types[name]) {\n // Check each field has a unique name\n if (uniqueNames.has(field.name)) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames.add(field.name);\n // Get the base type (drop any array specifiers)\n const baseType = (field.type.match(/^([^\\x5b]*)(\\x5b|$)/))[1] || null;\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n continue;\n }\n if (!parents.has(baseType)) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents.get(baseType).push(name);\n links.get(name).add(baseType);\n }\n }\n // Deduce the primary type\n const primaryTypes = Array.from(parents.keys()).filter((n) => (parents.get(n).length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\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 defineProperties(this, { primaryType: primaryTypes[0] });\n // Check for circular type references\n function checkCircular(type, found) {\n if (found.has(type)) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found.add(type);\n for (const child of links.get(type)) {\n if (!parents.has(child)) {\n continue;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n for (const subtype of found) {\n subtypes.get(subtype).add(child);\n }\n }\n found.delete(type);\n }\n checkCircular(this.primaryType, new Set());\n // Compute each fully describe type\n for (const [name, set] of subtypes) {\n const st = Array.from(set);\n st.sort();\n __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").set(name, encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\"));\n }\n }\n get types() {\n return JSON.parse(__classPrivateFieldGet(this, _TypedDataEncoder_types, \"f\"));\n }\n getEncoder(type) {\n let encoder = __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").get(type);\n if (!encoder) {\n encoder = __classPrivateFieldGet(this, _TypedDataEncoder_instances, \"m\", _TypedDataEncoder_getEncoder).call(this, type);\n __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").set(type, encoder);\n }\n return encoder;\n }\n encodeType(name) {\n const result = __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(name);\n if (!result) {\n return logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => this._visit(subtype, v, callback));\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 return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\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 domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return concat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain, types, value, resolveName) {\n // Make a copy to isolate it from the object passed in\n domain = Object.assign({}, domain);\n // Look up all ENS names\n const ensCache = {};\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 // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = Object.assign({}, types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(logger.getBytes(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return logger.getBigInt(value).toString();\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 return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n_TypedDataEncoder_types = new WeakMap(), _TypedDataEncoder_fullTypes = new WeakMap(), _TypedDataEncoder_encoderCache = new WeakMap(), _TypedDataEncoder_instances = new WeakSet(), _TypedDataEncoder_getEncoder = function _TypedDataEncoder_getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(subtype)) {\n result = result.map(keccak256);\n }\n return keccak256(concat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(type));\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(type)) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return concat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n};\n//# sourceMappingURL=typed-data.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Interface_instances, _Interface_errors, _Interface_events, _Interface_functions, _Interface_abiCoder, _Interface_getFunction, _Interface_getEvent;\nimport { arrayify, concat, dataSlice, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { defaultAbiCoder } from \"./abi-coder.js\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder.js\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatType, Fragment, FunctionFragment, ParamType } from \"./fragments.js\";\nimport { logger } from \"./logger.js\";\nimport { Typed } from \"./typed.js\";\nexport { checkResultErrors, Result };\nexport class LogDescription {\n constructor(fragment, topic, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, signature, topic, args\n });\n }\n}\nexport class TransactionDescription {\n constructor(fragment, selector, args, value) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector, value\n });\n }\n}\nexport class ErrorDescription {\n constructor(fragment, selector, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector\n });\n }\n}\nexport class Indexed {\n constructor(hash) {\n defineProperties(this, { hash, _isIndexed: true });\n }\n static isIndexed(value) {\n return !!(value && value._isIndexed);\n }\n}\n// https://docs.soliditylang.org/en/v0.8.13/control-structures.html?highlight=panic#panic-via-assert-and-error-via-require\nconst PanicReasons = {\n \"0\": \"generic panic\",\n \"1\": \"assert(false)\",\n \"17\": \"arithmetic overflow\",\n \"18\": \"division or modulo by zero\",\n \"33\": \"enum overflow\",\n \"34\": \"invalid encoded storage byte array accessed\",\n \"49\": \"out-of-bounds array access; popping on an empty array\",\n \"50\": \"out-of-bounds access of an array or bytesN\",\n \"65\": \"out of memory\",\n \"81\": \"uninitialized function\",\n};\nconst BuiltinErrors = {\n \"0x08c379a0\": {\n signature: \"Error(string)\",\n name: \"Error\",\n inputs: [\"string\"],\n reason: (message) => {\n return `reverted with reason string ${JSON.stringify(message)}`;\n }\n },\n \"0x4e487b71\": {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n inputs: [\"uint256\"],\n reason: (code) => {\n let reason = \"unknown panic code\";\n if (code >= 0 && code <= 0xff && PanicReasons[code.toString()]) {\n reason = PanicReasons[code.toString()];\n }\n return `reverted with panic code 0x${code.toString(16)} (${reason})`;\n }\n }\n};\nexport class Interface {\n constructor(fragments) {\n _Interface_instances.add(this);\n _Interface_errors.set(this, void 0);\n _Interface_events.set(this, void 0);\n _Interface_functions.set(this, void 0);\n // #structs: Map;\n _Interface_abiCoder.set(this, void 0);\n let abi = [];\n if (typeof (fragments) === \"string\") {\n abi = JSON.parse(fragments);\n }\n else {\n abi = fragments;\n }\n __classPrivateFieldSet(this, _Interface_functions, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_errors, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_events, new Map(), \"f\");\n // this.#structs = new Map();\n defineProperties(this, {\n fragments: Object.freeze(abi.map((f) => Fragment.from(f)).filter((f) => (f != null))),\n });\n __classPrivateFieldSet(this, _Interface_abiCoder, this.getAbiCoder(), \"f\");\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket;\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 defineProperties(this, { deploy: fragment });\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = __classPrivateFieldGet(this, _Interface_functions, \"f\");\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = __classPrivateFieldGet(this, _Interface_events, \"f\");\n break;\n case \"error\":\n bucket = __classPrivateFieldGet(this, _Interface_errors, \"f\");\n break;\n default:\n return;\n }\n const signature = fragment.format();\n if (bucket.has(signature)) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n bucket.set(signature, fragment);\n });\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineProperties(this, {\n deploy: ConstructorFragment.fromString(\"constructor()\")\n });\n }\n }\n // @TODO: multi sig?\n format(format) {\n if (!format) {\n format = FormatType.full;\n }\n if (format === FormatType.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n const abi = this.fragments.map((f) => f.format(format));\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatType.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n return abi;\n }\n getAbiCoder() {\n return defaultAbiCoder;\n }\n getFunctionName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, null, false)).name;\n }\n getFunction(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, values || null, true);\n }\n getEventName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, null, false)).name;\n }\n getEvent(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, values || null, true);\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(key, values) {\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_errors, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching error\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_errors, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", key);\n }\n else if (matching.length > 1) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching errors\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_errors, \"f\").get(ErrorFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching error\", \"signature\", key);\n }\n // Get the 4-byte selector used by Solidity to identify a function\n getSelector(fragment) {\n /*\n if (typeof(fragment) === \"string\") {\n const matches: Array = [ ];\n\n try { matches.push(this.getFunction(fragment)); } catch (error) { }\n try { matches.push(this.getError(fragment)); } catch (_) { }\n\n if (matches.length === 0) {\n logger.throwArgumentError(\"unknown fragment\", \"key\", fragment);\n } else if (matches.length > 1) {\n logger.throwArgumentError(\"ambiguous fragment matches function and error\", \"key\", fragment);\n }\n\n fragment = matches[0];\n }\n */\n return dataSlice(id(fragment.format()), 0, 4);\n }\n // Get the 32-byte topic hash used by Solidity to identify an event\n getEventTopic(fragment) {\n //if (typeof(fragment) === \"string\") { fragment = this.getEvent(eventFragment); }\n return id(fragment.format());\n }\n _decodeParams(params, data) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(params, data);\n }\n _encodeParams(params, values) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(params, values);\n }\n encodeDeploy(values) {\n return this._encodeParams(this.deploy.inputs, values || []);\n }\n decodeErrorResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n encodeErrorResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match function ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n let message = \"invalid length for result data\";\n const bytes = arrayify(data);\n if ((bytes.length % 32) === 0) {\n try {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.outputs, bytes);\n }\n catch (error) {\n message = \"could not decode result data\";\n }\n }\n // Call returned data with no error, but the data is junk\n return logger.throwError(message, \"BAD_DATA\", {\n value: hexlify(bytes),\n info: { method: fragment.name, signature: fragment.format() }\n });\n }\n makeError(fragment, _data, tx) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n const data = logger.getBytes(_data);\n let args = undefined;\n if (tx) {\n try {\n args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, tx.data || \"0x\");\n }\n catch (error) {\n console.log(error);\n }\n }\n let errorArgs = undefined;\n let errorName = undefined;\n let errorSignature = undefined;\n let reason = \"unknown reason\";\n if (data.length === 0) {\n reason = \"missing error reason\";\n }\n else if ((data.length % 32) === 4) {\n const selector = hexlify(data.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n try {\n errorName = builtin.name;\n errorSignature = builtin.signature;\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(builtin.inputs, data.slice(4));\n reason = builtin.reason(...errorArgs);\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n else {\n reason = \"unknown custom error\";\n try {\n const error = this.getError(selector);\n errorName = error.name;\n errorSignature = error.format();\n reason = `custom error: ${errorSignature}`;\n try {\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(error.inputs, data.slice(4));\n }\n catch (error) {\n reason = `custom error: ${errorSignature} (coult not decode error data)`;\n }\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n }\n return logger.makeError(\"call revert exception\", \"CALL_EXCEPTION\", {\n data: hexlify(data), transaction: null,\n method: fragment.name, signature: fragment.format(), args,\n errorArgs, errorName, errorSignature, reason\n });\n }\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment, values) {\n if (typeof (functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n return hexlify(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(functionFragment.outputs, values || []));\n }\n /*\n spelunk(inputs: Array, values: ReadonlyArray, processfunc: (type: string, value: any) => Promise): Promise> {\n const promises: Array> = [ ];\n const process = function(type: ParamType, value: any): any {\n if (type.baseType === \"array\") {\n return descend(type.child\n }\n if (type. === \"address\") {\n }\n };\n \n const descend = function (inputs: Array, values: ReadonlyArray) {\n if (inputs.length !== values.length) { throw new Error(\"length mismatch\"); }\n \n };\n \n const result: Array = [ ];\n values.forEach((value, index) => {\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 */\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), \"UNEXPECTED_ARGUMENT\", {\n count: values.length,\n expectedCount: eventFragment.inputs.length\n });\n }\n const topics = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n const encodeTopic = (param, value) => {\n if (param.type === \"string\") {\n return id(value);\n }\n else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n // Check addresses are valid\n if (param.type === \"address\") {\n __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([\"address\"], [value]);\n }\n return zeroPadValue(hexlify(value), 32);\n //@TOOD should probably be return toHex(value, 32)\n };\n values.forEach((value, index) => {\n const param = eventFragment.inputs[index];\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 if (value == null) {\n topics.push(null);\n }\n else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n }\n else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n }\n else {\n topics.push(encodeTopic(param, value));\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n }\n encodeEventLog(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n const topics = [];\n const dataTypes = [];\n const dataValues = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\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 }\n else if (param.type === \"bytes\") {\n topics.push(keccak256(value));\n }\n else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n }\n else {\n topics.push(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([param.type], [value]));\n }\n }\n else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n return {\n data: __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(dataTypes, dataValues),\n topics: topics\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment, data, topics) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (topics != null && !eventFragment.anonymous) {\n const eventTopic = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== eventTopic) {\n logger.throwArgumentError(\"fragment/topic mismatch\", \"topics[0]\", topics[0]);\n }\n topics = topics.slice(1);\n }\n const indexed = [];\n const nonIndexed = [];\n const dynamic = [];\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 }\n else {\n indexed.push(param);\n dynamic.push(false);\n }\n }\n else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n const resultIndexed = (topics != null) ? __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(indexed, concat(topics)) : null;\n const resultNonIndexed = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(nonIndexed, data, true);\n //const result: (Array & { [ key: string ]: any }) = [ ];\n const values = [];\n const keys = [];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n let value = null;\n if (param.indexed) {\n if (resultIndexed == null) {\n value = new Indexed(null);\n }\n else if (dynamic[index]) {\n value = new Indexed(resultIndexed[indexedIndex++]);\n }\n else {\n try {\n value = resultIndexed[indexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n }\n else {\n try {\n value = resultNonIndexed[nonIndexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n values.push(value);\n keys.push(param.name || null);\n });\n return Result.fromItems(values, keys);\n }\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx) {\n const data = logger.getBytes(tx.data, \"tx.data\");\n const value = logger.getBigInt((tx.value != null) ? tx.value : 0, \"tx.value\");\n const fragment = this.getFunction(hexlify(data.slice(0, 4)));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, data.slice(4));\n return new TransactionDescription(fragment, this.getSelector(fragment), args, value);\n }\n // @TODO\n //parseCallResult(data: BytesLike): ??\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log) {\n const fragment = this.getEvent(log.topics[0]);\n if (!fragment || fragment.anonymous) {\n 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 return new LogDescription(fragment, this.getEventTopic(fragment), this.decodeEventLog(fragment, log.data, log.topics));\n }\n parseError(data) {\n const hexData = hexlify(data);\n const fragment = this.getError(dataSlice(hexData, 0, 4));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, dataSlice(hexData, 4));\n return new ErrorDescription(fragment, this.getSelector(fragment), args);\n }\n static from(value) {\n // Already an Interface, which is immutable\n if (value instanceof Interface) {\n return value;\n }\n // JSON\n if (typeof (value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n // Maybe an interface from an older version, or from a symlinked copy\n if (typeof (value.format) === \"function\") {\n return new Interface(value.format(FormatType.json));\n }\n // Array of fragments\n return new Interface(value);\n }\n}\n_Interface_errors = new WeakMap(), _Interface_events = new WeakMap(), _Interface_functions = new WeakMap(), _Interface_abiCoder = new WeakMap(), _Interface_instances = new WeakSet(), _Interface_getFunction = function _Interface_getFunction(key, values, forceUnique) {\n // Selector\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_functions, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching function\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_functions, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n const lastValue = (values.length > 0) ? values[values.length - 1] : null;\n let valueLength = values.length;\n let allowOptions = true;\n if (Typed.isTyped(lastValue) && lastValue.type === \"overrides\") {\n allowOptions = false;\n valueLength--;\n }\n // Remove all matches that don't have a compatible length. The args\n // may contain an overrides, so the match may have n or n - 1 parameters\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs.length;\n if (inputs !== valueLength && (!allowOptions || inputs !== valueLength - 1)) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // We are past the inputs\n if (j >= inputs.length) {\n if (values[j].type === \"overrides\") {\n continue;\n }\n matching.splice(i, 1);\n break;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n // We found a single matching signature with an overrides, but the\n // last value is something that cannot possibly be an options\n if (matching.length === 1 && values && values.length !== matching[0].inputs.length) {\n const lastArg = values[values.length - 1];\n if (lastArg == null || Array.isArray(lastArg) || typeof (lastArg) !== \"object\") {\n matching.splice(0, 1);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n logger.throwArgumentError(`multiple matching functions (i.e. ${matchStr})`, \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_functions, \"f\").get(FunctionFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching function\", \"signature\", key);\n}, _Interface_getEvent = function _Interface_getEvent(key, values, forceUnique) {\n // EventTopic\n if (isHexString(key)) {\n const eventTopic = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_events, \"f\").values()) {\n if (eventTopic === this.getEventTopic(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching event\", \"eventTopic\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_events, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n // Remove all matches that don't have a compatible length.\n for (let i = matching.length - 1; i >= 0; i--) {\n if (matching[i].inputs.length < values.length) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching events\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_events, \"f\").get(EventFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching event\", \"signature\", key);\n};\n//# sourceMappingURL=interface.js.map","export const version = \"@ethersproject/web@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchResponse_props, _FetchResponse_error;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties, getStore } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\n;\nexport class FetchResponse {\n constructor(statusCode, statusMessage, headers, body, request) {\n _FetchResponse_props.set(this, void 0);\n _FetchResponse_error.set(this, void 0);\n __classPrivateFieldSet(this, _FetchResponse_props, {\n statusCode,\n statusMessage,\n headers: Object.freeze(Object.assign({}, Object.keys(headers).reduce((accum, k) => {\n accum[k.toLowerCase()] = headers[k];\n return accum;\n }, {}))),\n body: ((body == null) ? null : new Uint8Array(body)),\n request: (request || null),\n }, \"f\");\n __classPrivateFieldSet(this, _FetchResponse_error, { message: \"\" }, \"f\");\n }\n toString() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return ``;\n }\n get statusCode() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusCode\"); }\n get statusMessage() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusMessage\"); }\n get headers() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"headers\"); }\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? null : new Uint8Array(body);\n }\n get bodyText() {\n try {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? \"\" : toUtf8String(body);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid UTF-8 data\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyText\", info: { response: this }\n });\n }\n }\n get bodyJson() {\n try {\n return JSON.parse(this.bodyText);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid JSON\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyJson\", info: { response: this }\n });\n }\n }\n [(_FetchResponse_props = new WeakMap(), _FetchResponse_error = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n makeServerError(message, error) {\n let statusMessage;\n if (!message) {\n message = `${this.statusCode} ${this.statusMessage}`;\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${message})`;\n }\n else {\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${message})`;\n }\n const response = new FetchResponse(599, statusMessage, this.headers, this.body, getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\") || undefined);\n __classPrivateFieldSet(response, _FetchResponse_error, { message, error }, \"f\");\n return response;\n }\n throwThrottleError(message, stall) {\n if (stall == null) {\n stall = 1000;\n }\n if (typeof (stall) !== \"number\" || !Number.isInteger(stall) || stall < 0) {\n logger.throwArgumentError(\"invalid stall timeout\", \"stall\", stall);\n }\n const error = new Error(message || \"throttling requests\");\n defineProperties(error, { stall, throttle: true });\n throw error;\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n hasBody() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body != null);\n }\n get request() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\"); }\n ok() {\n return (__classPrivateFieldGet(this, _FetchResponse_error, \"f\").message === \"\" && this.statusCode >= 200 && this.statusCode < 300);\n }\n assertOk() {\n if (this.ok()) {\n return;\n }\n let { message, error } = __classPrivateFieldGet(this, _FetchResponse_error, \"f\");\n if (message === \"\") {\n message = `server response ${this.statusCode} ${this.statusMessage}`;\n }\n logger.throwError(message, \"SERVER_ERROR\", {\n request: (this.request || \"unknown request\"), response: this, error\n });\n }\n}\n//# sourceMappingURL=response.js.map","import { logger } from \"./logger.js\";\nimport { FetchResponse } from \"./response.js\";\nexport async function getUrl(req, timeout) {\n const protocol = req.url.split(\":\")[0].toLowerCase();\n if (protocol !== \"http\" && protocol !== \"https\") {\n logger.throwError(`unsupported protocol ${protocol}`, \"UNSUPPORTED_OPERATION\", {\n info: { protocol },\n operation: \"request\"\n });\n }\n if (req.credentials && !req.allowInsecureAuthentication) {\n logger.throwError(\"insecure authorized connections unsupported\", \"UNSUPPORTED_OPERATION\", {\n operation: \"request\"\n });\n }\n const init = {\n method: req.method,\n headers: new Headers(Array.from(req)),\n body: req.body || undefined,\n };\n const resp = await fetch(req.url, init);\n const headers = {};\n resp.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n const body = new Uint8Array(await resp.arrayBuffer());\n return new FetchResponse(resp.status, resp.statusText, headers, body, req);\n}\n//# sourceMappingURL=get-url-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchRequest_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nfunction check(value, type, name) {\n if (typeof (value) !== type) {\n throw new Error(`invalid ${name}`);\n }\n return value;\n}\nexport class FetchRequest {\n constructor(url) {\n _FetchRequest_props.set(this, void 0);\n __classPrivateFieldSet(this, _FetchRequest_props, {\n allowInsecure: false,\n gzip: false,\n headers: {},\n method: \"\",\n timeout: 300,\n url: check(url, \"string\", \"url\")\n }, \"f\");\n }\n // URL\n get url() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\"); }\n set url(url) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\", check(url, \"string\", \"url\"));\n }\n // Body\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body == null) {\n return null;\n }\n if (this.isFrozen()) {\n return new Uint8Array(body);\n }\n return body;\n }\n set body(body) {\n if (body == null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", undefined);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", undefined);\n }\n else if (typeof (body) === \"string\") {\n // @TODO: utf8-check\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(body));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"text/plain\");\n }\n else if (body instanceof Uint8Array) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", body);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/octet-stream\");\n }\n else if (typeof (body) === \"object\") {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(JSON.stringify(body)));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/json\");\n }\n else {\n throw new Error(\"invalid body\");\n }\n }\n hasBody() {\n return (getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\") != null);\n }\n // Method (default: GET with no body, POST with a body)\n get method() {\n const method = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\");\n if (method) {\n return method.toUpperCase();\n }\n if (this.body) {\n return \"POST\";\n }\n return \"GET\";\n }\n set method(method) {\n if (method == null) {\n method = \"\";\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\", check(method, \"string\", \"method\"));\n }\n // Headers (automatically fills content-type if not explicitly set)\n get headers() {\n const headers = Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\"));\n const bodyType = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\");\n if (this.credentials) { /* TODO */ }\n ;\n if (this.allowGzip) {\n headers[\"accept-encoding\"] = \"gzip\";\n }\n if (headers[\"content-type\"] == null && bodyType) {\n headers[\"content-type\"] = bodyType;\n }\n if (this.body) {\n headers[\"content-length\"] = String(this.body.length);\n }\n return Object.freeze(headers);\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n setHeader(key, value) {\n const headers = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\");\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", headers);\n headers[check(key, \"string\", \"key\").toLowerCase()] = String(value);\n }\n clearHeaders() {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", {});\n }\n [(_FetchRequest_props = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n // Configure an Authorization header\n get credentials() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\") || null;\n }\n setCredentials(username, password) {\n if (username.match(/:/)) {\n logger.throwArgumentError(\"invalid basic authentication username\", \"username\", \"[REDACTED]\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\", `${username}:${password}`);\n // @TODO:\n //const auth = username + \":\" + password;\n //this.setHeader(\"authorization\", \"Basic \" + base64Encode(toUtf8Bytes(auth)))\n //this.setHeader(\"authorization\", \"Basic TODO:\" + auth);\n }\n // Configure the request to allow gzipped responses\n get allowGzip() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\");\n }\n set allowGzip(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\", !!value);\n }\n // Allow credentials to be sent over an insecure (non-HTTPS) channel\n get allowInsecureAuthentication() {\n return !!getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\");\n }\n set allowInsecureAuthentication(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\", check(value, \"boolean\", \"allowInsecureAuthentication\"));\n }\n // Timeout (seconds)\n get timeout() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\"); }\n set timeout(timeout) {\n timeout = check(timeout, \"number\", \"timeout\");\n if (timeout <= 0) {\n throw new Error(\"invalid timerout\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\", timeout);\n }\n redirect(location) {\n // Redirection; for now we only support absolute locataions\n const current = this.url.split(\":\")[0].toLowerCase();\n const target = location.split(\":\")[0].toLowerCase();\n if (this.method !== \"GET\" || (current === \"https\" && target === \"http\") ||\n !location.match(/^https?:/)) {\n return logger.throwError(`unsupported redirect`, \"UNSUPPORTED_OPERATION\", {\n operation: `redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(location)})`\n });\n }\n // Create a copy of this request, with a new URL\n const req = new FetchRequest(location);\n req.method = \"GET\";\n req.allowGzip = this.allowGzip;\n req.timeout = this.timeout;\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"body\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\"));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Do not forward credentials unless on the same domain; only absolute\n //req.allowInsecure = false;\n // paths are currently supported; may want a way to specify to forward?\n //setStore(req.#props, \"creds\", getStore(this.#pros, \"creds\"));\n return req;\n }\n clone() {\n const clone = new FetchRequest(this.url);\n // Preserve \"default method\" (i.e. null)\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"method\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\"));\n // Preserve \"default body\" with type, copying the Uint8Array is present\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"body\", (body == null) ? undefined : new Uint8Array(body));\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Preserve \"default headers\"\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n // Credentials is readonly, so we copy internally\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"creds\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\"));\n if (this.allowGzip) {\n clone.allowGzip = true;\n }\n clone.timeout = this.timeout;\n if (this.allowInsecureAuthentication) {\n clone.allowInsecureAuthentication = true;\n }\n return clone;\n }\n freeze() {\n // Copy the body so any changes to previous access do not modify it\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body != null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", new Uint8Array(body));\n }\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\").headers);\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n }\n}\n//# sourceMappingURL=request.js.map","import { decodeBase64 } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { getUrl } from \"./get-url.js\"; /*-browser*/\nimport { logger } from \"./logger.js\";\nimport { FetchRequest } from \"./request.js\";\nimport { FetchResponse } from \"./response.js\";\nasync function delay(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\n// @TODO: Add option for global preflightRequest?\nfunction getTime() { return (new Date()).getTime(); }\nfunction unpercent(value) {\n value = value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n });\n return toUtf8Bytes(value);\n}\nlet lockGateways = false;\nlet ipfsGateway = \"https:/\\/gateway.ipfs.io/\";\nlet arGateway = \"https:/\\/gateway.ar.io/\";\nexport async function fetchData(connection) {\n const conn = (typeof (connection) === \"string\") ? {\n request: new FetchRequest(connection)\n } : (connection instanceof FetchRequest) ? {\n request: connection\n } : Object.assign({}, connection);\n if (conn.request == null) {\n return logger.throwArgumentError(\"missing request\", \"connection\", connection);\n }\n let req = conn.request.clone().freeze();\n switch (conn.request.url.split(\":\")[0]) {\n case \"data\": {\n const match = req.url.match(/^data:([^;:]*)?(;base64)?,(.*)$/i);\n if (match) {\n try {\n const headers = {\n \"content-type\": (match[1] ? match[1] : \"text/plain\")\n };\n const body = (match[2] ? decodeBase64(match[3]) : unpercent(match[3]));\n return new FetchResponse(200, \"OK\", headers, body, req.clone());\n }\n catch (error) {\n return new FetchResponse(400, \"BAD REQUEST (invalid base64 encoded data)\", {}, null, req.clone());\n }\n }\n return new FetchResponse(500, \"INTERNAL SERVER ERROR (unsupported dara URI)\", {}, null, req.clone());\n }\n case \"ipfs\":\n case \"ipns\":\n case \"ar\":\n throw new Error(\"not implemented yet\");\n console.log(\"FF\", arGateway, ipfsGateway);\n case \"http\":\n case \"https\":\n break;\n default:\n throw new Error(\"unsupported scheme\");\n }\n const attempts = (conn.throttleLimit != null) ? conn.throttleLimit : 12;\n if (!Number.isInteger(attempts) || attempts < 1) {\n return logger.throwArgumentError(\"invalid throttleLimit\", \"connection\", connection);\n }\n const slotInterval = (conn.throttleSlotInterval != null) ? conn.throttleSlotInterval : 100;\n //logger.assertInteger(slotInterval, \"connection.throttleSlotInterval\", connection.throttleSlotInterval);\n if (!Number.isInteger(slotInterval) || attempts < 0) {\n return logger.throwArgumentError(\"invalid throttleSlotInterval\", \"connection\", connection);\n }\n const retryFunc = (conn.throttleRetry != null) ? conn.throttleRetry : null;\n if (retryFunc && typeof (retryFunc) !== \"function\") {\n return logger.throwArgumentError(\"invalid throttleRetry callback\", \"connection\", connection);\n }\n const preflightRequest = conn.preflightRequest || null;\n if (preflightRequest && typeof (preflightRequest) !== \"function\") {\n return logger.throwArgumentError(\"invalid preflightRequest callback\", \"connection\", connection);\n }\n const processResponse = conn.processResponse || null;\n if (processResponse && typeof (processResponse) !== \"function\") {\n return logger.throwArgumentError(\"invalid processResponse callback\", \"connection\", connection);\n }\n // Start time of this fetch (for timeouts)\n const t0 = getTime();\n let response = null;\n for (let a = 0; a < attempts; a++) {\n let request = req.clone();\n if (preflightRequest) {\n request = (await preflightRequest(request.freeze())).clone();\n }\n const remainingTime = getTime() - t0;\n if (remainingTime < 0) {\n return logger.throwError(\"timeout\", \"TIMEOUT\", { operation: \"request\", reason: \"timeout\", request });\n }\n response = await getUrl(request, remainingTime);\n // Retry logic (server forced)\n if (a < attempts) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Try following the redirect; the request will through if the\n // type of redirect is not supported\n try {\n req = request.redirect(response.headers.location || \"\");\n continue;\n }\n catch (error) { }\n ;\n // Things won't get any better on another attempt; abort\n return response;\n }\n else if (response.statusCode === 429) {\n if (retryFunc == null || (await retryFunc(request.freeze(), response, a))) {\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof (retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n await delay(parseInt(retryAfter));\n }\n else {\n await delay(slotInterval * Math.trunc(Math.random() * Math.pow(2, a)));\n }\n continue;\n }\n }\n }\n // Optional post-processing response; also allows trapping\n // HTTP status errors and doing \"something different\",\n // including any further throttling.\n if (processResponse) {\n try {\n return await processResponse(request, response);\n }\n catch (error) {\n // response.throwThrottleError\n if (error.throttle && typeof (error.stall) === \"number\") {\n if (a < attempts) {\n await delay(error.stall);\n continue;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\", error);\n }\n // Something went wrong during processing; throw a 5xx server error\n response.makeServerError(\"error in post-processing function\", error).assertOk();\n }\n }\n return response;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\");\n}\nfetchData.lock = function () {\n lockGateways = true;\n};\n// @TODO: Allow a master Gateway function\nfetchData.setGateway = function (gateway) {\n};\nfetchData.setIpfsGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setIpfsGateway\"\n });\n }\n ipfsGateway = gateway;\n};\nfetchData.setArGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setArGateway\"\n });\n }\n arGateway = gateway;\n};\n//# sourceMappingURL=fetch-data.js.map","export const version = \"@ethersproject/providers@6.0.0-beta.5\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _a, _EnsResolver_supports2544, _EnsResolver_getResolver;\nimport { concat, dataSlice, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { encodeBase58, toArray, toNumber } from \"@ethersproject/math\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData } from \"@ethersproject/web\";\nimport { logger } from \"./logger.js\";\nconst BN_1 = BigInt(1);\nconst Empty = new Uint8Array([]);\nconst HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n const offset = toNumber(dataSlice(result, start, start + 32));\n const length = toNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n}\nfunction parseString(result, start) {\n try {\n const bytes = parseBytes(result, start);\n if (bytes != null) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(Empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\n// @TODO: This should use the fetch-data:ipfs gateway\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link) {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n }\n else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n }\n else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n return `https:/\\/gateway.ipfs.io/ipfs/${link}`;\n}\n;\n;\nexport class MulticoinProviderPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n validate(proivder) {\n return this;\n }\n supportsCoinType(coinType) {\n return false;\n }\n async encodeAddress(coinType, address) {\n throw new Error(\"unsupported coin\");\n }\n async decodeAddress(coinType, data) {\n throw new Error(\"unsupported coin\");\n }\n}\nconst BasicMulticoinPluginId = \"org.ethers.provider-prugins.basicmulticoin\";\nexport class BasicMulticoinProviderPlugin extends MulticoinProviderPlugin {\n constructor() {\n super(BasicMulticoinPluginId);\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];\nexport class EnsResolver {\n constructor(provider, address, name) {\n // For EIP-2544 names, the ancestor that provided the resolver\n _EnsResolver_supports2544.set(this, void 0);\n defineProperties(this, { provider, address, name });\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n }\n async supportsWildcard() {\n if (!__classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\")) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n __classPrivateFieldSet(this, _EnsResolver_supports2544, this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return (logger.getBigInt(result) === BN_1);\n }).catch((error) => {\n if (error.code === \"CALL_EXCEPTION\") {\n return false;\n }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n throw error;\n }), \"f\");\n }\n return await __classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\");\n }\n async _fetch(selector, parameters = \"0x\") {\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const addrData = concat([selector, namehash(this.name), parameters]);\n const tx = {\n to: this.address,\n enableCcipRead: true,\n data: addrData\n };\n // Wildcard support; use EIP-2544 to resolve the request\n let wrapped = false;\n if (await this.supportsWildcard()) {\n wrapped = true;\n // selector(\"resolve(bytes,bytes)\")\n tx.data = concat([\"0x9061b923\", encodeBytes([dnsEncode(this.name), addrData])]);\n }\n try {\n let data = await this.provider.call(tx);\n if ((logger.getBytes(data).length % 32) === 4) {\n return logger.throwError(\"resolver threw error\", \"CALL_EXCEPTION\", {\n transaction: tx, data\n });\n }\n if (wrapped) {\n return parseBytes(data, 0);\n }\n return data;\n }\n catch (error) {\n if (error.code !== \"CALL_EXCEPTION\") {\n throw error;\n }\n }\n return null;\n }\n async getAddress(coinType = 60) {\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n // No address\n if (result === \"0x\" || result === HashZero) {\n return null;\n }\n const network = await this.provider.getNetwork();\n return network.formatter.callAddress(result);\n }\n catch (error) {\n if (error.code === \"CALL_EXCEPTION\") {\n return null;\n }\n throw error;\n }\n }\n let coinPlugin = null;\n for (const plugin of this.provider.plugins) {\n if (!(plugin instanceof MulticoinProviderPlugin)) {\n continue;\n }\n if (plugin.supportsCoinType(coinType)) {\n coinPlugin = plugin;\n break;\n }\n }\n if (coinPlugin == null) {\n return null;\n }\n // keccak256(\"addr(bytes32,uint256\")\n const data = parseBytes((await this._fetch(\"0xf1cb7e06\", numPad(coinType))) || \"0x\", 0);\n // No address\n if (data == null || data === \"0x\") {\n return null;\n }\n // Compute the address\n const address = await coinPlugin.encodeAddress(coinType, data);\n if (address != null) {\n return address;\n }\n return logger.throwError(`invalid coin data`, \"UNSUPPORTED_OPERATION\", {\n operation: `getAddress(${coinType})`,\n info: { coinType, data }\n });\n }\n async getText(key) {\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\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 const calldata = logger.getBytes(concat([numPad(64), numPad(keyBytes.length), keyBytes]));\n const hexBytes = parseBytes((await this._fetch(\"0x59d1d43c\", bytesPad(calldata))) || \"0x\", 0);\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n return toUtf8String(hexBytes);\n }\n async getContentHash() {\n // keccak256(\"contenthash()\")\n const hexBytes = parseBytes((await this._fetch(\"0xbc1c58d1\")) || \"0x\", 0);\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n // IPFS (CID: 1, Type: 70=DAG-PB, 72=libp2p-key)\n const ipfs = hexBytes.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const scheme = (ipfs[1] === \"e3010170\") ? \"ipfs\" : \"ipns\";\n const length = parseInt(ipfs[4], 16);\n if (ipfs[5].length === length * 2) {\n return `${scheme}:/\\/${encodeBase58(\"0x\" + ipfs[2])}`;\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 && swarm[1].length === 64) {\n return `bzz:/\\/${swarm[1]}`;\n }\n return logger.throwError(`invalid or unsupported content hash data`, \"UNSUPPORTED_OPERATION\", {\n operation: \"getContentHash()\",\n info: { data: hexBytes }\n });\n }\n async getAvatar() {\n return (await this._getAvatar()).url;\n }\n async _getAvatar() {\n const linkage = [{ type: \"name\", value: 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) {\n linkage.push({ type: \"!avatar\", value: \"\" });\n throw new Error(\"!avatar\");\n }\n linkage.push({ type: \"avatar\", value: avatar });\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) {\n continue;\n }\n const scheme = match[1].toLowerCase();\n switch (scheme) {\n case \"https\":\n case \"data\":\n linkage.push({ type: \"url\", value: avatar });\n return { linkage, url: avatar };\n case \"ipfs\": {\n const url = getIpfsLink(avatar);\n linkage.push({ type: \"ipfs\", value: avatar });\n linkage.push({ type: \"url\", value: url });\n return { linkage, url };\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, value: avatar });\n // The owner of this name\n const owner = await this.getAddress();\n if (owner == null) {\n linkage.push({ type: \"!owner\", value: \"\" });\n throw new Error(\"!owner\");\n }\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) {\n linkage.push({ type: `!${scheme}caip`, value: (match[2] || \"\") });\n throw new Error(\"!caip\");\n }\n const formatter = (await this.provider.getNetwork()).formatter;\n const addr = formatter.address(comps[0]);\n const tokenId = numPad(comps[1]);\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = formatter.callAddress(await this.provider.call({\n to: addr, data: concat([\"0x6352211e\", tokenId])\n }));\n if (owner !== tokenOwner) {\n linkage.push({ type: \"!owner\", value: tokenOwner });\n throw new Error(\"!owner\");\n }\n linkage.push({ type: \"owner\", value: tokenOwner });\n }\n else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = logger.getBigInt(await this.provider.call({\n to: addr, data: concat([\"0x00fdd58e\", zeroPadValue(owner, 32), tokenId])\n }));\n if (!balance) {\n linkage.push({ type: \"!balance\", value: \"0\" });\n throw new Error(\"!balance\");\n }\n linkage.push({ type: \"balance\", value: balance.toString() });\n }\n // Call the token contract for the metadata URL\n const tx = {\n to: comps[0],\n data: concat([selector, tokenId])\n };\n let metadataUrl = parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) {\n linkage.push({ type: \"!metadata-url\", value: \"\" });\n throw new Error(\"!metadata-url\");\n }\n linkage.push({ type: \"metadata-url-base\", value: metadataUrl });\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", hexlify(tokenId).substring(2));\n linkage.push({ type: \"metadata-url-expanded\", value: metadataUrl });\n }\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n linkage.push({ type: \"metadata-url\", value: metadataUrl });\n // Get the token metadata\n let metadata = {};\n const response = await fetchData(metadataUrl);\n response.assertOk();\n try {\n metadata = response.bodyJson;\n }\n catch (error) {\n try {\n linkage.push({ type: \"!metadata\", value: response.bodyText });\n }\n catch (error) {\n const bytes = response.body;\n if (bytes) {\n linkage.push({ type: \"!metadata\", value: hexlify(bytes) });\n }\n throw error;\n }\n throw error;\n }\n if (!metadata) {\n linkage.push({ type: \"!metadata\", value: \"\" });\n throw new Error(\"!metadata\");\n }\n linkage.push({ type: \"metadata\", value: JSON.stringify(metadata) });\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof (imageUrl) !== \"string\") {\n linkage.push({ type: \"!imageUrl\", value: \"\" });\n throw new Error(\"!imageUrl\");\n }\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n }\n else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) {\n linkage.push({ type: \"!imageUrl-ipfs\", value: imageUrl });\n throw new Error(\"!imageUrl-ipfs\");\n }\n linkage.push({ type: \"imageUrl-ipfs\", value: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n linkage.push({ type: \"url\", value: imageUrl });\n return { linkage, url: imageUrl };\n }\n }\n }\n }\n catch (error) {\n console.log(\"EE\", error);\n }\n return { linkage, url: null };\n }\n static async fromName(provider, name) {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") {\n return null;\n }\n // Optimization since the eth node cannot change and does\n // not have a wildcar resolver\n if (name !== \"eth\" && currentName === \"eth\") {\n return null;\n }\n // Check the current node for a resolver\n const addr = await __classPrivateFieldGet(EnsResolver, _a, \"m\", _EnsResolver_getResolver).call(EnsResolver, provider, currentName);\n // Found a resolver!\n if (addr != null) {\n const resolver = new EnsResolver(provider, addr, name);\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) {\n return null;\n }\n return resolver;\n }\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n }\n}\n_a = EnsResolver, _EnsResolver_supports2544 = new WeakMap(), _EnsResolver_getResolver = async function _EnsResolver_getResolver(provider, name) {\n const network = await provider.getNetwork();\n const ensPlugin = network.getPlugin(\"org.ethers.plugins.ens\");\n // No ENS...\n if (!ensPlugin) {\n return logger.throwError(\"network does not support ENS\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getResolver\", info: { network: network.name }\n });\n }\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await provider.call({\n to: ensPlugin.address,\n data: concat([\"0x0178b8bf\", namehash(name)]),\n enableCcipRead: true\n });\n const addr = network.formatter.callAddress(addrData);\n if (addr === dataSlice(HashZero, 0, 20)) {\n return null;\n }\n return addr;\n }\n catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32),\n // so probably a link error\n throw error;\n }\n return null;\n};\n//# sourceMappingURL=ens-resolver.js.map","export const version = \"@ethersproject/signing-key@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Signature_props;\nimport { concat, dataLength, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n// Constants\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst _guard = {};\nconst Zero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nexport class Signature {\n constructor(guard, r, s, v) {\n _Signature_props.set(this, void 0);\n logger.assertPrivate(guard, _guard, \"Signature\");\n __classPrivateFieldSet(this, _Signature_props, { r, s, v, networkV: null }, \"f\");\n }\n get r() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\"); }\n set r(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\", hexlify(value));\n }\n get s() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\"); }\n set s(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n else if (logger.getBytes(value)[0] & 0x80) {\n logger.throwArgumentError(\"non-canonical s\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\", hexlify(value));\n }\n get v() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\"); }\n set v(value) {\n const v = logger.getNumber(value, \"value\");\n if (v !== 27 && v !== 28) {\n throw new Error(\"@TODO\");\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\", v);\n }\n get networkV() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"networkV\"); }\n get legacyChainId() {\n const v = this.networkV;\n if (v == null) {\n return null;\n }\n return Signature.getChainId(v);\n }\n get yParity() {\n if (this.v === 27) {\n return 0;\n }\n return 1;\n /*\n // When v is 0 or 1 it is the recid directly\n if (this.v.isZero()) { return 0; }\n if (this.v.eq(1)) { return 1; }\n\n // Otherwise, odd (e.g. 27) is 0 and even (e.g. 28) is 1\n return this.v.and(1).isZero() ? 1: 0;\n */\n }\n get yParityAndS() {\n // The EIP-2098 compact representation\n const yParityAndS = logger.getBytes(this.s);\n if (this.yParity) {\n yParityAndS[0] |= 0x80;\n }\n return hexlify(yParityAndS);\n }\n get compactSerialized() {\n return concat([this.r, this.yParityAndS]);\n }\n get serialized() {\n return concat([this.r, this.s, (this.yParity ? \"0x1c\" : \"0x1b\")]);\n }\n [(_Signature_props = new WeakMap(), Symbol.for('nodejs.util.inspect.custom'))]() {\n return `Signature { r: \"${this.r}\", s: \"${this.s}\", yParity: ${this.yParity}, networkV: ${this.networkV} }`;\n }\n clone() {\n const clone = new Signature(_guard, this.r, this.s, this.v);\n if (this.networkV) {\n setStore(__classPrivateFieldGet(clone, _Signature_props, \"f\"), \"networkV\", this.networkV);\n }\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n }\n toJSON() {\n const networkV = this.networkV;\n return {\n _type: \"signature\",\n networkV: ((networkV != null) ? networkV.toString() : null),\n r: this.r, s: this.s, v: this.v,\n };\n }\n static create() {\n return new Signature(_guard, Zero, Zero, 27);\n }\n // Get the chain ID from an EIP-155 v\n static getChainId(v) {\n const bv = logger.getBigInt(v, \"v\");\n // The v is not an EIP-155 v, so it is the unspecified chain ID\n if ((bv == BN_27) || (bv == BN_28)) {\n return BN_0;\n }\n // Bad value for an EIP-155 v\n if (bv < BN_35) {\n logger.throwArgumentError(\"invalid EIP-155 v\", \"v\", v);\n }\n return (bv - BN_35) / BN_2;\n }\n // Get the EIP-155 v transformed for a given chainId\n static getChainIdV(chainId, v) {\n return (logger.getBigInt(chainId) * BN_2) + BigInt(35 + v - 27);\n }\n // Convert an EIP-155 v into a normalized v\n static getNormalizedV(v) {\n const bv = logger.getBigInt(v);\n if (bv == BN_0) {\n return 27;\n }\n if (bv == BN_1) {\n return 28;\n }\n // Otherwise, EIP-155 v means odd is 27 and even is 28\n return (bv & BN_1) ? 27 : 28;\n }\n static from(sig) {\n const throwError = (message) => {\n return logger.throwArgumentError(message, \"signature\", sig);\n };\n if (typeof (sig) === \"string\") {\n const bytes = logger.getBytes(sig, \"signature\");\n if (bytes.length === 64) {\n const r = hexlify(bytes.slice(0, 32));\n const s = bytes.slice(32, 64);\n const v = (s[0] & 0x80) ? 28 : 27;\n s[0] &= 0x7f;\n return new Signature(_guard, r, hexlify(s), v);\n }\n if (dataLength(sig) !== 65) {\n const r = hexlify(sig.slice(0, 32));\n const s = bytes.slice(32, 64);\n if (s[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n const v = Signature.getNormalizedV(bytes[64]);\n return new Signature(_guard, r, hexlify(s), v);\n }\n return throwError(\"invlaid raw signature length\");\n }\n if (sig instanceof Signature) {\n return sig.clone();\n }\n // Get r\n const r = sig.r;\n if (r == null) {\n throwError(\"missing r\");\n }\n if (!isHexString(r, 32)) {\n throwError(\"invalid r\");\n }\n // Get s; by any means necessary (we check consistency below)\n const s = (function (s, yParityAndS) {\n if (s != null) {\n if (!isHexString(s, 32)) {\n throwError(\"invalid s\");\n }\n return s;\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n const bytes = logger.getBytes(yParityAndS);\n bytes[0] &= 0x7f;\n return hexlify(bytes);\n }\n return throwError(\"missing s\");\n })(sig.s, sig.yParityAndS);\n if (logger.getBytes(s)[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n // Get v; by any means necessary (we check consistency below)\n const { networkV, v } = (function (_v, yParityAndS, yParity) {\n if (_v != null) {\n const v = logger.getBigInt(_v);\n return {\n networkV: ((v >= BN_35) ? v : undefined),\n v: Signature.getNormalizedV(v)\n };\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n return { v: ((logger.getBytes(yParityAndS)[0] & 0x80) ? 28 : 27) };\n }\n if (yParity != null) {\n switch (yParity) {\n case 0: return { v: 27 };\n case 1: return { v: 28 };\n }\n return throwError(\"invalid yParity\");\n }\n return throwError(\"missing v\");\n })(sig.v, sig.yParityAndS, sig.yParity);\n const result = new Signature(_guard, r, s, v);\n if (networkV) {\n setStore(__classPrivateFieldGet(result, _Signature_props, \"f\"), \"networkV\", networkV);\n }\n // If multiple of v, yParity, yParityAndS we given, check they match\n if (\"yParity\" in sig && sig.yParity !== result.yParity) {\n throwError(\"yParity mismatch\");\n }\n else if (\"yParityAndS\" in sig && sig.yParityAndS !== result.yParityAndS) {\n throwError(\"yParityAndS mismatch\");\n }\n return result;\n }\n}\n//# sourceMappingURL=signature.js.map","/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst POW_2_256 = _2n ** BigInt(256);\nconst CURVE = {\n a: _0n,\n b: BigInt(7),\n P: POW_2_256 - _2n ** BigInt(32) - BigInt(977),\n n: POW_2_256 - BigInt('432420386565659656852420866394968145599'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n};\nexport { CURVE };\nfunction weistrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 ** _2n);\n const B = mod(Y1 ** _2n);\n const C = mod(B ** _2n);\n const D = mod(_2n * (mod((X1 + B) ** _2n) - A - C));\n const E = mod(_3n * A);\n const F = mod(E ** _2n);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H ** _2n);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r ** _2n - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n let n = normalizeScalar(scalar);\n const G = JacobianPoint.BASE;\n const P0 = JacobianPoint.ZERO;\n if (n === _0n)\n return P0;\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.ZERO;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) {\n let pr = precomputes[offset];\n if (window % 2)\n pr = pr.negate();\n f = f.add(pr);\n }\n else {\n let cached = precomputes[offset + Math.abs(wbits) - 1];\n if (wbits < 0)\n cached = cached.negate();\n p = p.add(cached);\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ = invert(this.z)) {\n const { x, y, z } = this;\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weistrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, 33));\n const y = bytesToNumber(bytes.subarray(33, 65));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n return this.fromCompressedHex(bytes);\n }\n if (len === 65 && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n msgHash = ensureBytes(msgHash);\n const h = truncateHash(msgHash);\n const { r, s } = normalizeSignature(signature);\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Cannot recover signature: invalid recovery bit');\n }\n if (h === _0n)\n throw new Error('Cannot recover signature: msgHash cannot be 0');\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(r));\n const { n } = CURVE;\n const rinv = invert(r, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.y & _1n ? '03' : '02';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weistrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nexport class Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = isUint8a(hex);\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = isUint8a(hex);\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n }\n toDERRawBytes(isCompressed = false) {\n return hexToBytes(this.toDERHex(isCompressed));\n }\n toDERHex(isCompressed = false) {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n if (isCompressed)\n return sHex;\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const rLen = numberToHexUnpadded(rHex.length / 2);\n const sLen = numberToHexUnpadded(sHex.length / 2);\n const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nfunction concatBytes(...arrays) {\n if (!arrays.every(isUint8a))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nfunction isUint8a(bytes) {\n return bytes instanceof Uint8Array;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nfunction numTo32bStr(num) {\n if (num > POW_2_256)\n throw new Error('Expected number < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n return hexToBytes(numTo32bStr(num));\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst POW_2_128 = _2n ** BigInt(128);\nfunction splitScalarEndo(k) {\n const { n } = CURVE;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n const { n } = CURVE;\n const byteLength = hash.length;\n const delta = byteLength * 8 - 256;\n let h = bytesToNumber(hash);\n if (delta > 0)\n h = h >> BigInt(delta);\n if (h >= n)\n h -= n;\n return h;\n}\nclass HmacDrbg {\n constructor() {\n this.v = new Uint8Array(32).fill(1);\n this.k = new Uint8Array(32).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n if (typeof utils.hmacSha256Sync !== 'function')\n throw new Error('utils.hmacSha256Sync is undefined, you need to set it');\n const res = utils.hmacSha256Sync(this.k, ...values);\n if (res instanceof Promise)\n throw new Error('To use sync sign(), ensure utils.hmacSha256 is sync');\n return res;\n }\n incr() {\n if (this.counter >= 1000) {\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n }\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n this.v = await this.hmac(this.v);\n return this.v;\n }\n generateSync() {\n this.incr();\n this.v = this.hmacSync(this.v);\n return this.v;\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n const k = bytesToNumber(kBytes);\n if (!isWithinCurveOrder(k))\n return;\n const { n } = CURVE;\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(invert(k, n) * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n const sig = new Signature(r, s);\n const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 64)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (isUint8a(key)) {\n if (key.length !== 32)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isPub(item) {\n const arr = isUint8a(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === 33 || len === 65;\n if (str)\n return len === 66 || len === 130;\n if (item instanceof Point)\n return true;\n return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n const hex = numTo32bStr(num);\n return hexToBytes(hex);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = utils.randomBytes(32);\n const e = ensureBytes(extraEntropy);\n if (e.length !== 32)\n throw new Error('sign: Expected 32 bytes of extra data');\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n let { sig, recovery } = recSig;\n const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n if (canonical && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n await drbg.reseed(seed);\n while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n drbg.reseedSync(seed);\n while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n if (h === _0n)\n return false;\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nasync function taggedHash(tag, ...messages) {\n const tagB = new Uint8Array(tag.split('').map((c) => c.charCodeAt(0)));\n const tagH = await utils.sha256(tagB);\n const h = await utils.sha256(concatBytes(tagH, tagH, ...messages));\n return bytesToNumber(h);\n}\nasync function createChallenge(x, P, message) {\n const rx = numTo32b(x);\n const t = await taggedHash('BIP0340/challenge', rx, P.toRawX(), message);\n return mod(t, CURVE.n);\n}\nfunction hasEvenY(point) {\n return (point.y & _1n) === _0n;\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nasync function schnorrSign(message, privateKey, auxRand = utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n const { n } = CURVE;\n const m = ensureBytes(message);\n const d0 = normalizePrivateKey(privateKey);\n const rand = ensureBytes(auxRand);\n if (rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n const P = Point.fromPrivateKey(d0);\n const d = hasEvenY(P) ? d0 : n - d0;\n const t0h = await taggedHash('BIP0340/aux', rand);\n const t = d ^ t0h;\n const k0h = await taggedHash('BIP0340/nonce', numTo32b(t), P.toRawX(), m);\n const k0 = mod(k0h, n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const R = Point.fromPrivateKey(k0);\n const k = hasEvenY(R) ? k0 : n - k0;\n const e = await createChallenge(R.x, P, m);\n const sig = new SchnorrSignature(R.x, mod(k + e * d, n)).toRawBytes();\n const isValid = await schnorrVerify(sig, m, P.toRawX());\n if (!isValid)\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n let sig;\n try {\n sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n const m = ensureBytes(message);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const e = await createChallenge(r, P, m);\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !hasEvenY(R) || R.x !== r)\n return false;\n return true;\n}\nexport const schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n if (hash.length < 40 || hash.length > 1024)\n throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n const num = mod(bytesToNumber(hash), CURVE.n);\n if (num === _0n || num === _1n)\n throw new Error('Invalid private key');\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => {\n return utils.hashToPrivateKey(utils.randomBytes(40));\n },\n bytesToHex,\n mod,\n sha256: async (message) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', message.buffer);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n return Uint8Array.from(createHash('sha256').update(message).digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n};\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SigningKey_privateKey;\nimport * as secp256k1 from \"@noble/secp256k1\";\nimport { arrayify, concat, dataLength, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac } from \"@ethersproject/crypto\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"./signature.js\";\nimport { logger } from \"./logger.js\";\n// Make noble-secp256k1 sync\nsecp256k1.utils.hmacSha256Sync = function (key, ...messages) {\n return arrayify(computeHmac(\"sha256\", key, concat(messages)));\n};\nexport class SigningKey {\n constructor(privateKey) {\n _SigningKey_privateKey.set(this, void 0);\n logger.assertArgument((dataLength(privateKey) === 32), \"invalid private key length\", \"privateKey\", \"[REDACTED]\");\n __classPrivateFieldSet(this, _SigningKey_privateKey, hexlify(privateKey), \"f\");\n }\n get privateKey() { return __classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"); }\n get publicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")); }\n get compressedPublicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"), true); }\n sign(digest) {\n logger.assertArgument((dataLength(digest) === 32), \"invalid digest length\", \"digest\", digest);\n const [sigDer, recid] = secp256k1.signSync(arrayify(digest), arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), {\n recovered: true,\n canonical: true\n });\n const sig = secp256k1.Signature.fromHex(sigDer);\n return Signature.from({\n r: toHex(\"0x\" + sig.r.toString(16), 32),\n s: toHex(\"0x\" + sig.s.toString(16), 32),\n v: (recid ? 0x1c : 0x1b)\n }).freeze();\n }\n computeShardSecret(other) {\n const pubKey = SigningKey.computePublicKey(other);\n return hexlify(secp256k1.getSharedSecret(arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), pubKey));\n }\n static computePublicKey(key, compressed) {\n let bytes = logger.getBytes(key, \"key\");\n if (bytes.length === 32) {\n const pubKey = secp256k1.getPublicKey(bytes, !!compressed);\n return hexlify(pubKey);\n }\n if (bytes.length === 64) {\n const pub = new Uint8Array(65);\n pub[0] = 0x04;\n pub.set(bytes, 1);\n bytes = pub;\n }\n const point = secp256k1.Point.fromHex(bytes);\n return hexlify(point.toRawBytes(compressed));\n }\n static recoverPublicKey(digest, signature) {\n const sig = Signature.from(signature);\n const der = secp256k1.Signature.fromCompact(arrayify(concat([sig.r, sig.s]))).toDERRawBytes();\n const pubKey = secp256k1.recoverPublicKey(arrayify(digest), der, sig.yParity);\n if (pubKey != null) {\n return hexlify(pubKey);\n }\n return logger.throwArgumentError(\"invalid signautre for digest\", \"signature\", signature);\n }\n static _addPoints(p0, p1, compressed) {\n const pub0 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p0).substring(2));\n const pub1 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p1).substring(2));\n return \"0x\" + pub0.add(pub1).toHex(!!compressed);\n }\n}\n_SigningKey_privateKey = new WeakMap();\n/*\nconst key = new SigningKey(\"0x1234567890123456789012345678901234567890123456789012345678901234\");\nconsole.log(key);\nconsole.log(key.sign(\"0x1234567890123456789012345678901234567890123456789012345678901234\"));\n{\n const privKey = \"0x1234567812345678123456781234567812345678123456781234567812345678\";\n const signingKey = new SigningKey(privKey);\n console.log(\"0\", signingKey, signingKey.publicKey, signingKey.publicKeyCompressed);\n\n let pubKey = SigningKey.computePublicKey(privKey);\n let pubKeyComp = SigningKey.computePublicKey(privKey, true);\n let pubKeyRaw = \"0x\" + SigningKey.computePublicKey(privKey).substring(4);\n console.log(\"A\", pubKey, pubKeyComp);\n\n let a = SigningKey.computePublicKey(pubKey);\n let b = SigningKey.computePublicKey(pubKey, true);\n console.log(\"B\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyComp);\n b = SigningKey.computePublicKey(pubKeyComp, true);\n console.log(\"C\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyRaw);\n b = SigningKey.computePublicKey(pubKeyRaw, true);\n console.log(\"D\", a, b);\n\n const digest = \"0x1122334411223344112233441122334411223344112233441122334411223344\";\n const sig = signingKey.sign(digest);\n console.log(\"SS\", sig, sig.r, sig.s, sig.yParity);\n\n console.log(\"R\", SigningKey.recoverPublicKey(digest, sig));\n}\n*/\n//# sourceMappingURL=signing-key.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { dataLength } from \"@ethersproject/bytes\";\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (dataLength(storageKey) !== 32) {\n //logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }>\n throw new Error(\"\");\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n //logger.throwArgumentError(\"access list expected to be [ address, storageKeys[>\n throw new Error(\"\");\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = 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//# sourceMappingURL=accesslist.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nexport function computeAddress(key) {\n const publicKey = SigningKey.computePublicKey(key, false);\n return getAddress(keccak256(\"0x\" + publicKey.substring(4)).substring(26));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(SigningKey.recoverPublicKey(digest, signature));\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/transaction@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Transaction_props;\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toArray } from \"@ethersproject/math\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { decodeRlp, encodeRlp } from \"@ethersproject/rlp\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"./accesslist.js\";\nimport { recoverAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst BN_MAX_UINT = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleData(value, param) {\n try {\n return hexlify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid data\", param, value);\n }\n}\nfunction handleAccessList(value, param) {\n try {\n return accessListify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid accessList\", param, value);\n }\n}\nfunction handleNumber(_value, param) {\n if (_value === \"0x\") {\n return 0;\n }\n return logger.getNumber(_value, param);\n}\nfunction handleUint(_value, param) {\n if (_value === \"0x\") {\n return BN_0;\n }\n const value = logger.getBigInt(_value, param);\n if (value > BN_MAX_UINT) {\n logger.throwArgumentError(\"value exceeds uint size\", param, value);\n }\n return value;\n}\nfunction formatNumber(_value, name) {\n const value = logger.getBigInt(_value, \"value\");\n const result = toArray(value);\n if (result.length > 32) {\n logger.throwArgumentError(`value too large`, `tx.${name}`, value);\n }\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _parseLegacy(data) {\n const fields = decodeRlp(data);\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 6)) {\n return logger.throwArgumentError(\"invalid field count for legacy transaction\", \"data\", data);\n }\n const tx = {\n type: 0,\n nonce: handleNumber(fields[0], \"nonce\"),\n gasPrice: handleUint(fields[1], \"gasPrice\"),\n gasLimit: handleUint(fields[2], \"gasLimit\"),\n to: handleAddress(fields[3]),\n value: handleUint(fields[4], \"value\"),\n data: handleData(fields[5], \"dta\"),\n chainId: BN_0\n };\n // Legacy unsigned transaction\n if (fields.length === 6) {\n return tx;\n }\n const v = handleUint(fields[6], \"v\");\n const r = handleUint(fields[7], \"r\");\n const s = handleUint(fields[8], \"s\");\n if (r === BN_0 && s === BN_0) {\n // EIP-155 unsigned transaction\n tx.chainId = v;\n }\n else {\n // Compute the EIP-155 chain ID (or 0 for legacy)\n let chainId = (v - BN_35) / BN_2;\n if (chainId < BN_0) {\n chainId = BN_0;\n }\n tx.chainId = chainId;\n // Signed Legacy Transaction\n if (chainId === BN_0 && (v < BN_27 || v > BN_28)) {\n logger.throwArgumentError(\"non-canonical legacy v\", \"v\", fields[6]);\n }\n tx.signature = Signature.from({\n r: zeroPadValue(fields[7], 32),\n s: zeroPadValue(fields[8], 32),\n v\n });\n tx.hash = keccak256(data);\n }\n return tx;\n}\nfunction _serializeLegacy(tx, sig) {\n const fields = [\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n ];\n let chainId = BN_0;\n if (tx.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = logger.getBigInt(tx.chainId, \"tx.chainId\");\n // We have a chainId in the tx and an EIP-155 v in the signature,\n // make sure they agree with each other\n if (sig && sig.networkV != null && sig.legacyChainId !== chainId) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n }\n else if (sig) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n const legacy = sig.legacyChainId;\n if (legacy != null) {\n chainId = legacy;\n }\n }\n // Requesting an unsigned transaction\n if (!sig) {\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== BN_0) {\n fields.push(toArray(chainId));\n fields.push(\"0x\");\n fields.push(\"0x\");\n }\n return encodeRlp(fields);\n }\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = BigInt(27 + sig.yParity);\n if (chainId !== BN_0) {\n v = Signature.getChainIdV(chainId, sig.v);\n }\n else if (BigInt(sig.v) !== v) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n fields.push(toArray(v));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n return encodeRlp(fields);\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n let yParity;\n try {\n yParity = handleNumber(fields[0], \"yParity\");\n if (yParity !== 0 && yParity !== 1) {\n throw new Error(\"bad yParity\");\n }\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid yParity\", \"yParity\", fields[0]);\n }\n const r = zeroPadValue(fields[1], 32);\n const s = zeroPadValue(fields[2], 32);\n const signature = Signature.from({ r, s, yParity });\n tx.signature = signature;\n}\nfunction _parseEip1559(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 12)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 2\", \"data\", hexlify(data));\n }\n const maxPriorityFeePerGas = handleUint(fields[2], \"maxPriorityFeePerGas\");\n const maxFeePerGas = handleUint(fields[3], \"maxFeePerGas\");\n const tx = {\n type: 2,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleUint(fields[4], \"gasLimit\"),\n to: handleAddress(fields[5]),\n value: handleUint(fields[6], \"value\"),\n data: handleData(fields[7], \"data\"),\n accessList: handleAccessList(fields[8], \"accessList\"),\n };\n // Unsigned EIP-1559 Transaction\n if (fields.length === 9) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _serializeEip1559(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(tx.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"yParity\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x02\", encodeRlp(fields)]);\n}\nfunction _parseEip2930(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 8 && fields.length !== 11)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 1\", \"data\", hexlify(data));\n }\n const tx = {\n type: 1,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n gasPrice: handleUint(fields[2], \"gasPrice\"),\n gasLimit: handleUint(fields[3], \"gasLimit\"),\n to: handleAddress(fields[4]),\n value: handleUint(fields[5], \"value\"),\n data: handleData(fields[6], \"data\"),\n accessList: handleAccessList(fields[7], \"accessList\")\n };\n // Unsigned EIP-2930 Transaction\n if (fields.length === 8) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(8), _serializeEip2930);\n return tx;\n}\nfunction _serializeEip2930(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"recoveryParam\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x01\", encodeRlp(fields)]);\n}\nexport class Transaction {\n constructor() {\n _Transaction_props.set(this, void 0);\n __classPrivateFieldSet(this, _Transaction_props, {\n type: null,\n to: null,\n nonce: 0,\n gasLimit: BigInt(0),\n gasPrice: null,\n maxPriorityFeePerGas: null,\n maxFeePerGas: null,\n data: \"0x\",\n value: BigInt(0),\n chainId: BigInt(0),\n sig: null,\n accessList: null\n }, \"f\");\n }\n // A type of null indicates the type will be populated automatically\n get type() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\"); }\n get typeName() {\n switch (this.type) {\n case 0: return \"legacy\";\n case 1: return \"eip-2930\";\n case 2: return \"eip-1559\";\n }\n return null;\n }\n set type(value) {\n switch (value) {\n case null:\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", null);\n break;\n case 0:\n case \"legacy\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 0);\n break;\n case 1:\n case \"berlin\":\n case \"eip-2930\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 1);\n break;\n case 2:\n case \"london\":\n case \"eip-1559\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 2);\n break;\n default:\n throw new Error(`unsupported transaction type`);\n }\n }\n get to() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\"); }\n set to(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\", (value == null) ? null : getAddress(value));\n }\n get nonce() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\"); }\n set nonce(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\", logger.getNumber(value, \"value\")); }\n get gasLimit() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\"); }\n set gasLimit(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\", logger.getBigInt(value)); }\n get gasPrice() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\");\n if (value == null && (this.type === 0 || this.type === 1)) {\n return BN_0;\n }\n return value;\n }\n set gasPrice(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\", (value == null) ? null : logger.getBigInt(value, \"gasPrice\"));\n }\n get maxPriorityFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxPriorityFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxPriorityFeePerGas\"));\n }\n get maxFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxFeePerGas\"));\n }\n get data() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\"); }\n set data(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\", hexlify(value)); }\n get value() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\"); }\n set value(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\", logger.getBigInt(value, \"value\"));\n }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\", logger.getBigInt(value)); }\n get signature() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\") || null; }\n set signature(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\", (value == null) ? null : Signature.from(value));\n }\n get accessList() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\") || null;\n if (value == null && (this.type === 1 || this.type === 2)) {\n return [];\n }\n return value;\n }\n set accessList(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\", (value == null) ? null : accessListify(value));\n }\n get hash() {\n if (this.signature == null) {\n throw new Error(\"cannot hash unsigned transaction; maybe you meant .unsignedHash\");\n }\n return keccak256(this.serialized);\n }\n get unsignedHash() {\n return keccak256(this.unsignedSerialized);\n }\n get from() {\n if (this.signature == null) {\n return null;\n }\n return recoverAddress(this.unsignedSerialized, this.signature);\n }\n get fromPublicKey() {\n if (this.signature == null) {\n return null;\n }\n // use ecrecover\n return \"\";\n }\n isSigned() {\n return this.signature != null;\n }\n get serialized() {\n if (this.signature == null) {\n throw new Error(\"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized\");\n }\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this, this.signature);\n case 1:\n return _serializeEip2930(this, this.signature);\n case 2:\n return _serializeEip1559(this, this.signature);\n }\n throw new Error(\"unsupported type\");\n }\n get unsignedSerialized() {\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this);\n case 1:\n return _serializeEip2930(this);\n case 2:\n return _serializeEip1559(this);\n }\n throw new Error(\"unsupported type\");\n }\n // Validates properties and lists possible types this transaction adheres to\n inferTypes() {\n // Checks that there are no conflicting properties set\n const hasGasPrice = this.gasPrice != null;\n const hasFee = (this.maxFeePerGas != null || this.maxPriorityFeePerGas != null);\n const hasAccessList = (this.accessList != null);\n //if (hasGasPrice && hasFee) {\n // throw new Error(\"transaction cannot have gasPrice and maxFeePerGas\");\n //}\n if (this.maxFeePerGas != null && this.maxPriorityFeePerGas != null) {\n if (this.maxFeePerGas < this.maxPriorityFeePerGas) {\n throw new Error(\"priorityFee cannot be more than maxFee\");\n }\n }\n //if (this.type === 2 && hasGasPrice) {\n // throw new Error(\"eip-1559 transaction cannot have gasPrice\");\n //}\n if ((this.type === 0 || this.type === 1) && hasFee) {\n throw new Error(\"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas\");\n }\n if (this.type === 0 && hasAccessList) {\n throw new Error(\"legacy transaction cannot have accessList\");\n }\n const types = [];\n // Explicit type\n if (this.type != null) {\n types.push(this.type);\n }\n else {\n if (hasFee) {\n types.push(2);\n }\n else if (hasGasPrice) {\n types.push(1);\n if (!hasAccessList) {\n types.push(0);\n }\n }\n else if (hasAccessList) {\n types.push(1);\n types.push(2);\n }\n else {\n types.push(0);\n types.push(1);\n types.push(2);\n }\n }\n types.sort();\n return types;\n }\n isLegacy() { return (this.type === 0); }\n isBerlin() { return (this.type === 1); }\n isLondon() { return (this.type === 2); }\n clone() {\n return Transaction.from(this);\n }\n freeze() {\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").sig = (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig.clone().freeze());\n }\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").accessList = Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList.map((set) => {\n Object.freeze(set.storageKeys);\n return Object.freeze(set);\n }));\n }\n Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n }\n static from(tx) {\n if (typeof (tx) === \"string\") {\n const payload = arrayify(tx);\n if (payload[0] >= 0x7f) { // @TODO: > vs >= ??\n return Transaction.from(_parseLegacy(payload));\n }\n switch (payload[0]) {\n case 1: return Transaction.from(_parseEip2930(payload));\n case 2: return Transaction.from(_parseEip1559(payload));\n }\n throw new Error(\"unsupported transaction type\");\n }\n const result = new Transaction();\n if (tx.type != null) {\n result.type = tx.type;\n }\n if (tx.to != null) {\n result.to = tx.to;\n }\n if (tx.nonce != null) {\n result.nonce = tx.nonce;\n }\n if (tx.gasLimit != null) {\n result.gasLimit = tx.gasLimit;\n }\n if (tx.gasPrice != null) {\n result.gasPrice = tx.gasPrice;\n }\n if (tx.maxPriorityFeePerGas != null) {\n result.maxPriorityFeePerGas = tx.maxPriorityFeePerGas;\n }\n if (tx.maxFeePerGas != null) {\n result.maxFeePerGas = tx.maxFeePerGas;\n }\n if (tx.data != null) {\n result.data = tx.data;\n }\n if (tx.value != null) {\n result.value = tx.value;\n }\n if (tx.chainId != null) {\n result.chainId = tx.chainId;\n }\n if (tx.signature != null) {\n result.signature = Signature.from(tx.signature);\n }\n if (tx.accessList != null) {\n result.accessList = tx.accessList;\n }\n if (tx.hash != null) {\n if (result.isSigned()) {\n if (result.hash !== tx.hash) {\n throw new Error(\"hash mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a hashs\");\n }\n }\n if (tx.from != null) {\n if (result.isSigned()) {\n if (result.from.toLowerCase() !== (tx.from || \"\").toLowerCase()) {\n throw new Error(\"from mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a from\");\n }\n }\n return result;\n }\n}\n_Transaction_props = new WeakMap();\n//# sourceMappingURL=transaction.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Block_transactions, _TransactionReceipt_logs;\n//import { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\n// -----------------------\nfunction getValue(value) {\n if (value == null) {\n return null;\n }\n return value;\n}\nfunction toJson(value) {\n if (value == null) {\n return null;\n }\n return value.toString();\n}\n// @TODO? implements Required\nexport class FeeData {\n constructor(gasPrice, maxFeePerGas, maxPriorityFeePerGas) {\n defineProperties(this, {\n gasPrice: getValue(gasPrice),\n maxFeePerGas: getValue(maxFeePerGas),\n maxPriorityFeePerGas: getValue(maxPriorityFeePerGas)\n });\n }\n toJSON() {\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = this;\n return {\n _type: \"FeeData\",\n gasPrice: toJson(gasPrice),\n maxFeePerGas: toJson(maxFeePerGas),\n maxPriorityFeePerGas: toJson(maxPriorityFeePerGas),\n };\n }\n}\n;\nexport function copyRequest(req) {\n const result = {};\n // These could be addresses, ENS names or Addressables\n if (req.to) {\n result.to = req.to;\n }\n if (req.from) {\n result.from = req.from;\n }\n if (req.data) {\n result.data = hexlify(req.data);\n }\n const bigIntKeys = \"chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value\".split(/,/);\n for (const key in bigIntKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getBigInt(req[key], `request.${key}`);\n }\n const numberKeys = \"type,nonce\".split(/,/);\n for (const key in numberKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getNumber(req[key], `request.${key}`);\n }\n if (req.accessList) {\n result.accessList = accessListify(req.accessList);\n }\n if (\"blockTag\" in req) {\n result.blockTag = req.blockTag;\n }\n if (\"enableCcipRead\" in req) {\n result.enableCcipReadEnabled = !!req.enableCcipRead;\n }\n if (\"customData\" in req) {\n result.customData = req.customData;\n }\n return result;\n}\n;\nexport class Block {\n constructor(block, provider) {\n _Block_transactions.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _Block_transactions, Object.freeze(block.transactions.map((tx) => {\n if (typeof (tx) !== \"string\" && tx.provider !== provider) {\n throw new Error(\"provider mismatch\");\n }\n return tx;\n })), \"f\");\n ;\n defineProperties(this, {\n provider,\n hash: getValue(block.hash),\n number: block.number,\n timestamp: block.timestamp,\n parentHash: block.parentHash,\n nonce: block.nonce,\n difficulty: block.difficulty,\n gasLimit: block.gasLimit,\n gasUsed: block.gasUsed,\n miner: block.miner,\n extraData: block.extraData,\n baseFeePerGas: getValue(block.baseFeePerGas)\n });\n }\n get transactions() { return __classPrivateFieldGet(this, _Block_transactions, \"f\"); }\n //connect(provider: Provider): Block {\n // return new Block(this, provider);\n //}\n toJSON() {\n const { baseFeePerGas, difficulty, extraData, gasLimit, gasUsed, hash, miner, nonce, number, parentHash, timestamp, transactions } = this;\n return {\n _type: \"Block\",\n baseFeePerGas: toJson(baseFeePerGas),\n difficulty: toJson(difficulty),\n extraData,\n gasLimit: toJson(gasLimit),\n gasUsed: toJson(gasUsed),\n hash, miner, nonce, number, parentHash, timestamp,\n transactions,\n };\n }\n [(_Block_transactions = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return {\n value: this.transactions[index++], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get length() { return this.transactions.length; }\n get date() {\n if (this.timestamp == null) {\n return null;\n }\n return new Date(this.timestamp * 1000);\n }\n async getTransaction(index) {\n const tx = this.transactions[index];\n if (tx == null) {\n throw new Error(\"no such tx\");\n }\n if (typeof (tx) === \"string\") {\n return (await this.provider.getTransaction(tx));\n }\n else {\n return tx;\n }\n }\n isMined() { return !!this.hash; }\n isLondon() { return !!this.baseFeePerGas; }\n orphanedEvent() {\n if (!this.isMined()) {\n throw new Error(\"\");\n }\n return createOrphanedBlockFilter(this);\n }\n}\nexport class Log {\n constructor(log, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n const topics = Object.freeze(log.topics.slice());\n defineProperties(this, {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n removed: log.removed,\n address: log.address,\n data: log.data,\n topics,\n index: log.index,\n transactionIndex: log.transactionIndex,\n });\n }\n //connect(provider: Provider): Log {\n // return new Log(this, provider);\n //}\n toJSON() {\n const { address, blockHash, blockNumber, data, index, removed, topics, transactionHash, transactionIndex } = this;\n return {\n _type: \"log\",\n address, blockHash, blockNumber, data, index,\n removed, topics, transactionHash, transactionIndex\n };\n }\n async getBlock() {\n return (await this.provider.getBlock(this.blockHash));\n }\n async getTransaction() {\n return (await this.provider.getTransaction(this.transactionHash));\n }\n async getTransactionReceipt() {\n return (await this.provider.getTransactionReceipt(this.transactionHash));\n }\n removedEvent() {\n return createRemovedLogFilter(this);\n }\n}\nexport class TransactionReceipt {\n constructor(tx, provider) {\n _TransactionReceipt_logs.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _TransactionReceipt_logs, Object.freeze(tx.logs.map((log) => {\n if (provider !== log.provider) {\n //return log.connect(provider);\n throw new Error(\"provider mismatch\");\n }\n return log;\n })), \"f\");\n defineProperties(this, {\n provider,\n to: tx.to,\n from: tx.from,\n contractAddress: tx.contractAddress,\n hash: tx.hash,\n index: tx.index,\n blockHash: tx.blockHash,\n blockNumber: tx.blockNumber,\n logsBloom: tx.logsBloom,\n gasUsed: tx.gasUsed,\n cumulativeGasUsed: tx.cumulativeGasUsed,\n gasPrice: (tx.effectiveGasPrice || tx.gasPrice),\n byzantium: tx.byzantium,\n status: tx.status,\n root: tx.root\n });\n }\n get logs() { return __classPrivateFieldGet(this, _TransactionReceipt_logs, \"f\"); }\n //connect(provider: Provider): TransactionReceipt {\n // return new TransactionReceipt(this, provider);\n //}\n toJSON() {\n const { to, from, contractAddress, hash, index, blockHash, blockNumber, logsBloom, logs, byzantium, status, root } = this;\n return {\n _type: \"TransactionReceipt\",\n blockHash, blockNumber, byzantium, contractAddress,\n cumulativeGasUsed: toJson(this.cumulativeGasUsed),\n from,\n gasPrice: toJson(this.gasPrice),\n gasUsed: toJson(this.gasUsed),\n hash, index, logs, logsBloom, root, status, to\n };\n }\n get length() { return this.logs.length; }\n [(_TransactionReceipt_logs = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return { value: this.logs[index++], done: false };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get fee() {\n return this.gasUsed * this.gasPrice;\n }\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.hash);\n if (tx == null) {\n throw new Error(\"TODO\");\n }\n return tx;\n }\n async confirmations() {\n return (await this.provider.getBlockNumber()) - this.blockNumber + 1;\n }\n removedEvent() {\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transction cannot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"reorderedEvent(other)\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\n;\nexport class TransactionResponse {\n constructor(tx, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n this.blockNumber = (tx.blockNumber != null) ? tx.blockNumber : null;\n this.blockHash = (tx.blockHash != null) ? tx.blockHash : null;\n this.hash = tx.hash;\n this.index = tx.index;\n this.type = tx.type;\n this.from = tx.from;\n this.to = tx.to || null;\n this.gasLimit = tx.gasLimit;\n this.nonce = tx.nonce;\n this.data = tx.data;\n this.value = tx.value;\n this.gasPrice = tx.gasPrice;\n this.maxPriorityFeePerGas = (tx.maxPriorityFeePerGas != null) ? tx.maxPriorityFeePerGas : null;\n this.maxFeePerGas = (tx.maxFeePerGas != null) ? tx.maxFeePerGas : null;\n this.chainId = tx.chainId;\n this.signature = tx.signature;\n this.accessList = (tx.accessList != null) ? tx.accessList : null;\n }\n //connect(provider: Provider): TransactionResponse {\n // return new TransactionResponse(this, provider);\n //}\n toJSON() {\n const { blockNumber, blockHash, index, hash, type, to, from, nonce, data, signature, accessList } = this;\n return {\n _type: \"TransactionReceipt\",\n accessList, blockNumber, blockHash,\n chainId: toJson(this.chainId),\n data, from,\n gasLimit: toJson(this.gasLimit),\n gasPrice: toJson(this.gasPrice),\n hash,\n maxFeePerGas: toJson(this.maxFeePerGas),\n maxPriorityFeePerGas: toJson(this.maxPriorityFeePerGas),\n nonce, signature, to, index, type,\n value: toJson(this.value),\n };\n }\n async getBlock() {\n let blockNumber = this.blockNumber;\n if (blockNumber == null) {\n const tx = await this.getTransaction();\n if (tx) {\n blockNumber = tx.blockNumber;\n }\n }\n if (blockNumber == null) {\n return null;\n }\n const block = this.provider.getBlock(blockNumber);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n return this.provider.getTransaction(this.hash);\n }\n async wait(confirms) {\n return this.provider.waitForTransaction(this.hash, confirms);\n }\n isMined() {\n return (this.blockHash != null);\n }\n isLegacy() {\n return (this.type === 0);\n }\n isBerlin() {\n return (this.type === 1);\n }\n isLondon() {\n return (this.type === 2);\n }\n removedEvent() {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\nfunction createOrphanedBlockFilter(block) {\n return { orphan: \"drop-block\", hash: block.hash, number: block.number };\n}\nfunction createReorderedTransactionFilter(tx, other) {\n return { orphan: \"reorder-transaction\", tx, other };\n}\nfunction createRemovedTransactionFilter(tx) {\n return { orphan: \"drop-transaction\", tx };\n}\nfunction createRemovedLogFilter(log) {\n return { orphan: \"drop-log\", log: {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n address: log.address,\n data: log.data,\n topics: Object.freeze(log.topics.slice()),\n index: log.index\n } };\n}\nfunction fail() {\n throw new Error(\"this provider should not be used\");\n}\nclass DummyProvider {\n get provider() { return this; }\n async getNetwork() { return fail(); }\n async getFeeData() { return fail(); }\n async estimateGas(tx) { return fail(); }\n async call(tx) { return fail(); }\n async resolveName(name) { return fail(); }\n // State\n async getBlockNumber() { return fail(); }\n // Account\n async getBalanceOf(address, blockTag) {\n return fail();\n }\n async getTransactionCountOf(address, blockTag) {\n return fail();\n }\n async getCode(address, blockTag) {\n return fail();\n }\n async getStorageAt(address, position, blockTag) {\n return fail();\n }\n // Write\n async broadcastTransaction(signedTx) { return fail(); }\n // Queries\n async getBlock(blockHashOrBlockTag) {\n return fail();\n }\n async getBlockWithTransactions(blockHashOrBlockTag) {\n return fail();\n }\n async getTransaction(hash) {\n return fail();\n }\n async getTransactionReceipt(hash) {\n return fail();\n }\n // Bloom-filter Queries\n async getLogs(filter) {\n return fail();\n }\n // ENS\n async lookupAddress(address) {\n return fail();\n }\n async waitForTransaction(hash, confirms, timeout) {\n return fail();\n }\n async waitForBlock(blockTag) {\n return fail();\n }\n // EventEmitterable\n async on(event, listener) { return fail(); }\n async once(event, listener) { return fail(); }\n async emit(event, ...args) { return fail(); }\n async listenerCount(event) { return fail(); }\n async listeners(event) { return fail(); }\n async off(event, listener) { return fail(); }\n async removeAllListeners(event) { return fail(); }\n async addListener(event, listener) { return fail(); }\n async removeListener(event, listener) { return fail(); }\n}\n// A singleton provider instance that can be used as a placeholder. This\n// allows API that have a Provider added later to not require a null check.\nexport const dummyProvider = new DummyProvider();\n//# sourceMappingURL=provider.js.map","// Belongs to Networks; requires abstract-provider\n// provider requires abstract-provider and network\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Formatter_format, _Formatter_baseBlock;\n/**\n * Formatter\n *\n * This is responsibile for converting much of the various\n * loose network values into a concrete ethers-ready value.\n *\n * For example, converting addresses to checksum addresses,\n * validating a hash is 32 bytes, and so on.\n *\n * By sub-classing this class and providing it in a custom\n * Network object this allows exotic (non-Ethereum) networks\n * to be fairly simple to adapt to ethers.\n */\nimport { getAddress, getCreateAddress } from \"@ethersproject/address\";\nimport { dataLength, dataSlice, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { Block, Log, TransactionReceipt, TransactionResponse } from \"./provider.js\";\nimport { logger } from \"./logger.js\";\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n//export type AccessListSet = { address: string, storageKeys: Array };\n//export type AccessList = Array;\n//export type AccessListish = AccessList |\n// Array<[ string, Array ]> |\n// Record>;\nfunction stringify(value) {\n if (typeof (value) !== \"string\") {\n throw new Error(\"invalid string\");\n }\n return value;\n}\nexport class Formatter {\n constructor() {\n _Formatter_format.set(this, void 0);\n _Formatter_baseBlock.set(this, void 0);\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 number = this.number.bind(this);\n const uint256 = this.uint256.bind(this);\n const topics = this.arrayOf(hash);\n __classPrivateFieldSet(this, _Formatter_format, {\n address,\n bigNumber,\n blockTag,\n data,\n hash,\n number,\n uint256,\n topics,\n filter: this.object({\n fromBlock: this.allowNull(blockTag, undefined),\n toBlock: this.allowNull(blockTag, undefined),\n blockHash: this.allowNull(hash, undefined),\n address: this.allowNull(address, undefined),\n topics: this.allowNull(topics, undefined)\n }),\n transactionRequest: this.object({\n from: this.allowNull(address),\n type: this.allowNull(number),\n to: this.allowNull(address),\n nonce: this.allowNull(number),\n gasLimit: this.allowNull(uint256),\n gasPrice: this.allowNull(uint256),\n maxFeePerGas: this.allowNull(uint256),\n maxPriorityFeePerGas: this.allowNull(uint256),\n data: this.allowNull(data),\n value: this.allowNull(uint256),\n }),\n transactionResponse: this.object({\n hash: hash,\n index: number,\n type: this.allowNull(number, 0),\n // These can be null for pending blocks\n blockHash: this.allowNull(hash),\n blockNumber: this.allowNull(number),\n // For Legacy transactions, this comes from the v\n chainId: this.allowNull(number),\n from: address,\n to: this.address,\n gasLimit: bigNumber,\n gasPrice: this.allowNull(bigNumber),\n maxFeePerGas: this.allowNull(bigNumber),\n maxPriorityFeePerGas: this.allowNull(bigNumber),\n value: bigNumber,\n data: data,\n nonce: number,\n r: hash,\n s: hash,\n v: number,\n accessList: this.allowNull(this.accessList)\n }, {\n index: [\"transactionIndex\"]\n }),\n }, \"f\");\n __classPrivateFieldSet(this, _Formatter_baseBlock, this.object({\n number: number,\n hash: this.allowNull(hash, null),\n timestamp: number,\n parentHash: hash,\n nonce: this.allowNull(stringify, \"0x0000000000000000\"),\n difficulty: bigNumber,\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n miner: this.allowNull(address, \"0x0000000000000000000000000000000000000000\"),\n extraData: stringify,\n baseFeePerGas: this.allowNull(bigNumber),\n }), \"f\");\n }\n // An address\n address(value) {\n return getAddress(value);\n }\n // An address from a call result; may be zero-padded\n callAddress(value) {\n if (dataLength(value) !== 32 || dataSlice(value, 0, 12) !== \"0x000000000000000000000000\") {\n logger.throwArgumentError(\"invalid call address\", \"value\", value);\n }\n return this.address(dataSlice(value, 12));\n }\n // An address from a transaction (e.g. { from: string, nonce: number })\n contractAddress(value) {\n return getCreateAddress({\n from: this.address(value.from),\n nonce: logger.getNumber(value.nonce, \"value.nonce\")\n });\n }\n // Block Tag\n blockTag(value) {\n if (value == null) {\n return \"latest\";\n }\n switch (value) {\n case \"earliest\":\n return \"0x0\";\n case \"latest\":\n case \"pending\":\n return value;\n }\n if (typeof (value) === \"number\" || (isHexString(value) && dataLength(value) < 32)) {\n return quantity(value);\n }\n return logger.throwArgumentError(\"invalid blockTag\", \"value\", value);\n }\n // Block objects\n block(value, provider) {\n const params = __classPrivateFieldGet(this, _Formatter_baseBlock, \"f\").call(this, value);\n params.transactions = value.transactions.map((t) => this.hash(t));\n return new Block(params, provider);\n }\n blockWithTransactions(value, provider) {\n throw new Error();\n }\n // Transactions\n transactionRequest(value, provider) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionRequest(value);\n }\n transactionResponse(value, provider) {\n value = Object.assign({}, value);\n // @TODO: Use the remap feature\n if (value.data == null && value.input != null) {\n value.data = value.input;\n }\n if (value.gasLimit == null && value.gas) {\n value.gasLimit = value.gas;\n }\n value = __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionResponse(value);\n const sig = Signature.from({ r: value.r, s: value.s, v: value.v });\n value.signature = sig;\n if (value.chainId == null) {\n value.chainId = sig.legacyChainId;\n }\n return new TransactionResponse(value, provider);\n }\n // Receipts\n log(value, provider) {\n const log = this.object({\n address: this.address,\n blockHash: this.hash,\n blockNumber: this.number,\n data: this.data,\n index: this.number,\n removed: this.boolean,\n topics: this.topics,\n transactionHash: this.hash,\n transactionIndex: this.number,\n }, {\n index: [\"logIndex\"]\n })(value);\n return new Log(log, provider);\n }\n receipt(value, provider) {\n const receipt = this.object({\n blockHash: this.hash,\n blockNumber: this.number,\n contractAddress: this.allowNull(this.address),\n cumulativeGasUsed: this.bigNumber,\n from: this.address,\n gasUsed: this.bigNumber,\n logs: this.arrayOf((v) => (this.log(v, provider))),\n logsBloom: this.data,\n root: this.allowNull(this.data),\n status: this.allowNull(this.number),\n to: this.address,\n gasPrice: this.allowNull(this.bigNumber),\n hash: this.hash,\n index: this.number,\n type: this.allowNull(this.number, 0),\n }, {\n hash: [\"transactionHash\"],\n gasPrice: [\"effectiveGasPrice\"],\n index: [\"transactionIndex\"]\n })(value);\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (receipt.root != null) {\n if (receipt.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = parseInt(receipt.root);\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (receipt.status != null && receipt.status !== value) {\n return logger.throwError(\"alt-root-status/status mismatch\", \"BAD_DATA\", {\n value: { root: receipt.root, status: receipt.status }\n });\n }\n receipt.status = value;\n delete receipt.root;\n }\n else {\n return logger.throwError(\"invalid alt-root-status\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n else if (!isHexString(receipt.root, 32)) {\n // Must be a valid bytes32\n return logger.throwError(\"invalid receipt root hash\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n //receipt.byzantium = (receipt.root == null);\n return new TransactionReceipt(receipt, provider);\n }\n // Fitlers\n topics(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").topics(value);\n }\n filter(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").filter(value);\n }\n filterLog(value) {\n console.log(\"ME\", value);\n return null;\n }\n // Converts a serialized transaction to a TransactionResponse\n transaction(value) {\n throw new Error();\n }\n // Useful utility formatters functions, which if need be use the\n // methods within the formatter to ensure internal compatibility\n // Access List; converts an AccessListish to an AccessList\n accessList(value) {\n return accessListify(value);\n }\n // Converts falsish values to a specific value, otherwise use the formatter. Calls preserve `this`.\n allowFalsish(format, ifFalse) {\n return ((value) => {\n if (!value) {\n return ifFalse;\n }\n return format.call(this, value);\n });\n }\n // Allows null, optionally replacing it with a default value. Calls preserve `this`.\n allowNull(format, ifNull) {\n return ((value) => {\n if (value == null) {\n return ifNull;\n }\n return format.call(this, value);\n });\n }\n // Requires an Array satisfying the formatter. Calls preserves `this`.\n arrayOf(format) {\n return ((array) => {\n if (!Array.isArray(array)) {\n throw new Error(\"not an array\");\n }\n return array.map((i) => format.call(this, i));\n });\n }\n // Requires a value which is a value BigNumber\n bigNumber(value) {\n return logger.getBigInt(value, \"value\");\n }\n uint256(value) {\n const result = this.bigNumber(value);\n if (result < 0 || result > BN_MAX_UINT256) {\n logger.throwArgumentError(\"invalid uint256\", \"value\", value);\n }\n return result;\n }\n // Requires a value which is a value boolean or string equivalent\n boolean(value) {\n switch (value) {\n case true:\n case \"true\":\n return true;\n case false:\n case \"false\":\n return false;\n }\n return logger.throwArgumentError(`invalid boolean; ${JSON.stringify(value)}`, \"value\", value);\n }\n // Requires a value which is a valid hexstring. If dataOrLength is true,\n // the length must be even (i.e. a datahexstring) or if it is a number,\n // specifies teh number of bytes value must represent\n _hexstring(dataOrLength) {\n if (dataOrLength == null) {\n dataOrLength = false;\n }\n return (function (value) {\n if (isHexString(value, dataOrLength)) {\n return value.toLowerCase();\n }\n throw new Error(\"bad hexstring\");\n });\n }\n data(value) {\n if (dataLength(value) == null) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return value;\n }\n // Requires a network-native hash\n hash(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").data(value);\n }\n // Requires a valid number, within the IEEE 754 safe range\n number(value) {\n return logger.getNumber(value);\n }\n // Requires an object which matches a fleet of other formatters\n // Any FormatFunc may return `undefined` to have the value omitted\n // from the result object. Calls preserve `this`.\n object(format, altNames) {\n return ((value) => {\n const result = {};\n for (const key in format) {\n let srcKey = key;\n if (altNames && key in altNames && !(srcKey in value)) {\n for (const altKey of altNames[key]) {\n if (altKey in value) {\n srcKey = altKey;\n break;\n }\n }\n }\n try {\n const nv = format[key].call(this, value[srcKey]);\n if (nv !== undefined) {\n result[key] = nv;\n }\n }\n catch (error) {\n const message = (error instanceof Error) ? error.message : \"not-an-error\";\n logger.throwError(`invalid value for value.${key} (${message})`, \"BAD_DATA\", { value });\n }\n }\n return result;\n });\n }\n // Requires a value which matches a network-native storage slot\n storageSlot(value) {\n return toHex(logger.getBigInt(value), 32);\n }\n}\n_Formatter_format = new WeakMap(), _Formatter_baseBlock = new WeakMap();\n//# sourceMappingURL=formatter.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\nconst EnsAddress = \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\";\nexport class NetworkPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n clone() {\n return new NetworkPlugin(this.name);\n }\n validate(network) {\n return this;\n }\n}\nexport class GasCostPlugin extends NetworkPlugin {\n constructor(effectiveBlock = 0, costs) {\n super(`org.ethers.plugins.gas-cost#${(effectiveBlock || 0)}`);\n const props = { effectiveBlock };\n function set(name, nullish) {\n let value = (costs || {})[name];\n if (value == null) {\n value = nullish;\n }\n if (typeof (value) !== \"number\") {\n logger.throwArgumentError(`invalud value for ${name}`, \"costs\", costs);\n }\n props[name] = value;\n }\n set(\"txBase\", 21000);\n set(\"txCreate\", 32000);\n set(\"txDataZero\", 4);\n set(\"txDataNonzero\", 16);\n set(\"txAccessListStorageKey\", 1900);\n set(\"txAccessListAddress\", 2400);\n defineProperties(this, props);\n }\n clone() {\n return new GasCostPlugin(this.effectiveBlock, this);\n }\n}\n// Networks shoudl use this plugin to specify the contract address\n// and network necessary to resolve ENS names.\nexport class EnsPlugin extends NetworkPlugin {\n constructor(address, targetNetwork) {\n super(\"org.ethers.plugins.ens\");\n defineProperties(this, {\n address: (address || EnsAddress),\n targetNetwork: ((targetNetwork == null) ? 1 : targetNetwork)\n });\n }\n clone() {\n return new EnsPlugin(this.address, this.targetNetwork);\n }\n validate(network) {\n network.formatter.address(this.address);\n return this;\n }\n}\nexport class MaxPriorityFeePlugin extends NetworkPlugin {\n constructor(priorityFee) {\n super(\"org.ethers.plugins.max-priority-fee\");\n defineProperties(this, {\n priorityFee: logger.getBigInt(priorityFee)\n });\n }\n async getPriorityFee(provider) {\n return this.priorityFee;\n }\n clone() {\n return new MaxPriorityFeePlugin(this.priorityFee);\n }\n}\n//# sourceMappingURL=plugins-network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Network_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { Formatter } from \"./formatter.js\";\nimport { logger } from \"./logger.js\";\nimport { EnsPlugin, GasCostPlugin } from \"./plugins-network.js\";\n/* * * *\n// Networks which operation against an L2 can use this plugin to\n// specify how to access L1, for the purpose of resolving ENS,\n// for example.\nexport class LayerOneConnectionPlugin extends NetworkPlugin {\n readonly provider!: Provider;\n// @TODO: Rename to ChainAccess and allow for connecting to any chain\n constructor(provider: Provider) {\n super(\"org.ethers.plugins.layer-one-connection\");\n defineProperties(this, { provider });\n }\n\n clone(): LayerOneConnectionPlugin {\n return new LayerOneConnectionPlugin(this.provider);\n }\n}\n*/\n/* * * *\nexport class PriceOraclePlugin extends NetworkPlugin {\n readonly address!: string;\n\n constructor(address: string) {\n super(\"org.ethers.plugins.price-oracle\");\n defineProperties(this, { address });\n }\n\n clone(): PriceOraclePlugin {\n return new PriceOraclePlugin(this.address);\n }\n}\n*/\n// Networks or clients with a higher need for security (such as clients\n// that may automatically make CCIP requests without user interaction)\n// can use this plugin to anonymize requests or intercept CCIP requests\n// to notify and/or receive authorization from the user\n/* * * *\nexport type FetchDataFunc = (req: Frozen) => Promise;\nexport class CcipPreflightPlugin extends NetworkPlugin {\n readonly fetchData!: FetchDataFunc;\n\n constructor(fetchData: FetchDataFunc) {\n super(\"org.ethers.plugins.ccip-preflight\");\n defineProperties(this, { fetchData });\n }\n\n clone(): CcipPreflightPlugin {\n return new CcipPreflightPlugin(this.fetchData);\n }\n}\n*/\nconst Networks = new Map();\nconst defaultFormatter = new Formatter();\nexport class Network {\n constructor(name, _chainId, formatter) {\n _Network_props.set(this, void 0);\n const chainId = logger.getBigInt(_chainId);\n if (formatter == null) {\n formatter = defaultFormatter;\n }\n const plugins = new Map();\n __classPrivateFieldSet(this, _Network_props, { name, chainId, formatter, plugins }, \"f\");\n }\n toJSON() {\n return { name: this.name, chainId: this.chainId };\n }\n get name() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\"); }\n set name(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\", value); }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\", logger.getBigInt(value, \"chainId\")); }\n get formatter() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\"); }\n set formatter(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\", value); }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _Network_props, \"f\").plugins.values());\n }\n attachPlugin(plugin) {\n if (this.isFrozen()) {\n throw new Error(\"frozen\");\n }\n if (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _Network_props, \"f\").plugins.set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(name)) || null;\n }\n // Gets a list of Plugins which match basename, ignoring any fragment\n getPlugins(basename) {\n return (this.plugins.filter((p) => (p.name.split(\"#\")[0] === basename)));\n }\n clone() {\n const clone = new Network(this.name, this.chainId, this.formatter);\n this.plugins.forEach((plugin) => {\n clone.attachPlugin(plugin.clone());\n });\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Network_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Network_props, \"f\"));\n }\n computeIntrinsicGas(tx) {\n const costs = this.getPlugin(\"org.ethers.gas-cost\") || (new GasCostPlugin());\n let gas = costs.txBase;\n if (tx.to == null) {\n gas += costs.txCreate;\n }\n if (tx.data) {\n for (let i = 2; i < tx.data.length; i += 2) {\n if (tx.data.substring(i, i + 2) === \"00\") {\n gas += costs.txDataZero;\n }\n else {\n gas += costs.txDataNonzero;\n }\n }\n }\n if (tx.accessList) {\n const accessList = this.formatter.accessList(tx.accessList);\n for (const addr in accessList) {\n gas += costs.txAccessListAddress + costs.txAccessListStorageKey * accessList[addr].storageKeys.length;\n }\n }\n return gas;\n }\n static from(network) {\n // Default network\n if (network == null) {\n return Network.from(\"homestead\");\n }\n // Canonical name or chain ID\n if (typeof (network) === \"number\") {\n network = BigInt(network);\n }\n if (typeof (network) === \"string\" || typeof (network) === \"bigint\") {\n const networkFunc = Networks.get(network);\n if (networkFunc) {\n return networkFunc();\n }\n if (typeof (network) === \"bigint\") {\n return new Network(\"unknown\", network);\n }\n logger.throwArgumentError(\"unknown network\", \"network\", network);\n }\n // Clonable with network-like abilities\n if (typeof (network.clone) === \"function\") {\n const clone = network.clone();\n //if (typeof(network.name) !== \"string\" || typeof(network.chainId) !== \"number\") {\n //}\n return clone;\n }\n // Networkish\n if (typeof (network) === \"object\") {\n if (typeof (network.name) !== \"string\" || typeof (network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network object name or chainId\", \"network\", network);\n }\n const custom = new Network((network.name), (network.chainId));\n if (network.ensAddress || network.ensNetwork != null) {\n custom.attachPlugin(new EnsPlugin(network.ensAddress, network.ensNetwork));\n }\n //if ((network).layerOneConnection) {\n // custom.attachPlugin(new LayerOneConnectionPlugin((network).layerOneConnection));\n //}\n return custom;\n }\n return logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n static register(nameOrChainId, networkFunc) {\n if (typeof (nameOrChainId) === \"number\") {\n nameOrChainId = BigInt(nameOrChainId);\n }\n const existing = Networks.get(nameOrChainId);\n if (existing) {\n logger.throwArgumentError(`conflicting network for ${JSON.stringify(existing.name)}`, \"nameOrChainId\", nameOrChainId);\n }\n Networks.set(nameOrChainId, networkFunc);\n }\n}\n_Network_props = new WeakMap();\n//# sourceMappingURL=network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PollingBlockSubscriber_instances, _PollingBlockSubscriber_provider, _PollingBlockSubscriber_poller, _PollingBlockSubscriber_interval, _PollingBlockSubscriber_blockNumber, _PollingBlockSubscriber_poll, _OnBlockSubscriber_provider, _OnBlockSubscriber_poll, _PollingOrphanSubscriber_filter, _PollingTransactionSubscriber_hash, _PollingEventSubscriber_instances, _PollingEventSubscriber_provider, _PollingEventSubscriber_filter, _PollingEventSubscriber_poller, _PollingEventSubscriber_blockNumber, _PollingEventSubscriber_poll;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport function getPollingSubscriber(provider, event) {\n if (event === \"block\") {\n return new PollingBlockSubscriber(provider);\n }\n if (isHexString(event, 32)) {\n return new PollingTransactionSubscriber(provider, event);\n }\n return logger.throwError(\"unsupported polling event\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getPollingSubscriber\", info: { event }\n });\n}\n// @TODO: refactor this\nexport class PollingBlockSubscriber {\n constructor(provider) {\n _PollingBlockSubscriber_instances.add(this);\n _PollingBlockSubscriber_provider.set(this, void 0);\n _PollingBlockSubscriber_poller.set(this, void 0);\n _PollingBlockSubscriber_interval.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingBlockSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, 4000, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\"); }\n set pollingInterval(value) { __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, value, \"f\"); }\n start() {\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber already running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).call(this);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n }\n stop() {\n if (!__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber not running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._clearTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\"));\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingBlockSubscriber_provider = new WeakMap(), _PollingBlockSubscriber_poller = new WeakMap(), _PollingBlockSubscriber_interval = new WeakMap(), _PollingBlockSubscriber_blockNumber = new WeakMap(), _PollingBlockSubscriber_instances = new WeakSet(), _PollingBlockSubscriber_poll = async function _PollingBlockSubscriber_poll() {\n const blockNumber = await __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").getBlockNumber();\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n return;\n }\n // @TODO: Put a cap on the maximum number of events per loop?\n if (blockNumber !== __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\")) {\n for (let b = __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") + 1; b <= blockNumber; b++) {\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").emit(\"block\", b);\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n};\nexport class OnBlockSubscriber {\n constructor(provider) {\n _OnBlockSubscriber_provider.set(this, void 0);\n _OnBlockSubscriber_poll.set(this, void 0);\n __classPrivateFieldSet(this, _OnBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _OnBlockSubscriber_poll, (blockNumber) => {\n this._poll(blockNumber, __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\"));\n }, \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"sub-classes must override this\");\n }\n start() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\").call(this, -2);\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n pause(dropWhilePaused) { this.stop(); }\n resume() { this.start(); }\n}\n_OnBlockSubscriber_provider = new WeakMap(), _OnBlockSubscriber_poll = new WeakMap();\nexport class PollingOrphanSubscriber extends OnBlockSubscriber {\n constructor(provider, filter) {\n super(provider);\n _PollingOrphanSubscriber_filter.set(this, void 0);\n __classPrivateFieldSet(this, _PollingOrphanSubscriber_filter, copy(filter), \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"@TODO\");\n console.log(__classPrivateFieldGet(this, _PollingOrphanSubscriber_filter, \"f\"));\n }\n}\n_PollingOrphanSubscriber_filter = new WeakMap();\nexport class PollingTransactionSubscriber extends OnBlockSubscriber {\n constructor(provider, hash) {\n super(provider);\n _PollingTransactionSubscriber_hash.set(this, void 0);\n __classPrivateFieldSet(this, _PollingTransactionSubscriber_hash, hash, \"f\");\n }\n async _poll(blockNumber, provider) {\n const tx = await provider.getTransactionReceipt(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"));\n if (tx) {\n provider.emit(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"), tx);\n }\n }\n}\n_PollingTransactionSubscriber_hash = new WeakMap();\nexport class PollingEventSubscriber {\n constructor(provider, filter) {\n _PollingEventSubscriber_instances.add(this);\n _PollingEventSubscriber_provider.set(this, void 0);\n _PollingEventSubscriber_filter.set(this, void 0);\n _PollingEventSubscriber_poller.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingEventSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingEventSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_filter, copy(filter), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_poller, __classPrivateFieldGet(this, _PollingEventSubscriber_instances, \"m\", _PollingEventSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n start() {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getBlockNumber().then((blockNumber) => {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n });\n }\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingEventSubscriber_provider = new WeakMap(), _PollingEventSubscriber_filter = new WeakMap(), _PollingEventSubscriber_poller = new WeakMap(), _PollingEventSubscriber_blockNumber = new WeakMap(), _PollingEventSubscriber_instances = new WeakSet(), _PollingEventSubscriber_poll = async function _PollingEventSubscriber_poll(blockNumber) {\n // The initial block hasn't been determined yet\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n return;\n }\n const filter = copy(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"));\n filter.fromBlock = __classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") + 1;\n filter.toBlock = blockNumber;\n const logs = await __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getLogs(filter);\n // No logs could just mean the node has not indexed them yet,\n // so we keep a sliding window of 60 blocks to keep scanning\n if (logs.length === 0) {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") < blockNumber - 60) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber - 60, \"f\");\n }\n return;\n }\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n for (const log of logs) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").emit(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"), log);\n }\n};\n//# sourceMappingURL=subscriber-polling.js.map","// @TODO\n// Event coalescence\n// When we register an event with an async value (e.g. address is a Signer\n// or ENS name), we need to add it immeidately for the Event API, but also\n// need time to resolve the address. Upon resolving the address, we need to\n// migrate the listener to the static event. We also need to maintain a map\n// of Signer/ENS name to address so we can sync respond to listenerCount.\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractProvider_instances, _AbstractProvider_subs, _AbstractProvider_plugins, _AbstractProvider_pausedState, _AbstractProvider_networkPromise, _AbstractProvider_anyNetwork, _AbstractProvider_performCache, _AbstractProvider_nextTimer, _AbstractProvider_timers, _AbstractProvider_disableCcipRead, _AbstractProvider_perform, _AbstractProvider_call, _AbstractProvider_getBlock, _AbstractProvider_hasSub, _AbstractProvider_getSub;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { concat, dataLength, dataSlice, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { toArray } from \"@ethersproject/math\";\nimport { defineProperties, EventPayload, resolveProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { EnsResolver } from \"./ens-resolver.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { FeeData } from \"./provider.js\";\nimport { PollingBlockSubscriber, PollingEventSubscriber, PollingOrphanSubscriber, PollingTransactionSubscriber } from \"./subscriber-polling.js\";\n// Constants\nconst BN_2 = BigInt(2);\nconst MAX_CCIP_REDIRECTS = 10;\nfunction getTag(prefix, value) {\n return prefix + \":\" + JSON.stringify(value, (k, v) => {\n if (typeof (v) === \"bigint\") {\n return `bigint:${v.toString()}`;\n }\n if (typeof (v) === \"string\") {\n return v.toLowerCase();\n }\n // Sort object keys\n if (typeof (v) === \"object\" && !Array.isArray(v)) {\n const keys = Object.keys(v);\n keys.sort();\n return keys.reduce((accum, key) => {\n accum[key] = v[key];\n return accum;\n }, {});\n }\n return v;\n });\n}\nexport class UnmanagedSubscriber {\n constructor(name) { defineProperties(this, { name }); }\n start() { }\n stop() { }\n pause(dropWhilePaused) { }\n resume() { }\n}\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\n// Normalize a ProviderEvent into a Subscription\n// @TODO: Make events sync if possible; like block\n//function getSyncSubscription(_event: ProviderEvent): Subscription {\n//}\nasync function getSubscription(_event, provider) {\n if (_event == null) {\n throw new Error(\"invalid event\");\n }\n // Normalize topic array info an EventFilter\n if (Array.isArray(_event)) {\n _event = { topics: _event };\n }\n if (typeof (_event) === \"string\") {\n switch (_event) {\n case \"block\":\n case \"pending\":\n case \"debug\":\n case \"network\": {\n return { type: _event, tag: _event };\n }\n }\n }\n if (isHexString(_event, 32)) {\n const hash = _event.toLowerCase();\n return { type: \"transaction\", tag: getTag(\"tx\", { hash }), hash };\n }\n if (_event.orphan) {\n const event = _event;\n // @TODO: Should lowercase and whatnot things here instead of copy...\n return { type: \"orphan\", tag: getTag(\"orphan\", event), filter: copy(event) };\n }\n if ((_event.address || _event.topics)) {\n const event = _event;\n const filter = {\n topics: ((event.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n }))\n };\n if (event.address) {\n const addresses = [];\n const promises = [];\n const addAddress = (addr) => {\n if (isHexString(addr)) {\n addresses.push(addr);\n }\n else {\n promises.push((async () => {\n addresses.push(await resolveAddress(addr, provider));\n })());\n }\n };\n if (Array.isArray(event.address)) {\n event.address.forEach(addAddress);\n }\n else {\n addAddress(event.address);\n }\n if (promises.length) {\n await Promise.all(promises);\n }\n filter.address = concisify(addresses.map((a) => a.toLowerCase()));\n }\n return { filter, tag: getTag(\"event\", filter), type: \"event\" };\n }\n return logger.throwArgumentError(\"unknown ProviderEvent\", \"event\", _event);\n}\nfunction getTime() { return (new Date()).getTime(); }\nexport function copyRequest(tx) {\n // @TODO: copy the copy from contracts and use it from this\n return tx;\n}\nexport class AbstractProvider {\n // @TODO: This should be a () => Promise so network can be\n // done when needed; or rely entirely on _detectNetwork?\n constructor(_network) {\n _AbstractProvider_instances.add(this);\n _AbstractProvider_subs.set(this, void 0);\n _AbstractProvider_plugins.set(this, void 0);\n // null=unpaused, true=paused+dropWhilePaused, false=paused\n _AbstractProvider_pausedState.set(this, void 0);\n _AbstractProvider_networkPromise.set(this, void 0);\n _AbstractProvider_anyNetwork.set(this, void 0);\n _AbstractProvider_performCache.set(this, void 0);\n _AbstractProvider_nextTimer.set(this, void 0);\n _AbstractProvider_timers.set(this, void 0);\n _AbstractProvider_disableCcipRead.set(this, void 0);\n if (_network === \"any\") {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, true, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n else if (_network) {\n const network = Network.from(_network);\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(network), \"f\");\n setTimeout(() => { this.emit(\"network\", network, null); }, 0);\n }\n else {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n __classPrivateFieldSet(this, _AbstractProvider_performCache, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_plugins, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_nextTimer, 0, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_timers, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, false, \"f\");\n }\n get provider() { return this; }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").values());\n }\n attachPlugin(plugin) {\n if (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(name)) || null;\n }\n set disableCcipRead(value) { __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, !!value, \"f\"); }\n get disableCcipRead() { return __classPrivateFieldGet(this, _AbstractProvider_disableCcipRead, \"f\"); }\n async ccipReadFetch(tx, calldata, urls) {\n if (this.disableCcipRead || urls.length === 0 || tx.to == null) {\n return null;\n }\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n const errorMessages = [];\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\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 //const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n // value.status = response.statusCode;\n // return value;\n //});\n const request = new FetchRequest(href);\n if (url.indexOf(\"{data}\") === -1) {\n request.body = { data, sender };\n }\n let errorMessage = \"unknown error\";\n const resp = await fetchData(request);\n try {\n const result = resp.bodyJson;\n if (result.data) {\n return result.data;\n }\n if (result.message) {\n errorMessage = result.message;\n }\n }\n catch (error) { }\n // 4xx indicates the result is not present; stop\n if (resp.statusCode >= 400 && resp.statusCode < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${errorMessage}`, \"OFFCHAIN_FAULT\", {\n reason: \"404_MISSING_RESOURCE\",\n transaction: tx, info: { url, errorMessage }\n });\n }\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n return logger.throwError(`error encountered during CCIP fetch: ${errorMessages.map((m) => JSON.stringify(m)).join(\", \")}`, \"OFFCHAIN_FAULT\", {\n reason: \"500_SERVER_ERROR\",\n transaction: tx, info: { urls, errorMessages }\n });\n }\n _wrapTransaction(tx, hash, blockNumber) {\n return tx;\n }\n _detectNetwork() {\n return logger.throwError(\"sub-classes must implement this\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_detectNetwork\"\n });\n }\n async _perform(req) {\n return logger.throwError(`unsupported method: ${req.method}`, \"UNSUPPORTED_OPERATION\", {\n operation: req.method,\n info: req\n });\n }\n // State\n async getBlockNumber() {\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getBlockNumber\" }), \"%response\");\n }\n async _getAddress(address) {\n if (typeof (address) === \"string\") {\n return address;\n }\n return await address.getAddress();\n }\n async _getBlockTag(blockTag) {\n const network = await this.getNetwork();\n if (typeof (blockTag) === \"number\" && Number.isSafeInteger(blockTag) && blockTag < 0) {\n //let blockNumber = await this._getApproxBlockNumber(500);\n let blockNumber = await this.getBlockNumber();\n blockNumber += blockTag;\n if (blockNumber < 0) {\n blockNumber = 0;\n }\n return network.formatter.blockTag(blockNumber);\n }\n return network.formatter.blockTag(blockTag);\n }\n async getNetwork() {\n // No explicit network was set and this is our first time\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") == null) {\n // Detect the current network (shared with all calls)\n const detectNetwork = this._detectNetwork().then((network) => {\n this.emit(\"network\", network, null);\n return network;\n }, (error) => {\n // Reset the networkPromise on failure, so we will try again\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === detectNetwork) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n throw error;\n });\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, detectNetwork, \"f\");\n return await detectNetwork;\n }\n const networkPromise = __classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\");\n const [expected, actual] = await Promise.all([\n networkPromise,\n this._detectNetwork() // The actual connected network\n ]);\n if (expected.chainId !== actual.chainId) {\n if (__classPrivateFieldGet(this, _AbstractProvider_anyNetwork, \"f\")) {\n // The \"any\" network can change, so notify listeners\n this.emit(\"network\", actual, expected);\n // Update the network if something else hasn't already changed it\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === networkPromise) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(actual), \"f\");\n }\n }\n else {\n // Otherwise, we do not allow changes to the underlying network\n logger.throwError(`network changed: ${expected.chainId} => ${actual.chainId} `, \"NETWORK_ERROR\", {\n event: \"changed\"\n });\n }\n }\n return expected.clone().freeze();\n }\n async getFeeData() {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: ((async () => {\n try {\n const gasPrice = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getGasPrice\" });\n return logger.getBigInt(gasPrice, \"%response\");\n }\n catch (error) { }\n return null;\n })())\n });\n let maxFeePerGas = null, maxPriorityFeePerGas = null;\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 maxPriorityFeePerGas = BigInt(\"1500000000\");\n // Allow a network to override their maximum priority fee per gas\n const priorityFeePlugin = (await this.getNetwork()).getPlugin(\"org.ethers.plugins.max-priority-fee\");\n if (priorityFeePlugin) {\n maxPriorityFeePerGas = await priorityFeePlugin.getPriorityFee(this);\n }\n maxFeePerGas = (block.baseFeePerGas * BN_2) + maxPriorityFeePerGas;\n }\n return new FeeData(gasPrice, maxFeePerGas, maxPriorityFeePerGas);\n }\n async _getTransaction(_request) {\n const network = await this.getNetwork();\n // Fill in any addresses\n const request = Object.assign({}, _request, await resolveProperties({\n to: (_request.to ? resolveAddress(_request.to, this) : undefined),\n from: (_request.from ? resolveAddress(_request.from, this) : undefined),\n }));\n return network.formatter.transactionRequest(request);\n }\n async estimateGas(_tx) {\n const transaction = await this._getTransaction(_tx);\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"estimateGas\", transaction\n }), \"%response\");\n }\n async call(_tx) {\n const { tx, blockTag } = await resolveProperties({\n tx: this._getTransaction(_tx),\n blockTag: this._getBlockTag(_tx.blockTag)\n });\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, tx, blockTag, _tx.enableCcipRead ? 0 : -1);\n }\n // Account\n async getBalanceOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBalance\", address, blockTag\n }), \"%response\");\n }\n async getTransactionCountOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getTransactionCount\", address, blockTag\n }), \"%response\");\n }\n async getCode(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getCode\", address, blockTag\n }));\n }\n async getStorageAt(_address, _position, _blockTag) {\n const position = logger.getBigInt(_position);\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getStorageAt\", address, position, blockTag\n }));\n }\n // Write\n async broadcastTransaction(signedTx) {\n throw new Error();\n return {};\n }\n // Queries\n async getBlock(block) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, false);\n if (params == null) {\n return null;\n }\n return format.block(params, this);\n }\n async getBlockWithTransactions(block) {\n const format = (await this.getNetwork()).formatter;\n const params = __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, true);\n if (params == null) {\n return null;\n }\n return format.blockWithTransactions(params, this);\n }\n async getTransaction(hash) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n return format.transactionResponse(params, this);\n }\n async getTransactionReceipt(hash) {\n const format = (await this.getNetwork()).formatter;\n const receipt = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransactionReceipt\", hash });\n if (receipt == null) {\n return null;\n }\n // Some backends did not backfill the effectiveGasPrice into old transactions\n // in the receipt, so we look it up manually and inject it.\n if (receipt.gasPrice == null && receipt.effectiveGasPrice == null) {\n const tx = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n receipt.effectiveGasPrice = tx.gasPrice;\n }\n return format.receipt(receipt, this);\n }\n async _getFilter(filter) {\n // Create a canonical representation of the topics\n const topics = (filter.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const blockHash = (\"blockHash\" in filter) ? filter.blockHash : undefined;\n const lookup = {};\n // Addresses could be async (ENS names or Addressables)\n if (filter.address) {\n if (Array.isArray(filter.address)) {\n lookup.address = Promise.all(filter.address.map((a) => resolveAddress(a, this)));\n }\n else {\n lookup.address = resolveAddress(filter.address, this);\n }\n }\n // Block Tags could be async (i.e. relative)\n const addBlockTag = (key) => {\n if (filter[key] == null) {\n return;\n }\n lookup[key] = this._getBlockTag(filter[key]);\n };\n addBlockTag(\"fromBlock\");\n addBlockTag(\"toBlock\");\n // Wait for all properties to resolve\n const result = await resolveProperties(lookup);\n // Make sure things are canonical\n if (Array.isArray(result.address)) {\n result.address.sort();\n }\n result.topics = topics;\n if (blockHash) {\n if (filter.fromBlock || filter.toBlock) {\n throw new Error(\"invalid filter\");\n }\n result.blockHash = blockHash;\n }\n return result;\n }\n // Bloom-filter Queries\n async getLogs(_filter) {\n const { network, filter } = await resolveProperties({\n network: this.getNetwork(),\n filter: this._getFilter(_filter)\n });\n return (await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getLogs\", filter })).map((l) => {\n return network.formatter.log(l, this);\n });\n }\n // ENS\n _getProvider(chainId) {\n return logger.throwError(\"provider cannot connect to target network\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_getProvider()\"\n });\n }\n async getResolver(name) {\n return await EnsResolver.fromName(this, name);\n }\n async getAvatar(name) {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAvatar();\n }\n return null;\n }\n async resolveName(name) {\n if (typeof (name) === \"string\") {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAddress();\n }\n }\n else {\n const address = await name.getAddress();\n if (address == null) {\n return logger.throwArgumentError(\"Addressable returned no address\", \"name\", name);\n }\n return address;\n }\n return null;\n }\n async lookupAddress(address) {\n throw new Error();\n //return \"TODO\";\n }\n async waitForTransaction(hash, confirms = 1, timeout) {\n if (confirms === 0) {\n return this.getTransactionReceipt(hash);\n }\n return new Promise(async (resolve, reject) => {\n let timer = null;\n const listener = (async (blockNumber) => {\n try {\n const receipt = await this.getTransactionReceipt(hash);\n if (receipt != null) {\n if (blockNumber - receipt.blockNumber + 1 >= confirms) {\n resolve(receipt);\n this.off(\"block\", listener);\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n return;\n }\n }\n }\n catch (error) {\n console.log(\"EEE\", error);\n }\n this.once(\"block\", listener);\n });\n if (timeout != null) {\n timer = setTimeout(() => {\n if (timer == null) {\n return;\n }\n timer = null;\n this.off(\"block\", listener);\n reject(logger.makeError(\"timeout\", \"TIMEOUT\", { reason: \"timeout\" }));\n }, timeout);\n }\n listener(await this.getBlockNumber());\n });\n }\n async waitForBlock(blockTag) {\n throw new Error();\n //return new Block({ }, this);\n }\n _clearTimeout(timerId) {\n const timer = __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").get(timerId);\n if (!timer) {\n return;\n }\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n }\n _setTimeout(_func, timeout = 0) {\n var _a, _b;\n const timerId = (__classPrivateFieldSet(this, _AbstractProvider_nextTimer, (_b = __classPrivateFieldGet(this, _AbstractProvider_nextTimer, \"f\"), _a = _b++, _b), \"f\"), _a);\n const func = () => {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n _func();\n };\n if (this.paused) {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer: null, func, time: timeout });\n }\n else {\n const timer = setTimeout(func, timeout);\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer, func, time: getTime() });\n }\n return timerId;\n }\n _forEachSubscriber(func) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n func(sub.subscriber);\n }\n }\n // Event API; sub-classes should override this; any supported\n // event filter will have been munged into an EventFilter\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"debug\":\n case \"network\":\n return new UnmanagedSubscriber(sub.type);\n case \"block\":\n return new PollingBlockSubscriber(this);\n case \"event\":\n return new PollingEventSubscriber(this, sub.filter);\n case \"transaction\":\n return new PollingTransactionSubscriber(this, sub.hash);\n case \"orphan\":\n return new PollingOrphanSubscriber(this, sub.filter);\n }\n throw new Error(`unsupported event: ${sub.type}`);\n }\n _recoverSubscriber(oldSub, newSub) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n if (sub.subscriber === oldSub) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n sub.subscriber = newSub;\n if (sub.started) {\n newSub.start();\n }\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n newSub.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n break;\n }\n }\n }\n async on(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: false });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async once(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: true });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async emit(event, ...args) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event, args);\n if (!sub) {\n return false;\n }\n ;\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const payload = new EventPayload(this, (once ? null : listener), event);\n try {\n listener.call(this, ...args, payload);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n let total = 0;\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n let result = [];\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (!listener || sub.listeners.length === 0) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const { tag, started, subscriber } = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n else {\n for (const [tag, { started, subscriber }] of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\")) {\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return this.off(event, listener);\n }\n // Sub-classes should override this to shutdown any sockets, etc.\n // but MUST call this super.shutdown.\n async shutdown() {\n // Stop all listeners\n this.removeAllListeners();\n // Shut down all tiemrs\n for (const timerId of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").keys()) {\n this._clearTimeout(timerId);\n }\n }\n get paused() { return (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null); }\n pause(dropWhilePaused) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == !!dropWhilePaused) {\n return;\n }\n return logger.throwError(\"cannot change pause type; resume first\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause\"\n });\n }\n this._forEachSubscriber((s) => s.pause(dropWhilePaused));\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, !!dropWhilePaused, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Clear the timer\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n // Remaining time needed for when we become unpaused\n timer.time = getTime() - timer.time;\n }\n }\n resume() {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == null) {\n return;\n }\n this._forEachSubscriber((s) => s.resume());\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Remaining time when we were paused\n let timeout = timer.time;\n if (timeout < 0) {\n timeout = 0;\n }\n // Start time (in cause paused, so we con compute remaininf time)\n timer.time = getTime();\n // Start the timer\n setTimeout(timer.func, timeout);\n }\n }\n}\n_AbstractProvider_subs = new WeakMap(), _AbstractProvider_plugins = new WeakMap(), _AbstractProvider_pausedState = new WeakMap(), _AbstractProvider_networkPromise = new WeakMap(), _AbstractProvider_anyNetwork = new WeakMap(), _AbstractProvider_performCache = new WeakMap(), _AbstractProvider_nextTimer = new WeakMap(), _AbstractProvider_timers = new WeakMap(), _AbstractProvider_disableCcipRead = new WeakMap(), _AbstractProvider_instances = new WeakSet(), _AbstractProvider_perform = \n// Shares multiple identical requests made during the same 250ms\nasync function _AbstractProvider_perform(req) {\n // Create a tag\n const tag = getTag(req.method, req);\n let perform = __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag);\n if (!perform) {\n perform = this._perform(req);\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").set(tag, perform);\n setTimeout(() => {\n if (__classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag) === perform) {\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").delete(tag);\n }\n }, 250);\n }\n return await perform;\n}, _AbstractProvider_call = async function _AbstractProvider_call(tx, blockTag, attempt) {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", \"OFFCHAIN_FAULT\", {\n reason: \"TOO_MANY_REDIRECTS\",\n transaction: Object.assign({}, tx, { blockTag, enableCcipRead: true })\n });\n }\n const transaction = copyRequest(tx);\n try {\n return hexlify(await this._perform({ method: \"call\", transaction, blockTag }));\n }\n catch (error) {\n // CCIP Read OffchainLookup\n if (!this.disableCcipRead && isCallException(error) && attempt >= 0 && blockTag === \"latest\" && transaction.to != null && dataSlice(error.data, 0, 4) === \"0x556f1830\") {\n const data = error.data;\n const txSender = await resolveAddress(transaction.to, this);\n // Parse the CCIP Read Arguments\n let ccipArgs;\n try {\n ccipArgs = parseOffchainLookup(dataSlice(error.data, 4));\n }\n catch (error) {\n return logger.throwError(error.message, \"OFFCHAIN_FAULT\", {\n reason: \"BAD_DATA\",\n transaction, info: { data }\n });\n }\n // Check the sender of the OffchainLookup matches the transaction\n if (ccipArgs.sender.toLowerCase() !== txSender.toLowerCase()) {\n return logger.throwError(\"CCIP Read sender mismatch\", \"CALL_EXCEPTION\", {\n data, transaction,\n errorSignature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n errorName: \"OffchainLookup\",\n errorArgs: ccipArgs.errorArgs\n });\n }\n const ccipResult = await this.ccipReadFetch(transaction, ccipArgs.calldata, ccipArgs.urls);\n if (ccipResult == null) {\n return logger.throwError(\"CCIP Read failed to fetch data\", \"OFFCHAIN_FAULT\", {\n reason: \"FETCH_FAILED\",\n transaction, info: { data: error.data, errorArgs: ccipArgs.errorArgs }\n });\n }\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, {\n to: txSender,\n data: concat([\n ccipArgs.selector, encodeBytes([ccipResult, ccipArgs.extraData])\n ]),\n }, blockTag, attempt + 1);\n }\n throw error;\n }\n}, _AbstractProvider_getBlock = async function _AbstractProvider_getBlock(block, includeTransactions) {\n const format = (await this.getNetwork()).formatter;\n if (isHexString(block, 32)) {\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockHash: block, includeTransactions\n });\n }\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockTag: format.blockTag(block), includeTransactions\n });\n}, _AbstractProvider_hasSub = async function _AbstractProvider_hasSub(event, emitArgs) {\n let sub = await getSubscription(event, this);\n // This is a log that is removing an existing log; we actually want\n // to emit an orphan event for the removed log\n if (sub.type === \"event\" && emitArgs && emitArgs.length > 0 && emitArgs[0].removed === true) {\n sub = await getSubscription({ orphan: \"drop-log\", log: emitArgs[0] }, this);\n }\n return __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(sub.tag) || null;\n}, _AbstractProvider_getSub = async function _AbstractProvider_getSub(event) {\n const subscription = await getSubscription(event, this);\n // Prevent tampering with our tag in any subclass' _getSubscriber\n const tag = subscription.tag;\n let sub = __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(tag);\n if (!sub) {\n const subscriber = this._getSubscriber(subscription);\n const addressableMap = new WeakMap();\n const nameMap = new Map();\n sub = { subscriber, tag, addressableMap, nameMap, started: false, listeners: [] };\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").set(tag, sub);\n }\n return sub;\n};\nfunction _parseString(result, start) {\n try {\n const bytes = _parseBytes(result, start);\n if (bytes) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction _parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n try {\n const offset = logger.getNumber(dataSlice(result, start, start + 32));\n const length = logger.getNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\nconst empty = new Uint8Array([]);\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\nconst zeros = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseOffchainLookup(data) {\n const result = {\n sender: \"\", urls: [], calldata: \"\", selector: \"\", extraData: \"\", errorArgs: []\n };\n if (dataLength(data) < 5 * 32) {\n throw new Error(\"insufficient OffchainLookup data\");\n }\n const sender = dataSlice(data, 0, 32);\n if (dataSlice(sender, 0, 12) !== dataSlice(zeros, 0, 12)) {\n throw new Error(\"corrupt OffchainLookup sender\");\n }\n result.sender = dataSlice(sender, 12);\n // Read the URLs from the response\n try {\n const urls = [];\n const urlsOffset = logger.getNumber(dataSlice(data, 32, 64));\n const urlsLength = logger.getNumber(dataSlice(data, urlsOffset, urlsOffset + 32));\n const urlsData = dataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n throw new Error(\"abort\");\n }\n urls.push(url);\n }\n result.urls = urls;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup urls\");\n }\n // Get the CCIP calldata to forward\n try {\n const calldata = _parseBytes(data, 64);\n if (calldata == null) {\n throw new Error(\"abort\");\n }\n result.calldata = calldata;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup calldata\");\n }\n // Get the callbackSelector (bytes4)\n if (dataSlice(data, 100, 128) !== dataSlice(zeros, 0, 28)) {\n throw new Error(\"corrupt OffchainLookup callbaackSelector\");\n }\n result.selector = dataSlice(data, 96, 100);\n // Get the extra data to send back to the contract as context\n try {\n const extraData = _parseBytes(data, 128);\n if (extraData == null) {\n throw new Error(\"abort\");\n }\n result.extraData = extraData;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup extraData\");\n }\n result.errorArgs = \"sender,urls,calldata,selector,extraData\".split(/,/).map((k) => result[k]);\n return result;\n}\n//# sourceMappingURL=abstract-provider.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AbstractSigner_instances, _AbstractSigner_checkProvider, _AbstractSigner_fromify, _VoidSigner_instances, _VoidSigner_throwUnsupported, _WrappedSigner_signer;\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class AbstractSigner {\n constructor(provider) {\n _AbstractSigner_instances.add(this);\n defineProperties(this, { provider: (provider || null) });\n }\n async getBalance(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getBalance\").getBalanceOf(await this.getAddress(), blockTag);\n }\n async getTransactionCount(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getTransactionCount\").getTransactionCountOf(await this.getAddress(), blockTag);\n }\n async estimateGas(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"estimateGas\").estimateGas(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async call(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"call\").call(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async populateTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"populateTransaction\");\n //let pop: Deferrable = Object.assign({ }, tx);\n let pop = Object.assign({}, tx);\n if (pop.to != null) {\n pop.to = provider.resolveName(pop.to).then((to) => {\n if (to == null) {\n return logger.throwArgumentError(\"transaction to ENS name not configured\", \"tx.to\", pop.to);\n }\n return to;\n });\n }\n if (pop.from != null) {\n const from = pop.from;\n pop.from = Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n return logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n return address;\n });\n }\n if (pop.nonce == null) {\n pop.nonce = this.getTransactionCount();\n }\n pop = resolveProperties(pop);\n if (pop.gasLimit == null) {\n pop.gasLimit = provider.estimateGas(pop);\n }\n pop = resolveProperties(pop);\n //@TODO: Copy logic from AbstractSigner in v5\n return await resolveProperties(pop);\n }\n async resolveName(name) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"resolveName\");\n return await provider.resolveName(name);\n }\n async sendTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"sendTransaction\");\n const txObj = Transaction.from(await this.populateTransaction(tx));\n return await provider.broadcastTransaction(await this.signTransaction(txObj));\n }\n}\n_AbstractSigner_instances = new WeakSet(), _AbstractSigner_checkProvider = function _AbstractSigner_checkProvider(operation) {\n if (this.provider) {\n return this.provider;\n }\n return logger.throwError(\"missing provider\", \"UNSUPPORTED_OPERATION\", { operation });\n}, _AbstractSigner_fromify = async function _AbstractSigner_fromify(tx) {\n tx = Object.assign({}, tx);\n const actions = [];\n if (tx.from != null) {\n const from = tx.from;\n actions.push(Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n tx.from = address;\n }));\n }\n await Promise.all(actions);\n return tx;\n};\nexport class VoidSigner extends AbstractSigner {\n constructor(address, provider) {\n super(provider);\n _VoidSigner_instances.add(this);\n defineProperties(this, { address });\n }\n async getAddress() { return this.address; }\n connect(provider) {\n return new VoidSigner(this.address, provider);\n }\n async signTransaction(tx) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"transactions\", \"signTransaction\");\n }\n async signMessage(message) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"messages\", \"signMessage\");\n }\n async signTypedData(domain, types, value) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"typed-data\", \"signTypedData\");\n }\n}\n_VoidSigner_instances = new WeakSet(), _VoidSigner_throwUnsupported = function _VoidSigner_throwUnsupported(suffix, operation) {\n return logger.throwError(`VoidSigner cannot sign ${suffix}`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n};\nexport class WrappedSigner extends AbstractSigner {\n //get provider(): null | Provider { return this.#signer.provider; }\n constructor(signer) {\n super(signer.provider);\n _WrappedSigner_signer.set(this, void 0);\n __classPrivateFieldSet(this, _WrappedSigner_signer, signer, \"f\");\n }\n async getAddress() {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").getAddress();\n }\n connect(provider) {\n return new WrappedSigner(__classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").connect(provider));\n }\n async signTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTransaction(tx);\n }\n async sendTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").sendTransaction(tx);\n }\n async signMessage(message) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signMessage(message);\n }\n async signTypedData(domain, types, value) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTypedData(domain, types, value);\n }\n}\n_WrappedSigner_signer = new WeakMap();\n//# sourceMappingURL=abstract-signer.js.map","// Show the throttle message only once\nconst shown = new Set();\nexport function showThrottleMessage(service) {\n if (shown.has(service)) {\n return;\n }\n shown.add(service);\n console.log(\"========= NOTICE =========\");\n console.log(`Request-Rate Exceeded for ${service} (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//# sourceMappingURL=community.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FilterIdSubscriber_instances, _FilterIdSubscriber_provider, _FilterIdSubscriber_filterIdPromise, _FilterIdSubscriber_poller, _FilterIdSubscriber_network, _FilterIdSubscriber_poll, _FilterIdSubscriber_teardown, _FilterIdEventSubscriber_event;\nimport { PollingEventSubscriber } from \"./subscriber-polling.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport class FilterIdSubscriber {\n constructor(provider) {\n _FilterIdSubscriber_instances.add(this);\n _FilterIdSubscriber_provider.set(this, void 0);\n _FilterIdSubscriber_filterIdPromise.set(this, void 0);\n _FilterIdSubscriber_poller.set(this, void 0);\n _FilterIdSubscriber_network.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_poller, __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, null, \"f\");\n }\n _subscribe(provider) {\n throw new Error(\"subclasses must override this\");\n }\n _emitResults(provider, result) {\n throw new Error(\"subclasses must override this\");\n }\n _recover(provider) {\n throw new Error(\"subclasses must override this\");\n }\n start() { __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).call(this, -2); }\n stop() {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n if (dropWhilePaused) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n resume() { this.start(); }\n}\n_FilterIdSubscriber_provider = new WeakMap(), _FilterIdSubscriber_filterIdPromise = new WeakMap(), _FilterIdSubscriber_poller = new WeakMap(), _FilterIdSubscriber_network = new WeakMap(), _FilterIdSubscriber_instances = new WeakSet(), _FilterIdSubscriber_poll = async function _FilterIdSubscriber_poll(blockNumber) {\n try {\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\") == null) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, this._subscribe(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")), \"f\");\n }\n const filterId = await __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterId == null) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")._recoverSubscriber(this, this._recover(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")));\n return;\n }\n const network = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").getNetwork();\n if (!__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\")) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, network, \"f\");\n }\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\").chainId !== network.chainId) {\n throw new Error(\"chaid changed\");\n }\n const result = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_getFilterChanges\", [filterId]);\n await this._emitResults(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\"), result);\n }\n catch (error) {\n console.log(\"@TODO\", error);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").once(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n}, _FilterIdSubscriber_teardown = function _FilterIdSubscriber_teardown() {\n const filterIdPromise = __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterIdPromise) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n filterIdPromise.then((filterId) => {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_uninstallFilter\", [filterId]);\n });\n }\n};\nexport class FilterIdEventSubscriber extends FilterIdSubscriber {\n constructor(provider, filter) {\n super(provider);\n _FilterIdEventSubscriber_event.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdEventSubscriber_event, copy(filter), \"f\");\n }\n _recover(provider) {\n return new PollingEventSubscriber(provider, __classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"));\n }\n async _subscribe(provider) {\n const filterId = await provider.send(\"eth_newFilter\", [__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\")]);\n console.log(\"____SUB\", filterId);\n return filterId;\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n const log = network.formatter.log(result, provider);\n provider.emit(__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"), log);\n }\n }\n}\n_FilterIdEventSubscriber_event = new WeakMap();\nexport class FilterIdPendingSubscriber extends FilterIdSubscriber {\n async _subscribe(provider) {\n return await provider.send(\"eth_newPendingTransactionFilter\", []);\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n provider.emit(\"pending\", network.formatter.hash(result));\n }\n }\n}\n//# sourceMappingURL=subscriber-filterid.js.map","// @TODO:\n// - Add the batching API\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _JsonRpcApiProvider_nextId, _JsonRpcApiProvider_options, _JsonRpcProvider_connect, _JsonRpcProvider_pollingInterval;\n// https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/ethereum/eth1.0-apis/assembled-spec/openrpc.json&uiSchema%5BappBar%5D%5Bui:splitView%5D=true&uiSchema%5BappBar%5D%5Bui:input%5D=false&uiSchema%5BappBar%5D%5Bui:examplesDropdown%5D=false\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { TypedDataEncoder } from \"@ethersproject/hash\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { AbstractProvider, UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { FilterIdEventSubscriber, FilterIdPendingSubscriber } from \"./subscriber-filterid.js\";\nimport { logger } from \"./logger.js\";\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nconst Primitive = \"bigint,boolean,function,number,string,symbol\".split(/,/g);\n//const Methods = \"getAddress,then\".split(/,/g);\nfunction deepCopy(value) {\n if (value == null || Primitive.indexOf(typeof (value)) >= 0) {\n return value;\n }\n // Keep any Addressable\n if (typeof (value.getAddress) === \"function\") {\n return value;\n }\n if (Array.isArray(value)) {\n return (value.map(deepCopy));\n }\n if (typeof (value) === \"object\") {\n return Object.keys(value).reduce((accum, key) => {\n accum[key] = value[key];\n return accum;\n }, {});\n }\n throw new Error(`should not happen: ${value} (${typeof (value)})`);\n}\nfunction getLowerCase(value) {\n if (value) {\n return value.toLowerCase();\n }\n return value;\n}\nfunction isPollable(value) {\n return (value && typeof (value.pollingInterval) === \"number\");\n}\nconst defaultOptions = {\n // Default to use filter ID (the FilterIdSubscriber will\n // fallback onto polling if subscription fails)\n polling: false,\n // Maximum batch size (in bytes)\n batchMaxSize: (1 << 20),\n // How long to wait before dispatching a new batch\n batchStallTime: 250,\n};\n// @TODO: Unchecked Signers\nexport class JsonRpcSigner {\n constructor(provider, address) {\n defineProperties(this, { provider, address });\n }\n connect(provider) {\n return logger.throwError(\"cannot reconnect JsonRpcSigner\", \"UNSUPPORTED_OPERATION\", {\n operation: \"signer.connect\"\n });\n }\n async getAddress() {\n return this.address;\n }\n async getNetwork() {\n return await this.provider.getNetwork();\n }\n async getFeeData() {\n return await this.provider.getFeeData();\n }\n async estimateGas(tx) {\n return await this.provider.estimateGas(tx);\n }\n async call(tx) {\n return await this.provider.call(tx);\n }\n async resolveName(name) {\n return await this.provider.resolveName(name);\n }\n async getBalance(blockTag) {\n return await this.provider.getBalanceOf(this.address);\n }\n async getTransactionCount(blockTag) {\n return await this.provider.getTransactionCountOf(this.address);\n }\n // Returns just the hash of the transaction after sent, which is what\n // the bare JSON-RPC API does;\n async sendUncheckedTransaction(_tx) {\n const tx = deepCopy(_tx);\n const promises = [];\n // Make sure the from matches the sender\n if (tx.from) {\n const _from = tx.from;\n promises.push((async () => {\n const from = await resolveAddress(_from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n })());\n }\n else {\n tx.from = this.address;\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 (tx.gasLimit == null) {\n promises.push((async () => {\n tx.gasLimit = await this.provider.estimateGas(Object.assign(Object.assign({}, tx), { from: this.address }));\n })());\n }\n // The address may be an ENS name or Addressable\n if (tx.to != null) {\n const _to = tx.to;\n promises.push((async () => {\n tx.to = await resolveAddress(_to, this.provider);\n })());\n }\n // Wait until all of our properties are filled in\n if (promises.length) {\n await Promise.all(promises);\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return this.provider.send(\"eth_sendTransaction\", [hexTx]);\n }\n async sendTransaction(tx) {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider.getBlockNumber();\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(tx);\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 (new Promise((resolve, reject) => {\n const timeouts = [1000, 100];\n const checkTx = async () => {\n // Try getting the transaction\n const tx = await this.provider.getTransaction(hash);\n if (tx != null) {\n resolve(this.provider._wrapTransaction(tx, hash, blockNumber));\n return;\n }\n // Wait another 4 seconds\n this.provider._setTimeout(() => { checkTx(); }, timeouts.pop() || 4000);\n };\n checkTx();\n }));\n }\n async signTransaction(_tx) {\n const tx = deepCopy(_tx);\n // Make sure the from matches the sender\n if (tx.from) {\n const from = await resolveAddress(tx.from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n return logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n }\n else {\n tx.from = this.address;\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return await this.provider.send(\"eth_sign_Transaction\", [hexTx]);\n }\n async signMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"personal_sign\", [\n hexlify(message), this.address.toLowerCase()\n ]);\n }\n async signTypedData(domain, types, _value) {\n const value = deepCopy(_value);\n // Populate any ENS names (in-place)\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (value) => {\n const address = await resolveAddress(value);\n if (address == null) {\n return logger.throwArgumentError(\"TypedData does not support null address\", \"value\", value);\n }\n return address;\n });\n return await this.provider.send(\"eth_signTypedData_v4\", [\n this.address.toLowerCase(),\n JSON.stringify(TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n }\n async unlock(password) {\n return this.provider.send(\"personal_unlockAccount\", [\n this.address.toLowerCase(), password, null\n ]);\n }\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n async _legacySignMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"eth_sign\", [\n this.address.toLowerCase(), hexlify(message)\n ]);\n }\n}\nexport class JsonRpcApiProvider extends AbstractProvider {\n constructor(network) {\n super(network);\n _JsonRpcApiProvider_nextId.set(this, void 0);\n _JsonRpcApiProvider_options.set(this, void 0);\n __classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, 1, \"f\");\n __classPrivateFieldSet(this, _JsonRpcApiProvider_options, Object.assign({}, defaultOptions), \"f\");\n }\n _getOptions(key) {\n return __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key];\n }\n _setOptions(options) {\n // Validate all the options\n for (const _key in options) {\n const key = _key;\n const value = options[key];\n if (typeof (value) !== typeof (__classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key])) {\n return logger.throwArgumentError(\"invalid option value\", `options.${key}`, value);\n }\n }\n // Update the values\n for (const _key in options) {\n const key = _key;\n __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key] = (options[key]);\n }\n }\n prepareRequest(method, params) {\n var _a, _b;\n return {\n method, params, id: (__classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, (_b = __classPrivateFieldGet(this, _JsonRpcApiProvider_nextId, \"f\"), _a = _b++, _b), \"f\"), _a), jsonrpc: \"2.0\"\n };\n }\n // Sends the payload to the backend\n //async sendPayload(payload: any): Promise {\n // throw new Error(\"sub-class must implement this\");\n //}\n async send(method, params) {\n // @TODO: This should construct and queue the payload\n throw new Error(\"sub-class must implement this\");\n }\n async getSigner(address = 0) {\n const network = await this.getNetwork();\n const accounts = await this.send(\"eth_accounts\", []);\n // Account index\n if (typeof (address) === \"number\") {\n if (address > accounts.length) {\n throw new Error(\"no such account\");\n }\n return new JsonRpcSigner(this, accounts[address]);\n }\n // Account address\n address = network.formatter.address(address);\n for (const account of accounts) {\n if (network.formatter.address(account) === account) {\n return new JsonRpcSigner(this, account);\n }\n }\n throw new Error(\"invalid account\");\n }\n // Sub-classes can override this; it detects the *actual* network we\n // are connected to\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" })));\n }\n _getSubscriber(sub) {\n // Pending Filters aren't availble via polling\n if (sub.type === \"pending\") {\n return new FilterIdPendingSubscriber(this);\n }\n if (sub.type === \"event\") {\n return new FilterIdEventSubscriber(this, sub.filter);\n }\n // Orphaned Logs are handled automatically, by the filter, since\n // logs with removed are emitted by it\n if (sub.type === \"orphan\" && sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"orphan\");\n }\n return super._getSubscriber(sub);\n }\n getRpcTransaction(tx) {\n const result = {};\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n let dstKey = key;\n if (key === \"gasLimit\") {\n dstKey = \"gas\";\n }\n result[dstKey] = quantity(tx[key]);\n });\n // Make sure addresses and data are lowercase\n [\"from\", \"to\", \"data\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n result[key] = hexlify(tx[key]);\n });\n // Normalize the access list object\n if (tx.accessList) {\n result[\"accessList\"] = accessListify(tx.accessList);\n }\n return result;\n }\n getRpcRequest(req) {\n switch (req.method) {\n case \"chainId\":\n return { method: \"eth_chainId\", args: [] };\n case \"getBlockNumber\":\n return { method: \"eth_blockNumber\", args: [] };\n case \"getGasPrice\":\n return { method: \"eth_gasPrice\", args: [] };\n case \"getBalance\":\n return {\n method: \"eth_getBalance\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getTransactionCount\":\n return {\n method: \"eth_getTransactionCount\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getCode\":\n return {\n method: \"eth_getCode\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getStorageAt\":\n return {\n method: \"eth_getStorageAt\",\n args: [\n getLowerCase(req.address),\n (\"0x\" + req.position.toString(16)),\n req.blockTag\n ]\n };\n case \"sendTransaction\":\n return {\n method: \"eth_sendRawTransaction\",\n args: [req.signedTransaction]\n };\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return {\n method: \"eth_getBlockByNumber\",\n args: [req.blockTag, !!req.includeTransactions]\n };\n }\n else if (\"blockHash\" in req) {\n return {\n method: \"eth_getBlockByHash\",\n args: [req.blockHash, !!req.includeTransactions]\n };\n }\n break;\n case \"getTransaction\":\n return {\n method: \"eth_getTransactionByHash\",\n args: [req.hash]\n };\n case \"getTransactionReceipt\":\n return {\n method: \"eth_getTransactionReceipt\",\n args: [req.hash]\n };\n case \"call\":\n return {\n method: \"eth_call\",\n args: [this.getRpcTransaction(req.transaction), req.blockTag]\n };\n case \"estimateGas\": {\n return {\n method: \"eth_estimateGas\",\n args: [this.getRpcTransaction(req.transaction)]\n };\n }\n case \"getLogs\":\n if (req.filter && req.filter.address != null) {\n if (Array.isArray(req.filter.address)) {\n req.filter.address = req.filter.address.map(getLowerCase);\n }\n else {\n req.filter.address = getLowerCase(req.filter.address);\n }\n }\n return { method: \"eth_getLogs\", args: [req.filter] };\n }\n return null;\n }\n getRpcError(method, args, error) {\n if (method === \"eth_call\") {\n const result = spelunkData(error);\n if (result) {\n // @TODO: Extract errorSignature, errorName, errorArgs, reason if\n // it is Error(string) or Panic(uint25)\n return logger.makeError(\"execution reverted during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: result.data,\n transaction: args[0]\n });\n }\n return logger.makeError(\"missing revert data during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: \"0x\", transaction: args[0], info: { error }\n });\n }\n if (method === \"eth_estimateGas\") {\n }\n const message = JSON.stringify(spelunkMessage(error));\n if (message.match(/insufficient funds|base fee exceeds gas limit/)) {\n return logger.makeError(\"insufficient funds for intrinsic transaction cost\", \"INSUFFICIENT_FUNDS\", {\n transaction: args[0]\n });\n }\n if (message.match(/nonce/) && message.match(/too low/)) {\n return logger.makeError(\"nonce has already been used\", \"NONCE_EXPIRED\", {\n transaction: args[0]\n });\n }\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction/) && message.match(/underpriced/)) {\n return logger.makeError(\"replacement fee too low\", \"REPLACEMENT_UNDERPRICED\", {\n transaction: args[0]\n });\n }\n if (message.match(/only replay-protected/)) {\n return logger.makeError(\"legacy pre-eip-155 transactions not supported\", \"UNSUPPORTED_OPERATION\", {\n operation: method, info: { transaction: args[0] }\n });\n }\n if (method === \"estimateGas\" && message.match(/gas required exceeds allowance|always failing transaction|execution reverted/)) {\n return logger.makeError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", \"UNPREDICTABLE_GAS_LIMIT\", {\n transaction: args[0]\n });\n }\n return error;\n }\n async _perform(req) {\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 (req.method === \"call\" || req.method === \"estimateGas\") {\n let tx = req.transaction;\n if (tx && tx.type != null && logger.getBigInt(tx.type)) {\n // If there are no EIP-1559 properties, it might be non-EIP-a559\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 req = Object.assign({}, req, {\n transaction: Object.assign({}, tx, { type: undefined })\n });\n }\n }\n }\n }\n const request = this.getRpcRequest(req);\n if (request != null) {\n this.emit(\"debug\", { type: \"sendRequest\", request });\n try {\n const result = await this.send(request.method, request.args);\n //console.log(\"RR\", result);\n this.emit(\"debug\", { type: \"getResponse\", result });\n return result;\n }\n catch (error) {\n this.emit(\"debug\", { type: \"getError\", error });\n throw this.getRpcError(request.method, request.args, error);\n }\n }\n return super._perform(req);\n }\n}\n_JsonRpcApiProvider_nextId = new WeakMap(), _JsonRpcApiProvider_options = new WeakMap();\nexport class JsonRpcProvider extends JsonRpcApiProvider {\n constructor(url, network) {\n if (url == null) {\n url = \"http:/\\/localhost:8545\";\n }\n super(network);\n _JsonRpcProvider_connect.set(this, void 0);\n _JsonRpcProvider_pollingInterval.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, { request: new FetchRequest(url) }, \"f\");\n }\n else {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, Object.assign({}, url), \"f\");\n __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request = __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request.clone();\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, 4000, \"f\");\n }\n async send(method, params) {\n params = copy(params);\n // Configure a POST connection for the requested method\n const connection = Object.assign({}, __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\"));\n connection.request = connection.request.clone();\n connection.request.body = this.prepareRequest(method, params);\n const response = await fetchData(connection);\n response.assertOk();\n const result = response.bodyJson;\n if (\"error\" in result) {\n return logger.throwError(\"error from JSON-RPC\", \"UNKNOWN_ERROR\", {\n result\n });\n }\n return result.result;\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\"); }\n set pollingInterval(value) {\n if (!Number.isInteger(value) || value < 0) {\n throw new Error(\"invalid interval\");\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, value, \"f\");\n this._forEachSubscriber((sub) => {\n if (isPollable(sub)) {\n sub.pollingInterval = __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\");\n }\n });\n }\n}\n_JsonRpcProvider_connect = new WeakMap(), _JsonRpcProvider_pollingInterval = new WeakMap();\n// This class should only be used when it is not possible for the\n// underlying network to change, such as with INFURA. If you are\n// using MetaMask or some other client which allows users to change\n// their network DO NOT USE THIS. Bad things will happen.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n constructor(url, network) {\n super(url, network);\n defineProperties(this, { network });\n }\n async _detectNetwork() {\n return this.network;\n }\n}\nfunction spelunkData(value) {\n if (value == null) {\n return null;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\" && value.message.match(\"reverted\") && isHexString(value.data)) {\n return { message: value.message, data: value.data };\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n const result = spelunkData(value[key]);\n if (result) {\n return result;\n }\n }\n return null;\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return spelunkData(JSON.parse(value));\n }\n catch (error) { }\n }\n return null;\n}\nfunction _spelunkMessage(value, result) {\n if (value == null) {\n return;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\") {\n result.push(value.message);\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n _spelunkMessage(value[key], result);\n }\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return _spelunkMessage(JSON.parse(value), result);\n }\n catch (error) { }\n }\n}\nfunction spelunkMessage(value) {\n const result = [];\n _spelunkMessage(value, result);\n return result;\n}\n//# sourceMappingURL=provider-jsonrpc.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth\";\n case \"matic\":\n return \"rpc.ankr.com/polygon\";\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AnkrProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const connection = AnkrProvider.getConnection(network, apiKey);\n super(connection, network);\n defineProperties(this, { apiKey });\n // Ankr does not support filterId, so we force polling\n super._setOptions({ polling: true });\n }\n _getProvider(chainId) {\n try {\n return new AnkrProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"AnkrProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=provider-ankr.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.alchemyapi.io\";\n case \"ropsten\":\n return \"eth-ropsten.alchemyapi.io\";\n case \"rinkeby\":\n return \"eth-rinkeby.alchemyapi.io\";\n case \"goerli\":\n return \"eth-goerli.alchemyapi.io\";\n case \"kovan\":\n return \"eth-kovan.alchemyapi.io\";\n case \"matic\":\n return \"polygon-mainnet.g.alchemy.com\";\n case \"maticmum\":\n return \"polygon-mumbai.g.alchemy.com\";\n case \"arbitrum\":\n return \"arb-mainnet.g.alchemy.com\";\n case \"arbitrum-rinkeby\":\n return \"arb-rinkeby.g.alchemy.com\";\n case \"optimism\":\n return \"opt-mainnet.g.alchemy.com\";\n case \"optimism-kovan\":\n return \"opt-kovan.g.alchemy.com\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AlchemyProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n super(AlchemyProvider.getConnection(network, apiKey), network);\n defineProperties(this, { apiKey });\n }\n _getProvider(chainId) {\n try {\n return new AlchemyProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v2/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"alchemy\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n}\n//# sourceMappingURL=provider-alchemy.js.map","import { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nexport class CloudflareProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\") {\n const network = Network.from(_network);\n if (network.name !== \"homestead\") {\n return logger.throwArgumentError(\"unsupported network\", \"network\", _network);\n }\n super(\"https:/\\/cloudflare-eth.com/\", network);\n }\n}\n//# sourceMappingURL=provider-cloudflare.js.map","import { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { isError } from \"@ethersproject/logger\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nif (false) {\n console.log(isHexString, isError);\n} // @TODO\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { NetworkPlugin } from \"./plugins-network.js\";\nimport { logger } from \"./logger.js\";\nconst defaultApiKey = \"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB\";\nconst EtherscanPluginId = \"org.ethers.plugins.etherscan\";\nexport class EtherscanPlugin extends NetworkPlugin {\n constructor(baseUrl, communityApiKey) {\n super(EtherscanPluginId);\n //if (communityApiKey == null) { communityApiKey = null; }\n defineProperties(this, { baseUrl, communityApiKey });\n }\n clone() {\n return new EtherscanPlugin(this.baseUrl, this.communityApiKey);\n }\n}\nexport class EtherscanProvider extends AbstractProvider {\n constructor(_network, apiKey) {\n super();\n const network = Network.from(_network);\n if (apiKey == null) {\n const plugin = network.getPlugin(EtherscanPluginId);\n if (plugin) {\n apiKey = plugin.communityApiKey;\n }\n else {\n apiKey = defaultApiKey;\n }\n }\n defineProperties(this, { apiKey, network });\n // Test that the network is supported by Etherscan\n this.getBaseUrl();\n }\n getBaseUrl() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return plugin.baseUrl;\n }\n switch (this.network.name) {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"ropsten\":\n return \"https:/\\/api-ropsten.etherscan.io\";\n case \"rinkeby\":\n return \"https:/\\/api-rinkeby.etherscan.io\";\n case \"kovan\":\n return \"https:/\\/api-kovan.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n default:\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network);\n }\n getUrl(module, params) {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${key}=${value}`;\n }\n return accum;\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${this.apiKey}` : \"\");\n return `${this.getBaseUrl()}/api?module=${module}${query}${apiKey}`;\n }\n getPostUrl() {\n return `${this.getBaseUrl()}/api`;\n }\n getPostData(module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n async detectNetwork() {\n return this.network;\n }\n async fetch(module, params, post) {\n const url = (post ? this.getPostUrl() : this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params) : null);\n /*\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n */\n const request = new FetchRequest(url);\n const connection = {\n request,\n throttleSlotInterval: 1000,\n processResponse: async (request, response) => {\n const result = response.hasBody() ? JSON.parse(toUtf8String(response.body)) : {};\n const throttle = ((typeof (result.result) === \"string\") ? result.result : \"\").toLowerCase().indexOf(\"rate limit\") >= 0;\n if (module === \"proxy\") {\n // This JSON response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && throttle) {\n response.throwThrottleError(result.result);\n }\n }\n else {\n if (throttle) {\n response.throwThrottleError(result.result);\n }\n }\n return response;\n },\n };\n if (payload) {\n request.setHeader(\"content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n request.body = Object.keys(payload).map((k) => `${k}=${payload[k]}`).join(\"&\");\n }\n const response = await fetchData(connection);\n response.assertOk();\n if (!response.hasBody()) {\n throw new Error();\n }\n /*\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n */\n const result = JSON.parse(toUtf8String(response.body));\n if (module === \"proxy\") {\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n if (result.error) {\n // @TODO: not any\n const error = new Error(result.error.message || \"unknown error\");\n if (result.error.code) {\n error.code = result.error.code;\n }\n if (result.error.data) {\n error.data = result.error.data;\n }\n throw error;\n }\n return result.result;\n }\n else {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n if (result.status != 1 || result.message != \"OK\") {\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n // if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n // error.throttleRetry = true;\n // }\n throw error;\n }\n return result.result;\n }\n }\n // The transaction has already been sanitized by the calls in Provider\n _getTransactionPostData(transaction) {\n const result = {};\n for (let key in transaction) {\n if (transaction[key] == null) {\n continue;\n }\n let value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = quantity(hexlify(value));\n }\n else if (key === \"accessList\") {\n value = \"[\" + this.network.formatter.accessList(value).map((set) => {\n return `{address:\"${set.address}\",storageKeys:[\"${set.storageKeys.join('\",\"')}\"]}`;\n }).join(\",\") + \"]\";\n }\n else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n }\n _checkError(req, error, transaction) {\n /*\n let body = \"\";\n if (isError(error, Logger.Errors.SERVER_ERROR) && error.response && error.response.hasBody()) {\n body = toUtf8String(error.response.body);\n }\n console.log(body);\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\" && body) {\n \n // Etherscan keeps changing their string\n if (body.match(/reverted/i) || body.match(/VM execution error/i)) {\n \n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n if (!isHexString(data)) { data = \"0x\"; }\n \n logger.throwError(\"call exception\", Logger.Errors.CALL_EXCEPTION, {\n error, data\n });\n }\n }\n \n // Get the message from any nested error structure\n let message = error.message;\n if (isError(error, Logger.Errors.SERVER_ERROR)) {\n if (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 }\n message = (message || \"\").toLowerCase();\n \n // \"Insufficient funds. The account you tried to send transaction from\n // does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.Errors.INSUFFICIENT_FUNDS, {\n error, transaction, info: { method }\n });\n }\n \n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.Errors.NONCE_EXPIRED, {\n error, transaction, info: { method }\n });\n }\n \n // \"Transaction gas price is too low. There is another transaction with\n // same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.Errors.REPLACEMENT_UNDERPRICED, {\n error, transaction, info: { method }\n });\n }\n \n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.Errors.UNPREDICTABLE_GAS_LIMIT, {\n error, transaction, info: { method }\n });\n }\n */\n throw error;\n }\n async _detectNetwork() {\n return this.network;\n }\n async _perform(req) {\n switch (req.method) {\n case \"chainId\":\n return this.network.chainId;\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: req.address,\n position: req.position,\n tag: req.blockTag\n });\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: req.signedTransaction\n }, true).catch((error) => {\n return this._checkError(req, error, req.signedTransaction);\n });\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: req.blockTag,\n boolean: (req.includeTransactions ? \"true\" : \"false\")\n });\n }\n return logger.throwError(\"getBlock by blockHash not supported by Etherscan\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getBlock(blockHash)\"\n });\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: req.hash\n });\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: req.hash\n });\n case \"call\": {\n if (req.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n case \"estimateGas\": {\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n /*\n case \"getLogs\": {\n // Needs to complain if more than one address is passed in\n const args: Record = { action: \"getLogs\" }\n \n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n \n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n \n if (params.filter.address) {\n args.address = params.filter.address;\n }\n \n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.Errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.Errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n \n const logs: Array = await this.fetch(\"logs\", args);\n \n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n \n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n \n log.blockHash = blocks[log.blockNumber];\n }\n \n return logs;\n }\n */\n default:\n break;\n }\n return super._perform(req);\n }\n async getNetwork() {\n return this.network;\n }\n async getEtherPrice() {\n if (this.network.name !== \"homestead\") {\n return 0.0;\n }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n }\n isCommunityResource() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return (plugin.communityApiKey === this.apiKey);\n }\n return (defaultApiKey === this.apiKey);\n }\n}\n/*\n(async function() {\n const provider = new EtherscanProvider();\n console.log(provider);\n console.log(await provider.getBlockNumber());\n / *\n provider.on(\"block\", (b) => {\n console.log(\"BB\", b);\n });\n console.log(await provider.getTransactionReceipt(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\"));\n\n provider.once(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\", (tx) => {\n console.log(\"TT\", tx);\n });\n * /\n try {\n console.log(await provider.getBlock(100));\n } catch (error) {\n console.log(error);\n }\n\n try {\n console.log(await provider.getBlock(13821768));\n } catch (error) {\n console.log(error);\n }\n\n})();\n*/\n//# sourceMappingURL=provider-etherscan.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultProjectId = \"84842078b09946638c03157f83405213\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"mainnet.infura.io\";\n case \"ropsten\":\n return \"ropsten.infura.io\";\n case \"rinkeby\":\n return \"rinkeby.infura.io\";\n case \"kovan\":\n return \"kovan.infura.io\";\n case \"goerli\":\n return \"goerli.infura.io\";\n case \"matic\":\n return \"polygon-mainnet.infura.io\";\n case \"maticmum\":\n return \"polygon-mumbai.infura.io\";\n case \"optimism\":\n return \"optimism-mainnet.infura.io\";\n case \"optimism-kovan\":\n return \"optimism-kovan.infura.io\";\n case \"arbitrum\":\n return \"arbitrum-mainnet.infura.io\";\n case \"arbitrum-rinkeby\":\n return \"arbitrum-rinkeby.infura.io\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class InfuraProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", projectId, projectSecret) {\n const network = Network.from(_network);\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const connection = InfuraProvider.getConnection(network, projectId, projectSecret);\n super(connection, network);\n defineProperties(this, { projectId, projectSecret });\n }\n _getProvider(chainId) {\n try {\n return new InfuraProvider(chainId, this.projectId, this.projectSecret);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, projectId, projectSecret) {\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v3/${projectId}`);\n request.allowGzip = true;\n if (projectSecret) {\n request.setCredentials(\"\", projectSecret);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (projectId === defaultProjectId) {\n showThrottleMessage(\"InfuraProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\n//# sourceMappingURL=provider-infura.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\n// These are load-balancer-based application IDs\nconst defaultAppIds = {\n homestead: \"6004bcd10040261633ade990\",\n ropsten: \"6004bd4d0040261633ade991\",\n rinkeby: \"6004bda20040261633ade994\",\n goerli: \"6004bd860040261633ade992\",\n};\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.gateway.pokt.network\";\n case \"ropsten\":\n return \"eth-ropsten.gateway.pokt.network\";\n case \"rinkeby\":\n return \"eth-rinkeby.gateway.pokt.network\";\n case \"goerli\":\n return \"eth-goerli.gateway.pokt.network\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nfunction normalizeApiKey(network, _appId, applicationSecretKey, loadBalancer) {\n loadBalancer = !!loadBalancer;\n let community = false;\n let applicationId = _appId;\n if (applicationId == null) {\n applicationId = defaultAppIds[network.name];\n if (applicationId == null) {\n logger.throwArgumentError(\"network does not support default applicationId\", \"applicationId\", _appId);\n }\n loadBalancer = true;\n community = true;\n }\n else if (applicationId === defaultAppIds[network.name]) {\n loadBalancer = true;\n community = true;\n }\n if (applicationSecretKey == null) {\n applicationSecretKey = null;\n }\n return { applicationId, applicationSecretKey, community, loadBalancer };\n}\nexport class PocketProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", _appId, _secretKey, _loadBalancer) {\n const network = Network.from(_network);\n const { applicationId, applicationSecretKey, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n const connection = PocketProvider.getConnection(network, applicationId, applicationSecretKey, loadBalancer);\n super(connection, network);\n defineProperties(this, { applicationId, applicationSecretKey, loadBalancer });\n }\n static getConnection(network, _appId, _secretKey, _loadBalancer) {\n const { applicationId, applicationSecretKey, community, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n let url = `https:/\\/${getHost(network.name)}/v1/`;\n if (loadBalancer) {\n url += \"lb/\";\n }\n url += applicationId;\n const request = new FetchRequest(url);\n request.allowGzip = true;\n if (applicationSecretKey) {\n request.setCredentials(\"\", applicationSecretKey);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (community) {\n showThrottleMessage(\"PocketProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.applicationId === defaultAppIds[this.network.name]);\n }\n}\n//# sourceMappingURL=provider-pocket.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FallbackProvider_instances, _FallbackProvider_configs, _FallbackProvider_height, _FallbackProvider_initialSyncPromise, _FallbackProvider_getNextConfig, _FallbackProvider_addRunner, _FallbackProvider_initialSync, _FallbackProvider_checkQuorum, _FallbackProvider_waitForQuorum;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { shuffle } from \"./shuffle.js\";\n//const BN_0 = BigInt(\"0\");\nconst BN_1 = BigInt(\"1\");\nconst BN_2 = BigInt(\"2\");\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\nfunction getTime() { return (new Date()).getTime(); }\n;\nconst defaultConfig = { stallTimeout: 400, priority: 1, weight: 1 };\nconst defaultState = {\n blockNumber: -2, requests: 0, lateResponses: 0, errorResponses: 0,\n outOfSync: -1, unsupportedEvents: 0, rollingDuration: 0, score: 0,\n _network: null, _updateNumber: null, _totalTime: 0\n};\nasync function waitForSync(config, blockNumber) {\n while (config.blockNumber < 0 || config.blockNumber < blockNumber) {\n if (!config._updateNumber) {\n config._updateNumber = (async () => {\n const blockNumber = await config.provider.getBlockNumber();\n if (blockNumber > config.blockNumber) {\n config.blockNumber = blockNumber;\n }\n config._updateNumber = null;\n })();\n }\n await config._updateNumber;\n config.outOfSync++;\n }\n}\n// Normalizes a result to a string that can be used to compare against\n// other results using normal string equality\nfunction normalize(network, value, req) {\n switch (req.method) {\n case \"chainId\":\n return logger.getBigInt(value).toString();\n case \"getBlockNumber\":\n return logger.getNumber(value).toString();\n case \"getGasPrice\":\n return logger.getBigInt(value).toString();\n case \"getBalance\":\n return logger.getBigInt(value).toString();\n case \"getTransactionCount\":\n return logger.getNumber(value).toString();\n case \"getCode\":\n return hexlify(value);\n case \"getStorageAt\":\n return hexlify(value);\n case \"getBlock\":\n if (req.includeTransactions) {\n return JSON.stringify(network.formatter.blockWithTransactions(value));\n }\n return JSON.stringify(network.formatter.block(value));\n case \"getTransaction\":\n return JSON.stringify(network.formatter.transactionResponse(value));\n case \"getTransactionReceipt\":\n return JSON.stringify(network.formatter.receipt(value));\n case \"call\":\n return hexlify(value);\n case \"estimateGas\":\n return logger.getBigInt(value).toString();\n case \"getLogs\":\n return JSON.stringify(value.map((v) => network.formatter.log(v)));\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}\n// This strategy picks the highest wieght result, as long as the weight is\n// equal to or greater than quorum\nfunction checkQuorum(quorum, results) {\n const tally = new Map();\n for (const { result, normal, weight } of results) {\n const t = tally.get(normal) || { result, weight: 0 };\n t.weight += weight;\n tally.set(normal, t);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n if (weight >= quorum && weight > bestWeight) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\n/*\nfunction getMean(results: Array): bigint {\n const total = results.reduce((a, r) => (a + BigInt(r.result)), BN_0);\n return total / BigInt(results.length);\n}\n*/\nfunction getMedian(results) {\n // Get the sorted values\n const values = results.map((r) => BigInt(r.result));\n values.sort((a, b) => ((a < b) ? -1 : (b > a) ? 1 : 0));\n const mid = values.length / 2;\n // Odd-length; take the middle value\n if (values.length % 2) {\n return values[mid];\n }\n // Even length; take the ceiling of the mean of the center two values\n return (values[mid - 1] + values[mid] + BN_1) / BN_2;\n}\nfunction getFuzzyMode(quorum, results) {\n if (quorum === 1) {\n return logger.getNumber(getMedian(results), \"%internal\");\n }\n const tally = new Map();\n const add = (result, weight) => {\n const t = tally.get(result) || { result, weight: 0 };\n t.weight += weight;\n tally.set(result, t);\n };\n for (const { weight, result } of results) {\n const r = logger.getNumber(result);\n add(r - 1, weight);\n add(r, weight);\n add(r + 1, weight);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n // Use this result, if this result meets quorum and has either:\n // - a better weight\n // - or equal weight, but the result is larger\n if (weight >= quorum && (weight > bestWeight || (bestResult != null && weight === bestWeight && result > bestResult))) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\nexport class FallbackProvider extends AbstractProvider {\n constructor(providers, network) {\n super(network);\n _FallbackProvider_instances.add(this);\n _FallbackProvider_configs.set(this, void 0);\n _FallbackProvider_height.set(this, void 0);\n _FallbackProvider_initialSyncPromise.set(this, void 0);\n __classPrivateFieldSet(this, _FallbackProvider_configs, providers.map((p) => {\n if (p instanceof AbstractProvider) {\n return Object.assign({ provider: p }, defaultConfig, defaultState);\n }\n else {\n return Object.assign({}, defaultConfig, p, defaultState);\n }\n }), \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_height, -2, \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, null, \"f\");\n this.quorum = 2; //Math.ceil(providers.length / 2);\n this.eventQuorum = 1;\n this.eventWorkers = 1;\n if (this.quorum > __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").reduce((a, c) => (a + c.weight), 0)) {\n logger.throwArgumentError(\"quorum exceed provider wieght\", \"quorum\", this.quorum);\n }\n }\n // @TOOD: Copy these and only return public values\n get providerConfigs() {\n return __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n }\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" }))).freeze();\n }\n async _perform(req) {\n await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_initialSync).call(this);\n // Bootstrap enough to meet quorum\n const running = new Set();\n for (let i = 0; i < this.quorum; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n const result = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n for (const runner of running) {\n runner.done = true;\n }\n return result;\n }\n}\n_FallbackProvider_configs = new WeakMap(), _FallbackProvider_height = new WeakMap(), _FallbackProvider_initialSyncPromise = new WeakMap(), _FallbackProvider_instances = new WeakSet(), _FallbackProvider_getNextConfig = function _FallbackProvider_getNextConfig(configs) {\n // Shuffle the states, sorted by priority\n const allConfigs = __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n shuffle(allConfigs);\n allConfigs.sort((a, b) => (b.priority - a.priority));\n for (const config of allConfigs) {\n if (configs.indexOf(config) === -1) {\n return config;\n }\n }\n return null;\n}, _FallbackProvider_addRunner = function _FallbackProvider_addRunner(running, req) {\n const config = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_getNextConfig).call(this, Array.from(running).map((r) => r.config));\n if (config == null) {\n return null;\n }\n const result = {};\n const runner = {\n config, result, didBump: false, done: false,\n perform: null, staller: null\n };\n const now = getTime();\n runner.perform = (async () => {\n try {\n config.requests++;\n result.result = await config.provider._perform(req);\n }\n catch (error) {\n config.errorResponses++;\n result.error = error;\n }\n if (runner.done) {\n config.lateResponses++;\n }\n const dt = (getTime() - now);\n config._totalTime += dt;\n config.rollingDuration = 0.95 * config.rollingDuration + 0.05 * dt;\n runner.perform = null;\n })();\n runner.staller = (async () => {\n await stall(config.stallTimeout);\n runner.staller = null;\n })();\n running.add(runner);\n return runner;\n}, _FallbackProvider_initialSync = \n// Initializes the blockNumber and network for each runner and\n// blocks until initialized\nasync function _FallbackProvider_initialSync() {\n let initialSync = __classPrivateFieldGet(this, _FallbackProvider_initialSyncPromise, \"f\");\n if (!initialSync) {\n const promises = [];\n __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").forEach((config) => {\n promises.push(waitForSync(config, 0));\n promises.push((async () => {\n config._network = await config.provider.getNetwork();\n })());\n });\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, initialSync = (async () => {\n // Wait for all providers to have a block number and network\n await Promise.all(promises);\n // Check all the networks match\n let chainId = null;\n for (const config of __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\")) {\n const network = (config._network);\n if (chainId == null) {\n chainId = network.chainId;\n }\n else if (network.chainId !== chainId) {\n logger.throwError(\"cannot mix providers on different networks\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FallbackProvider\"\n });\n }\n }\n })(), \"f\");\n }\n await initialSync;\n}, _FallbackProvider_checkQuorum = async function _FallbackProvider_checkQuorum(running, req) {\n // Get all the result objects\n const results = [];\n for (const runner of running) {\n if (\"result\" in runner.result) {\n const result = runner.result.result;\n results.push({\n result,\n normal: normalize((runner.config._network), result, req),\n weight: runner.config.weight\n });\n }\n }\n // Are there enough results to event meet quorum?\n if (results.reduce((a, r) => (a + r.weight), 0) < this.quorum) {\n return undefined;\n }\n switch (req.method) {\n case \"getBlockNumber\": {\n // We need to get the bootstrap block height\n if (__classPrivateFieldGet(this, _FallbackProvider_height, \"f\") === -2) {\n const height = Math.ceil(logger.getNumber(getMedian(__classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").map((c) => ({\n result: c.blockNumber,\n normal: logger.getNumber(c.blockNumber).toString(),\n weight: c.weight\n }))), \"%internal\"));\n __classPrivateFieldSet(this, _FallbackProvider_height, height, \"f\");\n }\n const mode = getFuzzyMode(this.quorum, results);\n if (mode === undefined) {\n return undefined;\n }\n if (mode > __classPrivateFieldGet(this, _FallbackProvider_height, \"f\")) {\n __classPrivateFieldSet(this, _FallbackProvider_height, mode, \"f\");\n }\n return __classPrivateFieldGet(this, _FallbackProvider_height, \"f\");\n }\n case \"getGasPrice\":\n case \"estimateGas\":\n return getMedian(results);\n case \"getBlock\":\n // Pending blocks are mempool dependant and already\n // quite untrustworthy\n if (\"blockTag\" in req && req.blockTag === \"pending\") {\n return results[0].result;\n }\n return checkQuorum(this.quorum, results);\n case \"chainId\":\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n case \"getLogs\":\n return checkQuorum(this.quorum, results);\n case \"call\":\n // @TODO: Check errors\n return checkQuorum(this.quorum, results);\n case \"sendTransaction\":\n throw new Error(\"TODO\");\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}, _FallbackProvider_waitForQuorum = async function _FallbackProvider_waitForQuorum(running, req) {\n if (running.size === 0) {\n throw new Error(\"no runners?!\");\n }\n // Any promises that are interesting to watch for; an expired stall\n // or a successful perform\n const interesting = [];\n //const results: Array = [ ];\n //const errors: Array = [ ];\n let newRunners = 0;\n for (const runner of running) {\n // @TODO: use runner.perfom != null\n /*\n if (\"result\" in runner.result) {\n results.push(runner.result.result);\n } else if (\"error\" in runner.result) {\n errors.push(runner.result.error);\n }\n*/\n // No responses, yet; keep an eye on it\n if (runner.perform) {\n interesting.push(runner.perform);\n }\n // Still stalling...\n if (runner.staller) {\n interesting.push(runner.staller);\n continue;\n }\n // This runner has already triggered another runner\n if (runner.didBump) {\n continue;\n }\n // Got a response (result or error) or stalled; kick off another runner\n runner.didBump = true;\n newRunners++;\n }\n // Check for quorum\n /*\n console.log({ results, errors } );\n if (results.length >= this.quorum) {\n return results[0];\n }\n\n if (errors.length >= this.quorum) {\n return errors[0];\n }\n */\n const value = await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_checkQuorum).call(this, running, req);\n if (value !== undefined) {\n if (value instanceof Error) {\n throw value;\n }\n return value;\n }\n // Add any new runners, because a staller timed out or a result\n // or error response came in.\n for (let i = 0; i < newRunners; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n if (interesting.length === 0) {\n throw new Error(\"quorum not met\");\n // return logger.throwError(\"failed to meet quorum\", \"\", {\n // });\n }\n // Wait for someone to either complete its perform or trigger a stall\n await Promise.race(interesting);\n return await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n};\n//# sourceMappingURL=provider-fallback.js.map","export function shuffle(array) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n}\n//# sourceMappingURL=shuffle.js.map","function getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst _WebSocket = getGlobal().WebSocket;\nexport { _WebSocket as WebSocket };\n//# sourceMappingURL=ws-browser.js.map","/**\n * SocketProvider\n *\n * Generic long-lived socket provider.\n *\n * Sub-classing notes\n * - a sub-class MUST call the `_start()` method once connected\n * - a sub-class MUST override the `_write(string)` method\n * - a sub-class MUST call `_processMessage(string)` for each message\n */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SocketSubscriber_provider, _SocketSubscriber_filter, _SocketSubscriber_filterId, _SocketSubscriber_paused, _SocketSubscriber_emitPromise, _SocketEventSubscriber_logFilter, _SocketEventSubscriber_formatter, _SocketProvider_callbacks, _SocketProvider_ready, _SocketProvider_subs, _SocketProvider_pending;\nimport { UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { JsonRpcApiProvider } from \"./provider-jsonrpc.js\";\nexport class SocketSubscriber {\n constructor(provider, filter) {\n _SocketSubscriber_provider.set(this, void 0);\n _SocketSubscriber_filter.set(this, void 0);\n _SocketSubscriber_filterId.set(this, void 0);\n _SocketSubscriber_paused.set(this, void 0);\n _SocketSubscriber_emitPromise.set(this, void 0);\n __classPrivateFieldSet(this, _SocketSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n get filter() { return JSON.parse(__classPrivateFieldGet(this, _SocketSubscriber_filter, \"f\")); }\n start() {\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_subscribe\", this.filter).then((filterId) => {\n ;\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\")._register(filterId, this);\n return filterId;\n }), \"f\");\n }\n stop() {\n (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\")).then((filterId) => {\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_unsubscribe\", [filterId]);\n });\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n }\n // @TODO: pause should trap the current blockNumber, unsub, and on resume use getLogs\n // and resume\n pause(dropWhilePaused) {\n if (!dropWhilePaused) {\n logger.throwError(\"preserve logs while paused not supported by SocketSubscriber yet\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause(false)\"\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_paused, !!dropWhilePaused, \"f\");\n }\n resume() {\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n }\n _handleMessage(message) {\n if (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\") == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _SocketSubscriber_paused, \"f\") === null) {\n let emitPromise = __classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\");\n if (emitPromise == null) {\n emitPromise = this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n }\n else {\n emitPromise = emitPromise.then(async () => {\n await this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, emitPromise.then(() => {\n if (__classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\") === emitPromise) {\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n }), \"f\");\n }\n }\n async _emit(provider, message) {\n throw new Error(\"sub-classes must implemente this; _emit\");\n }\n}\n_SocketSubscriber_provider = new WeakMap(), _SocketSubscriber_filter = new WeakMap(), _SocketSubscriber_filterId = new WeakMap(), _SocketSubscriber_paused = new WeakMap(), _SocketSubscriber_emitPromise = new WeakMap();\nexport class SocketBlockSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newHeads\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"block\", parseInt(message.number));\n }\n}\nexport class SocketPendingSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newPendingTransactions\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"pending\", message);\n }\n}\nexport class SocketEventSubscriber extends SocketSubscriber {\n constructor(provider, filter) {\n super(provider, [\"logs\", filter]);\n _SocketEventSubscriber_logFilter.set(this, void 0);\n _SocketEventSubscriber_formatter.set(this, void 0);\n __classPrivateFieldSet(this, _SocketEventSubscriber_logFilter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketEventSubscriber_formatter, provider.getNetwork().then((network) => network.formatter), \"f\");\n }\n get logFilter() { return JSON.parse(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\")); }\n async _emit(provider, message) {\n const formatter = await __classPrivateFieldGet(this, _SocketEventSubscriber_formatter, \"f\");\n provider.emit(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\"), formatter.log(message, provider));\n }\n}\n_SocketEventSubscriber_logFilter = new WeakMap(), _SocketEventSubscriber_formatter = new WeakMap();\nexport class SocketProvider extends JsonRpcApiProvider {\n constructor(network) {\n super(network);\n _SocketProvider_callbacks.set(this, void 0);\n _SocketProvider_ready.set(this, void 0);\n // Maps each filterId to its subscriber\n _SocketProvider_subs.set(this, void 0);\n // If any events come in before a subscriber has finished\n // registering, queue them\n _SocketProvider_pending.set(this, void 0);\n __classPrivateFieldSet(this, _SocketProvider_callbacks, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_ready, false, \"f\");\n __classPrivateFieldSet(this, _SocketProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_pending, new Map(), \"f\");\n }\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"close\":\n return new UnmanagedSubscriber(\"close\");\n case \"block\":\n return new SocketBlockSubscriber(this);\n case \"pending\":\n return new SocketPendingSubscriber(this);\n case \"event\":\n return new SocketEventSubscriber(this, sub.filter);\n case \"orphan\":\n // Handled auto-matically within AbstractProvider\n // when the log.removed = true\n if (sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"drop-log\");\n }\n }\n return super._getSubscriber(sub);\n }\n _register(filterId, subscriber) {\n __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").set(filterId, subscriber);\n const pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending) {\n for (const message of pending) {\n subscriber._handleMessage(message);\n }\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").delete(filterId);\n }\n }\n async send(method, params) {\n const payload = this.prepareRequest(method, params);\n const promise = new Promise((resolve, reject) => {\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").set(payload.id, { payload, resolve, reject });\n });\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n await this._write(JSON.stringify(payload));\n }\n return await promise;\n }\n // Sub-classes must call this once they are connected\n async _start() {\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n return;\n }\n __classPrivateFieldSet(this, _SocketProvider_ready, true, \"f\");\n for (const { payload } of __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").values()) {\n await this._write(JSON.stringify(payload));\n }\n }\n // Sub-classes must call this for each message\n async _processMessage(message) {\n const result = JSON.parse(message);\n if (\"id\" in result) {\n const promise = __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").get(result.id);\n if (!promise) {\n console.log(\"Weird... Response for not a thing we sent\");\n return;\n }\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").delete(result.id);\n if (\"error\" in result) {\n const { message, code, data } = result.error;\n const error = logger.makeError(message || \"unkonwn error\", \"SERVER_ERROR\", {\n request: `ws:${JSON.stringify(promise.payload)}`,\n info: { code, data }\n });\n promise.reject(error);\n }\n else {\n promise.resolve(result.result);\n }\n }\n else if (result.method === \"eth_subscription\") {\n const filterId = result.params.subscription;\n const subscriber = __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").get(filterId);\n if (subscriber) {\n subscriber._handleMessage(result.params.result);\n }\n else {\n let pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending == null) {\n pending = [];\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").set(filterId, pending);\n }\n pending.push(result.params.result);\n }\n }\n }\n async _write(message) {\n throw new Error(\"sub-classes must override this\");\n }\n}\n_SocketProvider_callbacks = new WeakMap(), _SocketProvider_ready = new WeakMap(), _SocketProvider_subs = new WeakMap(), _SocketProvider_pending = new WeakMap();\n//# sourceMappingURL=provider-socket.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WebSocketProvider_websocket;\nimport { WebSocket } from \"ws\"; /*-browser*/\nimport { SocketProvider } from \"./provider-socket.js\";\nexport class WebSocketProvider extends SocketProvider {\n constructor(url, network) {\n super(network);\n _WebSocketProvider_websocket.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, new WebSocket(url), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, url, \"f\");\n }\n this.websocket.onopen = () => {\n this._start();\n };\n this.websocket.onmessage = (message) => {\n this._processMessage(message.data);\n };\n }\n get websocket() { return __classPrivateFieldGet(this, _WebSocketProvider_websocket, \"f\"); }\n async _write(message) {\n this.websocket.send(message);\n }\n}\n_WebSocketProvider_websocket = new WeakMap();\n//# sourceMappingURL=provider-websocket.js.map","import { AnkrProvider } from \"./provider-ankr.js\";\nimport { AlchemyProvider } from \"./provider-alchemy.js\";\nimport { CloudflareProvider } from \"./provider-cloudflare.js\";\nimport { EtherscanProvider } from \"./provider-etherscan.js\";\nimport { InfuraProvider } from \"./provider-infura.js\";\nimport { PocketProvider } from \"./provider-pocket.js\";\nimport { FallbackProvider } from \"./provider-fallback.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nimport { WebSocketProvider } from \"./provider-websocket.js\";\nfunction isWebSocketLike(value) {\n return (value && typeof (value.send) === \"function\" &&\n typeof (value.close) === \"function\");\n}\nexport function getDefaultProvider(network, options) {\n if (options == null) {\n options = {};\n }\n if (typeof (network) === \"string\" && network.match(/^https?:/)) {\n return new JsonRpcProvider(network);\n }\n if (typeof (network) === \"string\" && network.match(/^wss?:/) || isWebSocketLike(network)) {\n return new WebSocketProvider(network);\n }\n const providers = [];\n if (options.alchemy !== \"-\") {\n try {\n providers.push(new AlchemyProvider(network, options.alchemy));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.ankr !== \"-\") {\n try {\n providers.push(new AnkrProvider(network, options.ankr));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.cloudflare !== \"-\") {\n try {\n providers.push(new CloudflareProvider(network));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.etherscan !== \"-\") {\n try {\n providers.push(new EtherscanProvider(network, options.etherscan));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.infura !== \"-\") {\n try {\n let projectId = options.infura;\n let projectSecret = undefined;\n if (typeof (projectId) === \"object\") {\n projectSecret = projectId.projectSecret;\n projectId = projectId.projectId;\n }\n providers.push(new InfuraProvider(network, projectId, projectSecret));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.pocket !== \"-\") {\n try {\n let appId = options.pocket;\n let secretKey = undefined;\n let loadBalancer = undefined;\n if (typeof (appId) === \"object\") {\n loadBalancer = !!appId.loadBalancer;\n secretKey = appId.secretKey;\n appId = appId.appId;\n }\n providers.push(new PocketProvider(network, appId, secretKey, loadBalancer));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (providers.length === 0) {\n throw new Error(\"TODO\");\n }\n if (providers.length === 1) {\n return providers[0];\n }\n return new FallbackProvider(providers);\n}\n//# sourceMappingURL=default-provider.js.map","const IpcSocketProvider = undefined;\nexport { IpcSocketProvider };\n//# sourceMappingURL=provider-ipcsocket-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ContractTransactionReceipt_interface, _ContractTransactionResponse_interface;\nimport { defineProperties, EventPayload } from \"@ethersproject/properties\";\nimport { Log, TransactionReceipt, TransactionResponse } from \"@ethersproject/providers\";\nexport class EventLog extends Log {\n constructor(log, iface, fragment) {\n super(log, log.provider);\n const args = iface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, interface: iface });\n }\n get eventName() { return this.fragment.name; }\n get eventSignature() { return this.fragment.format(); }\n}\nexport class ContractTransactionReceipt extends TransactionReceipt {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionReceipt_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionReceipt_interface, iface, \"f\");\n }\n get logs() {\n return super.logs.map((log) => {\n const fragment = log.topics.length ? __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\").getEvent(log.topics[0]) : null;\n if (fragment) {\n return new EventLog(log, __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\"), fragment);\n }\n else {\n return log;\n }\n });\n }\n}\n_ContractTransactionReceipt_interface = new WeakMap();\nexport class ContractTransactionResponse extends TransactionResponse {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionResponse_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionResponse_interface, iface, \"f\");\n }\n async wait(confirms) {\n const receipt = await super.wait();\n if (receipt == null) {\n return null;\n }\n return new ContractTransactionReceipt(__classPrivateFieldGet(this, _ContractTransactionResponse_interface, \"f\"), this.provider, receipt);\n }\n}\n_ContractTransactionResponse_interface = new WeakMap();\nexport class ContractEventPayload extends EventPayload {\n constructor(contract, listener, filter, fragment, _log) {\n super(contract, listener, filter);\n const log = new EventLog(_log, contract.interface, fragment);\n const args = contract.interface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, log });\n }\n get eventName() {\n return this.fragment.name;\n }\n get eventSignature() {\n return this.fragment.format();\n }\n async getBlock() {\n return await this.log.getBlock();\n }\n async getTransaction() {\n return await this.log.getTransaction();\n }\n async getTransactionReceipt() {\n return await this.log.getTransactionReceipt();\n }\n}\n//# sourceMappingURL=wrappers.js.map","export const version = \"@ethersproject/contract@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PreparedTopicFilter_filter;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { Interface, Typed } from \"@ethersproject/abi\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { copyRequest } from \"@ethersproject/providers\";\nimport { ContractEventPayload, ContractTransactionResponse, EventLog } from \"./wrappers.js\";\nimport { logger } from \"./logger.js\";\nfunction canCall(value) {\n return (value && typeof (value.call) === \"function\");\n}\nfunction canEstimate(value) {\n return (value && typeof (value.estimateGas) === \"function\");\n}\nfunction canResolve(value) {\n return (value && typeof (value.resolveName) === \"function\");\n}\nfunction canSend(value) {\n return (value && typeof (value.sendTransaction) === \"function\");\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\nclass PreparedTopicFilter {\n constructor(contract, fragment, args) {\n _PreparedTopicFilter_filter.set(this, void 0);\n defineProperties(this, { fragment });\n if (fragment.inputs.length < args.length) {\n throw new Error(\"too many arguments\");\n }\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(contract.runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n __classPrivateFieldSet(this, _PreparedTopicFilter_filter, (async function () {\n const resolvedArgs = await Promise.all(fragment.inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n return contract.interface.encodeFilterTopics(fragment, resolvedArgs);\n })(), \"f\");\n }\n getTopicFilter() {\n return __classPrivateFieldGet(this, _PreparedTopicFilter_filter, \"f\");\n }\n}\n_PreparedTopicFilter_filter = new WeakMap();\n// A = Arguments passed in as a tuple\n// R = The result type of the call (i.e. if only one return type,\n// the qualified type, otherwise Result)\n// D = The type the default call will return (i.e. R for view/pure,\n// TransactionResponse otherwise)\n//export interface ContractMethod = Array, R = any, D extends R | ContractTransactionResponse = ContractTransactionResponse> {\nfunction _WrappedMethodBase() {\n return Function;\n}\nfunction getRunner(value, feature) {\n if (value == null) {\n return null;\n }\n if (typeof (value[feature]) === \"function\") {\n return value;\n }\n if (value.provider && typeof (value.provider[feature]) === \"function\") {\n return value.provider;\n }\n return null;\n}\nfunction getProvider(value) {\n if (value == null) {\n return null;\n }\n return value.provider || null;\n}\nexport async function copyOverrides(arg) {\n // Create a shallow copy (we'll deep-ify anything needed during normalizing)\n const overrides = copyRequest(Typed.dereference(arg, \"overrides\"));\n // Some sanity checking; these are what these methods adds\n //if ((overrides).to) {\n if (overrides.to) {\n logger.throwArgumentError(\"cannot override to\", \"overrides.to\", overrides.to);\n }\n else if (overrides.data) {\n logger.throwArgumentError(\"cannot override data\", \"overrides.data\", overrides.data);\n }\n // Resolve any from\n if (overrides.from) {\n overrides.from = await resolveAddress(overrides.from);\n }\n return overrides;\n}\nexport async function resolveArgs(_runner, inputs, args) {\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(_runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n return await Promise.all(inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n}\nclass WrappedMethod extends _WrappedMethodBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getFunctionName(key),\n _contract: contract, _key: key\n });\n const proxy = new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n const fragment = target.getFragment(...args);\n if (fragment.constant) {\n return await target.staticCall(...args);\n }\n return await target.send(...args);\n },\n });\n return proxy;\n }\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n get fragment() {\n return this._contract.interface.getFunction(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getFunction(this._key, args);\n }\n async populateTransaction(...args) {\n const fragment = this.getFragment(...args);\n // If an overrides was passed in, copy it and normalize the values\n let overrides = {};\n if (fragment.inputs.length + 1 === args.length) {\n overrides = await copyOverrides(args.pop());\n }\n if (fragment.inputs.length !== args.length) {\n throw new Error(\"internal error: fragment inputs doesn't match arguments; should not happen\");\n }\n const resolvedArgs = await resolveArgs(this._contract.runner, fragment.inputs, args);\n return Object.assign({}, overrides, await resolveProperties({\n to: this._contract.getAddress(),\n data: this._contract.interface.encodeFunctionData(fragment, resolvedArgs)\n }));\n }\n async staticCall(...args) {\n const result = await this.staticCallResult(...args);\n if (result.length === 1) {\n return result[0];\n }\n return result;\n }\n async send(...args) {\n const runner = this._contract.runner;\n if (!canSend(runner)) {\n return logger.throwError(\"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", {\n operation: \"sendTransaction\"\n });\n }\n const tx = await runner.sendTransaction(await this.populateTransaction(...args));\n const provider = getProvider(this._contract.runner);\n return new ContractTransactionResponse(this._contract.interface, provider, tx);\n }\n async estimateGas(...args) {\n const runner = getRunner(this._contract.runner, \"estimateGas\");\n if (!canEstimate(runner)) {\n return logger.throwError(\"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", {\n operation: \"estimateGas\"\n });\n }\n return await runner.estimateGas(await this.populateTransaction(...args));\n }\n async staticCallResult(...args) {\n const runner = getRunner(this._contract.runner, \"call\");\n if (!canCall(runner)) {\n return logger.throwError(\"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", {\n operation: \"call\"\n });\n }\n const fragment = this.getFragment(...args);\n const tx = await this.populateTransaction(...args);\n let result = \"0x\";\n try {\n result = await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error)) {\n throw this._contract.interface.makeError(fragment, error.data, tx);\n }\n throw error;\n }\n return this._contract.interface.decodeFunctionResult(fragment, result);\n }\n}\nfunction _WrappedEventBase() {\n return Function;\n}\nclass WrappedEvent extends _WrappedEventBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getEventName(key),\n _contract: contract, _key: key\n });\n return new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n return new PreparedTopicFilter(contract, target.getFragment(...args), args);\n },\n });\n }\n // Only works on non-ambiguous keys\n get fragment() {\n return this._contract.interface.getEvent(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getEvent(this._key, args);\n }\n}\n;\n// The combination of TypeScrype, Private Fields and Proxies makes\n// the world go boom; so we hide variables with some trickery keeping\n// a symbol attached to each BaseContract which its sub-class (even\n// via a Proxy) can reach and use to look up its internal values.\nconst internal = Symbol.for(\"_ethersInternal_contract\");\nconst internalValues = new WeakMap();\nfunction setInternal(contract, values) {\n internalValues.set(contract[internal], values);\n}\nfunction getInternal(contract) {\n return internalValues.get(contract[internal]);\n}\nfunction isDeferred(value) {\n return (value && typeof (value) === \"object\" && (\"getTopicFilter\" in value) &&\n (typeof (value.getTopicFilter) === \"function\") && value.fragment);\n}\nasync function getSubTag(contract, event) {\n let fragment;\n let topics;\n if (Array.isArray(event)) {\n // Topics; e.g. `[ \"0x1234...89ab\" ]`\n fragment = contract.interface.getEvent(event[0]);\n topics = event;\n }\n else if (typeof (event) === \"string\") {\n // Event name (name or signature); `\"Transfer\"`\n fragment = contract.interface.getEvent(event);\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else if (isDeferred(event)) {\n // Deferred Topic Filter; e.g. `contract.filter.Transfer(from)`\n fragment = event.fragment;\n topics = await event.getTopicFilter();\n }\n else if (\"fragment\" in event) {\n // ContractEvent; e.g. `contract.filter.Transfer`\n fragment = event.fragment;\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else {\n console.log(event);\n throw new Error(\"TODO\");\n }\n // Normalize topics and sort TopicSets\n topics = topics.map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const tag = topics.map((t) => {\n if (t == null) {\n return \"null\";\n }\n if (Array.isArray(t)) {\n return t.join(\"|\");\n }\n return t;\n }).join(\"&\");\n return { fragment, tag, topics };\n}\nasync function hasSub(contract, event) {\n const { subs } = getInternal(contract);\n return subs.get((await getSubTag(contract, event)).tag) || null;\n}\nasync function getSub(contract, event) {\n // Make sure our runner can actually subscribe to events\n const provider = getProvider(contract.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not support subscribing\", \"UNSUPPORTED_OPERATION\", {\n operation: \"on\"\n });\n }\n const { fragment, tag, topics } = await getSubTag(contract, event);\n const { addr, subs } = getInternal(contract);\n let sub = subs.get(tag);\n if (!sub) {\n const address = (addr ? addr : contract);\n const filter = { address, topics };\n const listener = (log) => {\n const payload = new ContractEventPayload(contract, null, event, fragment, log);\n emit(contract, event, payload.args, payload);\n };\n let started = false;\n const start = () => {\n if (started) {\n return;\n }\n provider.on(filter, listener);\n started = true;\n };\n const stop = () => {\n if (!started) {\n return;\n }\n provider.off(filter, listener);\n started = false;\n };\n sub = { tag, listeners: [], start, stop };\n subs.set(tag, sub);\n }\n return sub;\n}\nasync function _emit(contract, event, args, payload) {\n await lastEmit;\n const sub = await hasSub(contract, event);\n if (!sub) {\n return false;\n }\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const passArgs = args.slice();\n if (payload) {\n passArgs.push(new ContractEventPayload(contract, (once ? null : listener), event, payload.fragment, payload.log));\n }\n try {\n listener.call(contract, ...passArgs);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n}\n// We use this to ensure one emit resolves before firing the next to\n// ensure correct ordering (note this cannot throw and just adds the\n// notice to the event queu using setTimeout).\nlet lastEmit = Promise.resolve();\nasync function emit(contract, event, args, payload) {\n try {\n await lastEmit;\n }\n catch (error) { }\n const resultPromise = _emit(contract, event, args, payload);\n lastEmit = resultPromise;\n return await resultPromise;\n}\nconst passProperties = [\"then\"];\nexport class BaseContract {\n constructor(target, abi, runner = null, _deployTx) {\n const iface = Interface.from(abi);\n defineProperties(this, { target, runner, interface: iface });\n Object.defineProperty(this, internal, { value: {} });\n let addrPromise;\n let addr = null;\n let deployTx = null;\n if (_deployTx) {\n const provider = getProvider(runner);\n deployTx = new ContractTransactionResponse(this.interface, provider, _deployTx);\n }\n let subs = new Map();\n // Resolve the target as the address\n if (typeof (target) === \"string\") {\n if (isHexString(target)) {\n addr = target;\n addrPromise = Promise.resolve(target);\n }\n else {\n const resolver = getRunner(runner, \"resolveName\");\n if (!canResolve(resolver)) {\n throw logger.makeError(\"contract runner does not support name resolution\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\"\n });\n }\n addrPromise = resolver.resolveName(target).then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n }\n else {\n addrPromise = target.getAddress().then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n // Set our private values\n setInternal(this, { addrPromise, addr, deployTx, subs });\n // Add the event filters\n const filters = new Proxy({}, {\n get: (target, _prop, receiver) => {\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = this.getEvent(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract event: ${prop}`);\n }\n });\n defineProperties(this, { filters });\n // Return a Proxy that will respond to functions\n return new Proxy(this, {\n get: (target, _prop, receiver) => {\n if (_prop in target || passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = target.getFunction(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract method: ${prop}`);\n }\n });\n }\n async getAddress() { return await getInternal(this).addrPromise; }\n async getDeployedCode() {\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getDeployedCode\"\n });\n }\n const code = await provider.getCode(await this.getAddress());\n if (code === \"0x\") {\n return null;\n }\n return code;\n }\n async waitForDeployment() {\n // We have the deployement transaction; just use that (throws if deployement fails)\n const deployTx = this.deploymentTransaction();\n if (deployTx) {\n await deployTx.wait();\n return this;\n }\n // Check for code\n const code = await this.getDeployedCode();\n if (code != null) {\n return this;\n }\n // Make sure we can subscribe to a provider event\n const provider = getProvider(this.runner);\n if (provider == null) {\n return logger.throwError(\"contract runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"waitForDeployment\"\n });\n }\n return new Promise((resolve, reject) => {\n const checkCode = async () => {\n try {\n const code = await this.getDeployedCode();\n if (code != null) {\n return resolve(this);\n }\n provider.once(\"block\", checkCode);\n }\n catch (error) {\n reject(error);\n }\n };\n checkCode();\n });\n }\n deploymentTransaction() {\n return getInternal(this).deployTx;\n }\n getFunction(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedMethod(this, key));\n }\n getEvent(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedEvent(this, key));\n }\n async queryTransaction(hash) {\n // Is this useful?\n throw new Error(\"@TODO\");\n }\n async queryFilter(event, fromBlock = 0, toBlock = \"latest\") {\n const { addr, addrPromise } = getInternal(this);\n const address = (addr ? addr : (await addrPromise));\n const { fragment, topics } = await getSubTag(this, event);\n const filter = { address, topics, fromBlock, toBlock };\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not have a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"queryFilter\"\n });\n }\n return (await provider.getLogs(filter)).map((log) => {\n return new EventLog(log, this.interface, fragment);\n });\n }\n async on(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: false });\n sub.start();\n return this;\n }\n async once(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: true });\n sub.start();\n return this;\n }\n async emit(event, ...args) {\n return await emit(this, event, args, null);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n const { subs } = getInternal(this);\n let total = 0;\n for (const { listeners } of subs.values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n const { subs } = getInternal(this);\n let result = [];\n for (const { listeners } of subs.values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (listener == null || sub.listeners.length === 0) {\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n else {\n const { subs } = getInternal(this);\n for (const { tag, stop } of subs.values()) {\n stop();\n subs.delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return await this.off(event, listener);\n }\n static buildClass(abi) {\n class CustomContract extends BaseContract {\n constructor(address, runner = null) {\n super(address, abi, runner);\n }\n }\n return CustomContract;\n }\n ;\n static from(target, abi, runner = null) {\n const contract = new this(target, abi, runner);\n return contract;\n }\n}\nfunction _ContractBase() {\n return BaseContract;\n}\nexport class Contract extends _ContractBase() {\n}\n//# sourceMappingURL=contract.js.map","const subsChrs = \" !#$%&'()*+,-./<=>?@[]^_`{|}~\";\nconst Word = /^[a-z]*$/i;\nfunction unfold(words, sep) {\n let initial = 97;\n return words.reduce((accum, word) => {\n if (word === sep) {\n initial++;\n }\n else if (word.match(Word)) {\n accum.push(String.fromCharCode(initial) + word);\n }\n else {\n initial = 97;\n accum.push(word);\n }\n return accum;\n }, []);\n}\nexport function decode(data, subs) {\n // Replace all the substitutions with their expanded form\n for (let i = subsChrs.length - 1; i >= 0; i--) {\n data = data.split(subsChrs[i]).join(subs.substring(2 * i, 2 * i + 2));\n }\n // Get all tle clumps; each suffix, first-increment and second-increment\n const clumps = [];\n const leftover = data.replace(/(:|([0-9])|([A-Z][a-z]*))/g, (all, item, semi, word) => {\n if (semi) {\n for (let i = parseInt(semi); i >= 0; i--) {\n clumps.push(\";\");\n }\n }\n else {\n clumps.push(item.toLowerCase());\n }\n return \"\";\n });\n if (leftover) {\n throw new Error(`leftovers: ${JSON.stringify(leftover)}`);\n }\n return unfold(unfold(clumps, \";\"), \":\");\n}\nexport function decodeOwl(data) {\n if (data[0] !== \"0\") {\n throw TypeError(\"unsupported auwl data\");\n }\n return decode(data.substring(1 + 2 * subsChrs.length), data.substring(1, 1 + 2 * subsChrs.length));\n}\n//# sourceMappingURL=decode-owl.js.map","export const version = \"@ethersproject/wordlists@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { defineProperties } from \"@ethersproject/properties\";\nexport class Wordlist {\n constructor(locale) {\n defineProperties(this, { locale });\n }\n // Subclasses may override this\n split(mnemonic) {\n return mnemonic.toLowerCase().split(/ +/g);\n }\n // Subclasses may override this\n join(words) {\n return words.join(\" \");\n }\n}\n//# sourceMappingURL=wordlist.js.map","// Use the encode-latin.js script to create the necessary\n// data files to be consumed by this class\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwl_instances, _WordlistOwl_data, _WordlistOwl_checksum, _WordlistOwl_words, _WordlistOwl_loadWords;\nimport { id } from \"@ethersproject/hash\";\nimport { decodeOwl } from \"./decode-owl.js\";\nimport { logger } from \"./logger.js\";\nimport { Wordlist } from \"./wordlist.js\";\nexport class WordlistOwl extends Wordlist {\n constructor(locale, data, checksum) {\n super(locale);\n _WordlistOwl_instances.add(this);\n _WordlistOwl_data.set(this, void 0);\n _WordlistOwl_checksum.set(this, void 0);\n _WordlistOwl_words.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwl_data, data, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_checksum, checksum, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_words, null, \"f\");\n }\n get _data() { return __classPrivateFieldGet(this, _WordlistOwl_data, \"f\"); }\n _decodeWords() {\n return decodeOwl(__classPrivateFieldGet(this, _WordlistOwl_data, \"f\"));\n }\n getWord(index) {\n const words = __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this);\n if (index < 0 || index >= words.length) {\n logger.throwArgumentError(`invalid word index: ${index}`, \"index\", index);\n }\n return words[index];\n }\n getWordIndex(word) {\n return __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this).indexOf(word);\n }\n}\n_WordlistOwl_data = new WeakMap(), _WordlistOwl_checksum = new WeakMap(), _WordlistOwl_words = new WeakMap(), _WordlistOwl_instances = new WeakSet(), _WordlistOwl_loadWords = function _WordlistOwl_loadWords() {\n if (__classPrivateFieldGet(this, _WordlistOwl_words, \"f\") == null) {\n const words = this._decodeWords();\n // Verify the computed list matches the official list\n const checksum = id(words.join(\"\\n\") + \"\\n\");\n /* c8 ignore start */\n if (checksum !== __classPrivateFieldGet(this, _WordlistOwl_checksum, \"f\")) {\n throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);\n }\n /* c8 ignore stop */\n __classPrivateFieldSet(this, _WordlistOwl_words, words, \"f\");\n }\n return __classPrivateFieldGet(this, _WordlistOwl_words, \"f\");\n};\n//# sourceMappingURL=wordlist-owl.js.map","import { WordlistOwl } from \"./wordlist-owl.js\";\nconst words = \"0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-EgSe0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-PM&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryFN Noc|PutQuirySSue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurEAyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOgAyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NNGradeHoldOnP Set1BOng::Rd3Ar~ow9UUngU`:3BraRo9NeO\";\nconst checksum = \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\";\nexport class LangEn extends WordlistOwl {\n constructor() { super(\"en\", words, checksum); }\n}\nexport const langEn = new LangEn();\n//# sourceMappingURL=lang-en.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","export const version = \"@ethersproject/wallet@6.0.0-beta.5\";\n//# sourceMappingURL=_version.js.map","import { langEn as en } from \"./lang-en.js\";\nexport const wordlists = Object.freeze({\n en\n});\n//# sourceMappingURL=wordlists-en.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwlA_accent;\nimport { WordlistOwl } from \"./wordlist-owl.js\";\nimport { decodeOwlA } from \"./decode-owla.js\";\nexport class WordlistOwlA extends WordlistOwl {\n constructor(locale, data, accent, checksum) {\n super(locale, data, checksum);\n _WordlistOwlA_accent.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwlA_accent, accent, \"f\");\n }\n get _accent() { return __classPrivateFieldGet(this, _WordlistOwlA_accent, \"f\"); }\n _decodeWords() {\n return decodeOwlA(this._data, this._accent);\n }\n}\n_WordlistOwlA_accent = new WeakMap();\n//# sourceMappingURL=wordlist-owla.js.map","import { decodeBits } from \"./bit-reader.js\";\nimport { decodeOwl } from \"./decode-owl.js\";\nexport function decodeOwlA(data, accents) {\n let words = decodeOwl(data).join(\",\");\n // Inject the accents\n accents.split(/,/g).forEach((accent) => {\n const match = accent.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);\n if (!match) {\n throw new Error(\"internal error parsing accents\");\n }\n let posOffset = 0;\n const positions = decodeBits(parseInt(match[3]), match[4]);\n const charCode = parseInt(match[2]);\n const regex = new RegExp(`([${match[1]}])`, \"g\");\n words = words.replace(regex, (all, letter) => {\n const rem = --positions[posOffset];\n if (rem === 0) {\n letter = String.fromCharCode(letter.charCodeAt(0), charCode);\n posOffset++;\n }\n return letter;\n });\n });\n return words.split(\",\");\n}\n//# sourceMappingURL=decode-owla.js.map","const Base64 = \")!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_\";\nexport function decodeBits(width, data) {\n const maxValue = (1 << width) - 1;\n const result = [];\n let accum = 0, bits = 0, flood = 0;\n for (let i = 0; i < data.length; i++) {\n // Accumulate 6 bits of data\n accum = ((accum << 6) | Base64.indexOf(data[i]));\n bits += 6;\n // While we have enough for a word...\n while (bits >= width) {\n // ...read the word\n const value = (accum >> (bits - width));\n accum &= (1 << (bits - width)) - 1;\n bits -= width;\n // A value of 0 indicates we exceeded maxValue, it\n // floods over into the next value\n if (value === 0) {\n flood += maxValue;\n }\n else {\n result.push(value + flood);\n flood = 0;\n }\n }\n }\n return result;\n}\n//# sourceMappingURL=bit-reader.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { pbkdf2, sha256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { langEn } from \"@ethersproject/wordlists\";\nimport { logger } from \"./logger.js\";\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits) {\n return ((1 << bits) - 1) << (8 - bits) & 0xff;\n}\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits) {\n return ((1 << bits) - 1) & 0xff;\n}\nfunction mnemonicToEntropy(mnemonic, wordlist = langEn) {\n logger.assertNormalize(\"NFKD\");\n if (wordlist == null) {\n wordlist = langEn;\n }\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0 || words.length < 12 || words.length > 24) {\n logger.throwArgumentError(\"invalid mnemonic length\", \"mnemonic\", \"[ REDACTED ]\");\n }\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) {\n logger.throwArgumentError(`invalid mnemonic word at index ${i}`, \"mnemonic\", \"[ REDACTED ]\");\n }\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n const entropyBits = 32 * words.length / 3;\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n logger.throwArgumentError(\"invalid mnemonic checksum\", \"mnemonic\", \"[ REDACTED ]\");\n }\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\nfunction entropyToMnemonic(entropy, wordlist = langEn) {\n if ((entropy.length % 4) || entropy.length < 16 || entropy.length > 32) {\n logger.throwArgumentError(\"invalid entropy size\", \"entropy\", \"[ REDACTED ]\");\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n const indices = [0];\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n remainingBits -= 8;\n // This byte will complete an 11-bit index\n }\n else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n remainingBits += 3;\n }\n }\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = parseInt(sha256(entropy).substring(2, 4), 16) & getUpperMask(checksumBits);\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n return wordlist.join(indices.map((index) => wordlist.getWord(index)));\n}\nconst _guard = {};\nexport class Mnemonic {\n constructor(guard, entropy, phrase, password, wordlist) {\n if (password == null) {\n password = \"\";\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n logger.assertPrivate(guard, _guard, \"Mnemonic\");\n defineProperties(this, { phrase, password, wordlist, entropy });\n }\n computeSeed() {\n const salt = toUtf8Bytes(\"mnemonic\" + this.password, UnicodeNormalizationForm.NFKD);\n return pbkdf2(toUtf8Bytes(this.phrase, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n }\n static fromPhrase(phrase, password, wordlist) {\n // Normalize the case and space; throws if invalid\n const entropy = mnemonicToEntropy(phrase, wordlist);\n phrase = entropyToMnemonic(logger.getBytes(entropy), wordlist);\n return new Mnemonic(_guard, entropy, phrase, password, wordlist);\n }\n static fromEntropy(_entropy, password, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n const phrase = entropyToMnemonic(entropy, wordlist);\n return new Mnemonic(_guard, hexlify(entropy), phrase, password, wordlist);\n }\n static entropyToPhrase(_entropy, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n return entropyToMnemonic(entropy, wordlist);\n }\n static phraseToEntropy(phrase, wordlist) {\n return mnemonicToEntropy(phrase, wordlist);\n }\n static isValidMnemonic(phrase, wordlist) {\n try {\n mnemonicToEntropy(phrase, wordlist);\n return true;\n }\n catch (error) { }\n return false;\n }\n}\n//# sourceMappingURL=mnemonic.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _BaseWallet_signingKey;\nimport { getAddress, resolveAddress } from \"@ethersproject/address\";\nimport { hashMessage, TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { AbstractSigner } from \"@ethersproject/providers\";\nimport { computeAddress, Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class BaseWallet extends AbstractSigner {\n constructor(privateKey, provider) {\n super(provider);\n _BaseWallet_signingKey.set(this, void 0);\n __classPrivateFieldSet(this, _BaseWallet_signingKey, privateKey, \"f\");\n const address = computeAddress(this.signingKey.publicKey);\n defineProperties(this, { address });\n }\n // Store these in getters to reduce visibility in console.log\n get signingKey() { return __classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"); }\n get privateKey() { return this.signingKey.privateKey; }\n async getAddress() { return this.address; }\n connect(provider) {\n return new BaseWallet(__classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"), provider);\n }\n async signTransaction(_tx) {\n // Replace any Addressable or ENS name with an address\n const tx = Object.assign({}, _tx, await resolveProperties({\n to: (_tx.to ? resolveAddress(_tx.to, this.provider) : undefined),\n from: (_tx.from ? resolveAddress(_tx.from, this.provider) : undefined)\n }));\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"tx.from\", _tx.from);\n }\n delete tx.from;\n }\n // Build the transaction\n const btx = Transaction.from(tx);\n btx.signature = this.signingKey.sign(btx.unsignedHash);\n return btx.serialized;\n }\n async signMessage(message) {\n return this.signingKey.sign(hashMessage(message)).serialized;\n }\n async signTypedData(domain, types, value) {\n // Populate any ENS names\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (name) => {\n if (this.provider == null) {\n return logger.throwError(\"cannot resolve ENS names without a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n info: { name }\n });\n }\n const address = await this.provider.resolveName(name);\n if (address == null) {\n return logger.throwError(\"unconfigured ENS name\", \"UNCONFIGURED_NAME\", {\n value: name\n });\n }\n return address;\n });\n return this.signingKey.sign(TypedDataEncoder.hash(populated.domain, types, populated.value)).serialized;\n }\n}\n_BaseWallet_signingKey = new WeakMap();\n//# sourceMappingURL=base-wallet.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _a, _HDNodeWallet_fromSeed, _HDNodeWalletManager_root;\nimport { arrayify, concat, dataSlice, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac, randomBytes, ripemd160, sha256 } from \"@ethersproject/crypto\";\nimport { decodeBase58, encodeBase58, toBigInt, toHex } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { VoidSigner } from \"@ethersproject/providers\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { langEn } from \"@ethersproject/wordlists/lib/lang-en.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nimport { BaseWallet } from \"./base-wallet.js\";\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n// \"Bitcoin seed\"\nconst MasterSecret = new Uint8Array([66, 105, 116, 99, 111, 105, 110, 32, 115, 101, 101, 100]);\nconst HardenedBit = 0x80000000;\nconst N = BigInt(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\nconst Nibbles = \"0123456789abcdef\";\nfunction zpad(value, length) {\n let result = \"\";\n while (value) {\n result = Nibbles[value % 16] + result;\n value = Math.trunc(value / 16);\n }\n while (result.length < length * 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction encodeBase58Check(_value) {\n const value = logger.getBytes(_value);\n const check = dataSlice(sha256(sha256(value)), 0, 4);\n const bytes = concat([value, check]);\n return encodeBase58(bytes);\n}\nconst _guard = {};\nfunction ser_I(index, chainCode, publicKey, privateKey) {\n const data = new Uint8Array(37);\n if (index & HardenedBit) {\n if (privateKey == null) {\n return logger.throwError(\"cannot derive child of neutered node\", \"UNSUPPORTED_OPERATION\", {\n operation: \"deriveChild\"\n });\n }\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(privateKey), 1);\n }\n else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(publicKey));\n }\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) {\n data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff);\n }\n const I = arrayify(computeHmac(\"sha512\", chainCode, data));\n return { IL: I.slice(0, 32), IR: I.slice(32) };\n}\nfunction derivePath(node, path) {\n const components = path.split(\"/\");\n if (components.length === 0 || (components[0] === \"m\" && node.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n if (components[0] === \"m\") {\n components.shift();\n }\n let result = node;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(HardenedBit + index);\n }\n else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(index);\n }\n else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n return result;\n}\nexport class HDNodeWallet extends BaseWallet {\n constructor(guard, signingKey, parentFingerprint, chainCode, path, index, depth, mnemonic, provider) {\n super(signingKey, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeWallet\");\n defineProperties(this, { publicKey: signingKey.compressedPublicKey });\n const fingerprint = dataSlice(ripemd160(sha256(this.publicKey)), 0, 4);\n defineProperties(this, {\n parentFingerprint, fingerprint,\n chainCode, path, index, depth\n });\n defineProperties(this, { mnemonic });\n }\n connect(provider) {\n return new HDNodeWallet(_guard, this.signingKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.mnemonic, provider);\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488ADE4\", zpad(this.depth, 1), this.parentFingerprint,\n zpad(this.index, 4), this.chainCode,\n concat([\"0x00\", this.privateKey])\n ]));\n }\n hasPath() { return (this.path != null); }\n neuter() {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.provider);\n }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, this.privateKey);\n const ki = new SigningKey(toHex((toBigInt(IL) + BigInt(this.privateKey)) % N, 32));\n return new HDNodeWallet(_guard, ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.mnemonic, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n static fromSeed(seed) {\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, seed, null);\n }\n static fromPhrase(phrase, password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromPhrase(phrase, password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromMnemonic(mnemonic, path = defaultPath) {\n if (!path) {\n path = defaultPath;\n }\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromExtendedKey(extendedKey) {\n const bytes = arrayify(decodeBase58(extendedKey)); // @TODO: redact\n if (bytes.length !== 82 || encodeBase58Check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[ REDACTED ]\");\n }\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\":\n case \"0x043587cf\": {\n const publicKey = hexlify(key);\n return new HDNodeVoidWallet(_guard, computeAddress(publicKey), publicKey, parentFingerprint, chainCode, null, index, depth, null);\n }\n // Private Key\n case \"0x0488ade4\":\n case \"0x04358394 \":\n if (key[0] !== 0) {\n break;\n }\n return new HDNodeWallet(_guard, new SigningKey(key.slice(1)), parentFingerprint, chainCode, null, index, depth, null, null);\n }\n return logger.throwArgumentError(\"invalid extended key prefix\", \"extendedKey\", \"[ REDACTED ]\");\n }\n static createRandom(password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromEntropy(randomBytes(16), password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n}\n_a = HDNodeWallet, _HDNodeWallet_fromSeed = function _HDNodeWallet_fromSeed(_seed, mnemonic) {\n const seed = logger.getBytes(_seed, \"seed\");\n if (seed.length < 16 || seed.length > 64) {\n throw new Error(\"invalid seed\");\n }\n const I = arrayify(computeHmac(\"sha512\", MasterSecret, seed));\n const signingKey = new SigningKey(hexlify(I.slice(0, 32)));\n return new HDNodeWallet(_guard, signingKey, \"0x00000000\", hexlify(I.slice(32)), \"m\", 0, 0, mnemonic, null);\n};\nexport class HDNodeVoidWallet extends VoidSigner {\n constructor(guard, address, publicKey, parentFingerprint, chainCode, path, index, depth, provider) {\n super(address, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeVoidWallet\");\n defineProperties(this, { publicKey });\n const fingerprint = dataSlice(ripemd160(sha256(publicKey)), 0, 4);\n defineProperties(this, {\n publicKey, fingerprint, parentFingerprint, chainCode, path, index, depth\n });\n }\n connect(provider) {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, provider);\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488B21E\",\n zpad(this.depth, 1),\n this.parentFingerprint,\n zpad(this.index, 4),\n this.chainCode,\n this.publicKey,\n ]));\n }\n hasPath() { return (this.path != null); }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, null);\n const Ki = SigningKey._addPoints(IL, this.publicKey, true);\n const address = computeAddress(Ki);\n return new HDNodeVoidWallet(_guard, address, Ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n}\nexport class HDNodeWalletManager {\n constructor(phrase, password = \"\", path = \"m/44'/60'/0'/0\", locale = langEn) {\n _HDNodeWalletManager_root.set(this, void 0);\n __classPrivateFieldSet(this, _HDNodeWalletManager_root, HDNodeWallet.fromPhrase(phrase, password, path, locale), \"f\");\n }\n getSigner(index = 0) {\n return __classPrivateFieldGet(this, _HDNodeWalletManager_root, \"f\").deriveChild(index);\n }\n}\n_HDNodeWalletManager_root = new WeakMap();\nexport function getAccountPath(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index < 0 || index >= HardenedBit) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${index}'/0/0`;\n}\n//# sourceMappingURL=hdwallet.js.map","/*! MIT License. Copyright 2015-2022 Richard Moore . See LICENSE.txt. */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AES_key, _AES_Kd, _AES_Ke;\n// Number of rounds by keysize\nconst numberOfRounds = { 16: 10, 24: 12, 32: 14 };\n// Round constant words\nconst rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n// S-box and Inverse S-box (S is for Substitution)\nconst S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\nconst Si = [0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n// Transformations for encryption\nconst T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\nconst T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\nconst T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\nconst T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n// Transformations for decryption\nconst T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\nconst T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\nconst T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\nconst T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n// Transformations for decryption key expansion\nconst U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\nconst U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\nconst U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\nconst U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\nfunction convertToInt32(bytes) {\n const result = [];\n for (let i = 0; i < bytes.length; i += 4) {\n result.push((bytes[i] << 24) | (bytes[i + 1] << 16) | (bytes[i + 2] << 8) | bytes[i + 3]);\n }\n return result;\n}\nexport class AES {\n constructor(key) {\n _AES_key.set(this, void 0);\n _AES_Kd.set(this, void 0);\n _AES_Ke.set(this, void 0);\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n __classPrivateFieldSet(this, _AES_key, new Uint8Array(key), \"f\");\n const rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new TypeError('invalid key size (must be 16, 24 or 32 bytes)');\n }\n // encryption round keys\n __classPrivateFieldSet(this, _AES_Ke, [], \"f\");\n // decryption round keys\n __classPrivateFieldSet(this, _AES_Kd, [], \"f\");\n for (let i = 0; i <= rounds; i++) {\n __classPrivateFieldGet(this, _AES_Ke, \"f\").push([0, 0, 0, 0]);\n __classPrivateFieldGet(this, _AES_Kd, \"f\").push([0, 0, 0, 0]);\n }\n const roundKeyCount = (rounds + 1) * 4;\n const KC = this.key.length / 4;\n // convert the key into ints\n const tk = convertToInt32(this.key);\n // copy values into round key arrays\n let index;\n for (let i = 0; i < KC; i++) {\n index = i >> 2;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[index][i % 4] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - index][i % 4] = tk[i];\n }\n // key expansion (fips-197 section 5.2)\n let rconpointer = 0;\n let t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (let i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n }\n else {\n for (let i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n tk[KC / 2] ^= (S[tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n for (let i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n // copy values into round key arrays\n let i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][c] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - r][c] = tk[i++];\n t++;\n }\n }\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (let r = 1; r < rounds; r++) {\n for (let c = 0; c < 4; c++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[tt & 0xFF]);\n }\n }\n }\n get key() { return __classPrivateFieldGet(this, _AES_key, \"f\").slice(); }\n encrypt(plaintext) {\n if (plaintext.length != 16) {\n throw new TypeError('invalid plaintext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Ke, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(plaintext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Ke, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T1[(t[i] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[t[(i + 3) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Ke, \"f\")[rounds][i];\n result[4 * i] = (S[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[t[(i + 3) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n decrypt(ciphertext) {\n if (ciphertext.length != 16) {\n throw new TypeError('invalid ciphertext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Kd, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(ciphertext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Kd, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let i = 0; i < 4; i++) {\n a[i] = (T5[(t[i] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[t[(i + 1) % 4] & 0xff] ^\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds][i];\n result[4 * i] = (Si[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[t[(i + 1) % 4] & 0xff] ^ tt) & 0xff;\n }\n return result;\n }\n}\n_AES_key = new WeakMap(), _AES_Kd = new WeakMap(), _AES_Ke = new WeakMap();\n//# sourceMappingURL=aes.js.map","import { AES } from \"./aes.js\";\nexport class ModeOfOperation {\n constructor(name, key, cls) {\n if (cls && !(this instanceof cls)) {\n throw new Error(`${name} must be instantiated with \"new\"`);\n }\n Object.defineProperties(this, {\n aes: { enumerable: true, value: new AES(key) },\n name: { enumerable: true, value: name }\n });\n }\n}\n//# sourceMappingURL=mode.js.map","// Cipher Block Chaining\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CBC_iv, _CBC_lastBlock;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CBC extends ModeOfOperation {\n constructor(key, iv) {\n super(\"ECC\", key, CBC);\n _CBC_iv.set(this, void 0);\n _CBC_lastBlock.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CBC_iv, \"f\")); }\n encrypt(plaintext) {\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext.length);\n for (let i = 0; i < plaintext.length; i += 16) {\n for (let j = 0; j < 16; j++) {\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] ^= plaintext[i + j];\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.aes.encrypt(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\")), \"f\");\n ciphertext.set(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\"), i);\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n const plaintext = new Uint8Array(ciphertext.length);\n for (let i = 0; i < ciphertext.length; i += 16) {\n const block = this.aes.decrypt(ciphertext.subarray(i, i + 16));\n for (let j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j];\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] = ciphertext[i + j];\n }\n }\n return plaintext;\n }\n}\n_CBC_iv = new WeakMap(), _CBC_lastBlock = new WeakMap();\n//# sourceMappingURL=mode-cbc.js.map","// Cipher Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CFB_instances, _CFB_iv, _CFB_shiftRegister, _CFB_shift;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CFB extends ModeOfOperation {\n constructor(key, iv, segmentSize = 8) {\n super(\"CFB\", key, CFB);\n _CFB_instances.add(this);\n _CFB_iv.set(this, void 0);\n _CFB_shiftRegister.set(this, void 0);\n // This library currently only handles byte-aligned segmentSize\n if (!Number.isInteger(segmentSize) || (segmentSize % 8)) {\n throw new TypeError(\"invalid segmentSize\");\n }\n Object.defineProperties(this, {\n segmentSize: { enumerable: true, value: segmentSize }\n });\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CFB_shiftRegister, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CFB_iv, \"f\")); }\n encrypt(plaintext) {\n if (8 * plaintext.length % this.segmentSize) {\n throw new TypeError(\"invalid plaintext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n ciphertext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (8 * ciphertext.length % this.segmentSize) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const plaintext = new Uint8Array(ciphertext);\n for (let i = 0; i < plaintext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return plaintext;\n }\n}\n_CFB_iv = new WeakMap(), _CFB_shiftRegister = new WeakMap(), _CFB_instances = new WeakSet(), _CFB_shift = function _CFB_shift(data) {\n const segmentSize = this.segmentSize / 8;\n // Shift the register\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").subarray(segmentSize));\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(data.subarray(0, segmentSize), 16 - segmentSize);\n};\n//# sourceMappingURL=mode-cfb.js.map","// Counter Mode\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CTR_remaining, _CTR_remainingIndex, _CTR_counter;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CTR extends ModeOfOperation {\n constructor(key, initialValue) {\n super(\"CTR\", key, CTR);\n // Remaining bytes for the one-time pad\n _CTR_remaining.set(this, void 0);\n _CTR_remainingIndex.set(this, void 0);\n // The current counter\n _CTR_counter.set(this, void 0);\n __classPrivateFieldSet(this, _CTR_counter, new Uint8Array(16), \"f\");\n __classPrivateFieldGet(this, _CTR_counter, \"f\").fill(0);\n __classPrivateFieldSet(this, _CTR_remaining, __classPrivateFieldGet(this, _CTR_counter, \"f\"), \"f\"); // This will be discarded immediately\n __classPrivateFieldSet(this, _CTR_remainingIndex, 16, \"f\");\n if (initialValue == null) {\n initialValue = 1;\n }\n if (typeof (initialValue) === \"number\") {\n this.setCounterValue(initialValue);\n }\n else {\n this.setCounterBytes(initialValue);\n }\n }\n get counter() { return new Uint8Array(__classPrivateFieldGet(this, _CTR_counter, \"f\")); }\n setCounterValue(value) {\n if (!Number.isInteger(value) || value < 0 || value > Number.MAX_SAFE_INTEGER) {\n throw new TypeError(\"invalid counter initial integer value\");\n }\n for (let index = 15; index >= 0; --index) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[index] = value % 256;\n value = Math.floor(value / 256);\n }\n }\n setCounterBytes(value) {\n if (value.length !== 16) {\n throw new TypeError(\"invalid counter initial Uint8Array value length\");\n }\n __classPrivateFieldGet(this, _CTR_counter, \"f\").set(value);\n }\n increment() {\n for (let i = 15; i >= 0; i--) {\n if (__classPrivateFieldGet(this, _CTR_counter, \"f\")[i] === 255) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i] = 0;\n }\n else {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i]++;\n break;\n }\n }\n }\n encrypt(plaintext) {\n var _a, _b;\n const crypttext = new Uint8Array(plaintext);\n for (let i = 0; i < crypttext.length; i++) {\n if (__classPrivateFieldGet(this, _CTR_remainingIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _CTR_remaining, this.aes.encrypt(__classPrivateFieldGet(this, _CTR_counter, \"f\")), \"f\");\n __classPrivateFieldSet(this, _CTR_remainingIndex, 0, \"f\");\n this.increment();\n }\n crypttext[i] ^= __classPrivateFieldGet(this, _CTR_remaining, \"f\")[__classPrivateFieldSet(this, _CTR_remainingIndex, (_b = __classPrivateFieldGet(this, _CTR_remainingIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return crypttext;\n }\n decrypt(ciphertext) {\n return this.encrypt(ciphertext);\n }\n}\n_CTR_remaining = new WeakMap(), _CTR_remainingIndex = new WeakMap(), _CTR_counter = new WeakMap();\n//# sourceMappingURL=mode-ctr.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\nimport { logger } from \"./logger.js\";\nexport function looseArrayify(hexString) {\n if (typeof (hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\nexport function zpad(value, length) {\n value = String(value);\n while (value.length < length) {\n value = '0' + value;\n }\n return value;\n}\nexport function getPassword(password) {\n if (typeof (password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\nexport function spelunk(object, _path) {\n const match = _path.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);\n if (match == null) {\n return logger.throwArgumentError(\"invalid path\", \"path\", _path);\n }\n const path = match[1];\n const type = match[3];\n const reqd = (match[4] === \"!\");\n let cur = object;\n for (const comp of path.toLowerCase().split('.')) {\n // Search for a child object with a case-insensitive matching key\n if (Array.isArray(cur)) {\n if (!comp.match(/^[0-9]+$/)) {\n break;\n }\n cur = cur[parseInt(comp)];\n }\n else if (typeof (cur) === \"object\") {\n let found = null;\n for (const key in cur) {\n if (key.toLowerCase() === comp) {\n found = cur[key];\n break;\n }\n }\n cur = found;\n }\n else {\n cur = null;\n }\n if (cur == null) {\n break;\n }\n }\n if (reqd && cur == null) {\n logger.throwArgumentError(\"missing required value\", \"path\", path);\n }\n if (type && cur != null) {\n if (type === \"int\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9]+$/)) {\n return parseInt(cur);\n }\n else if (Number.isSafeInteger(cur)) {\n return cur;\n }\n }\n if (type === \"number\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9.]*$/)) {\n return parseFloat(cur);\n }\n }\n if (type === \"data\") {\n if (typeof (cur) === \"string\") {\n return looseArrayify(cur);\n }\n }\n if (type === \"array\" && Array.isArray(cur)) {\n return cur;\n }\n if (type === typeof (cur)) {\n return cur;\n }\n logger.throwArgumentError(`wrong type found for ${type} `, \"path\", path);\n }\n return cur;\n}\n/*\nexport function follow(object: any, path: string): null | string {\n let currentChild = object;\n\n for (const comp of path.toLowerCase().split('/')) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comp) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n if (matchingChild === null) { return null; }\n\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// \"path/to/something:type!\"\nexport function followRequired(data: any, path: string): string {\n const value = follow(data, path);\n if (value != null) { return value; }\n return logger.throwArgumentError(\"invalid value\", `data:${ path }`,\n JSON.stringify(data));\n}\n*/\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes) {\n const bytes = logger.getBytes(randomBytes, \"randomBytes\");\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const value = hexlify(bytes);\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n//# sourceMappingURL=utils.js.map","import { CBC, pkcs7Strip } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { pbkdf2 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, looseArrayify, spelunk } from \"./utils.js\";\nexport function isCrowdsaleJson(json) {\n try {\n const data = JSON.parse(json);\n if (data.encseed) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\n// See: https://github.com/ethereum/pyethsaletool\nexport function decryptCrowdsaleJson(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n // Ethereum Address\n const address = getAddress(spelunk(data, \"ethaddr:string!\"));\n // Encrypted Seed\n const encseed = looseArrayify(spelunk(data, \"encseed:string!\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n // Decrypt the seed\n const aesCbc = new CBC(key, iv);\n const seed = pkcs7Strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n return { address, privateKey: id(seedHex) };\n}\n//# sourceMappingURL=json-crowdsale.js.map","export function pkcs7Pad(data) {\n const padder = 16 - (data.length % 16);\n const result = new Uint8Array(data.length + padder);\n result.set(data);\n for (let i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n}\nexport function pkcs7Strip(data) {\n if (data.length < 16) {\n throw new TypeError('PKCS#7 invalid length');\n }\n const padder = data[data.length - 1];\n if (padder > 16) {\n throw new TypeError('PKCS#7 padding byte out of range');\n }\n const length = data.length - padder;\n for (let i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new TypeError('PKCS#7 invalid padding byte');\n }\n }\n return new Uint8Array(data.subarray(0, length));\n}\n//# sourceMappingURL=padding.js.map","// Output Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _OFB_iv, _OFB_lastPrecipher, _OFB_lastPrecipherIndex;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class OFB extends ModeOfOperation {\n constructor(key, iv) {\n super(\"OFB\", key, OFB);\n _OFB_iv.set(this, void 0);\n _OFB_lastPrecipher.set(this, void 0);\n _OFB_lastPrecipherIndex.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.iv, \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 16, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _OFB_iv, \"f\")); }\n encrypt(plaintext) {\n var _a, _b;\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i++) {\n if (__classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.aes.encrypt(__classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")), \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 0, \"f\");\n }\n ciphertext[i] ^= __classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")[__classPrivateFieldSet(this, _OFB_lastPrecipherIndex, (_b = __classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n return this.encrypt(ciphertext);\n }\n}\n_OFB_iv = new WeakMap(), _OFB_lastPrecipher = new WeakMap(), _OFB_lastPrecipherIndex = new WeakMap();\n//# sourceMappingURL=mode-ofb.js.map","import { CTR } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256, pbkdf2, randomBytes, scrypt, scryptSync } from \"@ethersproject/crypto\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, spelunk, uuidV4, zpad } from \"./utils.js\";\nimport { version } from \"./_version.js\";\nconst defaultPath = \"m/44'/60'/0'/0/0\";\nexport function isKeystoreJson(json) {\n try {\n const data = JSON.parse(json);\n const version = ((data.version != null) ? parseInt(data.version) : 0);\n if (version === 3) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\nfunction decrypt(data, key, ciphertext) {\n const cipher = spelunk(data, \"crypto.cipher:string\");\n if (cipher === \"aes-128-ctr\") {\n const iv = spelunk(data, \"crypto.cipherparams.iv:data!\");\n const aesCtr = new CTR(key, iv);\n return hexlify(aesCtr.decrypt(ciphertext));\n }\n return logger.throwError(\"unsupported cipher\", \"UNSUPPORTED_OPERATION\", {\n operation: \"decrypt\"\n });\n}\nfunction getAccount(data, _key) {\n const key = logger.getBytes(_key);\n const ciphertext = spelunk(data, \"crypto.ciphertext:data!\");\n const computedMAC = hexlify(keccak256(concat([key.slice(16, 32), ciphertext]))).substring(2);\n if (computedMAC !== spelunk(data, \"crypto.mac:string!\").toLowerCase()) {\n return logger.throwArgumentError(\"incorrect password\", \"password\", \"[ REDACTED ]\");\n }\n const privateKey = decrypt(data, key.slice(0, 16), ciphertext);\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") {\n check = \"0x\" + check;\n }\n if (getAddress(check) !== address) {\n logger.throwArgumentError(\"keystore address/privateKey mismatch\", \"address\", data.address);\n }\n }\n const account = { address, privateKey };\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n const version = spelunk(data, \"x-ethers.version:string\");\n if (version === \"0.1\") {\n const mnemonicKey = key.slice(32, 64);\n const mnemonicCiphertext = spelunk(data, \"x-ethers.mnemonicCiphertext:data!\");\n const mnemonicIv = spelunk(data, \"x-ethers.mnemonicCounter:data!\");\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n account.mnemonic = {\n path: (spelunk(data, \"x-ethers.path:string\") || defaultPath),\n locale: (spelunk(data, \"x-ethers.locale:string\") || \"en\"),\n entropy: hexlify(arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext)))\n };\n }\n return account;\n}\nfunction getKdfParams(data) {\n const kdf = spelunk(data, \"crypto.kdf:string\");\n if (kdf && typeof (kdf) === \"string\") {\n const throwError = function (name, value) {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n };\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const N = spelunk(data, \"crypto.kdfparams.n:int!\");\n const r = spelunk(data, \"crypto.kdfparams.r:int!\");\n const p = spelunk(data, \"crypto.kdfparams.p:int!\");\n // Check for all required parameters\n if (!N || !r || !p) {\n return throwError(\"kdf\", kdf);\n }\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) {\n return throwError(\"N\", N);\n }\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n return throwError(\"dklen\", dkLen);\n }\n return { name: \"scrypt\", salt, N, r, p, dkLen: 64 };\n }\n else if (kdf.toLowerCase() === \"pbkdf2\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const prf = spelunk(data, \"crypto.kdfparams.prf:string!\");\n const algorithm = prf.split(\"-\").pop();\n if (algorithm !== \"sha256\" && algorithm !== \"sha512\") {\n return throwError(\"prf\", prf);\n }\n const count = spelunk(data, \"crypto.kdfparams.c:int!\");\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return { name: \"pbkdf2\", salt, count, dkLen, algorithm };\n }\n }\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\nexport function decryptKeystoreJsonSync(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = scryptSync(password, salt, N, r, p, dkLen);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport async function decryptKeystoreJson(json, _password, progress) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n if (progress) {\n progress(0);\n await stall(0);\n }\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n if (progress) {\n progress(1);\n await stall(0);\n }\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = await scrypt(password, salt, N, r, p, dkLen, progress);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nexport async function encryptKeystoreJson(account, password, options, progressCallback) {\n // Check the address matches the private key\n //if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n // throw new Error(\"address/privateKey mismatch\");\n //}\n // Check the mnemonic (if any) matches the private key\n /*\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n */\n // The options are optional, so adjust the call as needed\n if (typeof (options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n const privateKey = logger.getBytes(account.privateKey, \"privateKey\");\n const passwordBytes = getPassword(password);\n /*\n let mnemonic: null | Mnemonic = null;\n let entropy: Uint8Array = null\n let path: string = null;\n let locale: string = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n mnemonic = Mnemonic.from(\n }\n */\n // Check/generate the salt\n const salt = (options.salt != null) ? logger.getBytes(options.salt, \"options.slat\") : randomBytes(32);\n // Override initialization vector\n const iv = (options.iv != null) ? logger.getBytes(options.iv, \"options.iv\") : randomBytes(16);\n if (iv.length !== 16) {\n logger.throwArgumentError(\"invalid options.iv\", \"options.iv\", options.iv);\n }\n // Override the uuid\n const uuidRandom = (options.uuid != null) ? logger.getBytes(options.uuid, \"options.uuid\") : randomBytes(16);\n if (uuidRandom.length !== 16) {\n logger.throwArgumentError(\"invalid options.uuid\", \"options.uuid\", options.iv);\n }\n if (uuidRandom.length !== 16) {\n throw new Error(\"invalid uuid\");\n }\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) {\n N = options.scrypt.N;\n }\n if (options.scrypt.r) {\n r = options.scrypt.r;\n }\n if (options.scrypt.p) {\n p = options.scrypt.p;\n }\n }\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n const _key = await scrypt(passwordBytes, salt, N, r, p, 64, progressCallback);\n const key = arrayify(_key);\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n // Encrypt the private key\n const aesCtr = new CTR(derivedKey, iv);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]));\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n Crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (account.mnemonic) {\n const client = (options.client != null) ? options.client : `ethers/${version}`;\n const path = account.mnemonic.path || defaultPath;\n const locale = account.mnemonic.locale || \"en\";\n const mnemonicKey = key.slice(32, 64);\n const entropy = logger.getBytes(account.mnemonic.entropy, \"account.mnemonic.entropy\");\n const mnemonicIv = randomBytes(16);\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\");\n const gethFilename = (\"UTC--\" + timestamp + \"--\" + data.address);\n data[\"x-ethers\"] = {\n client, gethFilename, path, locale,\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n version: \"0.1\"\n };\n }\n return JSON.stringify(data);\n}\n//# sourceMappingURL=json-keystore.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Wallet_mnemonic;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { randomBytes } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { BaseWallet } from \"./base-wallet.js\";\nimport { HDNodeWallet } from \"./hdwallet.js\";\nimport { decryptCrowdsaleJson, isCrowdsaleJson } from \"./json-crowdsale.js\";\nimport { decryptKeystoreJson, decryptKeystoreJsonSync, isKeystoreJson } from \"./json-keystore.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nfunction tryWallet(value) {\n try {\n if (!value || !value.signingKey) {\n return null;\n }\n const key = trySigningKey(value.signingKey);\n if (key == null || computeAddress(key.publicKey) !== value.address) {\n return null;\n }\n if (value.mnemonic) {\n const wallet = HDNodeWallet.fromMnemonic(value.mnemonic);\n if (wallet.privateKey !== key.privateKey) {\n return null;\n }\n }\n return value;\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\n// Try using value as mnemonic to derive the defaultPath HDodeWallet\nfunction tryMnemonic(value) {\n try {\n if (value == null || typeof (value.phrase) !== \"string\" ||\n typeof (value.password) !== \"string\" ||\n value.wordlist == null) {\n return null;\n }\n return HDNodeWallet.fromPhrase(value.phrase, value.password, null, value.wordlist);\n }\n catch (error) {\n console.log(error);\n }\n return null;\n}\nfunction trySigningKey(value) {\n try {\n if (!value || !isHexString(value.privateKey, 32)) {\n return null;\n }\n const key = value.privateKey;\n if (SigningKey.computePublicKey(key) !== value.publicKey) {\n return null;\n }\n return new SigningKey(key);\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport class Wallet extends BaseWallet {\n constructor(key, provider) {\n let signingKey = null;\n let mnemonic = null;\n // A normal private key\n if (typeof (key) === \"string\") {\n signingKey = new SigningKey(key);\n }\n // Try Wallet\n if (signingKey == null) {\n const wallet = tryWallet(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // Try Mnemonic, with the defaultPath wallet\n if (signingKey == null) {\n const wallet = tryMnemonic(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // A signing key\n if (signingKey == null) {\n signingKey = trySigningKey(key);\n }\n if (signingKey == null) {\n logger.throwArgumentError(\"invalid key\", \"key\", \"[ REDACTED ]\");\n }\n super(signingKey, provider);\n _Wallet_mnemonic.set(this, void 0);\n __classPrivateFieldSet(this, _Wallet_mnemonic, mnemonic, \"f\");\n }\n // Store this in a getter to reduce visibility in console.log\n get mnemonic() { return __classPrivateFieldGet(this, _Wallet_mnemonic, \"f\"); }\n connect(provider) {\n return new Wallet(this, provider);\n }\n async encrypt(password, options, progressCallback) {\n throw new Error(\"TODO\");\n }\n encryptSync(password, options) {\n throw new Error(\"TODO\");\n }\n static async fromEncryptedJson(json, password, progress) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = await decryptKeystoreJson(json, password, progress);\n }\n else if (isCrowdsaleJson(json)) {\n if (progress) {\n progress(0);\n await stall(0);\n }\n account = decryptCrowdsaleJson(json, password);\n if (progress) {\n progress(1);\n await stall(0);\n }\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static fromEncryptedJsonSync(json, password) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = decryptKeystoreJsonSync(json, password);\n }\n else if (isCrowdsaleJson(json)) {\n account = decryptCrowdsaleJson(json, password);\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static createRandom(provider, password, wordlist) {\n return new Wallet(Mnemonic.fromEntropy(randomBytes(16), password, wordlist), provider);\n }\n static fromMnemonic(mnemonic, provider) {\n return new Wallet(mnemonic, provider);\n }\n static fromPhrase(phrase, provider, password = \"\", wordlist) {\n return new Wallet(Mnemonic.fromPhrase(phrase, password, wordlist), provider);\n }\n}\n_Wallet_mnemonic = new WeakMap();\n//# sourceMappingURL=wallet.js.map","export const version = \"ethers@6.0.0-beta.6\";\n//# sourceMappingURL=_version.js.map"],"names":["async","resolveProperties","value","keys","Object","Promise","all","map","k","resolve","reduce","accum","v","index","checkType","type","types","split","t","trim","i","length","Error","defineProperties","target","values","defaults","key","fallback","undefined","defineProperty","enumerable","writable","_EventPayload_listener","__classPrivateFieldSet","this","receiver","state","kind","f","TypeError","has","call","set","__classPrivateFieldGet","get","EventPayload","constructor","emitter","listener","filter","off","getStore","store","setStore","isFrozen","isError","error","code","isCallException","WeakMap","_Logger_instances","_Logger_getBytes","_Logger_log","LogLevel","LogLevels","debug","default","info","warning","_logLevel","_globalLogger","_normalizeForms","form","normalize","check","String","fromCharCode","push","defineReadOnly","object","name","maxValue","ErrorConstructors","INVALID_ARGUMENT","NUMERIC_FAULT","RangeError","BUFFER_OVERRUN","Logger","version","add","makeError","message","details","JSON","stringify","join","throwError","throwArgumentError","argument","assert","condition","assertArgument","assertIntegerArgument","lower","upper","Number","isInteger","assertSafeUint53","operation","fault","assertNormalize","indexOf","assertPrivate","givenGuard","guard","className","method","assertArgumentCount","count","expectedCount","getBytes","getBytesCopy","getNumber","BigInt","e","getBigInt","args","DEBUG","INFO","warn","WARNING","static","logLevel","level","toLowerCase","globalLogger","WeakSet","copy","Uint8Array","match","result","offset","parseInt","substring","console","log","apply","logger","_TokenString_instances","_TokenString_offset","_TokenString_tokens","_TokenString_subTokenString","_ParamType_instances","_ParamType_walkAsync","FormatType","setify","items","Set","forEach","freeze","_kwVisib","KwVisib","_kwTypes","KwTypes","_kwModifiers","KwModifiers","Keywords","SimpleTokens","regexWhitespace","RegExp","regexNumber","regexIdentifier","regexType","TokenString","tokens","slice","clone","reset","popKeyword","allowed","top","peek","text","pop","popType","popParen","popParams","link","linkNext","peekKeyword","peekType","_a","toString","token","lex","brackets","commas","cur","depth","linkBack","suffix","allowSingle","included","consumeName","keyword","consumeKeywords","keywords","consumeParams","allowIndexed","ParamType","fromTokens","consumeGas","consumeEoi","from","to","assign","regexArrayType","verifyBasicType","size","_guard","internal","Symbol","for","ParamTypeInternal","baseType","indexed","components","arrayLength","arrayChildren","format","sighash","json","isTuple","c","parse","isArray","comp","full","isIndexable","walk","process","Array","promises","obj","isParamType","arrayMatch","comps","bracket","FragmentType","setValue","childType","param","then","Fragment","inputs","fromString","fromObject","ConstructorFragment","ErrorFragment","EventFragment","FunctionFragment","StructFragment","NamedFragment","super","joinParams","params","p","input","anonymous","event","payable","gas","stateMutability","outputs","function","constant","o","mutability","modifiers","consumeMutability","struct","nibbles","BN_0","toBigInt","_value","toNumber","toHex","_width","width","toArray","hex","BN_1","fromTwos","toTwos","mask","_bits","bits","_FixedNumber_instances","_FixedNumber_value","_FixedNumber_checkFormat","_constructorGuard","NegativeOne","throwFault","zeros","getMultiplier","decimals","formatFixed","_decimals","multiplier","multiplierStr","negative","fraction","parseFixed","whole","wei","FixedFormat","constructorGuard","signed","_multiplier","defaultValue","FixedNumber","_isFixedNumber","addUnsafe","other","a","b","fromValue","subUnsafe","mulUnsafe","divUnsafe","floor","hasFraction","isNegative","ONE","toFormat","ceiling","round","factor","bump","BUMP","isZero","toHexString","toUnsafeFloat","parseFloat","fixedFormat","numeric","decimal","fromBytes","Alphabet","Lookup","getAlpha","letter","BN_58","encodeBase58","decodeBase58","names","formatUnits","unit","parseUnits","formatEther","parseEther","ether","isHexString","isBytesLike","BN_8","BN_255","arrayify","data","unshift","_noCopyArrayify","decodeBase64","textData","Buffer","encodeBase64","HexCharacters","hexlify","bytes","quantity","concat","datas","d","dataLength","dataSlice","start","end","buffer","stripZerosLeft","zeroPad","left","fill","zeroPadValue","zeroPadBytes","_Result_instances","_Result_indices","_Result_throwError","_Writer_instances","_Writer_data","_Writer_dataLength","_Writer_writeData","_Reader_instances","_Reader_data","_Reader_offset","_Reader_peekBytes","WordSize","Padding","passProperties","Result","Map","Proxy","prop","item","Reflect","getValue","wrapped","Coder","localName","dynamic","_throwError","Writer","appendWriter","writer","writeBytes","paddingOffset","writeValue","writeUpdatableValue","Reader","allowLoose","consumed","subReader","readBytes","loose","readValue","readIndex","alignedLength","Math","ceil","u32","arr","Uint32Array","byteOffset","byteLength","createView","DataView","rotr","word","shift","padStart","nextTick","nodeRequire","module","require","bind","setImmediate","setTimeout","asyncLoop","iters","tick","cb","ts","Date","now","diff","toBytes","str","TextEncoder","encode","utf8ToBytes","assertNumber","n","isSafeInteger","assertHash","hash","create","outputLen","blockLen","Hash","_cloneInto","checkOpts","def","_opts","prototype","wrapConstructor","hashConstructor","hashC","update","digest","tmp","HMAC","_key","finished","destroyed","iHash","pad","oHash","buf","digestInto","out","destroy","getPrototypeOf","hmac","pbkdf2","password","salt","opts","dkLen","DK","PRF","PRFSalt","_password","_salt","asyncTick","pbkdf2Init","prfW","view","u","ti","pos","Ti","subarray","setInt32","ui","pbkdf2Output","SHA2","padOffset","isLE","len","take","min","dataView","roundClean","setBigUint64","_32n","_u32_max","wh","wl","h","l","setUint32","oview","res","Chi","Maj","SHA256_K","IV","SHA256_W","SHA256","A","B","C","D","E","F","G","H","getUint32","W15","W2","s0","s1","T1","T2","sha256","U32_MASK64","fromBig","le","lst","Ah","Al","shrSH","s","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","SHA512_Kh","SHA512_Kl","u64.split","SHA512_W_H","SHA512_W_L","SHA512","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","u64.rotrSH","u64.shrSH","s0l","u64.rotrSL","u64.shrSL","W2h","W2l","s1h","u64.rotrBH","s1l","u64.rotrBL","SUMl","u64.add4L","SUMh","u64.add4H","sigma1h","sigma1l","CHIh","T1ll","u64.add5L","T1h","u64.add5H","T1l","sigma0h","sigma0l","MAJh","MAJl","u64.add","All","u64.add3L","u64.add3H","SHA512_256","SHA384","sha512","anyGlobal","self","window","global","getGlobal","crypto","msCrypto","createHash","algo","locked","_computeHmac","algorithm","_algo","createHmac","__computeHmac","computeHmac","_data","_","lock","register","func","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","R","x","y","j","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","u64.rotlBH","u64.rotlSH","rotlL","u64.rotlBL","u64.rotlSL","Keccak","enableXOF","rounds","posOut","state32","keccak","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","keccakP","finish","writeInto","xofInto","xof","gen","keccak_256","genShake","hashCons","msg","wrapConstructorWithOpts","_keccak256","__keccak256","keccak256","Rho","Id","Pi","idxL","idxR","shifts","shiftsL","idx","shiftsR","Kl","Kr","rotl","group","z","BUF","RIPEMD160","h0","h1","h2","h3","h4","al","ar","bl","br","cl","cr","dl","dr","el","er","rGroup","hbl","hbr","rl","rr","sl","sr","tl","tr","ripemd160","_ripemd160","noble_ripemd160","__ripemd160","_pbkdf2","iterations","keylen","pbkdf2Sync","__pbkdf2","_randomBytes","getRandomValues","crypto_random","__randomBytes","randomBytes","XorAndSalsa","prev","pi","ii","oi","y00","y01","y02","y03","y04","y05","y06","y07","y08","y09","y10","y11","y12","y13","y14","y15","x00","x01","x02","x03","x04","x05","x06","x07","x08","x09","x10","x11","x12","x13","x14","x15","BlockMix","r","head","tail","scryptInit","maxmem","N","onProgress","blockSize","blockSize32","memUsed","B32","V","blockMixCb","totalBlockMix","callbackPer","max","blockMixCnt","scryptOutput","lockedSync","lockedAsync","_scryptAsync","passwd","_nobleAsync","_scryptSync","_nobleSync","__scryptAsync","__scryptSync","scrypt","_passwd","progress","scryptSync","_sha256","_sha512","__sha256","__sha512","locked256","locked512","BN_36","getChecksumAddress","address","chars","expanded","charCodeAt","hashed","toUpperCase","ibanLookup","ibanChecksum","block","checksum","Base36","getAddress","fromBase36","getIcapAddress","base36","arrayifyInteger","_encode","payload","child","encodeRlp","hexlifyByte","unarrayifyInteger","_decodeChildren","childOffset","decoded","_decode","checkOffset","lengthLength","decodeRlp","getCreateAddress","tx","nonceHex","nonce","getCreate2Address","_from","_initCodeHash","initCodeHash","isAddressable","isAddress","resolveAddress","resolver","resolveName","_Typed_options","_gaurd","Typed","_typedSymbol","gaurd","options","minValue","isBigInt","isData","isString","tupleName","isTyped","AddressCoder","dereference","decode","reader","AnonymousCoder","coder","pack","coders","arrayValues","unique","staticWriter","dynamicWriter","updateFuncs","dynamicOffset","updateFunc","baseOffset","unpack","baseReader","offsetReader","fromItems","ArrayCoder","defaultChild","BooleanCoder","DynamicBytesCoder","BytesCoder","FixedBytesCoder","Empty","NullCoder","BN_MAX_UINT256","NumberCoder","maxUintValue","bounds","UnicodeNormalizationForm","Utf8ErrorReason","ignoreFunc","reason","output","badCodepoint","BAD_PREFIX","UNEXPECTED_CONTINUE","OVERRUN","exports","Utf8ErrorFuncs","ignore","replace","OVERLONG","getUtf8CodePoints","_bytes","onError","extraLength","overlongMask","nextChar","MISSING_CONTINUE","OUT_OF_RANGE","UTF16_SURROGATE","toUtf8Bytes","current","c2","pair","escapeChar","_toEscapedUtf8String","codePoint","_toUtf8String","codePoints","toUtf8String","toUtf8CodePoints","formatBytes32String","parseBytes32String","createTable","_func","lo","createRangeTable","hi","matchMap","ranges","range","Table_A_1_ranges","Table_B_1_flags","Table_B_2_ranges","Table_B_2_lut_abs","Table_B_2_lut_rel","Table_B_2_complex","Table_C_ranges","nameprep","codes","codesTableB2","codepoint","_nameprepTableB2","NFKC","StringCoder","TupleCoder","uniqueNames","_AbiCoder_instances","_AbiCoder_getCoder","paramTypeBytes","paramTypeNumber","defaultAbiCoder","getDefaultValue","id","Zeros","Partition","isValidName","namehash","partition","dnsEncode","messagePrefix","hashMessage","regexBytes","regexArray","_pack","solidityPacked","tight","solidityPackedKeccak256","solidityPackedSha256","_TypedDataEncoder_instances","_TypedDataEncoder_types","_TypedDataEncoder_fullTypes","_TypedDataEncoder_encoderCache","_TypedDataEncoder_getEncoder","padding","BN__1","hexTrue","hexFalse","domainFieldTypes","chainId","verifyingContract","domainFieldNames","checkString","domainChecks","getBaseEncoder","boundsUpper","boundsLower","hexPadRight","encodeType","fields","TypedDataEncoder","links","parents","subtypes","field","primaryTypes","primaryType","checkCircular","found","subtype","delete","st","sort","getEncoder","encoder","encodeData","hashStruct","_visit","callback","visit","domain","domainFields","EIP712Domain","hashDomain","ensCache","domainValues","domainTypes","typesWithDomain","subEncoder","encodedType","_Interface_instances","_Interface_errors","_Interface_events","_Interface_functions","_Interface_abiCoder","_Interface_getFunction","_Interface_getEvent","LogDescription","fragment","topic","signature","TransactionDescription","selector","ErrorDescription","Indexed","_isIndexed","PanicReasons","BuiltinErrors","Interface","fragments","abi","getAbiCoder","bucket","deploy","getFunctionName","getFunction","getEventName","getEvent","getError","getSelector","matching","getEventTopic","_decodeParams","_encodeParams","encodeDeploy","decodeErrorResult","encodeErrorResult","decodeFunctionData","encodeFunctionData","decodeFunctionResult","errorArgs","errorName","errorSignature","builtin","transaction","encodeFunctionResult","functionFragment","encodeFilterTopics","eventFragment","topics","encodeTopic","encodeEventLog","dataTypes","dataValues","decodeEventLog","eventTopic","nonIndexed","resultIndexed","resultNonIndexed","nonIndexedIndex","indexedIndex","parseTransaction","parseLog","parseError","hexData","forceUnique","lastValue","valueLength","allowOptions","splice","lastArg","matchStr","m","_FetchResponse_props","_FetchResponse_error","FetchResponse","statusCode","statusMessage","headers","body","request","bodyText","response","bodyJson","iterator","next","done","makeServerError","throwThrottleError","stall","throttle","getHeader","hasBody","ok","assertOk","getUrl","req","timeout","protocol","url","credentials","allowInsecureAuthentication","init","Headers","resp","fetch","arrayBuffer","status","statusText","_FetchRequest_props","FetchRequest","allowInsecure","gzip","bodyType","allowGzip","setHeader","clearHeaders","setCredentials","username","redirect","location","delay","duration","getTime","lockGateways","fetchData","connection","conn","attempts","throttleLimit","slotInterval","throttleSlotInterval","retryFunc","throttleRetry","preflightRequest","processResponse","t0","retryAfter","trunc","random","pow","setGateway","gateway","setIpfsGateway","setArGateway","_EnsResolver_supports2544","_EnsResolver_getResolver","HashZero","parseBytes","parseString","numPad","padded","bytesPad","encodeBytes","byteCount","getIpfsLink","MulticoinProviderPlugin","validate","proivder","supportsCoinType","coinType","matcherIpfs","matchers","EnsResolver","provider","catch","parameters","addrData","enableCcipRead","supportsWildcard","_fetch","getNetwork","formatter","callAddress","coinPlugin","plugin","plugins","encodeAddress","keyBytes","calldata","hexBytes","ipfs","scheme","swarm","_getAvatar","linkage","avatar","getText","owner","addr","tokenId","tokenOwner","balance","metadataUrl","metadata","imageUrl","image","currentName","network","ensPlugin","getPlugin","_Signature_props","BN_2","BN_27","BN_28","BN_35","Zero","Signature","networkV","legacyChainId","getChainId","yParity","yParityAndS","compactSerialized","serialized","toJSON","_type","bv","sig","getNormalizedV","_v","_3n","_8n","POW_2_256","CURVE","P","Gx","Gy","beta","weistrass","x2","mod","x3","USE_ENDOMORPHISM","JacobianPoint","Point","points","toInv","nums","scratch","inverted","invert","acc","num","reduceRight","invertBatch","toAffine","toAffineBatch","fromAffine","equals","X1","Y1","Z1","X2","Y2","Z2","Z1Z1","Z2Z2","U1","U2","S1","S2","negate","double","X3","Y3","Z3","ZERO","HH","HHH","subtract","multiplyUnsafe","scalar","normalizeScalar","P0","k1neg","k1","k2neg","k2","splitScalarEndo","k1p","k2p","precomputeWindow","W","windows","base","wNAF","affinePoint","BASE","_WINDOW_SIZE","precomputes","pointPrecomputes","normalizeZ","windowSize","maxNumber","shiftBy","wbits","pr","cached","abs","multiply","point","fake","f1p","f2p","invZ","iz1","iz2","iz3","ax","ay","_setWindowSize","isShort","bytesToNumber","isValidFieldElement","_6n","_11n","_22n","_23n","_44n","_88n","b2","b3","b6","pow2","b9","b11","b22","b44","b88","b176","b220","b223","t1","t2","sqrtMod","isYOdd","assertValidity","ensureBytes","header","fromCompressedHex","fromUncompressedHex","privateKey","normalizePrivateKey","msgHash","recovery","delta","truncateHash","fromDER","fromCompact","normalizeSignature","prefix","fromHex","numTo32bStr","rinv","u1","u2","Q","multiplyAndAddUnsafe","toRawBytes","isCompressed","hexToBytes","toHexX","toRawX","aP","bQ","sum","sliceDER","parseDERInt","bytesToHex","isUint8a","hexToNumber","sBytes","rBytesLeft","parseDERSignature","isWithinCurveOrder","hasHighS","HALF","normalizeS","toDERRawBytes","toDERHex","sHex","numberToHexUnpadded","rHex","rLen","sLen","toCompactRawBytes","toCompactHex","concatBytes","arrays","every","hexes","uint8a","array","hexByte","byte","isNaN","power","number","modulo","divNearest","POW_2_128","a1","b1","a2","c1","HmacDrbg","counter","utils","hmacSha256","hmacSync","hmacSha256Sync","incr","seed","reseedSync","generateSync","kmdToSig","kBytes","q","isPub","getSharedSecret","privateA","publicB","publicKey","bits2int","bits2octets","z1","z2","int2octets","signSync","privKey","extraEntropy","seedArgs","initSigArgs","drbg","recSig","canonical","der","recovered","finalizeSig","node","web","isValidPrivateKey","hashToPrivateKey","numTo32b","bytesLength","randomPrivateKey","subtle","messages","ckey","importKey","sign","sha256Sync","precompute","_SigningKey_privateKey","SigningKey","computePublicKey","compressedPublicKey","sigDer","recid","secp256k1.signSync","secp256k1.Signature","computeShardSecret","pubKey","secp256k1.getSharedSecret","compressed","fromPrivateKey","secp256k1.getPublicKey","pub","secp256k1.Point","fromSignature","secp256k1.recoverPublicKey","p0","p1","pub0","pub1","accessSetify","storageKeys","storageKey","accessListify","localeCompare","computeAddress","recoverAddress","recoverPublicKey","_Transaction_props","BN_MAX_UINT","handleAddress","handleData","handleAccessList","handleNumber","handleUint","formatNumber","formatAccessList","_serializeLegacy","gasPrice","gasLimit","legacy","getChainIdV","_parseEipSignature","serialize","_serializeEip1559","maxPriorityFeePerGas","maxFeePerGas","accessList","_serializeEip2930","Transaction","typeName","unsignedHash","unsignedSerialized","fromPublicKey","isSigned","inferTypes","hasGasPrice","hasFee","hasAccessList","isLegacy","isBerlin","isLondon","_parseLegacy","_parseEip2930","_parseEip1559","_Block_transactions","_TransactionReceipt_logs","toJson","FeeData","Block","dummyProvider","transactions","timestamp","parentHash","difficulty","gasUsed","miner","extraData","baseFeePerGas","date","getTransaction","isMined","orphanedEvent","orphan","Log","transactionHash","blockHash","blockNumber","removed","transactionIndex","getBlock","getTransactionReceipt","removedEvent","TransactionReceipt","logs","contractAddress","logsBloom","cumulativeGasUsed","effectiveGasPrice","byzantium","root","fee","getBlockNumber","createRemovedTransactionFilter","reorderedEvent","createReorderedTransactionFilter","TransactionResponse","confirms","waitForTransaction","fail","blockTag","position","signedTx","blockHashOrBlockTag","_Formatter_format","_Formatter_baseBlock","Formatter","bigNumber","uint256","arrayOf","fromBlock","allowNull","toBlock","transactionRequest","transactionResponse","blockWithTransactions","boolean","receipt","filterLog","allowFalsish","ifFalse","ifNull","_hexstring","dataOrLength","altNames","srcKey","altKey","nv","storageSlot","NetworkPlugin","GasCostPlugin","effectiveBlock","costs","props","nullish","EnsPlugin","targetNetwork","MaxPriorityFeePlugin","priorityFee","_Network_props","Networks","defaultFormatter","Network","_chainId","attachPlugin","getPlugins","basename","computeIntrinsicGas","txBase","txCreate","txDataZero","txDataNonzero","txAccessListAddress","txAccessListStorageKey","networkFunc","custom","ensAddress","ensNetwork","nameOrChainId","existing","_PollingBlockSubscriber_instances","_PollingBlockSubscriber_provider","_PollingBlockSubscriber_poller","_PollingBlockSubscriber_interval","_PollingBlockSubscriber_blockNumber","_PollingBlockSubscriber_poll","_OnBlockSubscriber_provider","_OnBlockSubscriber_poll","_PollingOrphanSubscriber_filter","_PollingTransactionSubscriber_hash","_PollingEventSubscriber_instances","_PollingEventSubscriber_provider","_PollingEventSubscriber_filter","_PollingEventSubscriber_poller","_PollingEventSubscriber_blockNumber","_PollingEventSubscriber_poll","PollingBlockSubscriber","pollingInterval","_setTimeout","stop","_clearTimeout","pause","dropWhilePaused","resume","emit","OnBlockSubscriber","_poll","on","PollingOrphanSubscriber","PollingTransactionSubscriber","PollingEventSubscriber","getLogs","_AbstractProvider_instances","_AbstractProvider_subs","_AbstractProvider_plugins","_AbstractProvider_pausedState","_AbstractProvider_networkPromise","_AbstractProvider_anyNetwork","_AbstractProvider_performCache","_AbstractProvider_nextTimer","_AbstractProvider_timers","_AbstractProvider_disableCcipRead","_AbstractProvider_perform","_AbstractProvider_call","_AbstractProvider_getBlock","_AbstractProvider_hasSub","_AbstractProvider_getSub","getTag","UnmanagedSubscriber","concisify","getSubscription","_event","tag","addresses","addAddress","AbstractProvider","_network","disableCcipRead","urls","sender","errorMessages","href","errorMessage","_wrapTransaction","_detectNetwork","detectNetwork","networkPromise","expected","actual","priorityFeePlugin","getPriorityFee","_request","_tx","_getTransaction","_getBlockTag","_address","_blockTag","_position","lookup","addBlockTag","_filter","_getFilter","_getProvider","fromName","getResolver","getAvatar","reject","timer","clearTimeout","once","timerId","_b","paused","time","_forEachSubscriber","sub","subscriber","_getSubscriber","_recoverSubscriber","oldSub","newSub","started","listeners","total","removeAllListeners","_parseString","_parseBytes","perform","_perform","attempt","txSender","ccipArgs","urlsOffset","urlsLength","urlsData","parseOffchainLookup","ccipResult","ccipReadFetch","includeTransactions","emitArgs","subscription","addressableMap","nameMap","empty","_AbstractSigner_instances","_AbstractSigner_checkProvider","_AbstractSigner_fromify","_VoidSigner_instances","_VoidSigner_throwUnsupported","_WrappedSigner_signer","AbstractSigner","getBalanceOf","getTransactionCountOf","estimateGas","getTransactionCount","txObj","populateTransaction","broadcastTransaction","signTransaction","actions","VoidSigner","connect","WrappedSigner","signer","sendTransaction","signMessage","signTypedData","shown","showThrottleMessage","service","_FilterIdSubscriber_instances","_FilterIdSubscriber_provider","_FilterIdSubscriber_filterIdPromise","_FilterIdSubscriber_poller","_FilterIdSubscriber_network","_FilterIdSubscriber_poll","_FilterIdSubscriber_teardown","_FilterIdEventSubscriber_event","FilterIdSubscriber","_subscribe","_emitResults","_recover","filterId","send","filterIdPromise","FilterIdEventSubscriber","results","FilterIdPendingSubscriber","_JsonRpcApiProvider_nextId","_JsonRpcApiProvider_options","_JsonRpcProvider_connect","_JsonRpcProvider_pollingInterval","Primitive","deepCopy","getLowerCase","defaultOptions","polling","batchMaxSize","batchStallTime","JsonRpcSigner","getFeeData","_to","hexTx","getRpcTransaction","sendUncheckedTransaction","timeouts","checkTx","_message","populated","resolveNames","getPayload","JsonRpcApiProvider","_getOptions","_setOptions","prepareRequest","jsonrpc","accounts","account","dstKey","getRpcRequest","signedTransaction","getRpcError","spelunkData","_spelunkMessage","spelunkMessage","feeData","JsonRpcProvider","isPollable","StaticJsonRpcProvider","defaultApiKey","AnkrProvider","apiKey","getConnection","getHost","isCommunityResource","AlchemyProvider","CloudflareProvider","EtherscanPluginId","EtherscanProvider","communityApiKey","getBaseUrl","baseUrl","query","getPostUrl","getPostData","apikey","post","_getTransactionPostData","maxFeePerGs","_checkError","action","txhash","postData","ethusd","defaultProjectId","InfuraProvider","projectId","projectSecret","defaultAppIds","homestead","ropsten","rinkeby","goerli","normalizeApiKey","_appId","applicationSecretKey","loadBalancer","community","applicationId","PocketProvider","_secretKey","_loadBalancer","_FallbackProvider_instances","_FallbackProvider_configs","_FallbackProvider_height","_FallbackProvider_initialSyncPromise","_FallbackProvider_getNextConfig","_FallbackProvider_addRunner","_FallbackProvider_initialSync","_FallbackProvider_checkQuorum","_FallbackProvider_waitForQuorum","defaultConfig","stallTimeout","priority","weight","defaultState","requests","lateResponses","errorResponses","outOfSync","unsupportedEvents","rollingDuration","score","_updateNumber","_totalTime","checkQuorum","quorum","tally","normal","bestResult","bestWeight","getMedian","mid","FallbackProvider","providers","eventQuorum","eventWorkers","providerConfigs","running","runner","configs","allConfigs","shuffle","config","didBump","staller","dt","initialSync","waitForSync","height","mode","getFuzzyMode","interesting","newRunners","race","_WebSocket","WebSocket","_SocketSubscriber_provider","_SocketSubscriber_filter","_SocketSubscriber_filterId","_SocketSubscriber_paused","_SocketSubscriber_emitPromise","_SocketEventSubscriber_logFilter","_SocketEventSubscriber_formatter","_SocketProvider_callbacks","_SocketProvider_ready","_SocketProvider_subs","_SocketProvider_pending","SocketSubscriber","_register","_handleMessage","emitPromise","_emit","SocketBlockSubscriber","SocketPendingSubscriber","SocketEventSubscriber","logFilter","SocketProvider","pending","promise","_write","_WebSocketProvider_websocket","WebSocketProvider","websocket","onopen","_start","onmessage","_processMessage","getDefaultProvider","alchemy","ankr","cloudflare","etherscan","infura","pocket","secretKey","appId","IpcSocketProvider","_ContractTransactionReceipt_interface","_ContractTransactionResponse_interface","EventLog","iface","interface","eventName","eventSignature","ContractTransactionReceipt","ContractTransactionResponse","wait","ContractEventPayload","contract","_log","_PreparedTopicFilter_filter","canResolve","PreparedTopicFilter","getRunner","resolvedArgs","walkAsync","getTopicFilter","feature","getProvider","copyOverrides","arg","overrides","bigIntKeys","numberKeys","enableCcipReadEnabled","customData","copyRequest","WrappedMethod","Function","_WrappedMethodBase","_contract","thisArg","getFragment","staticCall","_runner","resolveArgs","staticCallResult","WrappedEvent","_WrappedEventBase","internalValues","getInternal","getSubTag","hasSub","subs","getSub","lastEmit","resultPromise","passArgs","BaseContract","_deployTx","addrPromise","deployTx","filters","_prop","getCode","deploymentTransaction","getDeployedCode","checkCode","Contract","_ContractBase","subsChrs","Word","unfold","words","sep","initial","decodeOwl","clumps","leftover","semi","Wordlist","locale","mnemonic","_WordlistOwl_instances","_WordlistOwl_data","_WordlistOwl_checksum","_WordlistOwl_words","_WordlistOwl_loadWords","WordlistOwl","_decodeWords","getWord","getWordIndex","langEn","wordlists","en","_WordlistOwlA_accent","WordlistOwlA","accent","_accent","accents","posOffset","positions","flood","decodeBits","charCode","regex","decodeOwlA","getUpperMask","mnemonicToEntropy","wordlist","entropy","bit","entropyBits","checksumMask","entropyToMnemonic","indices","remainingBits","checksumBits","Mnemonic","phrase","computeSeed","NFKD","_entropy","_BaseWallet_signingKey","BaseWallet","signingKey","btx","_HDNodeWallet_fromSeed","_HDNodeWalletManager_root","defaultPath","MasterSecret","HardenedBit","zpad","encodeBase58Check","ser_I","chainCode","I","IL","IR","derivePath","path","component","deriveChild","HDNodeWallet","parentFingerprint","fingerprint","extendedKey","hasPath","neuter","HDNodeVoidWallet","_index","ki","fromPhrase","fromEntropy","_seed","Ki","_addPoints","HDNodeWalletManager","getSigner","getAccountPath","_AES_key","_AES_Kd","_AES_Ke","numberOfRounds","rcon","S","Si","T3","T4","T5","T6","T7","T8","U3","U4","convertToInt32","AES","roundKeyCount","KC","tk","tt","rconpointer","encrypt","plaintext","decrypt","ciphertext","ModeOfOperation","cls","aes","_CBC_iv","_CBC_lastBlock","CBC","iv","_CTR_remaining","_CTR_remainingIndex","_CTR_counter","CTR","initialValue","setCounterValue","setCounterBytes","MAX_SAFE_INTEGER","increment","crypttext","looseArrayify","hexString","getPassword","spelunk","_path","reqd","isCrowdsaleJson","encseed","decryptCrowdsaleJson","encryptedSeed","padder","pkcs7Strip","seedHex","isKeystoreJson","getAccount","mnemonicKey","mnemonicCiphertext","mnemonicIv","mnemonicAesCtr","getKdfParams","kdf","prf","_Wallet_mnemonic","trySigningKey","Wallet","wallet","fromMnemonic","tryWallet","tryMnemonic","progressCallback","encryptSync","decryptKeystoreJson","decryptKeystoreJsonSync"],"mappings":"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AE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO,IAAI02B,GAAMD,GAAQ,UAAWz2B,GACxDwH,YAAYxH,GAAK,OAAO,IAAI02B,GAAMD,GAAQ,SAAUz2B,GACpDwH,cAAcxH,GAAK,OAAO,IAAI02B,GAAMD,GAAQ,SAAUz2B,GACtDwH,aAAaxH,EAAGqZ,GACZ,MAAM,IAAI3Y,MAAM,uBAGpB8G,aAAaxH,EAAGqE,GACZ,MAAM,IAAI3D,MAAM,uBAGpB8G,iBAAiBxH,GACb,OAAO,IAAI02B,GAAMD,GAAQ,YAAaj3B,OAAOoN,OAAO,GAAI5M,IAE5DwH,eAAelI,GACX,OAAQA,GAASA,EAAMq3B,eAAiBA,GAE5CnvB,mBAAmBlI,EAAOa,GACtB,GAAIu2B,GAAMS,QAAQ73B,GAAQ,CACtB,GAAIA,EAAMa,OAASA,EACf,MAAM,IAAIO,MAAM,0BAA0BP,UAAab,EAAMa,QAEjE,OAAOb,EAAMA,MAEjB,OAAOA,GAGfk3B,GAAiB,IAAIxzB,QCxNd,MAAMo0B,WAAqBje,GAC9BhX,YAAYiX,GACRxJ,MAAM,UAAW,UAAWwJ,GAAW,GAE3ChG,eACI,MAAO,6CAEXkJ,OAAO7C,EAAQxI,GACX,IAAI3R,EAAQo3B,GAAMW,YAAYpmB,EAAQ,UACtC,IACI3R,EAAQm1B,GAAWn1B,GAEvB,MAAOuD,GACH,OAAOtB,KAAK+X,YAAYzW,EAAMmC,QAASiM,GAE3C,OAAOwI,EAAOG,WAAWta,GAE7Bg4B,OAAOC,GACH,OAAO9C,GAAWtjB,GAAMomB,EAAOnd,YAAa,MCpB7C,MAAMod,WAAuBre,GAChChX,YAAYs1B,GACR7nB,MAAM6nB,EAAMpzB,KAAMozB,EAAMt3B,KAAM,IAAKs3B,EAAMpe,SACzC9X,KAAKk2B,MAAQA,EAEjBrkB,eACI,OAAO7R,KAAKk2B,MAAMrkB,eAEtBkJ,OAAO7C,EAAQna,GACX,OAAOiC,KAAKk2B,MAAMnb,OAAO7C,EAAQna,GAErCg4B,OAAOC,GACH,OAAOh2B,KAAKk2B,MAAMH,OAAOC,ICR1B,SAASG,GAAKje,EAAQke,EAAQ92B,GACjC,IAAI+2B,EAAc,GAClB,GAAItpB,MAAMN,QAAQnN,GACd+2B,EAAc/2B,OAEb,GAAIA,GAA8B,iBAApB,EAA8B,CAC7C,IAAIg3B,EAAS,GACbD,EAAcD,EAAOh4B,KAAK83B,IACtB,MAAMpzB,EAAOozB,EAAMre,UAgBnB,OAfK/U,GACDmE,EAAOnD,WAAW,wDAAyD,mBAAoB,CAC3FE,SAAU,SACV/B,KAAM,CAAEi0B,MAAAA,GACRn4B,MAAOuB,IAGXg3B,EAAOxzB,IACPmE,EAAOnD,WAAW,0DAA2D,mBAAoB,CAC7FE,SAAU,SACV/B,KAAM,CAAEi0B,MAAAA,GACRn4B,MAAOuB,IAGfg3B,EAAOxzB,IAAQ,EACRxD,EAAOwD,WAIlBmE,EAAOlD,mBAAmB,sBAAuB,QAASzE,GAE1D82B,EAAOl3B,SAAWm3B,EAAYn3B,QAC9B+H,EAAOlD,mBAAmB,8BAA+B,QAASzE,GAEtE,IAAIi3B,EAAe,IAAIve,GACnBwe,EAAgB,IAAIxe,GACpBye,EAAc,GAClBL,EAAOxuB,SAAQ,CAACsuB,EAAOx3B,KACnB,IAAIX,EAAQs4B,EAAY33B,GACxB,GAAIw3B,EAAMpe,QAAS,CAEf,IAAI4e,EAAgBF,EAAct3B,OAElCg3B,EAAMnb,OAAOyb,EAAez4B,GAE5B,IAAI44B,EAAaJ,EAAaje,sBAC9Bme,EAAY9zB,MAAMi0B,IACdD,EAAWC,EAAaF,WAI5BR,EAAMnb,OAAOwb,EAAcx4B,MAInC04B,EAAY7uB,SAASqf,IAAWA,EAAKsP,EAAar3B,WAClD,IAAIA,EAASgZ,EAAOD,aAAase,GAEjC,OADAr3B,GAAUgZ,EAAOD,aAAaue,GACvBt3B,EAEJ,SAAS23B,GAAOb,EAAQI,GAC3B,IAAI92B,EAAS,GACTtB,EAAO,GAEP84B,EAAad,EAAOtd,UAAU,GAyClC,OAxCA0d,EAAOxuB,SAASsuB,IACZ,IAAIn4B,EAAQ,KACZ,GAAIm4B,EAAMpe,QAAS,CACf,IAAInR,EAASqvB,EAAOld,YAChBie,EAAeD,EAAWpe,UAAU/R,GACxC,IACI5I,EAAQm4B,EAAMH,OAAOgB,GAEzB,MAAOz1B,GAEH,GAAID,EAAQC,EAAO,kBACf,MAAMA,EAEVvD,EAAQuD,EACRvD,EAAM+N,SAAWoqB,EAAMpzB,KACvB/E,EAAM+E,KAAOozB,EAAMre,UACnB9Z,EAAMa,KAAOs3B,EAAMt3B,WAIvB,IACIb,EAAQm4B,EAAMH,OAAOC,GAEzB,MAAO10B,GAEH,GAAID,EAAQC,EAAO,kBACf,MAAMA,EAEVvD,EAAQuD,EACRvD,EAAM+N,SAAWoqB,EAAMpzB,KACvB/E,EAAM+E,KAAOozB,EAAMre,UACnB9Z,EAAMa,KAAOs3B,EAAMt3B,KAG3B,GAAac,MAAT3B,EACA,MAAM,IAAIoB,MAAM,eAEpBG,EAAOqD,KAAK5E,GACZC,EAAK2E,KAAKuzB,EAAMre,WAAa,SAE1BT,GAAO4f,UAAU13B,EAAQtB,GAE7B,MAAMi5B,WAAmBrf,GAC5BhX,YAAYs1B,EAAOh3B,EAAQ2Y,GAGvBxJ,MAAM,QAFQ6nB,EAAMt3B,KAAO,KAAOM,GAAU,EAAIA,EAAS,IAAM,IAE1C2Y,GADQ,IAAZ3Y,GAAiBg3B,EAAMpe,SAExC1Y,EAAiBY,KAAM,CAAEk2B,MAAAA,EAAOh3B,OAAAA,IAEpC2S,eAEI,MAAMqlB,EAAel3B,KAAKk2B,MAAMrkB,eAC1BnL,EAAS,GACf,IAAK,IAAIzH,EAAI,EAAGA,EAAIe,KAAKd,OAAQD,IAC7ByH,EAAO/D,KAAKu0B,GAEhB,OAAOxwB,EAEXqU,OAAO7C,EAAQxI,GACX,MAAM3R,EAAQo3B,GAAMW,YAAYpmB,EAAQ,SACnC3C,MAAMN,QAAQ1O,IACfiC,KAAK+X,YAAY,uBAAwBha,GAE7C,IAAIqH,EAAQpF,KAAKd,QACF,IAAXkG,IACAA,EAAQrH,EAAMmB,OACdgZ,EAAOG,WAAWta,EAAMmB,SAE5B+H,EAAO9B,oBAAoBpH,EAAMmB,OAAQkG,EAAO,eAAiBpF,KAAK6X,UAAa,IAAM7X,KAAK6X,UAAa,KAC3G,IAAIue,EAAS,GACb,IAAK,IAAIn3B,EAAI,EAAGA,EAAIlB,EAAMmB,OAAQD,IAC9Bm3B,EAAOzzB,KAAK3C,KAAKk2B,OAErB,OAAOC,GAAKje,EAAQke,EAAQr4B,GAEhCg4B,OAAOC,GACH,IAAI5wB,EAAQpF,KAAKd,QACF,IAAXkG,IACAA,EAAQ4wB,EAAOld,YAMX1T,EAAQ6R,GAAW+e,EAAOrgB,YAC1B1O,EAAOnD,WAAW,2BAA4B,iBAAkB,CAC5DiS,OAAQigB,EAAO1gB,MACf3O,OAAQvB,EAAQ6R,GAChB/X,OAAQ82B,EAAOrgB,cAI3B,IAAIygB,EAAS,GACb,IAAK,IAAIn3B,EAAI,EAAGA,EAAImG,EAAOnG,IACvBm3B,EAAOzzB,KAAK,IAAIszB,GAAej2B,KAAKk2B,QAExC,OAAOW,GAAOb,EAAQI,ICpKvB,MAAMe,WAAqBvf,GAC9BhX,YAAYiX,GACRxJ,MAAM,OAAQ,OAAQwJ,GAAW,GAErChG,eACI,OAAO,EAEXkJ,OAAO7C,EAAQxI,GACX,MAAM3R,EAAQo3B,GAAMW,YAAYpmB,EAAQ,QACxC,OAAOwI,EAAOG,WAAWta,EAAQ,EAAI,GAEzCg4B,OAAOC,GACH,QAASA,EAAOnd,aCZjB,MAAMue,WAA0Bxf,GACnChX,YAAYhC,EAAMiZ,GACdxJ,MAAMzP,EAAMA,EAAMiZ,GAAW,GAEjChG,eACI,MAAO,KAEXkJ,OAAO7C,EAAQna,GACXA,EAAQ6W,GAAS7W,GACjB,IAAImB,EAASgZ,EAAOG,WAAWta,EAAMmB,QAErC,OADAA,GAAUgZ,EAAOC,WAAWpa,GACrBmB,EAEX62B,OAAOC,GACH,OAAOA,EAAOrd,UAAUqd,EAAOld,aAAa,IAG7C,MAAMue,WAAmBD,GAC5Bx2B,YAAYiX,GACRxJ,MAAM,QAASwJ,GAEnBke,OAAOC,GACH,OAAO3gB,GAAQhH,MAAM0nB,OAAOC,KCpB7B,MAAMsB,WAAwB1f,GACjChX,YAAY4K,EAAMqM,GACd,IAAI/U,EAAO,QAAUL,OAAO+I,GAC5B6C,MAAMvL,EAAMA,EAAM+U,GAAW,GAC7BzY,EAAiBY,KAAM,CAAEwL,KAAAA,GAAQ,CAAEA,KAAM,WAE7CqG,eACI,MAAO,qEAAuEhL,UAAU,EAAG,EAAgB,EAAZ7G,KAAKwL,MAExGuP,OAAO7C,EAAQxI,GACX,IAAImF,EAAOD,GAASugB,GAAMW,YAAYpmB,EAAQ1P,KAAKpB,OAInD,OAHIiW,EAAK3V,SAAWc,KAAKwL,MACrBxL,KAAK+X,YAAY,wBAAyBrI,GAEvCwI,EAAOC,WAAWtD,GAE7BkhB,OAAOC,GACH,OAAO3gB,GAAQ2gB,EAAOrd,UAAU3Y,KAAKwL,QCpB7C,MAAM+rB,GAAQ,IAAI/wB,WAAW,IACtB,MAAMgxB,WAAkB5f,GAC3BhX,YAAYiX,GACRxJ,MAAM,OAAQ,GAAIwJ,GAAW,GAEjChG,eACI,OAAO,KAEXkJ,OAAO7C,EAAQna,GAIX,OAHa,MAATA,GACAiC,KAAK+X,YAAY,WAAYha,GAE1Bma,EAAOC,WAAWof,IAE7BxB,OAAOC,GAEH,OADAA,EAAOrd,UAAU,GACV,MCZf,MAAMnJ,GAAO/J,OAAO,GACdwK,GAAOxK,OAAO,GACdgyB,GAAiBhyB,OAAO,sEACvB,MAAMiyB,WAAoB9f,GAC7BhX,YAAY4K,EAAMmG,EAAQkG,GACtB,MAAM/U,GAAS6O,EAAS,MAAQ,QAAkB,EAAPnG,EAC3C6C,MAAMvL,EAAMA,EAAM+U,GAAW,GAC7BzY,EAAiBY,KAAM,CAAEwL,KAAAA,EAAMmG,OAAAA,GAAU,CAAEnG,KAAM,SAAUmG,OAAQ,YAEvEE,eACI,OAAO,EAEXkJ,OAAO7C,EAAQxI,GACX,IAAI3R,EAAQkJ,EAAOtB,UAAUwvB,GAAMW,YAAYpmB,EAAQ1P,KAAKpB,OAExD+4B,EAAevnB,GAAKqnB,GAAgBxgB,KACxC,GAAIjX,KAAK2R,OAAQ,CACb,IAAIimB,EAASxnB,GAAKunB,EAA2B,EAAZ33B,KAAKwL,KAAY,IAC9CzN,EAAQ65B,GAAU75B,IAAU65B,EAAS3nB,MACrCjQ,KAAK+X,YAAY,sBAAuBrI,QAGvC3R,EAAQyR,IAAQzR,EAAQqS,GAAKunB,EAA0B,EAAZ33B,KAAKwL,QACrDxL,KAAK+X,YAAY,sBAAuBrI,GAM5C,OAJA3R,EAAQqS,GAAKD,GAAOpS,EAAmB,EAAZiC,KAAKwL,MAAuB,EAAZxL,KAAKwL,MAC5CxL,KAAK2R,SACL5T,EAAQoS,GAAOD,GAASnS,EAAmB,EAAZiC,KAAKwL,MAAW,MAE5C0M,EAAOG,WAAWta,GAE7Bg4B,OAAOC,GACH,IAAIj4B,EAAQqS,GAAK4lB,EAAOnd,YAAyB,EAAZ7Y,KAAKwL,MAI1C,OAHIxL,KAAK2R,SACL5T,EAAQmS,GAASnS,EAAmB,EAAZiC,KAAKwL,OAE1BzN,GCzCR,MCEMkJ,GAAS,IAAI5D,EDFH,uCEGvB,IAAWw0B,GASAC,GA8BX,SAASC,GAAWC,EAAQrxB,EAAQ2O,EAAO2iB,EAAQC,GAE/C,GAAIF,IAAWF,EAAAA,gBAAgBK,YAAcH,IAAWF,EAAAA,gBAAgBM,oBAAqB,CACzF,IAAIn5B,EAAI,EACR,IAAK,IAAIiQ,EAAIvI,EAAS,EAAGuI,EAAIoG,EAAMpW,QAC3BoW,EAAMpG,IAAM,GAAM,EADiBA,IAIvCjQ,IAEJ,OAAOA,EAIX,OAAI+4B,IAAWF,EAAeA,gBAACO,QACpB/iB,EAAMpW,OAASyH,EAAS,EAG5B,EA1DyB2xB,EAAAT,8BAAA,GACzBA,GAMRA,6BAA6BA,EAAAA,yBAA2B,KALrB,QAAI,GACtCA,GAA8B,IAAI,MAClCA,GAA8B,IAAI,MAClCA,GAA+B,KAAI,OACnCA,GAA+B,KAAI,OAGZS,EAAAR,qBAAA,GAChBA,GAyBRA,oBAAoBA,EAAAA,gBAAkB,KAtBA,oBAAI,+BAGzCA,GAA4B,WAAI,uBAGhCA,GAAyB,QAAI,iBAG7BA,GAAkC,iBAAI,4BAItCA,GAA8B,aAAI,qBAIlCA,GAAiC,gBAAI,mBAIrCA,GAA0B,SAAI,0BAsCtB,MAACS,GAAiBt6B,OAAO4J,OAAO,CACxCvG,MApCJ,SAAmB02B,EAAQrxB,EAAQ2O,EAAO2iB,EAAQC,GAC9C,OAAOjxB,GAAOlD,mBAAmB,+BAA+B4C,MAAWqxB,IAAU,QAAS1iB,IAoC9FkjB,OAAQT,GACRU,QAfJ,SAAqBT,EAAQrxB,EAAQ2O,EAAO2iB,EAAQC,GAEhD,OAAIF,IAAWF,EAAeA,gBAACY,UAC3BT,EAAOt1B,KAAsB,MAAhBu1B,EAAwBA,GAAgB,GAC9C,IAGXD,EAAOt1B,KAAK,OAELo1B,GAAWC,EAAQrxB,EAAQ2O,OAStC,SAASqjB,GAAkBC,EAAQC,GAChB,MAAXA,IACAA,EAAUN,GAAej3B,OAE7B,MAAMgU,EAAQrO,GAAO3B,SAASszB,EAAQ,SAChClyB,EAAS,GACf,IAAIzH,EAAI,EAER,KAAOA,EAAIqW,EAAMpW,QAAQ,CACrB,MAAMqN,EAAI+I,EAAMrW,KAEhB,GAAIsN,GAAK,GAAM,EAAG,CACd7F,EAAO/D,KAAK4J,GACZ,SAGJ,IAAIusB,EAAc,KACdC,EAAe,KAEnB,GAAmB,MAAV,IAAJxsB,GACDusB,EAAc,EACdC,EAAe,SAGd,GAAmB,MAAV,IAAJxsB,GACNusB,EAAc,EACdC,EAAe,SAGd,CAAA,GAAmB,MAAV,IAAJxsB,GAIL,CAEGtN,GAAK45B,EADU,MAAV,IAAJtsB,GACYurB,EAAAA,gBAAgBM,oBAGhBN,EAAAA,gBAAgBK,WAHqBl5B,EAAI,EAAGqW,EAAO5O,GAKpE,SAVAoyB,EAAc,EACdC,EAAe,MAYnB,GAAI95B,EAAI,EAAI65B,GAAexjB,EAAMpW,OAAQ,CACrCD,GAAK45B,EAAQf,EAAAA,gBAAgBO,QAASp5B,EAAI,EAAGqW,EAAO5O,GACpD,SAGJ,IAAI+Y,EAAMlT,GAAM,GAAM,EAAIusB,EAAc,GAAM,EAC9C,IAAK,IAAIhR,EAAI,EAAGA,EAAIgR,EAAahR,IAAK,CAClC,IAAIkR,EAAW1jB,EAAMrW,GAErB,GAAyB,MAAT,IAAX+5B,GAA0B,CAC3B/5B,GAAK45B,EAAQf,kBAAgBmB,iBAAkBh6B,EAAGqW,EAAO5O,GACzD+Y,EAAM,KACN,MAGJA,EAAOA,GAAO,EAAiB,GAAXuZ,EACpB/5B,IAGQ,OAARwgB,IAIAA,EAAM,QACNxgB,GAAK45B,EAAQf,kBAAgBoB,aAAcj6B,EAAI,EAAI65B,EAAaxjB,EAAO5O,EAAQ+Y,GAI/EA,GAAO,OAAUA,GAAO,MACxBxgB,GAAK45B,EAAQf,kBAAgBqB,gBAAiBl6B,EAAI,EAAI65B,EAAaxjB,EAAO5O,EAAQ+Y,GAIlFA,GAAOsZ,EACP95B,GAAK45B,EAAQf,kBAAgBY,SAAUz5B,EAAI,EAAI65B,EAAaxjB,EAAO5O,EAAQ+Y,GAG/E/Y,EAAO/D,KAAK8c,IAEhB,OAAO/Y,EAGJ,SAAS0yB,GAAYve,EAAKvY,EAAOu1B,EAAAA,yBAAyBwB,SACzD/2B,GAAQu1B,EAAwBA,yBAACwB,UACjCpyB,GAAOrC,gBAAgBtC,GACvBuY,EAAMA,EAAItY,UAAUD,IAExB,IAAIoE,EAAS,GACb,IAAK,IAAIzH,EAAI,EAAGA,EAAI4b,EAAI3b,OAAQD,IAAK,CACjC,MAAMsN,EAAIsO,EAAI6X,WAAWzzB,GACzB,GAAIsN,EAAI,IACJ7F,EAAO/D,KAAK4J,QAEX,GAAIA,EAAI,KACT7F,EAAO/D,KAAM4J,GAAK,EAAK,KACvB7F,EAAO/D,KAAU,GAAJ4J,EAAY,UAExB,GAAoB,QAAX,MAAJA,GAAuB,CAC7BtN,IACA,MAAMq6B,EAAKze,EAAI6X,WAAWzzB,GAC1B,GAAIA,GAAK4b,EAAI3b,QAA4B,QAAZ,MAALo6B,GACpB,MAAM,IAAIn6B,MAAM,wBAGpB,MAAMo6B,EAAO,QAAgB,KAAJhtB,IAAe,KAAY,KAAL+sB,GAC/C5yB,EAAO/D,KAAM42B,GAAQ,GAAM,KAC3B7yB,EAAO/D,KAAO42B,GAAQ,GAAM,GAAQ,KACpC7yB,EAAO/D,KAAO42B,GAAQ,EAAK,GAAQ,KACnC7yB,EAAO/D,KAAa,GAAP42B,EAAe,UAG5B7yB,EAAO/D,KAAM4J,GAAK,GAAM,KACxB7F,EAAO/D,KAAO4J,GAAK,EAAK,GAAQ,KAChC7F,EAAO/D,KAAU,GAAJ4J,EAAY,KAGjC,OAAO,IAAI/F,WAAWE,GAG1B,SAAS8yB,GAAWz7B,GAChB,MAAMiS,EAAO,OAASjS,EAAM+L,SAAS,IACrC,MAAO,MAAQkG,EAAInJ,UAAUmJ,EAAI9Q,OAAS,GAEvC,SAASu6B,GAAqBnkB,EAAOujB,GACxC,MAAO,IAAMF,GAAkBrjB,EAAOujB,GAASz6B,KAAKs7B,IAChD,GAAIA,EAAY,IAAK,CACjB,OAAQA,GACJ,KAAK,EAAG,MAAO,MACf,KAAK,EAAG,MAAO,MACf,KAAK,GAAI,MAAO,MAChB,KAAK,GAAI,MAAO,MAChB,KAAK,GAAI,MAAO,MAChB,KAAK,GAAI,MAAO,OAEpB,GAAIA,GAAa,IAAMA,EAAY,IAC/B,OAAOj3B,OAAOC,aAAag3B,GAGnC,OAAIA,GAAa,MACNF,GAAWE,GAGfF,GAAyC,QADhDE,GAAa,QACoB,GAAM,OAAmBF,GAAiC,OAAT,KAAZE,OACvE71B,KAAK,IAAM,IAEX,SAAS81B,GAAcC,GAC1B,OAAOA,EAAWx7B,KAAKs7B,GACfA,GAAa,MACNj3B,OAAOC,aAAag3B,IAE/BA,GAAa,MACNj3B,OAAOC,aAA4C,OAA5Bg3B,GAAa,GAAM,MAAyC,OAAT,KAAZA,OACtE71B,KAAK,IAEL,SAASg2B,GAAavkB,EAAOujB,GAChC,OAAOc,GAAchB,GAAkBrjB,EAAOujB,IAE3C,SAASiB,GAAiBjf,EAAKvY,EAAOu1B,EAAAA,yBAAyBwB,SAClE,OAAOV,GAAkBS,GAAYve,EAAKvY,IC9OvC,SAASy3B,GAAoB3wB,GAEhC,MAAMkM,EAAQ8jB,GAAYhwB,GAE1B,GAAIkM,EAAMpW,OAAS,GACf,MAAM,IAAIC,MAAM,6CAGpB,OAAOkX,GAAaf,EAAO,IAExB,SAAS0kB,GAAmBpB,GAC/B,MAAM/jB,EAAO5N,GAAO3B,SAASszB,EAAQ,SAErC,GAAoB,KAAhB/jB,EAAK3V,OACL,MAAM,IAAIC,MAAM,uCAEpB,GAAiB,IAAb0V,EAAK,IACL,MAAM,IAAI1V,MAAM,+CAGpB,IAAID,EAAS,GACb,KAA4B,IAArB2V,EAAK3V,EAAS,IACjBA,IAGJ,OAAO26B,GAAahlB,EAAKhM,MAAM,EAAG3J,IChBtC,SAAS+6B,GAAYplB,EAAMqlB,GACvB,MAAMjT,EAAOiT,GAAS,SAAUn8B,GAAS,MAAO,CAAC6I,SAAS7I,EAAO,MACjE,IAAIo8B,EAAK,EACLzzB,EAAS,GAMb,OALAmO,EAAK/V,MAAM,KAAK8I,SAAS2xB,IACrB,IAAInsB,EAAQmsB,EAAKz6B,MAAM,KACvBq7B,GAAMvzB,SAASwG,EAAM,GAAI,IACzB1G,EAAOyzB,GAAMlT,EAAK7Z,EAAM,OAErB1G,EAEX,SAAS0zB,GAAiBvlB,GACtB,IAAIwlB,EAAK,EACT,OAAOxlB,EAAK/V,MAAM,KAAKV,KAAKK,IACxB,IAAI2O,EAAQ3O,EAAEK,MAAM,KACC,IAAjBsO,EAAMlO,OACNkO,EAAM,GAAK,IAEO,KAAbA,EAAM,KACXA,EAAM,GAAK,KAEf,IAAI+sB,EAAKE,EAAKzzB,SAASwG,EAAM,GAAI,IAEjC,OADAitB,EAAKzzB,SAASwG,EAAM,GAAI,IACjB,CAAEkS,EAAG6a,EAAI9a,EAAGgb,MAG3B,SAASC,GAASv8B,EAAOw8B,GACrB,IAAIJ,EAAK,EACT,IAAK,IAAIl7B,EAAI,EAAGA,EAAIs7B,EAAOr7B,OAAQD,IAAK,CACpC,IAAIu7B,EAAQD,EAAOt7B,GAEnB,GADAk7B,GAAMK,EAAMlb,EACRvhB,GAASo8B,GAAMp8B,GAASo8B,EAAKK,EAAMnb,IAAOthB,EAAQo8B,IAAOK,EAAM9kB,GAAK,IAAQ,EAAG,CAC/E,GAAI8kB,EAAM90B,IAAsC,IAAjC80B,EAAM90B,EAAEb,QAAQ9G,EAAQo8B,GACnC,SAEJ,OAAOK,GAGf,OAAO,KAEX,MAAMC,GAAmBL,GAAiB,g8CAEpCM,GAAkB,sDAAsD57B,MAAM,KAAKV,KAAKK,GAAMmI,SAASnI,EAAG,MAC1Gk8B,GAAmB,CACrB,CAAEtb,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,IACnB,CAAED,EAAG,GAAIkC,EAAG,GAAI7b,EAAG,CAAC,IAAK4Z,EAAG,KAC5B,CAAED,EAAG,GAAIkC,EAAG,EAAG7b,EAAG,CAAC,IAAK4Z,EAAG,GAAI5J,EAAG,GAClC,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,EAAG7b,EAAG,CAAC,EAAG,EAAG,GAAI4Z,EAAG,GAAI5J,EAAG,GACvC,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,EAAG7b,EAAG,CAAC,GAAI,GAAI,IAAK4Z,EAAG,GAAI5J,EAAG,GAC1C,CAAE2J,EAAG,GAAIkC,EAAG,GAAI7b,EAAG,CAAC,IAAK4Z,EAAG,KAC5B,CAAED,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,IACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,IACnB,CAAED,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,EAAG7b,EAAG,CAAC,IAAK4Z,EAAG,GAAI5J,EAAG,GAClC,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,GAAI5J,EAAG,GACzB,CAAE2J,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,IACnB,CAAED,EAAG,IAAKkC,EAAG,EAAGjC,EAAG,KAAM5J,EAAG,GAC5B,CAAE2J,EAAG,GAAIkC,EAAG,EAAGjC,EAAG,IAAK5J,EAAG,GAC1B,CAAE2J,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,KACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,KACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,OACnB,CAAED,EAAG,GAAIkC,EAAG,GAAIjC,EAAG,MACnB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,OACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK4Z,EAAG,IACxD,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,EAAG,EAAG,EAAG,IAAK4Z,EAAG,IAC1C,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK4Z,EAAG,IACnD,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQjC,EAAG,IACxB,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,IAAK4Z,EAAG,IACjC,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,IAAK4Z,EAAG,IACjC,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,IAAK4Z,EAAG,IACjC,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,IAAK4Z,EAAG,IACjC,CAAED,EAAG,GAAIkC,GAAI,OAAQ7b,EAAG,CAAC,IAAK4Z,EAAG,KAE/Bsb,GAAoBX,GAAY,yfAChCY,GAAoBZ,GAAY,0dAChCa,GAAoBb,GAAY,03DAnGtC,SAAgBplB,GACZ,GAAKA,EAAK3V,OAAS,GAAO,EACtB,MAAM,IAAIC,MAAM,+BAEpB,IAAIuH,EAAS,GACb,IAAK,IAAIzH,EAAI,EAAGA,EAAI4V,EAAK3V,OAAQD,GAAK,EAClCyH,EAAO/D,KAAKiE,SAASiO,EAAKhO,UAAU5H,EAAGA,EAAI,GAAI,KAEnD,OAAOyH,KA4FLq0B,GAAiBX,GAAiB,2LAmCjC,SAASY,GAASj9B,GAIrB,GAAIA,EAAM0I,MAAM,kBAAoB1I,EAAMmB,QAAU,GAChD,OAAOnB,EAAMqI,cAGjB,IAAI60B,EAAQnB,GAAiB/7B,GA1CjC,IAAiBuB,EAAAA,EA2CG27B,EAAM78B,KAAKmD,IAEvB,GAAIm5B,GAAgB71B,QAAQtD,IAAS,EACjC,MAAO,GAEX,GAAIA,GAAQ,OAAUA,GAAQ,MAC1B,MAAO,GAGX,IAAI25B,EA3CL,SAA0BC,GAC7B,MAAMX,EAAQF,GAASa,EAAWR,IAClC,GAAIH,EAAO,CACP,GAAe,MAAXA,EAAMjZ,EACN,MAAM,IAAIpiB,MAAM,gCAEpB,MAAO,CAACg8B,EAAYX,EAAMjZ,GAE9B,MAAM0Z,EAAQL,GAAkBO,GAChC,GAAIF,EACA,OAAOA,EAEX,MAAMthB,EAAQkhB,GAAkBM,GAChC,OAAIxhB,EACO,CAACwhB,EAAYxhB,EAAM,IAEdmhB,GAAkBK,IAI3B,KAuBgBC,CAAiB75B,GACpC,OAAI25B,GAIG,CAAC35B,MAdZ05B,EA1CO37B,EAAOf,QAAO,CAACC,EAAOT,KACzBA,EAAM6J,SAAS7J,IAAYS,EAAMmE,KAAK5E,MAC/BS,IACR,IAwDHy8B,EAAQnB,GAAiBH,GAAcsB,GAAQpD,EAAAA,yBAAyBwD,MAExEJ,EAAMrzB,SAASrG,IA9BN+4B,GA+Be/4B,EA/BKw5B,KAgCrB9zB,GAAOlD,mBAAmB,iCAAkC,QAAShG,MAI7Ek9B,EAAMrzB,SAASrG,IA7DN+4B,GA8DgB/4B,EA9DIk5B,KA+DrBxzB,GAAOlD,mBAAmB,iCAAkC,QAAShG,MAI7E,IAAI+E,EAAO62B,GAAcsB,GASzB,MAP6B,MAAzBn4B,EAAK+D,UAAU,EAAG,IAAuC,OAAzB/D,EAAK+D,UAAU,EAAG,IAAmD,MAApC/D,EAAK+D,UAAU/D,EAAK5D,OAAS,IAC9F+H,GAAOlD,mBAAmB,iBAAkB,QAAShG,GAGrD+E,EAAK5D,OAAS,IACd+H,GAAOlD,mBAAmB,WAAY,QAAShG,GAE5C+E,ECvLJ,MAAMw4B,WAAoBlE,GAC7Bx2B,YAAYiX,GACRxJ,MAAM,SAAUwJ,GAEpBhG,eACI,MAAO,GAEXkJ,OAAO7C,EAAQxI,GACX,OAAOrB,MAAM0M,OAAO7C,EAAQkhB,GAAYjE,GAAMW,YAAYpmB,EAAQ,YAEtEqmB,OAAOC,GACH,OAAO6D,GAAaxrB,MAAM0nB,OAAOC,KCVlC,MAAMuF,WAAmB3jB,GAC5BhX,YAAYw1B,EAAQve,GAChB,IAAIC,GAAU,EACd,MAAMjZ,EAAQ,GACdu3B,EAAOxuB,SAASsuB,IACRA,EAAMpe,UACNA,GAAU,GAEdjZ,EAAM8D,KAAKuzB,EAAMt3B,SAGrByP,MAAM,QADQ,SAAWxP,EAAMgF,KAAK,KAAO,IACtBgU,EAAWC,GAChC1Y,EAAiBY,KAAM,CAAEo2B,OAAQn4B,OAAO4J,OAAOuuB,EAAOvtB,WAE1DgJ,eACI,MAAMvS,EAAS,GACfU,KAAKo2B,OAAOxuB,SAASsuB,IACjB52B,EAAOqD,KAAKuzB,EAAMrkB,mBAGtB,MAAM2pB,EAAcx7B,KAAKo2B,OAAO73B,QAAO,CAACC,EAAO03B,KAC3C,MAAMpzB,EAAOozB,EAAMre,UAOnB,OANI/U,IACKtE,EAAMsE,KACPtE,EAAMsE,GAAQ,GAElBtE,EAAMsE,MAEHtE,IACR,IAeH,OAbAwB,KAAKo2B,OAAOxuB,SAAQ,CAACsuB,EAAOx3B,KACxB,IAAIoE,EAAOozB,EAAMre,UACZ/U,GAA8B,IAAtB04B,EAAY14B,KAGZ,WAATA,IACAA,EAAO,WAES,MAAhBxD,EAAOwD,KAGXxD,EAAOwD,GAAQxD,EAAOZ,QAEnBT,OAAO4J,OAAOvI,GAEzByb,OAAO7C,EAAQxI,GACX,MAAM3R,EAAQo3B,GAAMW,YAAYpmB,EAAQ,SACxC,OAAOymB,GAAKje,EAAQlY,KAAKo2B,OAAQr4B,GAErCg4B,OAAOC,GACH,OAAOa,GAAOb,EAAQh2B,KAAKo2B,SCtDnC,IAKIqF,GAAqBC,GALrBj7B,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAexF,MAAM07B,GAAiB,IAAIpzB,OAAO,mBAC5BqzB,GAAkB,IAAIrzB,OAAO,qBAwBnCkzB,GAAsB,IAAIn1B,QAAWo1B,GAAqB,SAASA,EAAmBjuB,GAClF,GAAIA,EAAMhB,UACN,OAAO,IAAIwqB,GAAWx2B,GAAuBT,KAAMy7B,GAAqB,IAAKC,GAAoBn7B,KAAKP,KAAMyN,EAAMvB,eAAgBuB,EAAMxB,YAAawB,EAAM3K,MAE/J,GAAI2K,EAAMnB,UACN,OAAO,IAAIivB,GAAW9tB,EAAMzB,WAAW5N,KAAKmO,GAAM9L,GAAuBT,KAAMy7B,GAAqB,IAAKC,GAAoBn7B,KAAKP,KAAMuM,KAAKkB,EAAM3K,MAEvJ,OAAQ2K,EAAM3B,UACV,IAAK,UACD,OAAO,IAAI+pB,GAAapoB,EAAM3K,MAClC,IAAK,OACD,OAAO,IAAIq0B,GAAa1pB,EAAM3K,MAClC,IAAK,SACD,OAAO,IAAIw4B,GAAY7tB,EAAM3K,MACjC,IAAK,QACD,OAAO,IAAIu0B,GAAW5pB,EAAM3K,MAChC,IAAK,GACD,OAAO,IAAI00B,GAAU/pB,EAAM3K,MAGnC,IAAI2D,EAAQgH,EAAM7O,KAAK6H,MAAMm1B,IAC7B,GAAIn1B,EAAO,CACP,IAAI+E,EAAO5E,SAASH,EAAM,IAAM,OAIhC,OAHa,IAAT+E,GAAcA,EAAO,KAAQA,EAAO,GAAO,IAC3CvE,EAAOlD,mBAAmB,WAAa0C,EAAM,GAAK,cAAe,QAASgH,GAEvE,IAAIiqB,GAAYlsB,EAAO,EAAiB,QAAb/E,EAAM,GAAegH,EAAM3K,MAIjE,GADA2D,EAAQgH,EAAM7O,KAAK6H,MAAMk1B,IACrBl1B,EAAO,CACP,IAAI+E,EAAO5E,SAASH,EAAM,IAI1B,OAHa,IAAT+E,GAAcA,EAAO,KACrBvE,EAAOlD,mBAAmB,uBAAwB,QAAS0J,GAExD,IAAI6pB,GAAgB9rB,EAAMiC,EAAM3K,MAE3C,OAAOmE,EAAOlD,mBAAmB,eAAgB,OAAQ0J,EAAM7O,OAE5D,MAAMi9B,GAAkB,IA9DxB,MACHj7B,cACI66B,GAAoBl4B,IAAIvD,MAE5B87B,gBAAgBj9B,GACZ,MAAMu3B,EAASv3B,EAAMT,KAAKQ,GAAS6B,GAAuBT,KAAMy7B,GAAqB,IAAKC,IAAoBn7B,KAAKP,KAAM+K,GAAUI,KAAKvM,MAExI,OADc,IAAI28B,GAAWnF,EAAQ,KACxBvkB,eAEjBkJ,OAAOlc,EAAOS,GACV2H,EAAO9B,oBAAoB7F,EAAOJ,OAAQL,EAAMK,OAAQ,gCACxD,MAAMk3B,EAASv3B,EAAMT,KAAKQ,GAAS6B,GAAuBT,KAAMy7B,GAAqB,IAAKC,IAAoBn7B,KAAKP,KAAM+K,GAAUI,KAAKvM,MAClIs3B,EAAK,IAAQqF,GAAWnF,EAAQ,KAChCle,EAAS,IAAIF,GAEnB,OADAke,EAAMnb,OAAO7C,EAAQ5Y,GACd4Y,EAAOrD,KAElBkhB,OAAOl3B,EAAOgW,EAAM+D,GAChB,MAAMwd,EAASv3B,EAAMT,KAAKQ,GAAS6B,GAAuBT,KAAMy7B,GAAqB,IAAKC,IAAoBn7B,KAAKP,KAAM+K,GAAUI,KAAKvM,MAExI,OADc,IAAI28B,GAAWnF,EAAQ,KACxBL,OAAO,IAAIxd,GAAO1D,EAAM+D,MCvCtC,SAASmjB,GAAGh+B,GACf,OAAOosB,GAAUiP,GAAYr7B,ICH1B,MCEMkJ,GAAS,IAAI5D,EDFH,oCEIjB24B,GAAQ,IAAIx1B,WAAW,IAC7Bw1B,GAAM7lB,KAAK,GACX,MAAM8lB,GAAY,IAAI1zB,OAAO,uBACtB,SAAS2zB,GAAYp5B,GACxB,IACI,MAAMsK,EAAQtK,EAAKhE,MAAM,KACzB,IAAK,IAAIG,EAAI,EAAGA,EAAImO,EAAMlO,OAAQD,IAC9B,GAAkC,IAA9B+7B,GAAS5tB,EAAMnO,IAAIC,OACnB,MAAM,IAAIC,MAAM,SAGxB,OAAO,EAEX,MAAOmC,IACP,OAAO,EAEJ,SAAS66B,GAASr5B,GACC,iBAAV,GACRmE,GAAOlD,mBAAmB,iCAAkC,OAAQjB,GAExE,IAAIu2B,EAAUv2B,EACV4D,EAASs1B,GACb,KAAO3C,EAAQn6B,QAAQ,CACnB,MAAMk9B,EAAY/C,EAAQ5yB,MAAMw1B,IAChC,GAAiB,MAAbG,GAAsC,KAAjBA,EAAU,GAC/B,OAAOn1B,GAAOlD,mBAAmB,sCAAuC,OAAQjB,GAGpF4D,EAASyjB,GAAU3U,GAAO,CAAC9O,EAAQyjB,GADrBiP,GAAY4B,GAASoB,EAAU,SAE7C/C,EAAU+C,EAAU,IAAM,GAE9B,OAAO/mB,GAAQ3O,GAEZ,SAAS21B,GAAUv5B,GAItB,MAHsB,iBAAV,GACRmE,GAAOlD,mBAAmB,iCAAkC,OAAQjB,GAE3D,KAATA,EACO,OAGJ0S,GAAO1S,EAAKhE,MAAM,KAAKV,KAAKsO,IAClB,KAATA,GACAzF,GAAOlD,mBAAmB,sCAAuC,OAAQjB,GAI7E,MAAMwS,EAAQ8jB,GAAY,IAAM4B,GAAStuB,IAEzC,OADA4I,EAAM,GAAKA,EAAMpW,OAAS,EACnBoW,MACL,KCnDG,MAAAgnB,GAAgB,8BACtB,SAASC,GAAY94B,GAIxB,MAHyB,iBAAb,IACRA,EAAU21B,GAAY31B,IAEnB0mB,GAAU3U,GAAO,CACpB4jB,GAAYkD,IACZlD,GAAY32B,OAAOgB,EAAQvE,SAC3BuE,KCNR,MAAM+4B,GAAa,IAAIj0B,OAAO,mBACxBC,GAAc,IAAID,OAAO,qBACzBk0B,GAAa,IAAIl0B,OAAO,wBAC9B,SAASm0B,GAAM99B,EAAMb,EAAO0O,GACxB,OAAQ7N,GACJ,IAAK,UACD,OAAI6N,EACOxF,GAAO3B,SAAS8Q,GAAarY,EAAO,KAExCkJ,GAAO3B,SAASvH,GAC3B,IAAK,SACD,OAAOq7B,GAAYr7B,GACvB,IAAK,QACD,OAAOkJ,GAAO3B,SAASvH,GAC3B,IAAK,OAED,OADAA,EAAWA,EAAQ,OAAS,OACxB0O,EACOxF,GAAO3B,SAAS8Q,GAAarY,EAAO,KAExCkJ,GAAO3B,SAASvH,GAE/B,IAAI0I,EAAQ7H,EAAK6H,MAAM+B,IACvB,GAAI/B,EAAO,CACP,IAAI+E,EAAO5E,SAASH,EAAM,IAAM,OAChC,OAAKA,EAAM,IAAMhE,OAAO+I,KAAU/E,EAAM,IAAQ+E,EAAO,GAAM,GAAe,IAATA,GAAcA,EAAO,IAC7EvE,GAAOlD,mBAAmB,sBAAuB,OAAQnF,IAEhE6N,IACAjB,EAAO,KAEXzN,EAAQoS,GAAOpS,EAAOyN,GACfvE,GAAO3B,SAAS8Q,GAAarY,EAAOyN,EAAO,KAGtD,GADA/E,EAAQ7H,EAAK6H,MAAM+1B,IACf/1B,EAAO,CACP,MAAM+E,EAAO5E,SAASH,EAAM,IAC5B,OAAIhE,OAAO+I,KAAU/E,EAAM,IAAe,IAAT+E,GAAcA,EAAO,GAC3CvE,GAAOlD,mBAAmB,qBAAsB,OAAQnF,GAE/D+W,GAAW5X,KAAWyN,EACfvE,GAAOlD,mBAAmB,qBAAqBnF,IAAQ,QAASb,GAEvE0O,EACOxF,GAAO3B,SAAS+Q,GAAatY,EAAO,KAExCA,EAGX,GADA0I,EAAQ7H,EAAK6H,MAAMg2B,IACfh2B,GAASsG,MAAMN,QAAQ1O,GAAQ,CAC/B,MAAM+N,EAAWrF,EAAM,GACTG,SAASH,EAAM,IAAMhE,OAAO1E,EAAMmB,UACnCnB,EAAMmB,QACf+H,GAAOlD,mBAAmB,4BAA4BnF,IAAQ,QAASb,GAE3E,MAAM2I,EAAS,GAIf,OAHA3I,EAAM6J,SAAQ,SAAU7J,GACpB2I,EAAO/D,KAAK+5B,GAAM5wB,EAAU/N,GAAO,OAEhCkJ,GAAO3B,SAASkQ,GAAO9O,IAElC,OAAOO,GAAOlD,mBAAmB,eAAgB,OAAQnF,GAGtD,SAAS+9B,GAAe99B,EAAOS,GAC9BT,EAAMK,QAAUI,EAAOJ,QACvB+H,GAAOlD,mBAAmB,qDAAsD,SAAUzE,GAE9F,MAAMs9B,EAAQ,GAId,OAHA/9B,EAAM+I,SAAQ,SAAUhJ,EAAMF,GAC1Bk+B,EAAMj6B,KAAK+5B,GAAM99B,EAAMU,EAAOZ,QAE3B2W,GAAQG,GAAOonB,IAEnB,SAASC,GAAwBh+B,EAAOS,GAC3C,OAAO2qB,GAAW0S,GAAe99B,EAAOS,IAErC,SAASw9B,GAAqBj+B,EAAOS,GACxC,OAAOyyB,GAAQ4K,GAAe99B,EAAOS,IClFzC,IAWIy9B,GAA6BC,GAAyBC,GAA6BC,GAAgCC,GAXnHp9B,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAWxF,MAAMm9B,GAAU,IAAI52B,WAAW,IAC/B42B,GAAQjnB,KAAK,GACb,MAAMknB,GAAQ53B,QAAQ,GAChB+J,GAAO/J,OAAO,GACdwK,GAAOxK,OAAO,GACdgyB,GAAiBhyB,OAAO,sEAW9B,MAAM63B,GAAU1tB,GAAMK,GAAM,IACtBstB,GAAW3tB,GAAMJ,GAAM,IACvBguB,GAAmB,CACrB16B,KAAM,SACNQ,QAAS,SACTm6B,QAAS,UACTC,kBAAmB,UACnBtgB,KAAM,WAEJugB,GAAmB,CACrB,OAAQ,UAAW,UAAW,oBAAqB,QAEvD,SAASC,GAAYp+B,GACjB,OAAO,SAAUzB,GAIb,MAHuB,iBAAX,GACRkJ,GAAOlD,mBAAmB,4BAA4BJ,KAAKC,UAAUpE,KAAQ,UAAUA,IAAOzB,GAE3FA,GAGf,MAAM8/B,GAAe,CACjB/6B,KAAM86B,GAAY,QAClBt6B,QAASs6B,GAAY,WACrBH,QAAS,SAAU1/B,GACf,OAAOkJ,GAAOtB,UAAU5H,EAAO,mBAEnC2/B,kBAAmB,SAAU3/B,GACzB,IACI,OAAOm1B,GAAWn1B,GAAOqI,cAE7B,MAAO9E,IACP,OAAO2F,GAAOlD,mBAAmB,2CAA4C,2BAA4BhG,IAE7Gqf,KAAM,SAAUrf,GACZ,MAAMuX,EAAQrO,GAAO3B,SAASvH,EAAO,eAIrC,OAHqB,KAAjBuX,EAAMpW,QACN+H,GAAOlD,mBAAmB,8BAA+B,cAAehG,GAErEsX,GAAQC,KAGvB,SAASwoB,GAAel/B,GAEpB,CACI,MAAM6H,EAAQ7H,EAAK6H,MAAM,kBACzB,GAAIA,EAAO,CACP,MAAMkL,EAAuB,KAAblL,EAAM,GAChBqJ,EAAQlJ,SAASH,EAAM,IAAM,QAC/BqJ,EAAQ,GAAM,GAAKA,EAAQ,KAAQrJ,EAAM,IAAMA,EAAM,KAAOhE,OAAOqN,KACnE7I,GAAOlD,mBAAmB,wBAAyB,OAAQnF,GAE/D,MAAMm/B,EAAc3tB,GAAKqnB,GAAgB9lB,EAAU7B,EAAQ,EAAKA,GAC1DkuB,EAAcrsB,GAAWosB,EAAc9tB,IAAQotB,GAAS7tB,GAC9D,OAAO,SAAUE,GACb,MAAM3R,EAAQkJ,GAAOtB,UAAU+J,EAAQ,SAIvC,OAHI3R,EAAQigC,GAAejgC,EAAQggC,IAC/B92B,GAAOlD,mBAAmB,2BAA2BnF,IAAQ,QAASb,GAEnE6R,GAAMO,GAAOpS,EAAO,KAAM,MAK7C,CACI,MAAM0I,EAAQ7H,EAAK6H,MAAM,gBACzB,GAAIA,EAAO,CACP,MAAMqJ,EAAQlJ,SAASH,EAAM,IAI7B,OAHc,IAAVqJ,GAAeA,EAAQ,IAAMrJ,EAAM,KAAOhE,OAAOqN,KACjD7I,GAAOlD,mBAAmB,sBAAuB,OAAQnF,GAEtD,SAAUb,GAKb,OAJc6W,GAAS7W,GACbmB,SAAW4Q,GACjB7I,GAAOlD,mBAAmB,sBAAsBnF,IAAQ,QAASb,GAjFrF,SAAqBA,GACjB,MAAMuX,EAAQV,GAAS7W,GACjB0gB,EAAYnJ,EAAMpW,OAAS,GACjC,OAAIuf,EACOjJ,GAAO,CAACF,EAAO8nB,GAAQv0B,MAAM4V,KAEjCpJ,GAAQC,GA6EI2oB,CAAYlgC,KAI/B,OAAQa,GACJ,IAAK,UAAW,OAAO,SAAUb,GAC7B,OAAOqY,GAAa8c,GAAWn1B,GAAQ,KAE3C,IAAK,OAAQ,OAAO,SAAUA,GAC1B,OAAUA,EAAoBu/B,GAAXC,IAEvB,IAAK,QAAS,OAAO,SAAUx/B,GAC3B,OAAOosB,GAAUpsB,IAErB,IAAK,SAAU,OAAO,SAAUA,GAC5B,OAAOg+B,GAAGh+B,IAGlB,OAAO,KAEX,SAASmgC,GAAWp7B,EAAMq7B,GACtB,MAAO,GAAGr7B,KAAQq7B,EAAO//B,KAAI,EAAG0E,KAAAA,EAAMlE,KAAAA,KAAYA,EAAO,IAAMkE,IAAOe,KAAK,QAExE,MAAMu6B,GACTx9B,YAAY/B,GACRk+B,GAA4Bx5B,IAAIvD,MAChCg9B,GAAwBx8B,IAAIR,UAAM,GAClCi9B,GAA4Bz8B,IAAIR,UAAM,GACtCk9B,GAA+B18B,IAAIR,UAAM,GACzCD,GAAuBC,KAAMg9B,GAAyBr5B,KAAKC,UAAU/E,GAAQ,KAC7EkB,GAAuBC,KAAMi9B,GAA6B,IAAI5lB,IAAO,KACrEtX,GAAuBC,KAAMk9B,GAAgC,IAAI7lB,IAAO,KAExE,MAAMgnB,EAAQ,IAAIhnB,IAEZinB,EAAU,IAAIjnB,IAEdknB,EAAW,IAAIlnB,IACrBpZ,OAAOD,KAAKa,GAAO+I,SAAShJ,IACxBy/B,EAAM79B,IAAI5B,EAAM,IAAI+I,KACpB22B,EAAQ99B,IAAI5B,EAAM,IAClB2/B,EAAS/9B,IAAI5B,EAAM,IAAI+I,QAE3B,IAAK,MAAM7E,KAAQjE,EAAO,CACtB,MAAM28B,EAAc,IAAI7zB,IACxB,IAAK,MAAM62B,KAAS3/B,EAAMiE,GAAO,CAEzB04B,EAAYl7B,IAAIk+B,EAAM17B,OACtBmE,GAAOlD,mBAAmB,2BAA2BJ,KAAKC,UAAU46B,EAAM17B,YAAYa,KAAKC,UAAUd,KAAS,QAASjE,GAE3H28B,EAAYj4B,IAAIi7B,EAAM17B,MAEtB,MAAMgJ,EAAY0yB,EAAM5/B,KAAK6H,MAAM,uBAAwB,IAAM,KAC7DqF,IAAahJ,GACbmE,GAAOlD,mBAAmB,8BAA8BJ,KAAKC,UAAUkI,KAAa,QAASjN,GAGjFi/B,GAAehyB,KAI1BwyB,EAAQh+B,IAAIwL,IACb7E,GAAOlD,mBAAmB,gBAAgBJ,KAAKC,UAAUkI,KAAa,QAASjN,GAGnFy/B,EAAQ59B,IAAIoL,GAAUnJ,KAAKG,GAC3Bu7B,EAAM39B,IAAIoC,GAAMS,IAAIuI,KAI5B,MAAM2yB,EAAe1xB,MAAM5B,KAAKmzB,EAAQtgC,QAAQ+C,QAAQma,GAAiC,IAA1BojB,EAAQ59B,IAAIwa,GAAGhc,SAClD,IAAxBu/B,EAAav/B,OACb+H,GAAOlD,mBAAmB,uBAAwB,QAASlF,GAEtD4/B,EAAav/B,OAAS,GAC3B+H,GAAOlD,mBAAmB,4CAA4C06B,EAAargC,KAAKW,GAAO4E,KAAKC,UAAU7E,KAAK8E,KAAK,QAAS,QAAShF,GAE9IO,EAAiBY,KAAM,CAAE0+B,YAAaD,EAAa,KAEnD,SAASE,EAAc//B,EAAMggC,GACrBA,EAAMt+B,IAAI1B,IACVqI,GAAOlD,mBAAmB,8BAA8BJ,KAAKC,UAAUhF,KAAS,QAASC,GAE7F+/B,EAAMr7B,IAAI3E,GACV,IAAK,MAAM60B,KAAS4K,EAAM39B,IAAI9B,GAC1B,GAAK0/B,EAAQh+B,IAAImzB,GAAjB,CAIAkL,EAAclL,EAAOmL,GAErB,IAAK,MAAMC,KAAWD,EAClBL,EAAS79B,IAAIm+B,GAASt7B,IAAIkwB,GAGlCmL,EAAME,OAAOlgC,GAEjB+/B,CAAc3+B,KAAK0+B,YAAa,IAAI/2B,KAEpC,IAAK,MAAO7E,EAAMtC,KAAQ+9B,EAAU,CAChC,MAAMQ,EAAKhyB,MAAM5B,KAAK3K,GACtBu+B,EAAGC,OACHv+B,GAAuBT,KAAMi9B,GAA6B,KAAKz8B,IAAIsC,EAAMo7B,GAAWp7B,EAAMjE,EAAMiE,IAASi8B,EAAG3gC,KAAKW,GAAMm/B,GAAWn/B,EAAGF,EAAME,MAAK8E,KAAK,MAGzJhF,YACA,OAAO8E,KAAK6I,MAAM/L,GAAuBT,KAAMg9B,GAAyB,MAE5EiC,WAAWrgC,GACP,IAAIsgC,EAAUz+B,GAAuBT,KAAMk9B,GAAgC,KAAKx8B,IAAI9B,GAKpF,OAJKsgC,IACDA,EAAUz+B,GAAuBT,KAAM+8B,GAA6B,IAAKI,IAA8B58B,KAAKP,KAAMpB,GAClH6B,GAAuBT,KAAMk9B,GAAgC,KAAK18B,IAAI5B,EAAMsgC,IAEzEA,EAEXhB,WAAWp7B,GACP,MAAM4D,EAASjG,GAAuBT,KAAMi9B,GAA6B,KAAKv8B,IAAIoC,GAClF,OAAK4D,GACMO,GAAOlD,mBAAmB,iBAAiBJ,KAAKC,UAAUd,KAAS,OAAQA,GAI1Fq8B,WAAWvgC,EAAMb,GACb,OAAOiC,KAAKi/B,WAAWrgC,EAAhBoB,CAAsBjC,GAEjCqhC,WAAWt8B,EAAM/E,GACb,OAAOosB,GAAUnqB,KAAKm/B,WAAWr8B,EAAM/E,IAE3Cgd,OAAOhd,GACH,OAAOiC,KAAKm/B,WAAWn/B,KAAK0+B,YAAa3gC,GAE7Csd,KAAKtd,GACD,OAAOiC,KAAKo/B,WAAWp/B,KAAK0+B,YAAa3gC,GAE7CshC,OAAOzgC,EAAMb,EAAOuhC,GAIZ,GADgBxB,GAAel/B,GAE3B,OAAO0gC,EAAS1gC,EAAMb,GAI9B,MAAM0I,EAAQ7H,EAAK6H,MAAM,yBACzB,GAAIA,EAAO,CACP,MAAMo4B,EAAUp4B,EAAM,GAChBvH,EAAS0H,SAASH,EAAM,IAI9B,OAHIvH,GAAU,GAAKnB,EAAMmB,SAAWA,GAChC+H,GAAOlD,mBAAmB,0DAA2D,QAAShG,GAE3FA,EAAMK,KAAKK,GAAMuB,KAAKq/B,OAAOR,EAASpgC,EAAG6gC,KAGpD,MAAMnB,EAASn+B,KAAKnB,MAAMD,GAC1B,OAAIu/B,EACOA,EAAO5/B,QAAO,CAACC,GAASsE,KAAAA,EAAMlE,KAAAA,MACjCJ,EAAMsE,GAAQ9C,KAAKq/B,OAAOzgC,EAAMb,EAAM+E,GAAOw8B,GACtC9gC,IACR,IAEAyI,GAAOlD,mBAAmB,iBAAiBnF,IAAQ,OAAQA,GAEtE2gC,MAAMxhC,EAAOuhC,GACT,OAAOt/B,KAAKq/B,OAAOr/B,KAAK0+B,YAAa3gC,EAAOuhC,GAEhDr5B,YAAYpH,GACR,OAAO,IAAIu/B,GAAiBv/B,GAEhCoH,sBAAsBpH,GAClB,OAAOu/B,GAAiBjzB,KAAKtM,GAAO6/B,YAExCz4B,kBAAkBnD,EAAMjE,EAAOd,GAC3B,OAAOqgC,GAAiBjzB,KAAKtM,GAAOugC,WAAWt8B,EAAM/E,GAEzDkI,kBAAkBu5B,GACd,MAAMC,EAAe,GACrB,IAAK,MAAM38B,KAAQ08B,EAAQ,CACvB,MAAM5gC,EAAO4+B,GAAiB16B,GACzBlE,GACDqI,GAAOlD,mBAAmB,kCAAkCJ,KAAKC,UAAUd,KAAS,SAAU08B,GAElGC,EAAa98B,KAAK,CAAEG,KAAAA,EAAMlE,KAAAA,IAK9B,OAHA6gC,EAAaT,MAAK,CAAC9sB,EAAGC,IACXwrB,GAAiB94B,QAAQqN,EAAEpP,MAAQ66B,GAAiB94B,QAAQsN,EAAErP,QAElEs7B,GAAiBgB,WAAW,eAAgB,CAAEM,aAAcD,GAAgBD,GAEvFv5B,cAAcu5B,EAAQ3gC,EAAOd,GACzB,OAAOyX,GAAO,CACV,SACA4oB,GAAiBuB,WAAWH,GAC5BpB,GAAiBjzB,KAAKtM,GAAOwc,KAAKtd,KAG1CkI,YAAYu5B,EAAQ3gC,EAAOd,GACvB,OAAOosB,GAAUiU,GAAiBrjB,OAAOykB,EAAQ3gC,EAAOd,IAG5DkI,0BAA0Bu5B,EAAQ3gC,EAAOd,EAAOi3B,GAE5CwK,EAASvhC,OAAOoN,OAAO,GAAIm0B,GAE3B,MAAMI,EAAW,GAEbJ,EAAO9B,oBAAsBlpB,GAAYgrB,EAAO9B,kBAAmB,MACnEkC,EAASJ,EAAO9B,mBAAqB,MAGzC,MAAMwB,EAAUd,GAAiBjzB,KAAKtM,GAEtCqgC,EAAQK,MAAMxhC,GAAO,CAACa,EAAMb,KACX,YAATa,GAAuB4V,GAAYzW,EAAO,MAC1C6hC,EAAS7hC,GAAS,MAEfA,KAGX,IAAK,MAAM+E,KAAQ88B,EACfA,EAAS98B,SAAckyB,EAAYlyB,GAavC,OAVI08B,EAAO9B,mBAAqBkC,EAASJ,EAAO9B,qBAC5C8B,EAAO9B,kBAAoBkC,EAASJ,EAAO9B,oBASxC,CAAE8B,OAAAA,EAAQzhC,MANjBA,EAAQmhC,EAAQK,MAAMxhC,GAAO,CAACa,EAAMb,IACnB,YAATa,GAAsBghC,EAAS7hC,GACxB6hC,EAAS7hC,GAEbA,KAIfkI,kBAAkBu5B,EAAQ3gC,EAAOd,GAE7BqgC,GAAiBuB,WAAWH,GAE5B,MAAMK,EAAe,GACfC,EAAc,GACpBnC,GAAiB/1B,SAAS9E,IACtB,MAAM/E,EAAQyhC,EAAO18B,GACR,MAAT/E,IAGJ8hC,EAAa/8B,GAAQ+6B,GAAa/6B,GAAM/E,GACxC+hC,EAAYn9B,KAAK,CAAEG,KAAAA,EAAMlE,KAAM4+B,GAAiB16B,SAEpD,MAAMo8B,EAAUd,GAAiBjzB,KAAKtM,GAChCkhC,EAAkB9hC,OAAOoN,OAAO,GAAIxM,GAS1C,OARIkhC,EAAgBL,aAChBz4B,GAAOlD,mBAAmB,2CAA4C,qBAAsBlF,GAG5FkhC,EAAgBL,aAAeI,EAGnCZ,EAAQnkB,OAAOhd,GACR,CACHc,MAAOkhC,EACPP,OAAQK,EACRnB,YAAaQ,EAAQR,YACrBj7B,QAASy7B,EAAQK,MAAMxhC,GAAO,CAACa,EAAMb,KAEjC,GAAIa,EAAK6H,MAAM,eACX,OAAO4O,GAAQpO,GAAO3B,SAASvH,IAGnC,GAAIa,EAAK6H,MAAM,UACX,OAAOQ,GAAOtB,UAAU5H,GAAO+L,WAEnC,OAAQlL,GACJ,IAAK,UACD,OAAOb,EAAMqI,cACjB,IAAK,OACD,QAASrI,EACb,IAAK,SAID,MAHuB,iBAAX,GACRkJ,GAAOlD,mBAAmB,iBAAkB,QAAShG,GAElDA,EAEf,OAAOkJ,GAAOlD,mBAAmB,mBAAoB,OAAQnF,QAK7Eo+B,GAA0B,IAAIv7B,QAAWw7B,GAA8B,IAAIx7B,QAAWy7B,GAAiC,IAAIz7B,QAAWs7B,GAA8B,IAAIz2B,QAAW62B,GAA+B,SAAsCv+B,GAEpP,CACI,MAAMsgC,EAAUpB,GAAel/B,GAC/B,GAAIsgC,EACA,OAAOA,EAIf,MAAMz4B,EAAQ7H,EAAK6H,MAAM,yBACzB,GAAIA,EAAO,CACP,MAAMo4B,EAAUp4B,EAAM,GAChBu5B,EAAahgC,KAAKi/B,WAAWJ,GAC7B3/B,EAAS0H,SAASH,EAAM,IAC9B,OAAQ1I,IACAmB,GAAU,GAAKnB,EAAMmB,SAAWA,GAChC+H,GAAOlD,mBAAmB,0DAA2D,QAAShG,GAElG,IAAI2I,EAAS3I,EAAMK,IAAI4hC,GAIvB,OAHIv/B,GAAuBT,KAAMi9B,GAA6B,KAAK38B,IAAIu+B,KACnEn4B,EAASA,EAAOtI,IAAI+rB,KAEjBA,GAAU3U,GAAO9O,KAIhC,MAAMy3B,EAASn+B,KAAKnB,MAAMD,GAC1B,GAAIu/B,EAAQ,CACR,MAAM8B,EAAclE,GAAGt7B,GAAuBT,KAAMi9B,GAA6B,KAAKv8B,IAAI9B,IAC1F,OAAQb,IACJ,MAAMuB,EAAS6+B,EAAO//B,KAAI,EAAG0E,KAAAA,EAAMlE,KAAAA,MAC/B,MAAM8H,EAAS1G,KAAKi/B,WAAWrgC,EAAhBoB,CAAsBjC,EAAM+E,IAC3C,OAAIrC,GAAuBT,KAAMi9B,GAA6B,KAAK38B,IAAI1B,GAC5DurB,GAAUzjB,GAEdA,KAGX,OADApH,EAAOwV,QAAQmrB,GACRzqB,GAAOlW,IAGtB,OAAO2H,GAAOlD,mBAAmB,iBAAiBnF,IAAQ,OAAQA,ICxbtE,IAWIshC,GAAsBC,GAAmBC,GAAmBC,GAAsBC,GAAqBC,GAAwBC,GAX/HzgC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAajF,MAAMwgC,GACT7/B,YAAY8/B,EAAUC,EAAO/6B,GACzB,MAAM9C,EAAO49B,EAAS59B,KAAM89B,EAAYF,EAASv0B,SACjD/M,EAAiBY,KAAM,CACnB0gC,SAAAA,EAAU59B,KAAAA,EAAM89B,UAAAA,EAAWD,MAAAA,EAAO/6B,KAAAA,KAIvC,MAAMi7B,GACTjgC,YAAY8/B,EAAUI,EAAUl7B,EAAM7H,GAClC,MAAM+E,EAAO49B,EAAS59B,KAAM89B,EAAYF,EAASv0B,SACjD/M,EAAiBY,KAAM,CACnB0gC,SAAAA,EAAU59B,KAAAA,EAAM8C,KAAAA,EAAMg7B,UAAAA,EAAWE,SAAAA,EAAU/iC,MAAAA,KAIhD,MAAMgjC,GACTngC,YAAY8/B,EAAUI,EAAUl7B,GAC5B,MAAM9C,EAAO49B,EAAS59B,KAAM89B,EAAYF,EAASv0B,SACjD/M,EAAiBY,KAAM,CACnB0gC,SAAAA,EAAU59B,KAAAA,EAAM8C,KAAAA,EAAMg7B,UAAAA,EAAWE,SAAAA,KAItC,MAAME,GACTpgC,YAAYya,GACRjc,EAAiBY,KAAM,CAAEqb,KAAAA,EAAM4lB,YAAY,IAE/Ch7B,iBAAiBlI,GACb,SAAUA,IAASA,EAAMkjC,aAIjC,MAAMC,GAAe,CACjB,EAAK,gBACL,EAAK,gBACL,GAAM,sBACN,GAAM,6BACN,GAAM,gBACN,GAAM,8CACN,GAAM,wDACN,GAAM,6CACN,GAAM,gBACN,GAAM,0BAEJC,GAAgB,CAClB,aAAc,CACVP,UAAW,gBACX99B,KAAM,QACN8K,OAAQ,CAAC,UACToqB,OAASv0B,GACE,+BAA+BE,KAAKC,UAAUH,MAG7D,aAAc,CACVm9B,UAAW,iBACX99B,KAAM,QACN8K,OAAQ,CAAC,WACToqB,OAASz2B,IACL,IAAIy2B,EAAS,qBAIb,OAHIz2B,GAAQ,GAAKA,GAAQ,KAAQ2/B,GAAa3/B,EAAKuI,cAC/CkuB,EAASkJ,GAAa3/B,EAAKuI,aAExB,8BAA8BvI,EAAKuI,SAAS,QAAQkuB,QAIhE,MAAMoJ,GACTxgC,YAAYygC,GACRnB,GAAqB38B,IAAIvD,MACzBmgC,GAAkB3/B,IAAIR,UAAM,GAC5BogC,GAAkB5/B,IAAIR,UAAM,GAC5BqgC,GAAqB7/B,IAAIR,UAAM,GAE/BsgC,GAAoB9/B,IAAIR,UAAM,GAC9B,IAAIshC,EAAM,GAENA,EADuB,iBAAf,EACF39B,KAAK6I,MAAM60B,GAGXA,EAEVthC,GAAuBC,KAAMqgC,GAAsB,IAAIhpB,IAAO,KAC9DtX,GAAuBC,KAAMmgC,GAAmB,IAAI9oB,IAAO,KAC3DtX,GAAuBC,KAAMogC,GAAmB,IAAI/oB,IAAO,KAE3DjY,EAAiBY,KAAM,CACnBqhC,UAAWpjC,OAAO4J,OAAOy5B,EAAIljC,KAAKgC,GAAMuN,GAASxC,KAAK/K,KAAIW,QAAQX,GAAY,MAALA,OAE7EL,GAAuBC,KAAMsgC,GAAqBtgC,KAAKuhC,cAAe,KAEtEvhC,KAAKqhC,UAAUz5B,SAAS84B,IACpB,IAAIc,EACJ,OAAQd,EAAS9hC,MACb,IAAK,cACD,OAAIoB,KAAKyhC,YACLx6B,EAAOlB,KAAK,2CAIhB3G,EAAiBY,KAAM,CAAEyhC,OAAQf,IAErC,IAAK,WAGDc,EAAS/gC,GAAuBT,KAAMqgC,GAAsB,KAC5D,MACJ,IAAK,QAEDmB,EAAS/gC,GAAuBT,KAAMogC,GAAmB,KACzD,MACJ,IAAK,QACDoB,EAAS/gC,GAAuBT,KAAMmgC,GAAmB,KACzD,MACJ,QACI,OAER,MAAMS,EAAYF,EAASv0B,SACvBq1B,EAAOlhC,IAAIsgC,GACX35B,EAAOlB,KAAK,0BAA4B66B,GAG5CY,EAAOhhC,IAAIogC,EAAWF,MAGrB1gC,KAAKyhC,QACNriC,EAAiBY,KAAM,CACnByhC,OAAQ1zB,GAAoBF,WAAW,mBAKnD1B,OAAOA,GACEA,IACDA,EAAS3E,EAAWmF,MAEpBR,IAAW3E,EAAW4E,SACtBnF,EAAOlD,mBAAmB,gDAAiD,SAAUoI,GAEzF,MAAMm1B,EAAMthC,KAAKqhC,UAAUjjC,KAAKgC,GAAMA,EAAE+L,OAAOA,KAE/C,OAAIA,IAAW3E,EAAW6E,KACf1I,KAAKC,UAAU09B,EAAIljC,KAAK0pB,GAAMnkB,KAAK6I,MAAMsb,MAE7CwZ,EAEXC,cACI,OAAO1F,GAEX6F,gBAAgBliC,GACZ,OAAQiB,GAAuBT,KAAMkgC,GAAsB,IAAKK,IAAwBhgC,KAAKP,KAAMR,EAAK,MAAM,GAAQsD,KAE1H6+B,YAAYniC,EAAKF,GACb,OAAOmB,GAAuBT,KAAMkgC,GAAsB,IAAKK,IAAwBhgC,KAAKP,KAAMR,EAAKF,GAAU,MAAM,GAE3HsiC,aAAapiC,GACT,OAAQiB,GAAuBT,KAAMkgC,GAAsB,IAAKM,IAAqBjgC,KAAKP,KAAMR,EAAK,MAAM,GAAQsD,KAEvH++B,SAASriC,EAAKF,GACV,OAAOmB,GAAuBT,KAAMkgC,GAAsB,IAAKM,IAAqBjgC,KAAKP,KAAMR,EAAKF,GAAU,MAAM,GAGxHwiC,SAAStiC,EAAKF,GACV,GAAIkV,GAAYhV,GAAM,CAClB,MAAMshC,EAAWthC,EAAI4G,cACrB,IAAK,MAAMs6B,KAAYjgC,GAAuBT,KAAMmgC,GAAmB,KAAK7gC,SACxE,GAAIwhC,IAAa9gC,KAAK+hC,YAAYrB,GAC9B,OAAOA,EAGfz5B,EAAOlD,mBAAmB,oBAAqB,WAAYvE,GAG/D,IAA0B,IAAtBA,EAAIqF,QAAQ,KAAa,CACzB,MAAMm9B,EAAW,GACjB,IAAK,MAAOl/B,EAAM49B,KAAajgC,GAAuBT,KAAMmgC,GAAmB,KACvEr9B,EAAKhE,MAAM,KAAiB,KAAOU,GACnCwiC,EAASr/B,KAAK+9B,GAUtB,OAPwB,IAApBsB,EAAS9iC,OACT+H,EAAOlD,mBAAmB,oBAAqB,OAAQvE,GAElDwiC,EAAS9iC,OAAS,GAEvB+H,EAAOlD,mBAAmB,2BAA4B,OAAQvE,GAE3DwiC,EAAS,GAGpB,MAAMt7B,EAASjG,GAAuBT,KAAMmgC,GAAmB,KAAKz/B,IAAIsN,GAAcH,WAAWrO,GAAK2M,UACtG,OAAIzF,GAGGO,EAAOlD,mBAAmB,oBAAqB,YAAavE,GAGvEuiC,YAAYrB,GAiBR,OAAO9qB,GAAUmmB,GAAG2E,EAASv0B,UAAW,EAAG,GAG/C81B,cAAcvB,GAEV,OAAO3E,GAAG2E,EAASv0B,UAEvB+1B,cAAc3zB,EAAQsG,GAClB,OAAOpU,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAOxnB,EAAQsG,GAEjFstB,cAAc5zB,EAAQjP,GAClB,OAAOmB,GAAuBT,KAAMsgC,GAAqB,KAAKvlB,OAAOxM,EAAQjP,GAEjF8iC,aAAa9iC,GACT,OAAOU,KAAKmiC,cAAcniC,KAAKyhC,OAAO7zB,OAAQtO,GAAU,IAE5D+iC,kBAAkB3B,EAAU7rB,GAOxB,MAN0B,iBAAd,IACR6rB,EAAW1gC,KAAK8hC,SAASpB,IAEzB9qB,GAAUf,EAAM,EAAG,KAAO7U,KAAK+hC,YAAYrB,IAC3Cz5B,EAAOlD,mBAAmB,uCAAuC28B,EAAS59B,QAAS,OAAQ+R,GAExF7U,KAAKkiC,cAAcxB,EAAS9yB,OAAQgI,GAAUf,EAAM,IAE/DytB,kBAAkB5B,EAAUphC,GAIxB,MAH0B,iBAAd,IACRohC,EAAW1gC,KAAK8hC,SAASpB,IAEtBlrB,GAAO,CACVxV,KAAK+hC,YAAYrB,GACjB1gC,KAAKmiC,cAAczB,EAAS9yB,OAAQtO,GAAU,MAItDijC,mBAAmB7B,EAAU7rB,GAOzB,MAN0B,iBAAd,IACR6rB,EAAW1gC,KAAK2hC,YAAYjB,IAE5B9qB,GAAUf,EAAM,EAAG,KAAO7U,KAAK+hC,YAAYrB,IAC3Cz5B,EAAOlD,mBAAmB,0CAA0C28B,EAAS59B,QAAS,OAAQ+R,GAE3F7U,KAAKkiC,cAAcxB,EAAS9yB,OAAQgI,GAAUf,EAAM,IAG/D2tB,mBAAmB9B,EAAUphC,GAIzB,MAH0B,iBAAd,IACRohC,EAAW1gC,KAAK2hC,YAAYjB,IAEzBlrB,GAAO,CACVxV,KAAK+hC,YAAYrB,GACjB1gC,KAAKmiC,cAAczB,EAAS9yB,OAAQtO,GAAU,MAItDmjC,qBAAqB/B,EAAU7rB,GACD,iBAAd,IACR6rB,EAAW1gC,KAAK2hC,YAAYjB,IAEhC,IAAIj9B,EAAU,iCACd,MAAM6R,EAAQV,GAASC,GACvB,GAAKS,EAAMpW,OAAS,IAAQ,EACxB,IACI,OAAOuB,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAO2K,EAAS3xB,QAASuG,GAE3F,MAAOhU,GACHmC,EAAU,+BAIlB,OAAOwD,EAAOnD,WAAWL,EAAS,WAAY,CAC1C1F,MAAOsX,GAAQC,GACfrT,KAAM,CAAEiD,OAAQw7B,EAAS59B,KAAM89B,UAAWF,EAASv0B,YAG3D3I,UAAUk9B,EAAU7Z,EAAOwN,GACG,iBAAd,IACRqM,EAAW1gC,KAAK2hC,YAAYjB,IAEhC,MAAM7rB,EAAO5N,EAAO3B,SAASuhB,GAC7B,IAAIjhB,EASA88B,EACAC,EACAC,EAVJ,GAAIvO,EACA,IACIzuB,EAAOnF,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAO2K,EAAS9yB,OAAQymB,EAAGxf,MAAQ,MAErG,MAAOvT,GACHwF,QAAQC,IAAIzF,GAMpB,IAAI02B,EAAS,iBACb,GAAoB,IAAhBnjB,EAAK3V,OACL84B,EAAS,4BAER,GAAKnjB,EAAK3V,OAAS,IAAQ,EAAG,CAC/B,MAAM4hC,EAAWzrB,GAAQR,EAAKhM,MAAM,EAAG,IACjCg6B,EAAU1B,GAAcL,GAC9B,GAAI+B,EACA,IACIF,EAAYE,EAAQ//B,KACpB8/B,EAAiBC,EAAQjC,UACzB8B,EAAYjiC,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAO8M,EAAQj1B,OAAQiH,EAAKhM,MAAM,IACrGmvB,EAAS6K,EAAQ7K,UAAU0K,GAE/B,MAAOphC,GACHwF,QAAQC,IAAIzF,OAGf,CACD02B,EAAS,uBACT,IACI,MAAM12B,EAAQtB,KAAK8hC,SAAShB,GAC5B6B,EAAYrhC,EAAMwB,KAClB8/B,EAAiBthC,EAAM6K,SACvB6rB,EAAS,iBAAiB4K,IAC1B,IACIF,EAAYjiC,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAOz0B,EAAMsM,OAAQiH,EAAKhM,MAAM,IAEvG,MAAOvH,GACH02B,EAAS,iBAAiB4K,mCAGlC,MAAOthC,GACHwF,QAAQC,IAAIzF,KAIxB,OAAO2F,EAAOzD,UAAU,wBAAyB,iBAAkB,CAC/DqR,KAAMQ,GAAQR,GAAOiuB,YAAa,KAClC59B,OAAQw7B,EAAS59B,KAAM89B,UAAWF,EAASv0B,SAAUvG,KAAAA,EACrD88B,UAAAA,EAAWC,UAAAA,EAAWC,eAAAA,EAAgB5K,OAAAA,IAI9C+K,qBAAqBC,EAAkB1jC,GAInC,MAHkC,iBAAtB,IACR0jC,EAAmBhjC,KAAK2hC,YAAYqB,IAEjC3tB,GAAQ5U,GAAuBT,KAAMsgC,GAAqB,KAAKvlB,OAAOioB,EAAiBj0B,QAASzP,GAAU,KAiCrH2jC,mBAAmBC,EAAe5jC,GACC,iBAAnB,IACR4jC,EAAgBljC,KAAK6hC,SAASqB,IAE9B5jC,EAAOJ,OAASgkC,EAAct1B,OAAO1O,QACrC+H,EAAOnD,WAAW,0BAA4Bo/B,EAAc/2B,SAAU,sBAAuB,CACzF/G,MAAO9F,EAAOJ,OACdmG,cAAe69B,EAAct1B,OAAO1O,SAG5C,MAAMikC,EAAS,GACVD,EAAcx0B,WACfy0B,EAAOxgC,KAAK3C,KAAKiiC,cAAciB,IAEnC,MAAME,EAAc,CAAC31B,EAAO1P,IACL,WAAf0P,EAAM7O,KACCm9B,GAAGh+B,GAEU,UAAf0P,EAAM7O,KACJurB,GAAU9U,GAAQtX,KAGV,YAAf0P,EAAM7O,MACN6B,GAAuBT,KAAMsgC,GAAqB,KAAKvlB,OAAO,CAAC,WAAY,CAAChd,IAEzEqY,GAAaf,GAAQtX,GAAQ,KAyBxC,IAtBAuB,EAAOsI,SAAQ,CAAC7J,EAAOW,KACnB,MAAM+O,EAAQy1B,EAAct1B,OAAOlP,GAC9B+O,EAAM1B,QAME,MAAThO,EACAolC,EAAOxgC,KAAK,MAEY,UAAnB8K,EAAM3B,UAA2C,UAAnB2B,EAAM3B,SACzC7E,EAAOlD,mBAAmB,gDAAkD,YAAc0J,EAAM3K,KAAO/E,GAElGgP,MAAMN,QAAQ1O,GACnBolC,EAAOxgC,KAAK5E,EAAMK,KAAKL,GAAUqlC,EAAY31B,EAAO1P,MAGpDolC,EAAOxgC,KAAKygC,EAAY31B,EAAO1P,IAflB,MAATA,GACAkJ,EAAOlD,mBAAmB,qDAAuD,YAAc0J,EAAM3K,KAAO/E,MAkBjHolC,EAAOjkC,QAAwC,OAA9BikC,EAAOA,EAAOjkC,OAAS,IAC3CikC,EAAO95B,MAEX,OAAO85B,EAEXE,eAAeH,EAAe5jC,GACK,iBAAnB,IACR4jC,EAAgBljC,KAAK6hC,SAASqB,IAElC,MAAMC,EAAS,GACTG,EAAY,GACZC,EAAa,GA6BnB,OA5BKL,EAAcx0B,WACfy0B,EAAOxgC,KAAK3C,KAAKiiC,cAAciB,IAE/B5jC,EAAOJ,SAAWgkC,EAAct1B,OAAO1O,QACvC+H,EAAOlD,mBAAmB,kCAAmC,SAAUzE,GAE3E4jC,EAAct1B,OAAOhG,SAAQ,CAAC6F,EAAO/O,KACjC,MAAMX,EAAQuB,EAAOZ,GACrB,GAAI+O,EAAM1B,QACN,GAAmB,WAAf0B,EAAM7O,KACNukC,EAAOxgC,KAAKo5B,GAAGh+B,SAEd,GAAmB,UAAf0P,EAAM7O,KACXukC,EAAOxgC,KAAKwnB,GAAUpsB,QAErB,CAAA,GAAuB,UAAnB0P,EAAM3B,UAA2C,UAAnB2B,EAAM3B,SAEzC,MAAM,IAAI3M,MAAM,mBAGhBgkC,EAAOxgC,KAAKlC,GAAuBT,KAAMsgC,GAAqB,KAAKvlB,OAAO,CAACtN,EAAM7O,MAAO,CAACb,UAI7FulC,EAAU3gC,KAAK8K,GACf81B,EAAW5gC,KAAK5E,MAGjB,CACH8W,KAAMpU,GAAuBT,KAAMsgC,GAAqB,KAAKvlB,OAAOuoB,EAAWC,GAC/EJ,OAAQA,GAIhBK,eAAeN,EAAeruB,EAAMsuB,GAIhC,GAH+B,iBAAnB,IACRD,EAAgBljC,KAAK6hC,SAASqB,IAEpB,MAAVC,IAAmBD,EAAcx0B,UAAW,CAC5C,MAAM+0B,EAAazjC,KAAKiiC,cAAciB,GACjC1uB,GAAY2uB,EAAO,GAAI,KAAOA,EAAO,GAAG/8B,gBAAkBq9B,GAC3Dx8B,EAAOlD,mBAAmB,0BAA2B,YAAao/B,EAAO,IAE7EA,EAASA,EAAOt6B,MAAM,GAE1B,MAAMkD,EAAU,GACV23B,EAAa,GACb5rB,EAAU,GAChBorB,EAAct1B,OAAOhG,SAAQ,CAAC6F,EAAO/O,KAC7B+O,EAAM1B,QACa,WAAf0B,EAAM7O,MAAoC,UAAf6O,EAAM7O,MAAuC,UAAnB6O,EAAM3B,UAA2C,UAAnB2B,EAAM3B,UACzFC,EAAQpJ,KAAKoI,GAAU+C,WAAW,CAAElP,KAAM,UAAWkE,KAAM2K,EAAM3K,QACjEgV,EAAQnV,MAAK,KAGboJ,EAAQpJ,KAAK8K,GACbqK,EAAQnV,MAAK,KAIjB+gC,EAAW/gC,KAAK8K,GAChBqK,EAAQnV,MAAK,OAGrB,MAAMghC,EAA2B,MAAVR,EAAkB1iC,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAOhqB,EAASyJ,GAAO2tB,IAAW,KAC5HS,EAAmBnjC,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAO2N,EAAY7uB,GAAM,GAEnGvV,EAAS,GACTtB,EAAO,GACb,IAAI6lC,EAAkB,EAAGC,EAAe,EA8BxC,OA7BAZ,EAAct1B,OAAOhG,SAAQ,CAAC6F,EAAO/O,KACjC,IAAIX,EAAQ,KACZ,GAAI0P,EAAM1B,QACN,GAAqB,MAAjB43B,EACA5lC,EAAQ,IAAIijC,GAAQ,WAEnB,GAAIlpB,EAAQpZ,GACbX,EAAQ,IAAIijC,GAAQ2C,EAAcG,WAGlC,IACI/lC,EAAQ4lC,EAAcG,KAE1B,MAAOxiC,GACHvD,EAAQuD,OAKhB,IACIvD,EAAQ6lC,EAAiBC,KAE7B,MAAOviC,GACHvD,EAAQuD,EAGhBhC,EAAOqD,KAAK5E,GACZC,EAAK2E,KAAK8K,EAAM3K,MAAQ,SAErBsU,GAAO4f,UAAU13B,EAAQtB,GAIpC+lC,iBAAiB1P,GACb,MAAMxf,EAAO5N,EAAO3B,SAAS+uB,EAAGxf,KAAM,WAChC9W,EAAQkJ,EAAOtB,UAAuB,MAAZ0uB,EAAGt2B,MAAiBs2B,EAAGt2B,MAAQ,EAAG,YAC5D2iC,EAAW1gC,KAAK2hC,YAAYtsB,GAAQR,EAAKhM,MAAM,EAAG,KACxD,IAAK63B,EACD,OAAO,KAEX,MAAM96B,EAAOnF,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAO2K,EAAS9yB,OAAQiH,EAAKhM,MAAM,IACvG,OAAO,IAAIg4B,GAAuBH,EAAU1gC,KAAK+hC,YAAYrB,GAAW96B,EAAM7H,GAMlFimC,SAASj9B,GACL,MAAM25B,EAAW1gC,KAAK6hC,SAAS96B,EAAIo8B,OAAO,IAC1C,OAAKzC,GAAYA,EAAShyB,UACf,KAKJ,IAAI+xB,GAAeC,EAAU1gC,KAAKiiC,cAAcvB,GAAW1gC,KAAKwjC,eAAe9C,EAAU35B,EAAI8N,KAAM9N,EAAIo8B,SAElHc,WAAWpvB,GACP,MAAMqvB,EAAU7uB,GAAQR,GAClB6rB,EAAW1gC,KAAK8hC,SAASlsB,GAAUsuB,EAAS,EAAG,IACrD,IAAKxD,EACD,OAAO,KAEX,MAAM96B,EAAOnF,GAAuBT,KAAMsgC,GAAqB,KAAKvK,OAAO2K,EAAS9yB,OAAQgI,GAAUsuB,EAAS,IAC/G,OAAO,IAAInD,GAAiBL,EAAU1gC,KAAK+hC,YAAYrB,GAAW96B,GAEtEK,YAAYlI,GAER,OAAIA,aAAiBqjC,GACVrjC,EAGY,iBAAX,EACD,IAAIqjC,GAAUz9B,KAAK6I,MAAMzO,IAGN,mBAAlBA,EAAY,OACb,IAAIqjC,GAAUrjC,EAAMoO,OAAO3E,EAAW6E,OAG1C,IAAI+0B,GAAUrjC,IAG7BoiC,GAAoB,IAAI1+B,QAAW2+B,GAAoB,IAAI3+B,QAAW4+B,GAAuB,IAAI5+B,QAAW6+B,GAAsB,IAAI7+B,QAAWy+B,GAAuB,IAAI55B,QAAWi6B,GAAyB,SAAgC/gC,EAAKF,EAAQ6kC,GAEzP,GAAI3vB,GAAYhV,GAAM,CAClB,MAAMshC,EAAWthC,EAAI4G,cACrB,IAAK,MAAMs6B,KAAYjgC,GAAuBT,KAAMqgC,GAAsB,KAAK/gC,SAC3E,GAAIwhC,IAAa9gC,KAAK+hC,YAAYrB,GAC9B,OAAOA,EAGfz5B,EAAOlD,mBAAmB,uBAAwB,WAAYvE,GAGlE,IAA0B,IAAtBA,EAAIqF,QAAQ,KAAa,CACzB,MAAMm9B,EAAW,GACjB,IAAK,MAAOl/B,EAAM49B,KAAajgC,GAAuBT,KAAMqgC,GAAsB,KAC1Ev9B,EAAKhE,MAAM,KAAiB,KAAOU,GACnCwiC,EAASr/B,KAAK+9B,GAGtB,GAAIphC,EAAQ,CACR,MAAM8kC,EAAa9kC,EAAOJ,OAAS,EAAKI,EAAOA,EAAOJ,OAAS,GAAK,KACpE,IAAImlC,EAAc/kC,EAAOJ,OACrBolC,GAAe,EACfnP,GAAMS,QAAQwO,IAAiC,cAAnBA,EAAUxlC,OACtC0lC,GAAe,EACfD,KAIJ,IAAK,IAAIplC,EAAI+iC,EAAS9iC,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC3C,MAAM2O,EAASo0B,EAAS/iC,GAAG2O,OAAO1O,OAC9B0O,IAAWy2B,GAAiBC,GAAgB12B,IAAWy2B,EAAc,GACrErC,EAASuC,OAAOtlC,EAAG,GAI3B,IAAK,IAAIA,EAAI+iC,EAAS9iC,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC3C,MAAM2O,EAASo0B,EAAS/iC,GAAG2O,OAC3B,IAAK,IAAIka,EAAI,EAAGA,EAAIxoB,EAAOJ,OAAQ4oB,IAE/B,GAAKqN,GAAMS,QAAQt2B,EAAOwoB,IAA1B,CAIA,GAAIA,GAAKla,EAAO1O,OAAQ,CACpB,GAAuB,cAAnBI,EAAOwoB,GAAGlpB,KACV,SAEJojC,EAASuC,OAAOtlC,EAAG,GACnB,MAGJ,GAAIK,EAAOwoB,GAAGlpB,OAASgP,EAAOka,GAAGhc,SAAU,CACvCk2B,EAASuC,OAAOtlC,EAAG,GACnB,SAOhB,GAAwB,IAApB+iC,EAAS9iC,QAAgBI,GAAUA,EAAOJ,SAAW8iC,EAAS,GAAGp0B,OAAO1O,OAAQ,CAChF,MAAMslC,EAAUllC,EAAOA,EAAOJ,OAAS,IACxB,MAAXslC,GAAmBz3B,MAAMN,QAAQ+3B,IAAiC,iBAArB,IAC7CxC,EAASuC,OAAO,EAAG,GAG3B,GAAwB,IAApBvC,EAAS9iC,OACT+H,EAAOlD,mBAAmB,uBAAwB,OAAQvE,QAEzD,GAAIwiC,EAAS9iC,OAAS,GAAKilC,EAAa,CACzC,MAAMM,EAAWzC,EAAS5jC,KAAKsmC,GAAM/gC,KAAKC,UAAU8gC,EAAEv4B,YAAWtI,KAAK,MACtEoD,EAAOlD,mBAAmB,qCAAqC0gC,KAAa,OAAQjlC,GAExF,OAAOwiC,EAAS,GAGpB,MAAMt7B,EAASjG,GAAuBT,KAAMqgC,GAAsB,KAAK3/B,IAAIwN,GAAiBL,WAAWrO,GAAK2M,UAC5G,OAAIzF,GAGGO,EAAOlD,mBAAmB,uBAAwB,YAAavE,IACvEghC,GAAsB,SAA6BhhC,EAAKF,EAAQ6kC,GAE/D,GAAI3vB,GAAYhV,GAAM,CAClB,MAAMikC,EAAajkC,EAAI4G,cACvB,IAAK,MAAMs6B,KAAYjgC,GAAuBT,KAAMogC,GAAmB,KAAK9gC,SACxE,GAAImkC,IAAezjC,KAAKiiC,cAAcvB,GAClC,OAAOA,EAGfz5B,EAAOlD,mBAAmB,oBAAqB,aAAcvE,GAGjE,IAA0B,IAAtBA,EAAIqF,QAAQ,KAAa,CACzB,MAAMm9B,EAAW,GACjB,IAAK,MAAOl/B,EAAM49B,KAAajgC,GAAuBT,KAAMogC,GAAmB,KACvEt9B,EAAKhE,MAAM,KAAiB,KAAOU,GACnCwiC,EAASr/B,KAAK+9B,GAGtB,GAAIphC,EAAQ,CAER,IAAK,IAAIL,EAAI+iC,EAAS9iC,OAAS,EAAGD,GAAK,EAAGA,IAClC+iC,EAAS/iC,GAAG2O,OAAO1O,OAASI,EAAOJ,QACnC8iC,EAASuC,OAAOtlC,EAAG,GAI3B,IAAK,IAAIA,EAAI+iC,EAAS9iC,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC3C,MAAM2O,EAASo0B,EAAS/iC,GAAG2O,OAC3B,IAAK,IAAIka,EAAI,EAAGA,EAAIxoB,EAAOJ,OAAQ4oB,IAE/B,GAAKqN,GAAMS,QAAQt2B,EAAOwoB,KAItBxoB,EAAOwoB,GAAGlpB,OAASgP,EAAOka,GAAGhc,SAAU,CACvCk2B,EAASuC,OAAOtlC,EAAG,GACnB,QAYhB,OAPwB,IAApB+iC,EAAS9iC,OACT+H,EAAOlD,mBAAmB,oBAAqB,OAAQvE,GAElDwiC,EAAS9iC,OAAS,GAAKilC,GAE5Bl9B,EAAOlD,mBAAmB,2BAA4B,OAAQvE,GAE3DwiC,EAAS,GAGpB,MAAMt7B,EAASjG,GAAuBT,KAAMogC,GAAmB,KAAK1/B,IAAIuN,GAAcJ,WAAWrO,GAAK2M,UACtG,OAAIzF,GAGGO,EAAOlD,mBAAmB,oBAAqB,YAAavE,IC1vBhE,MCEMyH,GAAS,IAAI5D,EDFH,mCEAvB,IAWIshC,GAAsBC,GAXtB7kC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAQjF,MAAM4kC,GACTjkC,YAAYkkC,EAAYC,EAAeC,EAASC,EAAMC,GAClDP,GAAqBnkC,IAAIR,UAAM,GAC/B4kC,GAAqBpkC,IAAIR,UAAM,GAC/BD,GAAuBC,KAAM2kC,GAAsB,CAC/CG,WAAAA,EACAC,cAAAA,EACAC,QAAS/mC,OAAO4J,OAAO5J,OAAOoN,OAAO,GAAIpN,OAAOD,KAAKgnC,GAASzmC,QAAO,CAACC,EAAOH,KACzEG,EAAMH,EAAE+H,eAAiB4+B,EAAQ3mC,GAC1BG,IACR,MACHymC,KAAgB,MAARA,EAAgB,KAAO,IAAIz+B,WAAWy+B,GAC9CC,QAAUA,GAAW,MACtB,KACHnlC,GAAuBC,KAAM4kC,GAAsB,CAAEnhC,QAAS,IAAM,KAExEqG,WACI,MAAMm7B,EAAOhkC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,QAC/E,MAAO,oBAAoB3kC,KAAK8kC,mBAAmBG,EAAO5vB,GAAQ4vB,GAAQ,UAE1EH,iBAAe,OAAO7jC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,cACxFI,oBAAkB,OAAO9jC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,iBAC3FK,cAAY,OAAO/jC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,WACrFM,WACA,MAAMA,EAAOhkC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,QAC/E,OAAgB,MAARM,EAAgB,KAAO,IAAIz+B,WAAWy+B,GAE9CE,eACA,IACI,MAAMF,EAAOhkC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,QAC/E,OAAgB,MAARM,EAAgB,GAAKpL,GAAaoL,GAE9C,MAAO3jC,GACH,OAAO2F,GAAOnD,WAAW,wCAAyC,wBAAyB,CACvFY,UAAW,WAAYzC,KAAM,CAAEmjC,SAAUplC,SAIjDqlC,eACA,IACI,OAAO1hC,KAAK6I,MAAMxM,KAAKmlC,UAE3B,MAAO7jC,GACH,OAAO2F,GAAOnD,WAAW,kCAAmC,wBAAyB,CACjFY,UAAW,WAAYzC,KAAM,CAAEmjC,SAAUplC,SAIrD,EAAE2kC,GAAuB,IAAIljC,QAAWmjC,GAAuB,IAAInjC,QAAWkK,OAAO25B,aACjF,MAAMN,EAAUhlC,KAAKglC,QACfhnC,EAAOC,OAAOD,KAAKgnC,GACzB,IAAItmC,EAAQ,EACZ,MAAO,CACH6mC,KAAM,KACF,GAAI7mC,EAAQV,EAAKkB,OAAQ,CACrB,MAAMM,EAAMxB,EAAKU,KACjB,MAAO,CACHX,MAAO,CAACyB,EAAKwlC,EAAQxlC,IAAOgmC,MAAM,GAG1C,MAAO,CAAEznC,WAAO2B,EAAW8lC,MAAM,KAI7CC,gBAAgBhiC,EAASnC,GACrB,IAAIyjC,EAMAA,EALCthC,EAKe,kCAAkCzD,KAAK8kC,cAAc9kC,KAAK+kC,kBAAkBthC,KAH5E,kCADhBA,EAAU,GAAGzD,KAAK8kC,cAAc9kC,KAAK+kC,mBAMzC,MAAMK,EAAW,IAAIP,GAAc,IAAKE,EAAe/kC,KAAKglC,QAAShlC,KAAKilC,KAAMhkC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,iBAAcjlC,GAEhK,OADAK,GAAuBqlC,EAAUR,GAAsB,CAAEnhC,QAAAA,EAASnC,MAAAA,GAAS,KACpE8jC,EAEXM,mBAAmBjiC,EAASkiC,GACX,MAATA,IACAA,EAAQ,MAEW,iBAAX,IAAwBphC,OAAOC,UAAUmhC,IAAUA,EAAQ,IACnE1+B,GAAOlD,mBAAmB,wBAAyB,QAAS4hC,GAEhE,MAAMrkC,EAAQ,IAAInC,MAAMsE,GAAW,uBAEnC,MADArE,EAAiBkC,EAAO,CAAEqkC,MAAAA,EAAOC,UAAU,IACrCtkC,EAEVukC,UAAUrmC,GACN,OAAOQ,KAAKglC,QAAQxlC,EAAI4G,eAE5B0/B,UAEI,OAAgB,MADH7kC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,QAG/EO,cAAY,OAAOjkC,EAASR,GAAuBT,KAAM2kC,GAAsB,KAAM,WACzFoB,KACI,MAA4E,KAApEtlC,GAAuBT,KAAM4kC,GAAsB,KAAKnhC,SAAkBzD,KAAK8kC,YAAc,KAAO9kC,KAAK8kC,WAAa,IAElIkB,WACI,GAAIhmC,KAAK+lC,KACL,OAEJ,IAAItiC,QAAEA,EAAOnC,MAAEA,GAAUb,GAAuBT,KAAM4kC,GAAsB,KAC5D,KAAZnhC,IACAA,EAAU,mBAAmBzD,KAAK8kC,cAAc9kC,KAAK+kC,iBAEzD99B,GAAOnD,WAAWL,EAAS,eAAgB,CACvCyhC,QAAUllC,KAAKklC,SAAW,kBAAoBE,SAAUplC,KAAMsB,MAAAA,KC3HnEzD,eAAeooC,GAAOC,EAAKC,GAC9B,MAAMC,EAAWF,EAAIG,IAAIvnC,MAAM,KAAK,GAAGsH,cACtB,SAAbggC,GAAoC,UAAbA,GACvBn/B,GAAOnD,WAAW,wBAAwBsiC,IAAY,wBAAyB,CAC3EnkC,KAAM,CAAEmkC,SAAAA,GACR1hC,UAAW,YAGfwhC,EAAII,cAAgBJ,EAAIK,6BACxBt/B,GAAOnD,WAAW,8CAA+C,wBAAyB,CACtFY,UAAW,YAGnB,MAAM8hC,EAAO,CACTthC,OAAQghC,EAAIhhC,OACZ8/B,QAAS,IAAIyB,QAAQ15B,MAAM5B,KAAK+6B,IAChCjB,KAAMiB,EAAIjB,WAAQvlC,GAEhBgnC,QAAaC,MAAMT,EAAIG,IAAKG,GAC5BxB,EAAU,GAChB0B,EAAK1B,QAAQp9B,SAAQ,CAAC7J,EAAOyB,KACzBwlC,EAAQxlC,EAAI4G,eAAiBrI,KAEjC,MAAMknC,EAAO,IAAIz+B,iBAAiBkgC,EAAKE,eACvC,OAAO,IAAI/B,GAAc6B,EAAKG,OAAQH,EAAKI,WAAY9B,EAASC,EAAMiB,GC1B1E,IAWIa,GAXAhnC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAMxF,SAASuC,GAAMzE,EAAOa,EAAMkE,GACxB,UAAY,IAAWlE,EACnB,MAAM,IAAIO,MAAM,WAAW2D,KAE/B,OAAO/E,EAEJ,MAAMipC,GACTpmC,YAAYylC,GACRU,GAAoBvmC,IAAIR,UAAM,GAC9BD,GAAuBC,KAAM+mC,GAAqB,CAC9CE,eAAe,EACfC,MAAM,EACNlC,QAAS,GACT9/B,OAAQ,GACRihC,QAAS,IACTE,IAAK7jC,GAAM6jC,EAAK,SAAU,QAC3B,KAGHA,UAAQ,OAAOplC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,OAChFV,QAAIA,GACJllC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,MAAOvkC,GAAM6jC,EAAK,SAAU,QAG7FpB,WACA,MAAMA,EAAOhkC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,QAC9E,OAAY,MAAR9B,EACO,KAEPjlC,KAAKoB,WACE,IAAIoF,WAAWy+B,GAEnBA,EAEPA,SAAKA,GACL,GAAY,MAARA,EACA9jC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,YAAQrnC,GACzEyB,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,gBAAYrnC,QAE5E,GAAsB,iBAAV,EAEbyB,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,OAAQ3N,GAAY6L,IACrF9jC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,WAAY,mBAE5E,GAAI9B,aAAgBz+B,WACrBrF,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,OAAQ9B,GACzE9jC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,WAAY,gCAE5E,CAAA,GAAsB,iBAAV,EAKb,MAAM,IAAI5nC,MAAM,gBAJhBgC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,OAAQ3N,GAAYz1B,KAAKC,UAAUqhC,KACpG9jC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,WAAY,qBAMrFjB,UACI,OAAoF,MAA5E7kC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,QAGzE7hC,aACA,MAAMA,EAASjE,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,UAChF,OAAI7hC,EACOA,EAAO0tB,cAEd5yB,KAAKilC,KACE,OAEJ,MAEP//B,WAAOA,GACO,MAAVA,IACAA,EAAS,IAEb/D,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,SAAUvkC,GAAM0C,EAAQ,SAAU,WAGnG8/B,cACA,MAAMA,EAAU/mC,OAAOoN,OAAO,GAAIpK,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,YAC7FI,EAAWlmC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,YAYlF,OAXI/mC,KAAKsmC,YAELtmC,KAAKonC,YACLpC,EAAQ,mBAAqB,QAEF,MAA3BA,EAAQ,iBAA2BmC,IACnCnC,EAAQ,gBAAkBmC,GAE1BnnC,KAAKilC,OACLD,EAAQ,kBAAoBviC,OAAOzC,KAAKilC,KAAK/lC,SAE1CjB,OAAO4J,OAAOm9B,GAEzBa,UAAUrmC,GACN,OAAOQ,KAAKglC,QAAQxlC,EAAI4G,eAE5BihC,UAAU7nC,EAAKzB,GACX,MAAMinC,EAAU/jC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,WACjF5lC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,UAAW/B,GAC5EA,EAAQxiC,GAAMhD,EAAK,SAAU,OAAO4G,eAAiB3D,OAAO1E,GAEhEupC,eACInmC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,UAAW,IAEhF,EAAEA,GAAsB,IAAItlC,QAAWkK,OAAO25B,aAC1C,MAAMN,EAAUhlC,KAAKglC,QACfhnC,EAAOC,OAAOD,KAAKgnC,GACzB,IAAItmC,EAAQ,EACZ,MAAO,CACH6mC,KAAM,KACF,GAAI7mC,EAAQV,EAAKkB,OAAQ,CACrB,MAAMM,EAAMxB,EAAKU,KACjB,MAAO,CACHX,MAAO,CAACyB,EAAKwlC,EAAQxlC,IAAOgmC,MAAM,GAG1C,MAAO,CAAEznC,WAAO2B,EAAW8lC,MAAM,KAKzCc,kBACA,OAAOrlC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,UAAY,KAExFQ,eAAeC,EAAUrqB,GACjBqqB,EAAS/gC,MAAM,MACfQ,GAAOlD,mBAAmB,wCAAyC,WAAY,cAEnF5C,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,QAAS,GAAGS,KAAYrqB,KAOzFiqB,gBACA,OAAOnmC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,QAExEK,cAAUrpC,GACVoD,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,SAAUhpC,GAG3EwoC,kCACA,QAAStlC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,iBAE1ER,gCAA4BxoC,GAC5BoD,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,gBAAiBvkC,GAAMzE,EAAO,UAAW,gCAG1GooC,cAAY,OAAOllC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,WACpFZ,YAAQA,GAER,IADAA,EAAU3jC,GAAM2jC,EAAS,SAAU,aACpB,EACX,MAAM,IAAIhnC,MAAM,oBAEpBgC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,UAAWZ,GAEhFsB,SAASC,GAEL,MAAMrO,EAAUr5B,KAAKqmC,IAAIvnC,MAAM,KAAK,GAAGsH,cACjC/G,EAASqoC,EAAS5oC,MAAM,KAAK,GAAGsH,cACtC,GAAoB,QAAhBpG,KAAKkF,QAAiC,UAAZm0B,GAAkC,SAAXh6B,IAChDqoC,EAASjhC,MAAM,YAChB,OAAOQ,GAAOnD,WAAW,uBAAwB,wBAAyB,CACtEY,UAAW,YAAY1E,KAAKkF,UAAUvB,KAAKC,UAAU5D,KAAKqmC,WAAW1iC,KAAKC,UAAU8jC,QAI5F,MAAMxB,EAAM,IAAIc,GAAaU,GAW7B,OAVAxB,EAAIhhC,OAAS,MACbghC,EAAIkB,UAAYpnC,KAAKonC,UACrBlB,EAAIC,QAAUnmC,KAAKmmC,QACnBhlC,EAASV,GAAuBylC,EAAKa,GAAqB,KAAM,OAAQ9lC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,SACzI5lC,EAASV,GAAuBylC,EAAKa,GAAqB,KAAM,UAAW9oC,OAAOoN,OAAO,GAAIpK,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,aAC9J5lC,EAASV,GAAuBylC,EAAKa,GAAqB,KAAM,WAAY9lC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,aAKtIb,EAEXp9B,QACI,MAAMA,EAAQ,IAAIk+B,GAAahnC,KAAKqmC,KAEpCllC,EAASV,GAAuBqI,EAAOi+B,GAAqB,KAAM,SAAU9lC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,WAE7I,MAAM9B,EAAOhkC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,QAc9E,OAbA5lC,EAASV,GAAuBqI,EAAOi+B,GAAqB,KAAM,OAAiB,MAAR9B,OAAgBvlC,EAAY,IAAI8G,WAAWy+B,IACtH9jC,EAASV,GAAuBqI,EAAOi+B,GAAqB,KAAM,WAAY9lC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,aAE/I5lC,EAASV,GAAuBqI,EAAOi+B,GAAqB,KAAM,UAAW9oC,OAAOoN,OAAO,GAAIpK,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,aAEhK5lC,EAASV,GAAuBqI,EAAOi+B,GAAqB,KAAM,QAAS9lC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,UACxI/mC,KAAKonC,YACLt+B,EAAMs+B,WAAY,GAEtBt+B,EAAMq9B,QAAUnmC,KAAKmmC,QACjBnmC,KAAKumC,8BACLz9B,EAAMy9B,6BAA8B,GAEjCz9B,EAEXjB,SAEI,MAAMo9B,EAAOhkC,EAASR,GAAuBT,KAAM+mC,GAAqB,KAAM,QAM9E,OALY,MAAR9B,GACA9jC,EAASV,GAAuBT,KAAM+mC,GAAqB,KAAM,OAAQ,IAAIvgC,WAAWy+B,IAE5FhnC,OAAO4J,OAAOpH,GAAuBT,KAAM+mC,GAAqB,KAAK/B,SACrE/mC,OAAO4J,OAAOpH,GAAuBT,KAAM+mC,GAAqB,MACzD/mC,KAEXoB,WACI,OAAOnD,OAAOmD,SAASX,GAAuBT,KAAM+mC,GAAqB,OC9NjFlpC,eAAe8pC,GAAMC,GACjB,OAAO,IAAI1pC,SAASI,IAAc6b,WAAW7b,EAASspC,MAG1D,SAASC,KAAY,OAAO,IAAKptB,MAAQotB,UAOzC,IAAIC,IAAe,EAGZjqC,eAAekqC,GAAUC,GAC5B,MAAMC,EAAgC,mBAAY,CAC9C/C,QAAS,IAAI8B,GAAagB,IACzBA,aAAsBhB,GAAgB,CACvC9B,QAAS8C,GACT/pC,OAAOoN,OAAO,GAAI28B,GACtB,GAAoB,MAAhBC,EAAK/C,QACL,OAAOj+B,GAAOlD,mBAAmB,kBAAmB,aAAcikC,GAEtE,IAAI9B,EAAM+B,EAAK/C,QAAQp8B,QAAQjB,SAC/B,OAAQogC,EAAK/C,QAAQmB,IAAIvnC,MAAM,KAAK,IAChC,IAAK,OAAQ,CACT,MAAM2H,EAAQy/B,EAAIG,IAAI5/B,MAAM,oCAC5B,GAAIA,EACA,IACI,MAAMu+B,EAAU,CACZ,eAAiBv+B,EAAM,GAAKA,EAAM,GAAK,cAErCw+B,EAAQx+B,EAAM,GAAKuO,GAAavO,EAAM,IAvBrD2yB,GAuBqE3yB,EAAM,GA1BpEgyB,QAAQ,yBAAyB,CAACt6B,EAAKoD,IAC1CkB,OAAOC,aAAakE,SAASrF,EAAM,QA0B9B,OAAO,IAAIsjC,GAAc,IAAK,KAAMG,EAASC,EAAMiB,EAAIp9B,SAE3D,MAAOxH,GACH,OAAO,IAAIujC,GAAc,IAAK,4CAA6C,GAAI,KAAMqB,EAAIp9B,SAGjG,OAAO,IAAI+7B,GAAc,IAAK,+CAAgD,GAAI,KAAMqB,EAAIp9B,SAEhG,IAAK,OACL,IAAK,OACL,IAAK,KACD,MAAM,IAAI3J,MAAM,uBAEpB,IAAK,OACL,IAAK,QACD,MACJ,QACI,MAAM,IAAIA,MAAM,sBAExB,MAAM+oC,EAAkC,MAAtBD,EAAKE,cAAyBF,EAAKE,cAAgB,GACrE,IAAK5jC,OAAOC,UAAU0jC,IAAaA,EAAW,EAC1C,OAAOjhC,GAAOlD,mBAAmB,wBAAyB,aAAcikC,GAE5E,MAAMI,EAA6C,MAA7BH,EAAKI,qBAAgCJ,EAAKI,qBAAuB,IAEvF,IAAK9jC,OAAOC,UAAU4jC,IAAiBF,EAAW,EAC9C,OAAOjhC,GAAOlD,mBAAmB,+BAAgC,aAAcikC,GAEnF,MAAMM,EAAmC,MAAtBL,EAAKM,cAAyBN,EAAKM,cAAgB,KACtE,GAAID,GAAoC,mBAAvB,EACb,OAAOrhC,GAAOlD,mBAAmB,iCAAkC,aAAcikC,GAErF,MAAMQ,EAAmBP,EAAKO,kBAAoB,KAClD,GAAIA,GAAkD,mBAA9B,EACpB,OAAOvhC,GAAOlD,mBAAmB,oCAAqC,aAAcikC,GAExF,MAAMS,EAAkBR,EAAKQ,iBAAmB,KAChD,GAAIA,GAAgD,mBAA7B,EACnB,OAAOxhC,GAAOlD,mBAAmB,mCAAoC,aAAcikC,GAGvF,MAAMU,EAAKb,KACX,IAAIzC,EAAW,KACf,IAAK,IAAIlzB,EAAI,EAAGA,EAAIg2B,EAAUh2B,IAAK,CAC/B,IAAIgzB,EAAUgB,EAAIp9B,QACd0/B,IACAtD,SAAiBsD,EAAiBtD,EAAQr9B,WAAWiB,SAGzD,GADsB++B,KAAYa,EACd,EAChB,OAAOzhC,GAAOnD,WAAW,UAAW,UAAW,CAAEY,UAAW,UAAWszB,OAAQ,UAAWkN,QAAAA,IAI9F,GAFAE,QAAiBa,GAAOf,GAEpBhzB,EAAIg2B,EAAU,CACd,GAA4B,MAAxB9C,EAASN,YAA8C,MAAxBM,EAASN,WAAoB,CAG5D,IACIoB,EAAMhB,EAAQuC,SAASrC,EAASJ,QAAQ0C,UAAY,IACpD,SAEJ,MAAOpmC,IAGP,OAAO8jC,EAEN,GAA4B,MAAxBA,EAASN,aACG,MAAbwD,SAA4BA,EAAUpD,EAAQr9B,SAAUu9B,EAAUlzB,IAAK,CACvE,MAAMy2B,EAAavD,EAASJ,QAAQ,eACR,iBAAxB,GAAoC2D,EAAWliC,MAAM,uBAC/CkhC,GAAM/gC,SAAS+hC,UAGfhB,GAAMS,EAAepvB,KAAK4vB,MAAM5vB,KAAK6vB,SAAW7vB,KAAK8vB,IAAI,EAAG52B,KAEtE,UAOZ,GAAIu2B,EACA,IACI,aAAaA,EAAgBvD,EAASE,GAE1C,MAAO9jC,GAEH,GAAIA,EAAMskC,UAAqC,iBAAjBtkC,EAAW,MAAgB,CACrD,GAAI4Q,EAAIg2B,EAAU,OACRP,GAAMrmC,EAAMqkC,OAClB,SAGJ,OAAOP,EAASK,gBAAgB,+BAAgCnkC,GAGpE8jC,EAASK,gBAAgB,oCAAqCnkC,GAAO0kC,WAG7E,OAAOZ,EAGX,OAAOA,EAASK,gBAAgB,gCAEpCsC,GAAUhhB,KAAO,WACb+gB,IAAe,GAGnBC,GAAUgB,WAAa,SAAUC,KAEjCjB,GAAUkB,eAAiB,SAAUD,GAC7BlB,IACA7gC,GAAOnD,WAAW,sBAAuB,wBAAyB,CAC9DY,UAAW,oBAKvBqjC,GAAUmB,aAAe,SAAUF,GAC3BlB,IACA7gC,GAAOnD,WAAW,sBAAuB,wBAAyB,CAC9DY,UAAW,kBClKhB,MCEMuC,GAAS,IAAI5D,EDFH,yCEAvB,IAWIwG,GAAIs/B,GAA2BC,GAX/BrpC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAUxF,MAAMgQ,GAAOxK,OAAO,GACd8xB,GAAQ,IAAI/wB,WAAW,IACvB6iC,GAAW,qEACjB,SAASC,GAAW5iC,EAAQmP,GACxB,GAAe,OAAXnP,EACA,OAAO,KAEX,MAAMC,EAASgJ,GAASiG,GAAUlP,EAAQmP,EAAOA,EAAQ,KACnD3W,EAASyQ,GAASiG,GAAUlP,EAAQC,EAAQA,EAAS,KAC3D,OAAOiP,GAAUlP,EAAQC,EAAS,GAAIA,EAAS,GAAKzH,GAExD,SAASqqC,GAAY7iC,EAAQmP,GACzB,IACI,MAAMP,EAAQg0B,GAAW5iC,EAAQmP,GACjC,GAAa,MAATP,EACA,OAAOukB,GAAavkB,GAG5B,MAAOhU,IACP,OAAO,KAEX,SAASkoC,GAAOzrC,GACZ,MAAM2I,EAASqJ,GAAQhS,GACvB,GAAI2I,EAAOxH,OAAS,GAChB,MAAM,IAAIC,MAAM,+BAEpB,MAAMsqC,EAAS,IAAIjjC,WAAW,IAE9B,OADAijC,EAAOjpC,IAAIkG,EAAQ,GAAKA,EAAOxH,QACxBuqC,EAEX,SAASC,GAAS3rC,GACd,GAAKA,EAAMmB,OAAS,IAAQ,EACxB,OAAOnB,EAEX,MAAM2I,EAAS,IAAIF,WAA0C,GAA/BwS,KAAKC,KAAKlb,EAAMmB,OAAS,KAEvD,OADAwH,EAAOlG,IAAIzC,GACJ2I,EAGX,SAASijC,GAAYl0B,GACjB,MAAM/O,EAAS,GACf,IAAIkjC,EAAY,EAEhB,IAAK,IAAI3qC,EAAI,EAAGA,EAAIwW,EAAMvW,OAAQD,IAC9ByH,EAAO/D,KAAK40B,IACZqS,GAAa,GAEjB,IAAK,IAAI3qC,EAAI,EAAGA,EAAIwW,EAAMvW,OAAQD,IAAK,CACnC,MAAM4V,EAAO5N,GAAO3B,SAASmQ,EAAMxW,IAEnCyH,EAAOzH,GAAKuqC,GAAOI,GAEnBljC,EAAO/D,KAAK6mC,GAAO30B,EAAK3V,SACxBwH,EAAO/D,KAAK+mC,GAAS70B,IACrB+0B,GAAa,GAAmC,GAA9B5wB,KAAKC,KAAKpE,EAAK3V,OAAS,IAE9C,OAAOsW,GAAO9O,GAIlB,SAASmjC,GAAYpgC,GAUjB,OATIA,EAAKhD,MAAM,qBACXgD,EAAOA,EAAK5C,UAAU,IAEjB4C,EAAKhD,MAAM,eAChBgD,EAAOA,EAAK5C,UAAU,GAGtBI,GAAOlD,mBAAmB,0BAA2B,OAAQ0F,GAE1D,gCAAiCA,IAIrC,MAAMqgC,GACTlpC,YAAYkC,GACR1D,EAAiBY,KAAM,CAAE8C,KAAAA,IAE7BinC,SAASC,GACL,OAAOhqC,KAEXiqC,iBAAiBC,GACb,OAAO,EAEXrsC,oBAAoBqsC,EAAU3X,GAC1B,MAAM,IAAIpzB,MAAM,oBAEpBtB,oBAAoBqsC,EAAUr1B,GAC1B,MAAM,IAAI1V,MAAM,qBASxB,MAAMgrC,GAAc,IAAI5hC,OAAO,kBAAoB,KAC7C6hC,GAAW,CACb,IAAI7hC,OAAO,mBAAqB,KAChC,IAAIA,OAAO,gBAAiB,KAC5B4hC,GACA,IAAI5hC,OAAO,mCAAoC,MAE5C,MAAM8hC,GACTzpC,YAAY0pC,EAAU/X,EAASzvB,GAE3BqmC,GAA0B3oC,IAAIR,UAAM,GACpCZ,EAAiBY,KAAM,CAAEsqC,SAAAA,EAAU/X,QAAAA,EAASzvB,KAAAA,IAC5C/C,GAAuBC,KAAMmpC,GAA2B,KAAM,KAElEtrC,yBAiBI,OAhBK4C,GAAuBT,KAAMmpC,GAA2B,MAEzDppC,GAAuBC,KAAMmpC,GAA2BnpC,KAAKsqC,SAAS/pC,KAAK,CACvE6K,GAAIpL,KAAKuyB,QACT1d,KAAM,+EACPnH,MAAMhH,GACGO,GAAOtB,UAAUe,KAAYuJ,KACtCs6B,OAAOjpC,IACN,GAAmB,mBAAfA,EAAMC,KACN,OAAO,EAIX,MADAxB,GAAuBC,KAAMmpC,GAA2B,KAAM,KACxD7nC,KACN,WAEKb,GAAuBT,KAAMmpC,GAA2B,KAEzEtrC,aAAaijC,EAAU0J,EAAa,MAEhC,MAAMC,EAAWj1B,GAAO,CAACsrB,EAAU3E,GAASn8B,KAAK8C,MAAO0nC,IAClDnW,EAAK,CACPjpB,GAAIpL,KAAKuyB,QACTmY,gBAAgB,EAChB71B,KAAM41B,GAGV,IAAI9yB,GAAU,QACJ3X,KAAK2qC,qBACXhzB,GAAU,EAEV0c,EAAGxf,KAAOW,GAAO,CAAC,aAAcm0B,GAAY,CAACtN,GAAUr8B,KAAK8C,MAAO2nC,OAEvE,IACI,IAAI51B,QAAa7U,KAAKsqC,SAAS/pC,KAAK8zB,GACpC,OAAKptB,GAAO3B,SAASuP,GAAM3V,OAAS,IAAQ,EACjC+H,GAAOnD,WAAW,uBAAwB,iBAAkB,CAC/Dg/B,YAAazO,EAAIxf,KAAAA,IAGrB8C,EACO2xB,GAAWz0B,EAAM,GAErBA,EAEX,MAAOvT,GACH,GAAmB,mBAAfA,EAAMC,KACN,MAAMD,EAGd,OAAO,KAEXzD,iBAAiBqsC,EAAW,IACxB,GAAiB,KAAbA,EACA,IAEI,MAAMxjC,QAAe1G,KAAK4qC,OAAO,cAEjC,GAAe,OAAXlkC,GAAmBA,IAAW2iC,GAC9B,OAAO,KAGX,aADsBrpC,KAAKsqC,SAASO,cACrBC,UAAUC,YAAYrkC,GAEzC,MAAOpF,GACH,GAAmB,mBAAfA,EAAMC,KACN,OAAO,KAEX,MAAMD,EAGd,IAAI0pC,EAAa,KACjB,IAAK,MAAMC,KAAUjrC,KAAKsqC,SAASY,QAC/B,GAAMD,aAAkBnB,IAGpBmB,EAAOhB,iBAAiBC,GAAW,CACnCc,EAAaC,EACb,MAGR,GAAkB,MAAdD,EACA,OAAO,KAGX,MAAMn2B,EAAOy0B,SAAkBtpC,KAAK4qC,OAAO,aAAcpB,GAAOU,KAAe,KAAM,GAErF,GAAY,MAARr1B,GAAyB,OAATA,EAChB,OAAO,KAGX,MAAM0d,QAAgByY,EAAWG,cAAcjB,EAAUr1B,GACzD,OAAe,MAAX0d,EACOA,EAEJtrB,GAAOnD,WAAW,oBAAqB,wBAAyB,CACnEY,UAAW,cAAcwlC,KACzBjoC,KAAM,CAAEioC,SAAAA,EAAUr1B,KAAAA,KAG1BhX,cAAc2B,GAEV,IAAI4rC,EAAWhS,GAAY55B,GAG3B,MAAM6rC,EAAWpkC,GAAO3B,SAASkQ,GAAO,CAACg0B,GAAO,IAAKA,GAAO4B,EAASlsC,QAASksC,KACxEE,EAAWhC,SAAkBtpC,KAAK4qC,OAAO,aAAclB,GAAS2B,KAAe,KAAM,GAC3F,OAAgB,MAAZC,GAAiC,OAAbA,EACb,KAEJzR,GAAayR,GAExBztC,uBAEI,MAAMytC,EAAWhC,SAAkBtpC,KAAK4qC,OAAO,eAAkB,KAAM,GAEvE,GAAgB,MAAZU,GAAiC,OAAbA,EACpB,OAAO,KAGX,MAAMC,EAAOD,EAAS7kC,MAAM,4EAC5B,GAAI8kC,EAAM,CACN,MAAMC,EAAsB,aAAZD,EAAK,GAAqB,OAAS,OAC7CrsC,EAAS0H,SAAS2kC,EAAK,GAAI,IACjC,GAAIA,EAAK,GAAGrsC,SAAoB,EAATA,EACnB,MAAO,GAAGssC,OAAaz3B,GAAa,KAAOw3B,EAAK,MAIxD,MAAME,EAAQH,EAAS7kC,MAAM,iCAC7B,OAAIglC,GAA6B,KAApBA,EAAM,GAAGvsC,OACX,SAAUusC,EAAM,KAEpBxkC,GAAOnD,WAAW,2CAA4C,wBAAyB,CAC1FY,UAAW,mBACXzC,KAAM,CAAE4S,KAAMy2B,KAGtBztC,kBACI,aAAcmC,KAAK0rC,cAAcrF,IAErCxoC,mBACI,MAAM8tC,EAAU,CAAC,CAAE/sC,KAAM,OAAQb,MAAOiC,KAAK8C,OAC7C,IAGI,MAAM8oC,QAAe5rC,KAAK6rC,QAAQ,UAClC,GAAc,MAAVD,EAEA,MADAD,EAAQhpC,KAAK,CAAE/D,KAAM,UAAWb,MAAO,KACjC,IAAIoB,MAAM,WAEpBwsC,EAAQhpC,KAAK,CAAE/D,KAAM,SAAUb,MAAO6tC,IACtC,IAAK,IAAI3sC,EAAI,EAAGA,EAAImrC,GAASlrC,OAAQD,IAAK,CACtC,MAAMwH,EAAQmlC,EAAOnlC,MAAM2jC,GAASnrC,IACpC,GAAa,MAATwH,EACA,SAEJ,MAAM+kC,EAAS/kC,EAAM,GAAGL,cACxB,OAAQolC,GACJ,IAAK,QACL,IAAK,OAED,OADAG,EAAQhpC,KAAK,CAAE/D,KAAM,MAAOb,MAAO6tC,IAC5B,CAAED,QAAAA,EAAStF,IAAKuF,GAC3B,IAAK,OAAQ,CACT,MAAMvF,EAAMwD,GAAY+B,GAGxB,OAFAD,EAAQhpC,KAAK,CAAE/D,KAAM,OAAQb,MAAO6tC,IACpCD,EAAQhpC,KAAK,CAAE/D,KAAM,MAAOb,MAAOsoC,IAC5B,CAAEsF,QAAAA,EAAStF,IAAAA,GAEtB,IAAK,SACL,IAAK,UAAW,CAEZ,MAAMvF,EAAuB,WAAX0K,EAAuB,aAAe,aACxDG,EAAQhpC,KAAK,CAAE/D,KAAM4sC,EAAQztC,MAAO6tC,IAEpC,MAAME,QAAc9rC,KAAKkzB,aACzB,GAAa,MAAT4Y,EAEA,MADAH,EAAQhpC,KAAK,CAAE/D,KAAM,SAAUb,MAAO,KAChC,IAAIoB,MAAM,UAEpB,MAAMiO,GAAS3G,EAAM,IAAM,IAAI3H,MAAM,KACrC,GAAqB,IAAjBsO,EAAMlO,OAEN,MADAysC,EAAQhpC,KAAK,CAAE/D,KAAM,IAAI4sC,QAAcztC,MAAQ0I,EAAM,IAAM,KACrD,IAAItH,MAAM,SAEpB,MAAM2rC,SAAmB9qC,KAAKsqC,SAASO,cAAcC,UAC/CiB,EAAOjB,EAAUvY,QAAQnlB,EAAM,IAC/B4+B,EAAUxC,GAAOp8B,EAAM,IAE7B,GAAe,WAAXo+B,EAAqB,CAErB,MAAMS,EAAanB,EAAUC,kBAAkB/qC,KAAKsqC,SAAS/pC,KAAK,CAC9D6K,GAAI2gC,EAAMl3B,KAAMW,GAAO,CAAC,aAAcw2B,OAE1C,GAAIF,IAAUG,EAEV,MADAN,EAAQhpC,KAAK,CAAE/D,KAAM,SAAUb,MAAOkuC,IAChC,IAAI9sC,MAAM,UAEpBwsC,EAAQhpC,KAAK,CAAE/D,KAAM,QAASb,MAAOkuC,SAEpC,GAAe,YAAXT,EAAsB,CAE3B,MAAMU,EAAUjlC,GAAOtB,gBAAgB3F,KAAKsqC,SAAS/pC,KAAK,CACtD6K,GAAI2gC,EAAMl3B,KAAMW,GAAO,CAAC,aAAcY,GAAa01B,EAAO,IAAKE,OAEnE,IAAKE,EAED,MADAP,EAAQhpC,KAAK,CAAE/D,KAAM,WAAYb,MAAO,MAClC,IAAIoB,MAAM,YAEpBwsC,EAAQhpC,KAAK,CAAE/D,KAAM,UAAWb,MAAOmuC,EAAQpiC,aAGnD,MAAMuqB,EAAK,CACPjpB,GAAIgC,EAAM,GACVyH,KAAMW,GAAO,CAACsrB,EAAUkL,KAE5B,IAAIG,EAAc5C,SAAkBvpC,KAAKsqC,SAAS/pC,KAAK8zB,GAAK,GAC5D,GAAmB,MAAf8X,EAEA,MADAR,EAAQhpC,KAAK,CAAE/D,KAAM,gBAAiBb,MAAO,KACvC,IAAIoB,MAAM,iBAEpBwsC,EAAQhpC,KAAK,CAAE/D,KAAM,oBAAqBb,MAAOouC,IAElC,YAAXX,IACAW,EAAcA,EAAY1T,QAAQ,OAAQpjB,GAAQ22B,GAASnlC,UAAU,IACrE8kC,EAAQhpC,KAAK,CAAE/D,KAAM,wBAAyBb,MAAOouC,KAGrDA,EAAY1lC,MAAM,aAClB0lC,EAActC,GAAYsC,IAE9BR,EAAQhpC,KAAK,CAAE/D,KAAM,eAAgBb,MAAOouC,IAE5C,IAAIC,EAAW,GACf,MAAMhH,QAAiB2C,GAAUoE,GACjC/G,EAASY,WACT,IACIoG,EAAWhH,EAASC,SAExB,MAAO/jC,GACH,IACIqqC,EAAQhpC,KAAK,CAAE/D,KAAM,YAAab,MAAOqnC,EAASD,WAEtD,MAAO7jC,GACH,MAAMgU,EAAQ8vB,EAASH,KAIvB,MAHI3vB,GACAq2B,EAAQhpC,KAAK,CAAE/D,KAAM,YAAab,MAAOsX,GAAQC,KAE/ChU,EAEV,MAAMA,EAEV,IAAK8qC,EAED,MADAT,EAAQhpC,KAAK,CAAE/D,KAAM,YAAab,MAAO,KACnC,IAAIoB,MAAM,aAEpBwsC,EAAQhpC,KAAK,CAAE/D,KAAM,WAAYb,MAAO4F,KAAKC,UAAUwoC,KAEvD,IAAIC,EAAWD,EAASE,MACxB,GAA0B,iBAAd,EAER,MADAX,EAAQhpC,KAAK,CAAE/D,KAAM,YAAab,MAAO,KACnC,IAAIoB,MAAM,aAEpB,GAAIktC,EAAS5lC,MAAM,6BAGd,CAGD,GAAY,MADC4lC,EAAS5lC,MAAM0jC,IAGxB,MADAwB,EAAQhpC,KAAK,CAAE/D,KAAM,iBAAkBb,MAAOsuC,IACxC,IAAIltC,MAAM,kBAEpBwsC,EAAQhpC,KAAK,CAAE/D,KAAM,gBAAiBb,MAAOsuC,IAC7CA,EAAWxC,GAAYwC,GAG3B,OADAV,EAAQhpC,KAAK,CAAE/D,KAAM,MAAOb,MAAOsuC,IAC5B,CAAEV,QAAAA,EAAStF,IAAKgG,MAKvC,MAAO/qC,GACHwF,QAAQC,IAAI,KAAMzF,GAEtB,MAAO,CAAEqqC,QAAAA,EAAStF,IAAK,MAE3BpgC,sBAAsBqkC,EAAUxnC,GAC5B,IAAIypC,EAAczpC,EAClB,OAAa,CACT,GAAoB,KAAhBypC,GAAsC,MAAhBA,EACtB,OAAO,KAIX,GAAa,QAATzpC,GAAkC,QAAhBypC,EAClB,OAAO,KAGX,MAAMR,QAAatrC,GAAuB4pC,GAAaxgC,GAAI,IAAKu/B,IAA0B7oC,KAAK8pC,GAAaC,EAAUiC,GAEtH,GAAY,MAARR,EAAc,CACd,MAAMhX,EAAW,IAAIsV,GAAYC,EAAUyB,EAAMjpC,GAEjD,OAAIypC,IAAgBzpC,SAAgBiyB,EAAS4V,mBAGtC5V,EAFI,KAKfwX,EAAcA,EAAYztC,MAAM,KAAK+J,MAAM,GAAGhF,KAAK,OAI/DgG,GAAKwgC,GAAalB,GAA4B,IAAI1nC,QAAW2nC,GAA2BvrC,eAAwCysC,EAAUxnC,GACtI,MAAM0pC,QAAgBlC,EAASO,aACzB4B,EAAYD,EAAQE,UAAU,0BAEpC,IAAKD,EACD,OAAOxlC,GAAOnD,WAAW,+BAAgC,wBAAyB,CAC9EY,UAAW,cAAezC,KAAM,CAAEuqC,QAASA,EAAQ1pC,QAG3D,IAEI,MAAM2nC,QAAiBH,EAAS/pC,KAAK,CACjC6K,GAAIqhC,EAAUla,QACd1d,KAAMW,GAAO,CAAC,aAAc2mB,GAASr5B,KACrC4nC,gBAAgB,IAEdqB,EAAOS,EAAQ1B,UAAUC,YAAYN,GAC3C,OAAIsB,IAASn2B,GAAUyzB,GAAU,EAAG,IACzB,KAEJ0C,EAEX,MAAOzqC,GAGH,MAAMA,EAEV,OAAO,MCxdJ,MCEM2F,GAAS,IAAI5D,EDFH,2CEAvB,IAWIspC,GAXA5sC,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAOxF,MAAMuP,GAAO/J,OAAO,GACdwK,GAAOxK,OAAO,GACdmnC,GAAOnnC,OAAO,GACdonC,GAAQpnC,OAAO,IACfqnC,GAAQrnC,OAAO,IACfsnC,GAAQtnC,OAAO,IACfgG,GAAS,GACTuhC,GAAO,qEACN,MAAMC,GACTrsC,YAAYoE,EAAOgrB,EAAGzO,EAAG9iB,GACrBkuC,GAAiBnsC,IAAIR,UAAM,GAC3BiH,GAAOnC,cAAcE,EAAOyG,GAAQ,aACpC1L,GAAuBC,KAAM2sC,GAAkB,CAAE3c,EAAAA,EAAGzO,EAAAA,EAAG9iB,EAAAA,EAAGyuC,SAAU,MAAQ,KAE5Eld,QAAM,OAAO/uB,EAASR,GAAuBT,KAAM2sC,GAAkB,KAAM,KAC3E3c,MAAEjyB,GACwB,KAAtB4X,GAAW5X,IACXkJ,GAAOlD,mBAAmB,YAAa,QAAShG,GAEpDoD,EAASV,GAAuBT,KAAM2sC,GAAkB,KAAM,IAAKt3B,GAAQtX,IAE3EwjB,QAAM,OAAOtgB,EAASR,GAAuBT,KAAM2sC,GAAkB,KAAM,KAC3EprB,MAAExjB,GACwB,KAAtB4X,GAAW5X,GACXkJ,GAAOlD,mBAAmB,YAAa,QAAShG,GAEf,IAA5BkJ,GAAO3B,SAASvH,GAAO,IAC5BkJ,GAAOlD,mBAAmB,kBAAmB,QAAShG,GAE1DoD,EAASV,GAAuBT,KAAM2sC,GAAkB,KAAM,IAAKt3B,GAAQtX,IAE3EU,QAAM,OAAOwC,EAASR,GAAuBT,KAAM2sC,GAAkB,KAAM,KAC3EluC,MAAEV,GACF,MAAMU,EAAIwI,GAAOzB,UAAUzH,EAAO,SAClC,GAAU,KAANU,GAAkB,KAANA,EACZ,MAAM,IAAIU,MAAM,SAEpBgC,EAASV,GAAuBT,KAAM2sC,GAAkB,KAAM,IAAKluC,GAEnEyuC,eAAa,OAAOjsC,EAASR,GAAuBT,KAAM2sC,GAAkB,KAAM,YAClFQ,oBACA,MAAM1uC,EAAIuB,KAAKktC,SACf,OAAS,MAALzuC,EACO,KAEJwuC,GAAUG,WAAW3uC,GAE5B4uC,cACA,OAAe,KAAXrtC,KAAKvB,EACE,EAEJ,EAUP6uC,kBAEA,MAAMA,EAAcrmC,GAAO3B,SAAStF,KAAKuhB,GAIzC,OAHIvhB,KAAKqtC,UACLC,EAAY,IAAM,KAEfj4B,GAAQi4B,GAEfC,wBACA,OAAO/3B,GAAO,CAACxV,KAAKgwB,EAAGhwB,KAAKstC,cAE5BE,iBACA,OAAOh4B,GAAO,CAACxV,KAAKgwB,EAAGhwB,KAAKuhB,EAAIvhB,KAAKqtC,QAAU,OAAS,SAE5D,EAAEV,GAAmB,IAAIlrC,QAAWkK,OAAOC,IAAI,kCAC3C,MAAO,mBAAmB5L,KAAKgwB,WAAWhwB,KAAKuhB,gBAAgBvhB,KAAKqtC,sBAAsBrtC,KAAKktC,aAEnGpkC,QACI,MAAMA,EAAQ,IAAImkC,GAAUxhC,GAAQzL,KAAKgwB,EAAGhwB,KAAKuhB,EAAGvhB,KAAKvB,GAIzD,OAHIuB,KAAKktC,UACL/rC,EAASV,GAAuBqI,EAAO6jC,GAAkB,KAAM,WAAY3sC,KAAKktC,UAE7EpkC,EAEXjB,SAEI,OADA5J,OAAO4J,OAAOpH,GAAuBT,KAAM2sC,GAAkB,MACtD3sC,KAEXoB,WACI,OAAOnD,OAAOmD,SAASX,GAAuBT,KAAM2sC,GAAkB,MAE1Ec,SACI,MAAMP,EAAWltC,KAAKktC,SACtB,MAAO,CACHQ,MAAO,YACPR,SAAwB,MAAZA,EAAoBA,EAASpjC,WAAa,KACtDkmB,EAAGhwB,KAAKgwB,EAAGzO,EAAGvhB,KAAKuhB,EAAG9iB,EAAGuB,KAAKvB,GAGtCwH,gBACI,OAAO,IAAIgnC,GAAUxhC,GAAQuhC,GAAMA,GAAM,IAG7C/mC,kBAAkBxH,GACd,MAAMkvC,EAAK1mC,GAAOtB,UAAUlH,EAAG,KAE/B,OAAKkvC,GAAMd,IAAWc,GAAMb,GACjBt9B,IAGPm+B,EAAKZ,IACL9lC,GAAOlD,mBAAmB,oBAAqB,IAAKtF,IAEhDkvC,EAAKZ,IAASH,IAG1B3mC,mBAAmBw3B,EAASh/B,GACxB,OAAQwI,GAAOtB,UAAU83B,GAAWmP,GAAQnnC,OAAO,GAAKhH,EAAI,IAGhEwH,sBAAsBxH,GAClB,MAAMkvC,EAAK1mC,GAAOtB,UAAUlH,GAC5B,OAAIkvC,GAAMn+B,GACC,GAEPm+B,GAAM19B,GACC,GAGH09B,EAAK19B,GAAQ,GAAK,GAE9BhK,YAAY2nC,GACR,MAAM9pC,EAAcL,GACTwD,GAAOlD,mBAAmBN,EAAS,YAAamqC,GAE3D,GAAqB,iBAAT,EAAmB,CAC3B,MAAMt4B,EAAQrO,GAAO3B,SAASsoC,EAAK,aACnC,GAAqB,KAAjBt4B,EAAMpW,OAAe,CACrB,MAAM8wB,EAAI3a,GAAQC,EAAMzM,MAAM,EAAG,KAC3B0Y,EAAIjM,EAAMzM,MAAM,GAAI,IACpBpK,EAAY,IAAP8iB,EAAE,GAAa,GAAK,GAE/B,OADAA,EAAE,IAAM,IACD,IAAI0rB,GAAUxhC,GAAQukB,EAAG3a,GAAQkM,GAAI9iB,GAEhD,GAAwB,KAApBkX,GAAWi4B,GAAa,CACxB,MAAM5d,EAAI3a,GAAQu4B,EAAI/kC,MAAM,EAAG,KACzB0Y,EAAIjM,EAAMzM,MAAM,GAAI,IACf,IAAP0Y,EAAE,IACFzd,EAAW,mBAEf,MAAMrF,EAAIwuC,GAAUY,eAAev4B,EAAM,KACzC,OAAO,IAAI23B,GAAUxhC,GAAQukB,EAAG3a,GAAQkM,GAAI9iB,GAEhD,OAAOqF,EAAW,gCAEtB,GAAI8pC,aAAeX,GACf,OAAOW,EAAI9kC,QAGf,MAAMknB,EAAI4d,EAAI5d,EACL,MAALA,GACAlsB,EAAW,aAEV0Q,GAAYwb,EAAG,KAChBlsB,EAAW,aAGf,MAAMyd,EAAI,SAAWA,EAAG+rB,GACpB,GAAS,MAAL/rB,EAIA,OAHK/M,GAAY+M,EAAG,KAChBzd,EAAW,aAERyd,EAEX,GAAmB,MAAf+rB,EAAqB,CAChB94B,GAAY84B,EAAa,KAC1BxpC,EAAW,uBAEf,MAAMwR,EAAQrO,GAAO3B,SAASgoC,GAE9B,OADAh4B,EAAM,IAAM,IACLD,GAAQC,GAEnB,OAAOxR,EAAW,aAfZ,CAgBP8pC,EAAIrsB,EAAGqsB,EAAIN,aACc,IAAxBrmC,GAAO3B,SAASic,GAAG,IACnBzd,EAAW,mBAGf,MAAMopC,SAAEA,EAAQzuC,EAAEA,GAAM,SAAWqvC,EAAIR,EAAaD,GAChD,GAAU,MAANS,EAAY,CACZ,MAAMrvC,EAAIwI,GAAOtB,UAAUmoC,GAC3B,MAAO,CACHZ,SAAYzuC,GAAKsuC,GAAStuC,OAAIiB,EAC9BjB,EAAGwuC,GAAUY,eAAepvC,IAGpC,GAAmB,MAAf6uC,EAIA,OAHK94B,GAAY84B,EAAa,KAC1BxpC,EAAW,uBAER,CAAErF,EAAuC,IAAlCwI,GAAO3B,SAASgoC,GAAa,GAAa,GAAK,IAEjE,GAAe,MAAXD,EAAiB,CACjB,OAAQA,GACJ,KAAK,EAAG,MAAO,CAAE5uC,EAAG,IACpB,KAAK,EAAG,MAAO,CAAEA,EAAG,IAExB,OAAOqF,EAAW,mBAEtB,OAAOA,EAAW,aArBE,CAsBrB8pC,EAAInvC,EAAGmvC,EAAIN,YAAaM,EAAIP,SACzB3mC,EAAS,IAAIumC,GAAUxhC,GAAQukB,EAAGzO,EAAG9iB,GAW3C,OAVIyuC,GACA/rC,EAASV,GAAuBiG,EAAQimC,GAAkB,KAAM,WAAYO,GAG5E,YAAaU,GAAOA,EAAIP,UAAY3mC,EAAO2mC,QAC3CvpC,EAAW,oBAEN,gBAAiB8pC,GAAOA,EAAIN,cAAgB5mC,EAAO4mC,aACxDxpC,EAAW,wBAER4C;yEC9Of,MACM2gB,GAAM5hB,OAAO,GACb6hB,GAAM7hB,OAAO,GACb8hB,GAAM9hB,OAAO,GACbsoC,GAAMtoC,OAAO,GACbuoC,GAAMvoC,OAAO,GACbwoC,GAAY1mB,IAAO9hB,OAAO,KAC1ByoC,GAAQ,CACVh8B,EAAGmV,GACHlV,EAAG1M,OAAO,GACV0oC,EAAGF,GAAY1mB,IAAO9hB,OAAO,IAAMA,OAAO,KAC1CyV,EAAG+yB,GAAYxoC,OAAO,2CACtB4Z,EAAGiI,GACH8mB,GAAI3oC,OAAO,iFACX4oC,GAAI5oC,OAAO,iFACX6oC,KAAM7oC,OAAO,uEAGjB,SAAS8oC,GAAU3mB,GACf,MAAM1V,EAAEA,EAACC,EAAEA,GAAM+7B,GACXM,EAAKC,GAAI7mB,EAAIA,GACb8mB,EAAKD,GAAID,EAAK5mB,GACpB,OAAO6mB,GAAIC,EAAKx8B,EAAI0V,EAAIzV,GAE5B,MAAMw8B,GAAmBT,GAAMh8B,IAAMmV,GACrC,MAAMunB,GACFhuC,YAAYgnB,EAAGC,EAAGoD,GACdjrB,KAAK4nB,EAAIA,EACT5nB,KAAK6nB,EAAIA,EACT7nB,KAAKirB,EAAIA,EAEbhlB,kBAAkBuI,GACd,KAAMA,aAAaqgC,IACf,MAAM,IAAIxuC,UAAU,4CAExB,OAAO,IAAIuuC,GAAcpgC,EAAEoZ,EAAGpZ,EAAEqZ,EAAGP,IAEvCrhB,qBAAqB6oC,GACjB,MAAMC,EAsjBd,SAAqBC,EAAMxgC,EAAI0/B,GAAMC,GACjC,MAAMc,EAAU,IAAIliC,MAAMiiC,EAAK9vC,QAOzBgwC,EAAWC,GANMH,EAAKzwC,QAAO,CAAC6wC,EAAKC,EAAKpwC,IACtCowC,IAAQhoB,GACD+nB,GACXH,EAAQhwC,GAAKmwC,EACNX,GAAIW,EAAMC,EAAK7gC,KACvB8Y,IACqC9Y,GAOxC,OANAwgC,EAAKM,aAAY,CAACF,EAAKC,EAAKpwC,IACpBowC,IAAQhoB,GACD+nB,GACXH,EAAQhwC,GAAKwvC,GAAIW,EAAMH,EAAQhwC,GAAIuP,GAC5BigC,GAAIW,EAAMC,EAAK7gC,KACvB0gC,GACID,EArkBWM,CAAYT,EAAO1wC,KAAKoQ,GAAMA,EAAEyc,KAC9C,OAAO6jB,EAAO1wC,KAAI,CAACoQ,EAAGvP,IAAMuP,EAAEghC,SAAST,EAAM9vC,MAEjDgH,kBAAkB6oC,GACd,OAAOF,GAAca,cAAcX,GAAQ1wC,IAAIwwC,GAAcc,YAEjEC,OAAO19B,GACH,KAAMA,aAAiB28B,IACnB,MAAM,IAAIvuC,UAAU,0BACxB,MAAQunB,EAAGgoB,EAAI/nB,EAAGgoB,EAAI5kB,EAAG6kB,GAAO9vC,MACxB4nB,EAAGmoB,EAAIloB,EAAGmoB,EAAI/kB,EAAGglB,GAAOh+B,EAC1Bi+B,EAAOzB,GAAIqB,GAAMvoB,IACjB4oB,EAAO1B,GAAIwB,GAAM1oB,IACjB6oB,EAAK3B,GAAImB,EAAKO,GACdE,EAAK5B,GAAIsB,EAAKG,GACdI,EAAK7B,GAAIA,GAAIoB,EAAKI,GAAME,GACxBI,EAAK9B,GAAIA,GAAIuB,EAAKF,GAAMI,GAC9B,OAAOE,IAAOC,GAAMC,IAAOC,EAE/BC,SACI,OAAO,IAAI5B,GAAc5uC,KAAK4nB,EAAG6mB,IAAKzuC,KAAK6nB,GAAI7nB,KAAKirB,GAExDwlB,SACI,MAAQ7oB,EAAGgoB,EAAI/nB,EAAGgoB,EAAI5kB,EAAG6kB,GAAO9vC,KAC1BggB,EAAIyuB,GAAImB,GAAMroB,IACdtH,EAAIwuB,GAAIoB,GAAMtoB,IACdrH,EAAIuuB,GAAIxuB,GAAKsH,IACbpH,EAAIsuB,GAAIlnB,IAAOknB,IAAKmB,EAAK3vB,IAAMsH,IAAOvH,EAAIE,IAC1CE,EAAIquB,GAAIV,GAAM/tB,GACdK,EAAIouB,GAAIruB,GAAKmH,IACbmpB,EAAKjC,GAAIpuB,EAAIkH,GAAMpH,GACnBwwB,EAAKlC,GAAIruB,GAAKD,EAAIuwB,GAAM1C,GAAM9tB,GAC9B0wB,EAAKnC,GAAIlnB,GAAMsoB,EAAKC,GAC1B,OAAO,IAAIlB,GAAc8B,EAAIC,EAAIC,GAErCrtC,IAAI0O,GACA,KAAMA,aAAiB28B,IACnB,MAAM,IAAIvuC,UAAU,0BACxB,MAAQunB,EAAGgoB,EAAI/nB,EAAGgoB,EAAI5kB,EAAG6kB,GAAO9vC,MACxB4nB,EAAGmoB,EAAIloB,EAAGmoB,EAAI/kB,EAAGglB,GAAOh+B,EAChC,GAAI89B,IAAO1oB,IAAO2oB,IAAO3oB,GACrB,OAAOrnB,KACX,GAAI4vC,IAAOvoB,IAAOwoB,IAAOxoB,GACrB,OAAOpV,EACX,MAAMi+B,EAAOzB,GAAIqB,GAAMvoB,IACjB4oB,EAAO1B,GAAIwB,GAAM1oB,IACjB6oB,EAAK3B,GAAImB,EAAKO,GACdE,EAAK5B,GAAIsB,EAAKG,GACdI,EAAK7B,GAAIA,GAAIoB,EAAKI,GAAME,GACxBI,EAAK9B,GAAIA,GAAIuB,EAAKF,GAAMI,GACxB3vB,EAAIkuB,GAAI4B,EAAKD,GACbpgB,EAAIye,GAAI8B,EAAKD,GACnB,GAAI/vB,IAAM8G,GACN,OAAI2I,IAAM3I,GACCrnB,KAAKywC,SAGL7B,GAAciC,KAG7B,MAAMC,EAAKrC,GAAIluB,GAAKgH,IACdwpB,EAAMtC,GAAIluB,EAAIuwB,GACdngB,EAAI8d,GAAI2B,EAAKU,GACbJ,EAAKjC,GAAIze,GAAKzI,GAAMwpB,EAAMxpB,GAAMoJ,GAChCggB,EAAKlC,GAAIze,GAAKW,EAAI+f,GAAMJ,EAAKS,GAC7BH,EAAKnC,GAAIqB,EAAKG,EAAK1vB,GACzB,OAAO,IAAIquB,GAAc8B,EAAIC,EAAIC,GAErCI,SAAS/+B,GACL,OAAOjS,KAAKuD,IAAI0O,EAAMu+B,UAE1BS,eAAeC,GACX,IAAIh2B,EAAIi2B,GAAgBD,GAExB,MAAME,EAAKxC,GAAciC,KACzB,GAAI31B,IAAMmM,GACN,OAAO+pB,EACX,GAAIl2B,IAAMoM,GACN,OAAOtnB,KACX,IAAK2uC,GAAkB,CACnB,IAAIngC,EAAI4iC,EACJ17B,EAAI1V,KACR,KAAOkb,EAAImM,IACHnM,EAAIoM,KACJ9Y,EAAIA,EAAEjL,IAAImS,IACdA,EAAIA,EAAE+6B,SACNv1B,IAAMoM,GAEV,OAAO9Y,EAEX,IAAI6iC,MAAEA,EAAKC,GAAEA,EAAEC,MAAEA,EAAKC,GAAEA,GAAOC,GAAgBv2B,GAC3Cw2B,EAAMN,EACNO,EAAMP,EACN17B,EAAI1V,KACR,KAAOsxC,EAAKjqB,IAAOmqB,EAAKnqB,IAChBiqB,EAAKhqB,KACLoqB,EAAMA,EAAInuC,IAAImS,IACd87B,EAAKlqB,KACLqqB,EAAMA,EAAIpuC,IAAImS,IAClBA,EAAIA,EAAE+6B,SACNa,IAAOhqB,GACPkqB,IAAOlqB,GAOX,OALI+pB,IACAK,EAAMA,EAAIlB,UACVe,IACAI,EAAMA,EAAInB,UACdmB,EAAM,IAAI/C,GAAcH,GAAIkD,EAAI/pB,EAAIsmB,GAAMI,MAAOqD,EAAI9pB,EAAG8pB,EAAI1mB,GACrDymB,EAAInuC,IAAIouC,GAEnBC,iBAAiBC,GACb,MAAMC,EAAUnD,GAAmB,IAAMkD,EAAI,EAAI,IAAMA,EAAI,EACrD/C,EAAS,GACf,IAAItgC,EAAIxO,KACJ+xC,EAAOvjC,EACX,IAAK,IAAIuX,EAAS,EAAGA,EAAS+rB,EAAS/rB,IAAU,CAC7CgsB,EAAOvjC,EACPsgC,EAAOnsC,KAAKovC,GACZ,IAAK,IAAI9yC,EAAI,EAAGA,EAAI,IAAM4yC,EAAI,GAAI5yC,IAC9B8yC,EAAOA,EAAKxuC,IAAIiL,GAChBsgC,EAAOnsC,KAAKovC,GAEhBvjC,EAAIujC,EAAKtB,SAEb,OAAO3B,EAEXkD,KAAK92B,EAAG+2B,IACCA,GAAejyC,KAAK2vC,OAAOf,GAAcsD,QAC1CD,EAAcpD,GAAMqD,MACxB,MAAML,EAAKI,GAAeA,EAAYE,cAAiB,EACvD,GAAI,IAAMN,EACN,MAAM,IAAI1yC,MAAM,iEAEpB,IAAIizC,EAAcH,GAAeI,GAAiB3xC,IAAIuxC,GACjDG,IACDA,EAAcpyC,KAAK4xC,iBAAiBC,GAChCI,GAAqB,IAANJ,IACfO,EAAcxD,GAAc0D,WAAWF,GACvCC,GAAiB7xC,IAAIyxC,EAAaG,KAG1C,IAAI5jC,EAAIogC,GAAciC,KAClBzwC,EAAIwuC,GAAciC,KACtB,MAAMiB,EAAU,GAAKnD,GAAmB,IAAMkD,EAAI,IAAMA,GAClDU,EAAa,IAAMV,EAAI,GACvBzhC,EAAO3K,OAAO,GAAKosC,EAAI,GACvBW,EAAY,GAAKX,EACjBY,EAAUhtC,OAAOosC,GACvB,IAAK,IAAI9rB,EAAS,EAAGA,EAAS+rB,EAAS/rB,IAAU,CAC7C,MAAMpf,EAASof,EAASwsB,EACxB,IAAIG,EAAQnuC,OAAO2W,EAAI9K,GAMvB,GALA8K,IAAMu3B,EACFC,EAAQH,IACRG,GAASF,EACTt3B,GAAKoM,IAEK,IAAVorB,EAAa,CACb,IAAIC,EAAKP,EAAYzrC,GACjBof,EAAS,IACT4sB,EAAKA,EAAGnC,UACZpwC,EAAIA,EAAEmD,IAAIovC,OAET,CACD,IAAIC,EAASR,EAAYzrC,EAASqS,KAAK65B,IAAIH,GAAS,GAChDA,EAAQ,IACRE,EAASA,EAAOpC,UACpBhiC,EAAIA,EAAEjL,IAAIqvC,IAGlB,MAAO,CAAEpkC,EAAAA,EAAGpO,EAAAA,GAEhB0yC,SAAS5B,EAAQe,GACb,IACIc,EACAC,EAFA93B,EAAIi2B,GAAgBD,GAGxB,GAAIvC,GAAkB,CAClB,MAAM0C,MAAEA,EAAKC,GAAEA,EAAEC,MAAEA,EAAKC,GAAEA,GAAOC,GAAgBv2B,GACjD,IAAM1M,EAAGkjC,EAAKtxC,EAAG6yC,GAAQjzC,KAAKgyC,KAAKV,EAAIW,IACjCzjC,EAAGmjC,EAAKvxC,EAAG8yC,GAAQlzC,KAAKgyC,KAAKR,EAAIS,GACnCZ,IACAK,EAAMA,EAAIlB,UACVe,IACAI,EAAMA,EAAInB,UACdmB,EAAM,IAAI/C,GAAcH,GAAIkD,EAAI/pB,EAAIsmB,GAAMI,MAAOqD,EAAI9pB,EAAG8pB,EAAI1mB,GAC5D8nB,EAAQrB,EAAInuC,IAAIouC,GAChBqB,EAAOC,EAAI1vC,IAAI2vC,OAEd,CACD,MAAM1kC,EAAEA,EAACpO,EAAEA,GAAMJ,KAAKgyC,KAAK92B,EAAG+2B,GAC9Bc,EAAQvkC,EACRwkC,EAAO5yC,EAEX,OAAOwuC,GAAc0D,WAAW,CAACS,EAAOC,IAAO,GAEnDxD,SAAS2D,EAAOhE,GAAOnvC,KAAKirB,IACxB,MAAMrD,EAAEA,EAACC,EAAEA,EAACoD,EAAEA,GAAMjrB,KACdozC,EAAMD,EACNE,EAAM5E,GAAI2E,EAAMA,GAChBE,EAAM7E,GAAI4E,EAAMD,GAChBG,EAAK9E,GAAI7mB,EAAIyrB,GACbG,EAAK/E,GAAI5mB,EAAIyrB,GAEnB,GADW7E,GAAIxjB,EAAImoB,KACR9rB,GACP,MAAM,IAAInoB,MAAM,oBACpB,OAAO,IAAI0vC,GAAM0E,EAAIC,IAG7B5E,GAAcsD,KAAO,IAAItD,GAAcV,GAAME,GAAIF,GAAMG,GAAI/mB,IAC3DsnB,GAAciC,KAAO,IAAIjC,GAAcvnB,GAAKC,GAAKD,IACjD,MAAMgrB,GAAmB,IAAI5wC,QACtB,MAAMotC,GACTjuC,YAAYgnB,EAAGC,GACX7nB,KAAK4nB,EAAIA,EACT5nB,KAAK6nB,EAAIA,EAEb4rB,eAAelB,GACXvyC,KAAKmyC,aAAeI,EACpBF,GAAiBvT,OAAO9+B,MAE5BiG,yBAAyBqP,GACrB,MAAMo+B,EAA2B,KAAjBp+B,EAAMpW,OAChB0oB,EAAI+rB,GAAcD,EAAUp+B,EAAQA,EAAM8I,SAAS,IACzD,IAAKw1B,GAAoBhsB,GACrB,MAAM,IAAIzoB,MAAM,yBAEpB,IAAI0oB,EA2SZ,SAAiBD,GACb,MAAMumB,EAAEA,GAAMD,GACR2F,EAAMpuC,OAAO,GACbquC,EAAOruC,OAAO,IACdsuC,EAAOtuC,OAAO,IACduuC,EAAOvuC,OAAO,IACdwuC,EAAOxuC,OAAO,IACdyuC,EAAOzuC,OAAO,IACd0uC,EAAMvsB,EAAIA,EAAIA,EAAKumB,EACnBiG,EAAMD,EAAKA,EAAKvsB,EAAKumB,EACrBkG,EAAMC,GAAKF,EAAIrG,IAAOqG,EAAMjG,EAC5BoG,EAAMD,GAAKD,EAAItG,IAAOqG,EAAMjG,EAC5BqG,EAAOF,GAAKC,EAAIhtB,IAAO4sB,EAAMhG,EAC7BsG,EAAOH,GAAKE,EAAKV,GAAQU,EAAOrG,EAChCuG,EAAOJ,GAAKG,EAAKV,GAAQU,EAAOtG,EAChCwG,EAAOL,GAAKI,EAAKT,GAAQS,EAAOvG,EAChCyG,EAAQN,GAAKK,EAAKT,GAAQS,EAAOxG,EACjC0G,EAAQP,GAAKM,EAAMX,GAAQS,EAAOvG,EAClC2G,EAAQR,GAAKO,EAAM9G,IAAOqG,EAAMjG,EAChC4G,EAAMT,GAAKQ,EAAMd,GAAQS,EAAOtG,EAChC6G,EAAMV,GAAKS,EAAIlB,GAAOM,EAAMhG,EAClC,OAAOmG,GAAKU,EAAIztB,IAhUJ0tB,CADG1G,GAAU3mB,IAErB,MAAMstB,GAAUrtB,EAAIP,MAASA,GAC7B,GAAIosB,EACIwB,IACArtB,EAAI4mB,IAAK5mB,QAEZ,CACyC,IAAP,EAAXvS,EAAM,MACP4/B,IACnBrtB,EAAI4mB,IAAK5mB,IAEjB,MAAMkrB,EAAQ,IAAIlE,GAAMjnB,EAAGC,GAE3B,OADAkrB,EAAMoC,iBACCpC,EAEX9sC,2BAA2BqP,GACvB,MAAMsS,EAAI+rB,GAAcr+B,EAAM8I,SAAS,EAAG,KACpCyJ,EAAI8rB,GAAcr+B,EAAM8I,SAAS,GAAI,KACrC20B,EAAQ,IAAIlE,GAAMjnB,EAAGC,GAE3B,OADAkrB,EAAMoC,iBACCpC,EAEX9sC,eAAe+J,GACX,MAAMsF,EAAQ8/B,GAAYplC,GACpB2O,EAAMrJ,EAAMpW,OACZm2C,EAAS//B,EAAM,GACrB,GAAY,KAARqJ,GAAuB,KAARA,IAA0B,IAAX02B,GAA8B,IAAXA,GACjD,OAAOr1C,KAAKs1C,kBAAkBhgC,GAElC,GAAY,KAARqJ,GAAyB,IAAX02B,EACd,OAAOr1C,KAAKu1C,oBAAoBjgC,GACpC,MAAM,IAAInW,MAAM,wGAAwGwf,KAE5H1Y,sBAAsBuvC,GAClB,OAAO3G,GAAMqD,KAAKY,SAAS2C,GAAoBD,IAEnDvvC,qBAAqByvC,EAAS9U,EAAW+U,GAErC,MAAMt2B,EAuVd,SAAsBhE,GAClB,MAAMH,EAAEA,GAAMgzB,GAER0H,EAAqB,EADRv6B,EAAKnc,OACO,IAC/B,IAAImgB,EAAIs0B,GAAct4B,GAClBu6B,EAAQ,IACRv2B,IAAS5Z,OAAOmwC,IAChBv2B,GAAKnE,IACLmE,GAAKnE,GACT,OAAOmE,EAhWOw2B,CADVH,EAAUN,GAAYM,KAEhB1lB,EAAEA,EAACzO,EAAEA,GA2cnB,SAA4Bqf,GACxB,GAAIA,aAAqBqM,GAErB,OADArM,EAAUuU,iBACHvU,EAEX,IACI,OAAOqM,GAAU6I,QAAQlV,GAE7B,MAAOt/B,GACH,OAAO2rC,GAAU8I,YAAYnV,IApdZoV,CAAmBpV,GACpC,GAAiB,IAAb+U,GAA+B,IAAbA,EAClB,MAAM,IAAIx2C,MAAM,kDAEpB,GAAIkgB,IAAMgI,GACN,MAAM,IAAIloB,MAAM,iDACpB,MAAM82C,EAAoB,EAAXN,EAAe,KAAO,KAC/BhuB,EAAIknB,GAAMqH,QAAQD,EAASE,GAAYnmB,KACvC9U,EAAEA,GAAMgzB,GACRkI,EAAOjH,GAAOnf,EAAG9U,GACjBm7B,EAAK5H,IAAKpvB,EAAI+2B,EAAMl7B,GACpBo7B,EAAK7H,GAAIltB,EAAI60B,EAAMl7B,GACnBq7B,EAAI1H,GAAMqD,KAAKsE,qBAAqB7uB,EAAG0uB,EAAIC,GACjD,IAAKC,EACD,MAAM,IAAIp3C,MAAM,+CAEpB,OADAo3C,EAAEpB,iBACKoB,EAEXE,WAAWC,GAAe,GACtB,OAAOC,GAAW32C,KAAK4P,MAAM8mC,IAEjC9mC,MAAM8mC,GAAe,GACjB,MAAM9uB,EAAIuuB,GAAYn2C,KAAK4nB,GAC3B,GAAI8uB,EAAc,CAEd,MAAO,GADQ12C,KAAK6nB,EAAIP,GAAM,KAAO,OAClBM,IAGnB,MAAO,KAAKA,IAAIuuB,GAAYn2C,KAAK6nB,KAGzC+uB,SACI,OAAO52C,KAAK4P,OAAM,GAAM/G,MAAM,GAElCguC,SACI,OAAO72C,KAAKy2C,YAAW,GAAM5tC,MAAM,GAEvCssC,iBACI,MAAMprB,EAAM,kCACNnC,EAAEA,EAACC,EAAEA,GAAM7nB,KACjB,IAAK4zC,GAAoBhsB,KAAOgsB,GAAoB/rB,GAChD,MAAM,IAAI1oB,MAAM4qB,GACpB,MAAM7T,EAAOu4B,GAAI5mB,EAAIA,GAErB,GAAI4mB,GAAIv4B,EADMq4B,GAAU3mB,MACEP,GACtB,MAAM,IAAIloB,MAAM4qB,GAExB4lB,OAAO19B,GACH,OAAOjS,KAAK4nB,IAAM3V,EAAM2V,GAAK5nB,KAAK6nB,IAAM5V,EAAM4V,EAElD2oB,SACI,OAAO,IAAI3B,GAAM7uC,KAAK4nB,EAAG6mB,IAAKzuC,KAAK6nB,IAEvC4oB,SACI,OAAO7B,GAAcc,WAAW1vC,MAAMywC,SAASjB,WAEnDjsC,IAAI0O,GACA,OAAO28B,GAAcc,WAAW1vC,MAAMuD,IAAIqrC,GAAcc,WAAWz9B,IAAQu9B,WAE/EwB,SAAS/+B,GACL,OAAOjS,KAAKuD,IAAI0O,EAAMu+B,UAE1BsC,SAAS5B,GACL,OAAOtC,GAAcc,WAAW1vC,MAAM8yC,SAAS5B,EAAQlxC,MAAMwvC,WAEjEgH,qBAAqBD,EAAGrkC,EAAGC,GACvB,MACM2kC,EADIlI,GAAcc,WAAW1vC,MACtB8yC,SAAS5gC,GAChB6kC,EAAKnI,GAAcc,WAAW6G,GAAGtF,eAAe9+B,GAChD6kC,EAAMF,EAAGvzC,IAAIwzC,GACnB,OAAOC,EAAIrH,OAAOf,GAAciC,WAAQnxC,EAAYs3C,EAAIxH,YAKhE,SAASyH,GAAS11B,GACd,OAAOhd,OAAOqC,SAAS2a,EAAE,GAAI,KAAO,EAAI,KAAOA,EAAIA,EAEvD,SAAS21B,GAAYriC,GACjB,GAAIA,EAAK3V,OAAS,GAAiB,IAAZ2V,EAAK,GACxB,MAAM,IAAI1V,MAAM,kCAAkCg4C,GAAWtiC,MAEjE,MAAM8J,EAAM9J,EAAK,GACX4K,EAAM5K,EAAKuJ,SAAS,EAAGO,EAAM,GACnC,IAAKA,GAAOc,EAAIvgB,SAAWyf,EACvB,MAAM,IAAIxf,MAAM,2CAEpB,GAAe,IAAXsgB,EAAI,IAAeA,EAAI,IAAM,IAC7B,MAAM,IAAItgB,MAAM,8CAEpB,MAAO,CAAE0V,KAAM8+B,GAAcl0B,GAAMvJ,KAAMrB,EAAKuJ,SAASO,EAAM,IAjBjEkwB,GAAMqD,KAAO,IAAIrD,GAAMX,GAAME,GAAIF,GAAMG,IACvCQ,GAAMgC,KAAO,IAAIhC,GAAMxnB,GAAKA,IAgCrB,MAAM4lB,GACTrsC,YAAYovB,EAAGzO,GACXvhB,KAAKgwB,EAAIA,EACThwB,KAAKuhB,EAAIA,EACTvhB,KAAKm1C,iBAETlvC,mBAAmB+J,GACf,MAAMmJ,EAAMi+B,GAASpnC,GACflN,EAAO,wBACb,GAAmB,iBAARkN,IAAqBmJ,EAC5B,MAAM,IAAI9Y,UAAU,GAAGyC,oCAC3B,MAAM+X,EAAM1B,EAAMg+B,GAAWnnC,GAAOA,EACpC,GAAmB,MAAf6K,EAAI3b,OACJ,MAAM,IAAIC,MAAM,GAAG2D,2BACvB,OAAO,IAAImqC,GAAUoK,GAAYx8B,EAAIhS,MAAM,EAAG,KAAMwuC,GAAYx8B,EAAIhS,MAAM,GAAI,OAElF5C,eAAe+J,GACX,MAAMmJ,EAAMi+B,GAASpnC,GACrB,GAAmB,iBAARA,IAAqBmJ,EAC5B,MAAM,IAAI9Y,UAAU,oDACxB,MAAM2vB,EAAEA,EAACzO,EAAEA,GAlCnB,SAA2B1M,GACvB,GAAIA,EAAK3V,OAAS,GAAgB,IAAX2V,EAAK,GACxB,MAAM,IAAI1V,MAAM,0BAA0Bg4C,GAAWtiC,MAEzD,GAAIA,EAAK,KAAOA,EAAK3V,OAAS,EAC1B,MAAM,IAAIC,MAAM,uCAEpB,MAAQ0V,KAAMmb,EAAG9Z,KAAMohC,GAAWJ,GAAYriC,EAAKuJ,SAAS,KACpDvJ,KAAM0M,EAAGrL,KAAMqhC,GAAeL,GAAYI,GAClD,GAAIC,EAAWr4C,OACX,MAAM,IAAIC,MAAM,gDAAgDg4C,GAAWI,MAE/E,MAAO,CAAEvnB,EAAAA,EAAGzO,EAAAA,GAsBSi2B,CAAkBr+B,EAAMnJ,EAAM2mC,GAAW3mC,IAC1D,OAAO,IAAIi9B,GAAUjd,EAAGzO,GAE5Btb,eAAe+J,GACX,OAAOhQ,KAAK81C,QAAQ9lC,GAExBmlC,iBACI,MAAMnlB,EAAEA,EAACzO,EAAEA,GAAMvhB,KACjB,IAAKy3C,GAAmBznB,GACpB,MAAM,IAAI7wB,MAAM,0CACpB,IAAKs4C,GAAmBl2B,GACpB,MAAM,IAAIpiB,MAAM,0CAExBu4C,WACI,MAAMC,EAAOzJ,GAAMhzB,GAAKoM,GACxB,OAAOtnB,KAAKuhB,EAAIo2B,EAEpBC,aACI,OAAO53C,KAAK03C,WAAa,IAAIzK,GAAUjtC,KAAKgwB,EAAGke,GAAMhzB,EAAIlb,KAAKuhB,GAAKvhB,KAEvE63C,cAAcnB,GAAe,GACzB,OAAOC,GAAW32C,KAAK83C,SAASpB,IAEpCoB,SAASpB,GAAe,GACpB,MAAMqB,EAAOd,GAASe,GAAoBh4C,KAAKuhB,IAC/C,GAAIm1B,EACA,OAAOqB,EACX,MAAME,EAAOhB,GAASe,GAAoBh4C,KAAKgwB,IACzCkoB,EAAOF,GAAoBC,EAAK/4C,OAAS,GACzCi5C,EAAOH,GAAoBD,EAAK74C,OAAS,GAE/C,MAAO,KADQ84C,GAAoBC,EAAK/4C,OAAS,EAAI64C,EAAK74C,OAAS,EAAI,OAChDg5C,IAAOD,MAASE,IAAOJ,IAElDtB,aACI,OAAOz2C,KAAK63C,gBAEhBjoC,QACI,OAAO5P,KAAK83C,WAEhBM,oBACI,OAAOzB,GAAW32C,KAAKq4C,gBAE3BA,eACI,OAAOlC,GAAYn2C,KAAKgwB,GAAKmmB,GAAYn2C,KAAKuhB,IAGtD,SAAS+2B,MAAeC,GACpB,IAAKA,EAAOC,MAAMpB,IACd,MAAM,IAAIj4C,MAAM,4BACpB,GAAsB,IAAlBo5C,EAAOr5C,OACP,OAAOq5C,EAAO,GAClB,MAAMr5C,EAASq5C,EAAOh6C,QAAO,CAAC2T,EAAGiH,IAAQjH,EAAIiH,EAAIja,QAAQ,GACnDwH,EAAS,IAAIF,WAAWtH,GAC9B,IAAK,IAAID,EAAI,EAAGyd,EAAM,EAAGzd,EAAIs5C,EAAOr5C,OAAQD,IAAK,CAC7C,MAAMka,EAAMo/B,EAAOt5C,GACnByH,EAAOlG,IAAI2Y,EAAKuD,GAChBA,GAAOvD,EAAIja,OAEf,OAAOwH,EAEX,SAAS0wC,GAAS9hC,GACd,OAAOA,aAAiB9O,WAE5B,MAAMiyC,GAAQ1rC,MAAM5B,KAAK,CAAEjM,OAAQ,MAAO,CAACT,EAAGQ,IAAMA,EAAE6K,SAAS,IAAI8P,SAAS,EAAG,OAC/E,SAASu9B,GAAWuB,GAChB,KAAMA,aAAkBlyC,YACpB,MAAM,IAAIrH,MAAM,uBACpB,IAAI6Q,EAAM,GACV,IAAK,IAAI/Q,EAAI,EAAGA,EAAIy5C,EAAOx5C,OAAQD,IAC/B+Q,GAAOyoC,GAAMC,EAAOz5C,IAExB,OAAO+Q,EAEX,SAASmmC,GAAY9G,GACjB,GAAIA,EAAMpB,GACN,MAAM,IAAI9uC,MAAM,2BACpB,OAAOkwC,EAAIvlC,SAAS,IAAI8P,SAAS,GAAI,KAKzC,SAASo+B,GAAoB3I,GACzB,MAAMr/B,EAAMq/B,EAAIvlC,SAAS,IACzB,OAAoB,EAAbkG,EAAI9Q,OAAa,IAAI8Q,IAAQA,EAExC,SAASqnC,GAAYrnC,GACjB,GAAmB,iBAARA,EACP,MAAM,IAAI3P,UAAU,4CAA8C2P,GAEtE,OAAOvK,OAAO,KAAKuK,KAEvB,SAAS2mC,GAAW3mC,GAChB,GAAmB,iBAARA,EACP,MAAM,IAAI3P,UAAU,2CAA6C2P,GAErE,GAAIA,EAAI9Q,OAAS,EACb,MAAM,IAAIC,MAAM,4CAA8C6Q,EAAI9Q,QACtE,MAAMy5C,EAAQ,IAAInyC,WAAWwJ,EAAI9Q,OAAS,GAC1C,IAAK,IAAID,EAAI,EAAGA,EAAI05C,EAAMz5C,OAAQD,IAAK,CACnC,MAAM6oB,EAAQ,EAAJ7oB,EACJ25C,EAAU5oC,EAAInH,MAAMif,EAAGA,EAAI,GAC3B+wB,EAAOt0C,OAAOqC,SAASgyC,EAAS,IACtC,GAAIr0C,OAAOu0C,MAAMD,IAASA,EAAO,EAC7B,MAAM,IAAI15C,MAAM,yBACpBw5C,EAAM15C,GAAK45C,EAEf,OAAOF,EAEX,SAAShF,GAAcr+B,GACnB,OAAO+hC,GAAYF,GAAW7hC,IAElC,SAAS8/B,GAAYplC,GACjB,OAAOA,aAAexJ,WAAaA,WAAW2E,KAAK6E,GAAO2mC,GAAW3mC,GAEzE,SAASmhC,GAAgB9B,GACrB,GAAmB,iBAARA,GAAoB9qC,OAAO4W,cAAck0B,IAAQA,EAAM,EAC9D,OAAO5pC,OAAO4pC,GAClB,GAAmB,iBAARA,GAAoBoI,GAAmBpI,GAC9C,OAAOA,EACX,MAAM,IAAIhvC,UAAU,uDAExB,SAASouC,GAAIv8B,EAAGC,EAAI+7B,GAAMC,GACtB,MAAMznC,EAASwL,EAAIC,EACnB,OAAOzL,GAAU2gB,GAAM3gB,EAASyL,EAAIzL,EAExC,SAAS4tC,GAAK1sB,EAAGmxB,GACb,MAAM5K,EAAEA,GAAMD,GACd,IAAIzuB,EAAMmI,EACV,KAAOmxB,KAAU1xB,IACb5H,GAAOA,EACPA,GAAO0uB,EAEX,OAAO1uB,EAyBX,SAAS0vB,GAAO6J,EAAQC,EAAS/K,GAAMC,GACnC,GAAI6K,IAAW3xB,IAAO4xB,GAAU5xB,GAC5B,MAAM,IAAIloB,MAAM,6CAA6C65C,SAAcC,KAE/E,IAAI/mC,EAAIu8B,GAAIuK,EAAQC,GAChB9mC,EAAI8mC,EACJrxB,EAAIP,GAAcrJ,EAAIsJ,GAC1B,KAAOpV,IAAMmV,IAAK,CACd,MACM2I,EAAI7d,EAAID,EACRwyB,EAAI9c,EAAI5J,GAFJ7L,EAAID,GAIdC,EAAID,EAAGA,EAAI8d,EAAGpI,EAAI5J,EAAUA,EAAI0mB,EAGpC,GADYvyB,IACAmV,GACR,MAAM,IAAInoB,MAAM,0BACpB,OAAOsvC,GAAI7mB,EAAGqxB,GAmBlB,MAAMC,GAAa,CAAChnC,EAAGC,KAAOD,EAAIC,EAAIoV,IAAOpV,EACvCgnC,GAAY5xB,IAAO9hB,OAAO,KAChC,SAASgsC,GAAgBpzC,GACrB,MAAM6c,EAAEA,GAAMgzB,GACRkL,EAAK3zC,OAAO,sCACZ4zC,GAAM/xB,GAAM7hB,OAAO,sCACnB6zC,EAAK7zC,OAAO,uCACZ0uC,EAAKiF,EACLG,EAAKL,GAAW/E,EAAK91C,EAAG6c,GACxBoe,EAAK4f,IAAYG,EAAKh7C,EAAG6c,GAC/B,IAAIo2B,EAAK7C,GAAIpwC,EAAIk7C,EAAKH,EAAK9f,EAAKggB,EAAIp+B,GAChCs2B,EAAK/C,IAAK8K,EAAKF,EAAK/f,EAAK6a,EAAIj5B,GACjC,MAAMm2B,EAAQC,EAAK6H,GACb5H,EAAQC,EAAK2H,GAKnB,GAJI9H,IACAC,EAAKp2B,EAAIo2B,GACTC,IACAC,EAAKt2B,EAAIs2B,GACTF,EAAK6H,IAAa3H,EAAK2H,GACvB,MAAM,IAAIh6C,MAAM,2CAA6Cd,GAEjE,MAAO,CAAEgzC,MAAAA,EAAOC,GAAAA,EAAIC,MAAAA,EAAOC,GAAAA,GAa/B,MAAMgI,GACF54C,cACIZ,KAAKvB,EAAI,IAAI+H,WAAW,IAAI2P,KAAK,GACjCnW,KAAK3B,EAAI,IAAImI,WAAW,IAAI2P,KAAK,GACjCnW,KAAKy5C,QAAU,EAEnBx8B,QAAQ3d,GACJ,OAAOo6C,GAAMC,WAAW35C,KAAK3B,KAAMiB,GAEvCs6C,YAAYt6C,GACR,GAAoC,mBAAzBo6C,GAAMG,eACb,MAAM,IAAI16C,MAAM,yDACpB,MAAMsgB,EAAMi6B,GAAMG,eAAe75C,KAAK3B,KAAMiB,GAC5C,GAAImgB,aAAevhB,QACf,MAAM,IAAIiB,MAAM,uDACpB,OAAOsgB,EAEXq6B,OACI,GAAI95C,KAAKy5C,SAAW,IAChB,MAAM,IAAIt6C,MAAM,qDAEpBa,KAAKy5C,SAAW,EAEpB57C,aAAak8C,EAAO,IAAIvzC,YACpBxG,KAAK3B,QAAU2B,KAAKid,KAAKjd,KAAKvB,EAAG+H,WAAW2E,KAAK,CAAC,IAAQ4uC,GAC1D/5C,KAAKvB,QAAUuB,KAAKid,KAAKjd,KAAKvB,GACV,IAAhBs7C,EAAK76C,SAETc,KAAK3B,QAAU2B,KAAKid,KAAKjd,KAAKvB,EAAG+H,WAAW2E,KAAK,CAAC,IAAQ4uC,GAC1D/5C,KAAKvB,QAAUuB,KAAKid,KAAKjd,KAAKvB,IAElCu7C,WAAWD,EAAO,IAAIvzC,YAClBxG,KAAK3B,EAAI2B,KAAK45C,SAAS55C,KAAKvB,EAAG+H,WAAW2E,KAAK,CAAC,IAAQ4uC,GACxD/5C,KAAKvB,EAAIuB,KAAK45C,SAAS55C,KAAKvB,GACR,IAAhBs7C,EAAK76C,SAETc,KAAK3B,EAAI2B,KAAK45C,SAAS55C,KAAKvB,EAAG+H,WAAW2E,KAAK,CAAC,IAAQ4uC,GACxD/5C,KAAKvB,EAAIuB,KAAK45C,SAAS55C,KAAKvB,IAEhCZ,iBAGI,OAFAmC,KAAK85C,OACL95C,KAAKvB,QAAUuB,KAAKid,KAAKjd,KAAKvB,GACvBuB,KAAKvB,EAEhBw7C,eAGI,OAFAj6C,KAAK85C,OACL95C,KAAKvB,EAAIuB,KAAK45C,SAAS55C,KAAKvB,GACrBuB,KAAKvB,GAGpB,SAASg5C,GAAmBpI,GACxB,OAAOhoB,GAAMgoB,GAAOA,EAAMnB,GAAMhzB,EAEpC,SAAS04B,GAAoBvE,GACzB,OAAOhoB,GAAMgoB,GAAOA,EAAMnB,GAAMC,EAEpC,SAAS+L,GAASC,EAAQzV,EAAGhvB,GACzB,MAAMrX,EAAIs1C,GAAcwG,GACxB,IAAK1C,GAAmBp5C,GACpB,OACJ,MAAM6c,EAAEA,GAAMgzB,GACRkM,EAAIvL,GAAMqD,KAAKY,SAASz0C,GACxB2xB,EAAIye,GAAI2L,EAAExyB,EAAG1M,GACnB,GAAI8U,IAAM3I,GACN,OACJ,MAAM9F,EAAIktB,GAAIU,GAAO9wC,EAAG6c,GAAKuzB,GAAI/J,EAAIhvB,EAAIsa,EAAG9U,GAAIA,GAChD,GAAIqG,IAAM8F,GACN,OACJ,MAAMumB,EAAM,IAAIX,GAAUjd,EAAGzO,GAE7B,MAAO,CAAEqsB,IAAAA,EAAK+H,UADIyE,EAAExyB,IAAMgmB,EAAI5d,EAAI,EAAI,GAAKzrB,OAAO61C,EAAEvyB,EAAIP,KAG5D,SAASmuB,GAAoBj2C,GACzB,IAAI6vC,EACJ,GAAmB,iBAAR7vC,EACP6vC,EAAM7vC,OAEL,GAAmB,iBAARA,GAAoB+E,OAAO4W,cAAc3b,IAAQA,EAAM,EACnE6vC,EAAM5pC,OAAOjG,QAEZ,GAAmB,iBAARA,EAAkB,CAC9B,GAAmB,KAAfA,EAAIN,OACJ,MAAM,IAAIC,MAAM,oCACpBkwC,EAAMgI,GAAY73C,OAEjB,CAAA,IAAI43C,GAAS53C,GAMd,MAAM,IAAIa,UAAU,8BALpB,GAAmB,KAAfb,EAAIN,OACJ,MAAM,IAAIC,MAAM,oCACpBkwC,EAAMsE,GAAcn0C,GAKxB,IAAKi4C,GAAmBpI,GACpB,MAAM,IAAIlwC,MAAM,qCACpB,OAAOkwC,EA6BX,SAASgL,GAAM7iC,GACX,MAAM2B,EAAMi+B,GAAS5/B,GACfqD,EAAsB,iBAATrD,EACbmH,GAAOxF,GAAO0B,IAAQrD,EAAKtY,OACjC,OAAIia,EACe,KAARwF,GAAsB,KAARA,EACrB9D,EACe,KAAR8D,GAAsB,MAARA,EACrBnH,aAAgBq3B,GAIjB,SAASyL,GAAgBC,EAAUC,EAAS9D,GAAe,GAC9D,GAAI2D,GAAME,GACN,MAAM,IAAIl6C,UAAU,kDACxB,IAAKg6C,GAAMG,GACP,MAAM,IAAIn6C,UAAU,kDACxB,MAAM8R,GA5CkBsoC,EA4CKD,aA3CJ3L,IACrB4L,EAAUtF,iBACHsF,GAGA5L,GAAMqH,QAAQuE,GAN7B,IAA4BA,EA8CxB,OADAtoC,EAAEgjC,iBACKhjC,EAAE2gC,SAAS2C,GAAoB8E,IAAW9D,WAAWC,GAEhE,SAASgE,GAASplC,GAEd,OAAOq+B,GADOr+B,EAAMpW,OAAS,GAAKoW,EAAMzM,MAAM,EAAG,IAAMyM,GAG3D,SAASqlC,GAAYrlC,GACjB,MAAMslC,EAAKF,GAASplC,GACdulC,EAAKpM,GAAImM,EAAI1M,GAAMhzB,GACzB,OAAO4/B,GAAWD,EAAKxzB,GAAMuzB,EAAKC,GAEtC,SAASC,GAAWzL,GAChB,GAAmB,iBAARA,EACP,MAAM,IAAIlwC,MAAM,mBAEpB,OAAOw3C,GADKR,GAAY9G,IAwC5B,SAAS0L,GAASrF,EAASsF,EAAS39B,EAAO,IACvC,MAAM08B,KAAEA,EAAIrV,EAAEA,EAAChvB,EAAEA,GAtCrB,SAAqBggC,EAASF,EAAYyF,GACtC,GAAe,MAAXvF,EACA,MAAM,IAAIv2C,MAAM,2CAA2Cu2C,MAC/D,MAAMrqB,EAAK+pB,GAAYM,GACjBhgC,EAAI+/B,GAAoBD,GACxB0F,EAAW,CAACJ,GAAWplC,GAAIilC,GAAYtvB,IAC7C,GAAoB,MAAhB4vB,EAAsB,EACD,IAAjBA,IACAA,EAAevB,GAAMjsB,YAAY,KACrC,MAAM/nB,EAAI0vC,GAAY6F,GACtB,GAAiB,KAAbv1C,EAAExG,OACF,MAAM,IAAIC,MAAM,yCACpB+7C,EAASv4C,KAAK+C,GAIlB,MAAO,CAAEq0C,KAFIzB,MAAe4C,GAEbxW,EADLgW,GAASrvB,GACD3V,EAAAA,GAsBKylC,CAAYzF,EAASsF,EAAS39B,EAAK49B,cAC1D,IAAIrN,EACJ,MAAMwN,EAAO,IAAI5B,GAEjB,IADA4B,EAAKpB,WAAWD,KACPnM,EAAMsM,GAASkB,EAAKnB,eAAgBvV,EAAGhvB,KAC5C0lC,EAAKpB,aACT,OA1BJ,SAAqBqB,EAAQh+B,GACzB,IAAIuwB,IAAEA,EAAG+H,SAAEA,GAAa0F,EACxB,MAAMC,UAAEA,EAASC,IAAEA,EAAGC,UAAEA,GAAcv9C,OAAOoN,OAAO,CAAEiwC,WAAW,EAAMC,KAAK,GAAQl+B,GAChFi+B,GAAa1N,EAAI8J,aACjB9J,EAAMA,EAAIgK,aACVjC,GAAY,GAEhB,MAAMhjB,EAAS4oB,EAAM3N,EAAIiK,gBAAkBjK,EAAIwK,oBAC/C,OAAOoD,EAAY,CAAC7oB,EAAQgjB,GAAYhjB,EAkBjC8oB,CAAY7N,EAAKvwB,GAyI5BwxB,GAAMqD,KAAKuB,eAAe,GAC1B,MAAMvtB,GAAS,CACXw1B,KAt+B4Bh8C,UAu+B5Bi8C,IAAqB,iBAAT71B,MAAqB,WAAYA,KAAOA,KAAKI,YAASxmB,GAEzDg6C,GAAQ,CACjBkC,kBAAkBpG,GACd,IAEI,OADAC,GAAoBD,IACb,EAEX,MAAOl0C,GACH,OAAO,IAGfu6C,iBAAmBxgC,IAEf,IADAA,EAAO+5B,GAAY/5B,IACVnc,OAAS,IAAMmc,EAAKnc,OAAS,KAClC,MAAM,IAAIC,MAAM,yDACpB,MAAMkwC,EAAMZ,GAAIkF,GAAct4B,GAAO6yB,GAAMhzB,GAC3C,GAAIm0B,IAAQhoB,IAAOgoB,IAAQ/nB,GACvB,MAAM,IAAInoB,MAAM,uBACpB,OAhgBR,SAAkBkwC,GACd,OAAOsH,GAAWR,GAAY9G,IA+fnByM,CAASzM,IAEpB5hB,YAAa,CAACsuB,EAAc,MACxB,GAAI71B,GAAOy1B,IACP,OAAOz1B,GAAOy1B,IAAIruB,gBAAgB,IAAI9mB,WAAWu1C,IAOjD,MAAM,IAAI58C,MAAM,sDAGxB68C,iBAAkB,IACPtC,GAAMmC,iBAAiBnC,GAAMjsB,YAAY,KAEpD0pB,WAAAA,GACA1I,IAAAA,GACA1tB,OAAQljB,MAAO4F,IACX,GAAIyiB,GAAOy1B,IAAK,CACZ,MAAM5lC,QAAemQ,GAAOy1B,IAAIM,OAAO9/B,OAAO,UAAW1Y,EAAQsS,QACjE,OAAO,IAAIvP,WAAWuP,GAOtB,MAAM,IAAI5W,MAAM,iDAGxBw6C,WAAY97C,MAAO2B,KAAQ08C,KACvB,GAAIh2B,GAAOy1B,IAAK,CACZ,MAAMQ,QAAaj2B,GAAOy1B,IAAIM,OAAOG,UAAU,MAAO58C,EAAK,CAAEsD,KAAM,OAAQuY,KAAM,CAAEvY,KAAM,aAAe,EAAO,CAAC,SAC1GW,EAAU60C,MAAe4D,GACzBnmC,QAAemQ,GAAOy1B,IAAIM,OAAOI,KAAK,OAAQF,EAAM14C,GAC1D,OAAO,IAAI+C,WAAWuP,GAStB,MAAM,IAAI5W,MAAM,sDAGxBm9C,gBAAY58C,EACZm6C,oBAAgBn6C,EAChB68C,WAAWhK,EAAa,EAAGQ,EAAQlE,GAAMqD,MACrC,MAAMU,EAASG,IAAUlE,GAAMqD,KAAOa,EAAQ,IAAIlE,GAAMkE,EAAMnrB,EAAGmrB,EAAMlrB,GAGvE,OAFA+qB,EAAOa,eAAelB,GACtBK,EAAOE,SAAS/E,IACT6E,ICljCf,IAWI4J,GAXAz8C,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAUzEy5C,GAACG,eAAiB,SAAUr6C,KAAQ08C,GAC/C,OAAOtnC,GAASgS,GAAY,SAAUpnB,EAAKgW,GAAO0mC,MAE/C,MAAMO,GACT77C,YAAY40C,GACRgH,GAAuBh8C,IAAIR,UAAM,GACjCiH,GAAO9C,eAA2C,KAA3BwR,GAAW6/B,GAAqB,6BAA8B,aAAc,cACnGz1C,GAAuBC,KAAMw8C,GAAwBnnC,GAAQmgC,GAAa,KAE1EA,iBAAe,OAAO/0C,GAAuBT,KAAMw8C,GAAwB,KAC3E/B,gBAAc,OAAOgC,GAAWC,iBAAiBj8C,GAAuBT,KAAMw8C,GAAwB,MACtGG,0BAAwB,OAAOF,GAAWC,iBAAiBj8C,GAAuBT,KAAMw8C,GAAwB,MAAM,GAC1HH,KAAKlgC,GACDlV,GAAO9C,eAAuC,KAAvBwR,GAAWwG,GAAiB,wBAAyB,SAAUA,GACtF,MAAOygC,EAAQC,GAASC,GAAmBloC,GAASuH,GAASvH,GAASnU,GAAuBT,KAAMw8C,GAAwB,MAAO,CAC9HhB,WAAW,EACXF,WAAW,IAET1N,EAAMmP,GAAoB7G,QAAQ0G,GACxC,OAAO3P,GAAU9hC,KAAK,CAClB6kB,EAAGpgB,GAAM,KAAOg+B,EAAI5d,EAAElmB,SAAS,IAAK,IACpCyX,EAAG3R,GAAM,KAAOg+B,EAAIrsB,EAAEzX,SAAS,IAAK,IACpCrL,EAAIo+C,EAAQ,GAAO,KACpBh1C,SAEPm1C,mBAAmB/qC,GACf,MAAMgrC,EAASR,GAAWC,iBAAiBzqC,GAC3C,OAAOoD,GAAQ6nC,GAA0BtoC,GAASnU,GAAuBT,KAAMw8C,GAAwB,MAAOS,IAElHh3C,wBAAwBzG,EAAK29C,GACzB,IAAI7nC,EAAQrO,GAAO3B,SAAS9F,EAAK,OACjC,GAAqB,KAAjB8V,EAAMpW,OAAe,CAErB,OAAOmW,GDktBZ,SAAsBmgC,EAAYkB,GAAe,GACpD,OAAO7H,GAAMuO,eAAe5H,GAAYiB,WAAWC,GCptB5B2G,CAAuB/nC,IAAS6nC,IAGnD,GAAqB,KAAjB7nC,EAAMpW,OAAe,CACrB,MAAMo+C,EAAM,IAAI92C,WAAW,IAC3B82C,EAAI,GAAK,EACTA,EAAI98C,IAAI8U,EAAO,GACfA,EAAQgoC,EAGZ,OAAOjoC,GADOkoC,GAAgBrH,QAAQ5gC,GACjBmhC,WAAW0G,IAEpCl3C,wBAAwBkW,EAAQykB,GAC5B,MAAMgN,EAAMX,GAAU9hC,KAAKy1B,GACrB2a,EAAMwB,GAAoBhH,YAAYnhC,GAASY,GAAO,CAACo4B,EAAI5d,EAAG4d,EAAIrsB,MAAMs2B,gBACxEoF,EDusBP,SAA0BvH,EAAS9U,EAAW+U,EAAUe,GAAe,GAC1E,OAAO7H,GAAM2O,cAAc9H,EAAS9U,EAAW+U,GAAUc,WAAWC,GCxsBjD+G,CAA2B7oC,GAASuH,GAASo/B,EAAK3N,EAAIP,SACrE,OAAc,MAAV4P,EACO5nC,GAAQ4nC,GAEZh2C,GAAOlD,mBAAmB,+BAAgC,YAAa68B,GAElF36B,kBAAkBy3C,EAAIC,EAAIR,GACtB,MAAMS,EAAOL,GAAgBrH,QAAQuG,GAAWC,iBAAiBgB,GAAI72C,UAAU,IACzEg3C,EAAON,GAAgBrH,QAAQuG,GAAWC,iBAAiBiB,GAAI92C,UAAU,IAC/E,MAAO,KAAO+2C,EAAKr6C,IAAIs6C,GAAMjuC,QAAQutC,ICzE7C,SAASW,GAAa/R,EAAMgS,GACxB,MAAO,CACHxrB,QAASW,GAAW6Y,GACpBgS,aAAcA,GAAe,IAAI3/C,KAAI,CAAC4/C,EAAYt/C,KAC9C,GAA+B,KAA3BiX,GAAWqoC,GAEX,MAAM,IAAI7+C,MAAM,IAEpB,OAAO6+C,EAAW53C,kBAIvB,SAAS63C,GAAclgD,GAC1B,GAAIgP,MAAMN,QAAQ1O,GACd,OAAOA,EAAMK,KAAI,CAACoC,EAAK9B,KACnB,GAAIqO,MAAMN,QAAQjM,GAAM,CACpB,GAAIA,EAAItB,OAAS,EAEb,MAAM,IAAIC,MAAM,IAEpB,OAAO2+C,GAAat9C,EAAI,GAAIA,EAAI,IAEpC,OAAOs9C,GAAat9C,EAAI+xB,QAAS/xB,EAAIu9C,gBAG7C,MAAMr3C,EAASzI,OAAOD,KAAKD,GAAOK,KAAK2tC,IACnC,MAAMgS,EAAchgD,EAAMguC,GAAMxtC,QAAO,CAACC,EAAOw/C,KAC3Cx/C,EAAMw/C,IAAc,EACbx/C,IACR,IACH,OAAOs/C,GAAa/R,EAAM9tC,OAAOD,KAAK+/C,GAAa/e,WAGvD,OADAt4B,EAAOs4B,MAAK,CAAC9sB,EAAGC,IAAOD,EAAEqgB,QAAQ2rB,cAAc/rC,EAAEogB,WAC1C7rB,EChCJ,SAASy3C,GAAe3+C,GAE3B,OAAO0zB,GAAW/I,GAAU,KADVsyB,GAAWC,iBAAiBl9C,GAAK,GACNqH,UAAU,IAAIA,UAAU,KAElE,SAASu3C,GAAejiC,EAAQykB,GACnC,OAAOud,GAAe1B,GAAW4B,iBAAiBliC,EAAQykB,IFsE9D4b,GAAyB,IAAI/6C,QG9EtB,MCEMwF,GAAS,IAAI5D,EDFH,2CEAvB,IAWIi7C,GAXAv+C,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAaxF,MAAMuP,GAAO/J,OAAO,GACdmnC,GAAOnnC,OAAO,GACdonC,GAAQpnC,OAAO,IACfqnC,GAAQrnC,OAAO,IACfsnC,GAAQtnC,OAAO,IACf84C,GAAc94C,OAAO,sEAC3B,SAAS+4C,GAAczgD,GACnB,MAAc,OAAVA,EACO,KAEJm1B,GAAWn1B,GAEtB,SAAS0gD,GAAW1gD,EAAO0P,GACvB,IACI,OAAO4H,GAAQtX,GAEnB,MAAOuD,GACH,OAAO2F,GAAOlD,mBAAmB,eAAgB0J,EAAO1P,IAGhE,SAAS2gD,GAAiB3gD,EAAO0P,GAC7B,IACI,OAAOwwC,GAAclgD,GAEzB,MAAOuD,GACH,OAAO2F,GAAOlD,mBAAmB,qBAAsB0J,EAAO1P,IAGtE,SAAS4gD,GAAajvC,EAAQjC,GAC1B,MAAe,OAAXiC,EACO,EAEJzI,GAAOzB,UAAUkK,EAAQjC,GAEpC,SAASmxC,GAAWlvC,EAAQjC,GACxB,GAAe,OAAXiC,EACA,OAAOF,GAEX,MAAMzR,EAAQkJ,GAAOtB,UAAU+J,EAAQjC,GAIvC,OAHI1P,EAAQwgD,IACRt3C,GAAOlD,mBAAmB,0BAA2B0J,EAAO1P,GAEzDA,EAEX,SAAS8gD,GAAanvC,EAAQ5M,GAC1B,MAAM/E,EAAQkJ,GAAOtB,UAAU+J,EAAQ,SACjChJ,EAASqJ,GAAQhS,GAIvB,OAHI2I,EAAOxH,OAAS,IAChB+H,GAAOlD,mBAAmB,kBAAmB,MAAMjB,IAAQ/E,GAExD2I,EAEX,SAASo4C,GAAiB/gD,GACtB,OAAOkgD,GAAclgD,GAAOK,KAAKoC,GAAQ,CAACA,EAAI+xB,QAAS/xB,EAAIu9C,eAgD/D,SAASgB,GAAiB1qB,EAAIuZ,GAC1B,MAAMzP,EAAS,CACX0gB,GAAaxqB,EAAGE,OAAS,EAAG,SAC5BsqB,GAAaxqB,EAAG2qB,UAAY,EAAG,YAC/BH,GAAaxqB,EAAG4qB,UAAY,EAAG,YACpB,MAAT5qB,EAAGjpB,GAAc8nB,GAAWmB,EAAGjpB,IAAM,KACvCyzC,GAAaxqB,EAAGt2B,OAAS,EAAG,SAC3Bs2B,EAAGxf,MAAQ,MAEhB,IAAI4oB,EAAUjuB,GACd,GAAkB,MAAd6kB,EAAGoJ,QAEHA,EAAUx2B,GAAOtB,UAAU0uB,EAAGoJ,QAAS,cAGnCmQ,GAAuB,MAAhBA,EAAIV,UAAoBU,EAAIT,gBAAkB1P,GACrDx2B,GAAOlD,mBAAmB,4BAA6B,MAAO6pC,QAGjE,GAAIA,EAAK,CAEV,MAAMsR,EAAStR,EAAIT,cACL,MAAV+R,IACAzhB,EAAUyhB,GAIlB,IAAKtR,EAOD,OALInQ,IAAYjuB,KACZ2uB,EAAOx7B,KAAKoN,GAAQ0tB,IACpBU,EAAOx7B,KAAK,MACZw7B,EAAOx7B,KAAK,OAET+wB,GAAUyK,GAGrB,IAAI1/B,EAAIgH,OAAO,GAAKmoC,EAAIP,SAUxB,OATI5P,IAAYjuB,GACZ/Q,EAAIwuC,GAAUkS,YAAY1hB,EAASmQ,EAAInvC,GAElCgH,OAAOmoC,EAAInvC,KAAOA,GACvBwI,GAAOlD,mBAAmB,4BAA6B,MAAO6pC,GAElEzP,EAAOx7B,KAAKoN,GAAQtR,IACpB0/B,EAAOx7B,KAAKoN,GAAQ69B,EAAI5d,IACxBmO,EAAOx7B,KAAKoN,GAAQ69B,EAAIrsB,IACjBmS,GAAUyK,GAErB,SAASihB,GAAmB/qB,EAAI8J,EAAQkhB,GACpC,IAAIhS,EACJ,IAEI,GADAA,EAAUsR,GAAaxgB,EAAO,GAAI,WAClB,IAAZkP,GAA6B,IAAZA,EACjB,MAAM,IAAIluC,MAAM,eAGxB,MAAOmC,GACH,OAAO2F,GAAOlD,mBAAmB,kBAAmB,UAAWo6B,EAAO,IAE1E,MAAMnO,EAAI5Z,GAAa+nB,EAAO,GAAI,IAC5B5c,EAAInL,GAAa+nB,EAAO,GAAI,IAC5ByC,EAAYqM,GAAU9hC,KAAK,CAAE6kB,EAAAA,EAAGzO,EAAAA,EAAG8rB,QAAAA,IACzChZ,EAAGuM,UAAYA,EA8BnB,SAAS0e,GAAkBjrB,EAAIuZ,GAC3B,MAAMzP,EAAS,CACX0gB,GAAaxqB,EAAGoJ,SAAW,EAAG,WAC9BohB,GAAaxqB,EAAGE,OAAS,EAAG,SAC5BsqB,GAAaxqB,EAAGkrB,sBAAwB,EAAG,wBAC3CV,GAAaxqB,EAAGmrB,cAAgB,EAAG,gBACnCX,GAAaxqB,EAAG4qB,UAAY,EAAG,YACpB,MAAT5qB,EAAGjpB,GAAc8nB,GAAWmB,EAAGjpB,IAAM,KACvCyzC,GAAaxqB,EAAGt2B,OAAS,EAAG,SAC3Bs2B,EAAGxf,MAAQ,KACXiqC,GAAiBzqB,EAAGorB,YAAc,KAOvC,OALI7R,IACAzP,EAAOx7B,KAAKk8C,GAAajR,EAAIP,QAAS,YACtClP,EAAOx7B,KAAKoN,GAAQ69B,EAAI5d,IACxBmO,EAAOx7B,KAAKoN,GAAQ69B,EAAIrsB,KAErB/L,GAAO,CAAC,OAAQke,GAAUyK,KA0BrC,SAASuhB,GAAkBrrB,EAAIuZ,GAC3B,MAAMzP,EAAS,CACX0gB,GAAaxqB,EAAGoJ,SAAW,EAAG,WAC9BohB,GAAaxqB,EAAGE,OAAS,EAAG,SAC5BsqB,GAAaxqB,EAAG2qB,UAAY,EAAG,YAC/BH,GAAaxqB,EAAG4qB,UAAY,EAAG,YACpB,MAAT5qB,EAAGjpB,GAAc8nB,GAAWmB,EAAGjpB,IAAM,KACvCyzC,GAAaxqB,EAAGt2B,OAAS,EAAG,SAC3Bs2B,EAAGxf,MAAQ,KACXiqC,GAAiBzqB,EAAGorB,YAAc,KAOvC,OALI7R,IACAzP,EAAOx7B,KAAKk8C,GAAajR,EAAIP,QAAS,kBACtClP,EAAOx7B,KAAKoN,GAAQ69B,EAAI5d,IACxBmO,EAAOx7B,KAAKoN,GAAQ69B,EAAIrsB,KAErB/L,GAAO,CAAC,OAAQke,GAAUyK,KAE9B,MAAMwhB,GACT/+C,cACI09C,GAAmB99C,IAAIR,UAAM,GAC7BD,GAAuBC,KAAMs+C,GAAoB,CAC7C1/C,KAAM,KACNwM,GAAI,KACJmpB,MAAO,EACP0qB,SAAUx5C,OAAO,GACjBu5C,SAAU,KACVO,qBAAsB,KACtBC,aAAc,KACd3qC,KAAM,KACN9W,MAAO0H,OAAO,GACdg4B,QAASh4B,OAAO,GAChBmoC,IAAK,KACL6R,WAAY,MACb,KAGH7gD,WAAS,OAAOqC,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,QAChFsB,eACA,OAAQ5/C,KAAKpB,MACT,KAAK,EAAG,MAAO,SACf,KAAK,EAAG,MAAO,WACf,KAAK,EAAG,MAAO,WAEnB,OAAO,KAEPA,SAAKb,GACL,OAAQA,GACJ,KAAK,KACDoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,OAAQ,MACxE,MACJ,KAAK,EACL,IAAK,SACDn9C,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,OAAQ,GACxE,MACJ,KAAK,EACL,IAAK,SACL,IAAK,WACDn9C,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,OAAQ,GACxE,MACJ,KAAK,EACL,IAAK,SACL,IAAK,WACDn9C,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,OAAQ,GACxE,MACJ,QACI,MAAM,IAAIn/C,MAAM,iCAGxBiM,SAAO,OAAOnK,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,MAC9ElzC,OAAGrN,GACHoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,KAAgB,MAATvgD,EAAiB,KAAOm1B,GAAWn1B,IAE1Gw2B,YAAU,OAAOtzB,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,SACjF/pB,UAAMx2B,GAASoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,QAASr3C,GAAOzB,UAAUzH,EAAO,UAChHkhD,eAAa,OAAOh+C,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,YACpFW,aAASlhD,GAASoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,WAAYr3C,GAAOtB,UAAU5H,IAC/GihD,eACA,MAAMjhD,EAAQkD,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,YAC9E,OAAa,MAATvgD,GAAgC,IAAdiC,KAAKpB,MAA4B,IAAdoB,KAAKpB,KAGvCb,EAFIyR,GAIXwvC,aAASjhD,GACToD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,WAAsB,MAATvgD,EAAiB,KAAOkJ,GAAOtB,UAAU5H,EAAO,aAE7HwhD,2BACA,MAAMxhD,EAAQkD,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,wBAC9E,OAAa,MAATvgD,GAA+B,IAAdiC,KAAKpB,KACf4Q,GAEJzR,EAEPwhD,yBAAqBxhD,GACrBoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,uBAAkC,MAATvgD,EAAiB,KAAOkJ,GAAOtB,UAAU5H,EAAO,yBAEzIyhD,mBACA,MAAMzhD,EAAQkD,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,gBAC9E,OAAa,MAATvgD,GAA+B,IAAdiC,KAAKpB,KACf4Q,GAEJzR,EAEPyhD,iBAAazhD,GACboD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,eAA0B,MAATvgD,EAAiB,KAAOkJ,GAAOtB,UAAU5H,EAAO,iBAEjI8W,WAAS,OAAO5T,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,QAChFzpC,SAAK9W,GAASoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,OAAQjpC,GAAQtX,IAC9FA,YAAU,OAAOkD,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,SACjFvgD,UAAMA,GACNoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,QAASr3C,GAAOtB,UAAU5H,EAAO,UAEjG0/B,cAAY,OAAOx8B,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,WACnF7gB,YAAQ1/B,GAASoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,UAAWr3C,GAAOtB,UAAU5H,IAC7G6iC,gBAAc,OAAO3/B,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,QAAU,KAC/F1d,cAAU7iC,GACVoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,MAAiB,MAATvgD,EAAiB,KAAOkvC,GAAU9hC,KAAKpN,IAE/G0hD,iBACA,MAAM1hD,EAAQkD,EAASR,GAAuBT,KAAMs+C,GAAoB,KAAM,eAAiB,KAC/F,OAAa,MAATvgD,GAAgC,IAAdiC,KAAKpB,MAA4B,IAAdoB,KAAKpB,KAGvCb,EAFI,GAIX0hD,eAAW1hD,GACXoD,EAASV,GAAuBT,KAAMs+C,GAAoB,KAAM,aAAwB,MAATvgD,EAAiB,KAAOkgD,GAAclgD,IAErHsd,WACA,GAAsB,MAAlBrb,KAAK4gC,UACL,MAAM,IAAIzhC,MAAM,mEAEpB,OAAOgrB,GAAUnqB,KAAKwtC,YAEtBqS,mBACA,OAAO11B,GAAUnqB,KAAK8/C,oBAEtB30C,WACA,OAAsB,MAAlBnL,KAAK4gC,UACE,KAEJwd,GAAep+C,KAAK8/C,mBAAoB9/C,KAAK4gC,WAEpDmf,oBACA,OAAsB,MAAlB//C,KAAK4gC,UACE,KAGJ,GAEXof,WACI,OAAyB,MAAlBhgD,KAAK4gC,UAEZ4M,iBACA,GAAsB,MAAlBxtC,KAAK4gC,UACL,MAAM,IAAIzhC,MAAM,8EAEpB,MAAMN,EAAQmB,KAAKigD,aACnB,GAAqB,IAAjBphD,EAAMK,OACN,MAAM,IAAIC,MAAM,4DAEpB,OAAQN,EAAM,IACV,KAAK,EACD,OAAOkgD,GAAiB/+C,KAAMA,KAAK4gC,WACvC,KAAK,EACD,OAAO8e,GAAkB1/C,KAAMA,KAAK4gC,WACxC,KAAK,EACD,OAAO0e,GAAkBt/C,KAAMA,KAAK4gC,WAE5C,MAAM,IAAIzhC,MAAM,oBAEhB2gD,yBACA,MAAMjhD,EAAQmB,KAAKigD,aACnB,GAAqB,IAAjBphD,EAAMK,OACN,MAAM,IAAIC,MAAM,4DAEpB,OAAQN,EAAM,IACV,KAAK,EACD,OAAOkgD,GAAiB/+C,MAC5B,KAAK,EACD,OAAO0/C,GAAkB1/C,MAC7B,KAAK,EACD,OAAOs/C,GAAkBt/C,MAEjC,MAAM,IAAIb,MAAM,oBAGpB8gD,aAEI,MAAMC,EAA+B,MAAjBlgD,KAAKg/C,SACnBmB,EAA+B,MAArBngD,KAAKw/C,cAAqD,MAA7Bx/C,KAAKu/C,qBAC5Ca,EAAoC,MAAnBpgD,KAAKy/C,WAI5B,GAAyB,MAArBz/C,KAAKw/C,cAAqD,MAA7Bx/C,KAAKu/C,sBAC9Bv/C,KAAKw/C,aAAex/C,KAAKu/C,qBACzB,MAAM,IAAIpgD,MAAM,0CAMxB,IAAmB,IAAda,KAAKpB,MAA4B,IAAdoB,KAAKpB,OAAeuhD,EACxC,MAAM,IAAIhhD,MAAM,qEAEpB,GAAkB,IAAda,KAAKpB,MAAcwhD,EACnB,MAAM,IAAIjhD,MAAM,6CAEpB,MAAMN,EAAQ,GA0Bd,OAxBiB,MAAbmB,KAAKpB,KACLC,EAAM8D,KAAK3C,KAAKpB,MAGZuhD,EACAthD,EAAM8D,KAAK,GAENu9C,GACLrhD,EAAM8D,KAAK,GACNy9C,GACDvhD,EAAM8D,KAAK,IAGVy9C,GACLvhD,EAAM8D,KAAK,GACX9D,EAAM8D,KAAK,KAGX9D,EAAM8D,KAAK,GACX9D,EAAM8D,KAAK,GACX9D,EAAM8D,KAAK,IAGnB9D,EAAMmgC,OACCngC,EAEXwhD,WAAa,OAAsB,IAAdrgD,KAAKpB,KAC1B0hD,WAAa,OAAsB,IAAdtgD,KAAKpB,KAC1B2hD,WAAa,OAAsB,IAAdvgD,KAAKpB,KAC1BkK,QACI,OAAO62C,GAAYx0C,KAAKnL,MAE5B6H,SAWI,OAVIpH,GAAuBT,KAAMs+C,GAAoB,KAAK1Q,MACtDntC,GAAuBT,KAAMs+C,GAAoB,KAAK1Q,IAAOntC,GAAuBT,KAAMs+C,GAAoB,KAAK1Q,IAAI9kC,QAAQjB,UAE/HpH,GAAuBT,KAAMs+C,GAAoB,KAAKmB,aACtDh/C,GAAuBT,KAAMs+C,GAAoB,KAAKmB,WAAaxhD,OAAO4J,OAAOpH,GAAuBT,KAAMs+C,GAAoB,KAAKmB,WAAWrhD,KAAKoC,IACnJvC,OAAO4J,OAAOrH,EAAIu9C,aACX9/C,OAAO4J,OAAOrH,QAG7BvC,OAAO4J,OAAOpH,GAAuBT,KAAMs+C,GAAoB,MACxDt+C,KAEXoB,WACI,OAAOnD,OAAOmD,SAASX,GAAuBT,KAAMs+C,GAAoB,MAE5Er4C,YAAYouB,GACR,GAAoB,iBAAR,EAAkB,CAC1B,MAAMb,EAAU5e,GAASyf,GACzB,GAAIb,EAAQ,IAAM,IACd,OAAOmsB,GAAYx0C,KA9bnC,SAAsB0J,GAClB,MAAMspB,EAAShK,GAAUtf,GACzB,IAAK9H,MAAMN,QAAQ0xB,IAA8B,IAAlBA,EAAOj/B,QAAkC,IAAlBi/B,EAAOj/B,OACzD,OAAO+H,GAAOlD,mBAAmB,6CAA8C,OAAQ8Q,GAE3F,MAAMwf,EAAK,CACPz1B,KAAM,EACN21B,MAAOoqB,GAAaxgB,EAAO,GAAI,SAC/B6gB,SAAUJ,GAAWzgB,EAAO,GAAI,YAChC8gB,SAAUL,GAAWzgB,EAAO,GAAI,YAChC/yB,GAAIozC,GAAcrgB,EAAO,IACzBpgC,MAAO6gD,GAAWzgB,EAAO,GAAI,SAC7BtpB,KAAM4pC,GAAWtgB,EAAO,GAAI,OAC5BV,QAASjuB,IAGb,GAAsB,IAAlB2uB,EAAOj/B,OACP,OAAOm1B,EAEX,MAAM51B,EAAImgD,GAAWzgB,EAAO,GAAI,KAC1BnO,EAAI4uB,GAAWzgB,EAAO,GAAI,KAC1B5c,EAAIq9B,GAAWzgB,EAAO,GAAI,KAChC,GAAInO,IAAMxgB,IAAQ+R,IAAM/R,GAEpB6kB,EAAGoJ,QAAUh/B,MAEZ,CAED,IAAIg/B,GAAWh/B,EAAIsuC,IAASH,GACxBnP,EAAUjuB,KACViuB,EAAUjuB,IAEd6kB,EAAGoJ,QAAUA,EAETA,IAAYjuB,KAAS/Q,EAAIouC,IAASpuC,EAAIquC,KACtC7lC,GAAOlD,mBAAmB,yBAA0B,IAAKo6B,EAAO,IAEpE9J,EAAGuM,UAAYqM,GAAU9hC,KAAK,CAC1B6kB,EAAG5Z,GAAa+nB,EAAO,GAAI,IAC3B5c,EAAGnL,GAAa+nB,EAAO,GAAI,IAC3B1/B,EAAAA,IAEJ41B,EAAGhZ,KAAO8O,GAAUtV,GAExB,OAAOwf,EAkZ6BmsB,CAAahtB,IAEzC,OAAQA,EAAQ,IACZ,KAAK,EAAG,OAAOmsB,GAAYx0C,KAnS3C,SAAuB0J,GACnB,MAAMspB,EAAShK,GAAUltB,GAAO3B,SAASuP,GAAMhM,MAAM,MAChDkE,MAAMN,QAAQ0xB,IAA8B,IAAlBA,EAAOj/B,QAAkC,KAAlBi/B,EAAOj/B,SACzD+H,GAAOlD,mBAAmB,8CAA+C,OAAQsR,GAAQR,IAE7F,MAAMwf,EAAK,CACPz1B,KAAM,EACN6+B,QAASmhB,GAAWzgB,EAAO,GAAI,WAC/B5J,MAAOoqB,GAAaxgB,EAAO,GAAI,SAC/B6gB,SAAUJ,GAAWzgB,EAAO,GAAI,YAChC8gB,SAAUL,GAAWzgB,EAAO,GAAI,YAChC/yB,GAAIozC,GAAcrgB,EAAO,IACzBpgC,MAAO6gD,GAAWzgB,EAAO,GAAI,SAC7BtpB,KAAM4pC,GAAWtgB,EAAO,GAAI,QAC5BshB,WAAYf,GAAiBvgB,EAAO,GAAI,eAG5C,OAAsB,IAAlBA,EAAOj/B,SAGXm1B,EAAGhZ,KAAO8O,GAAUtV,GACpBuqC,GAAmB/qB,EAAI8J,EAAOt1B,MAAM,KAHzBwrB,EAiRiCosB,CAAcjtB,IAC9C,KAAK,EAAG,OAAOmsB,GAAYx0C,KAnV3C,SAAuB0J,GACnB,MAAMspB,EAAShK,GAAUltB,GAAO3B,SAASuP,GAAMhM,MAAM,MAChDkE,MAAMN,QAAQ0xB,IAA8B,IAAlBA,EAAOj/B,QAAkC,KAAlBi/B,EAAOj/B,SACzD+H,GAAOlD,mBAAmB,8CAA+C,OAAQsR,GAAQR,IAE7F,MAAM0qC,EAAuBX,GAAWzgB,EAAO,GAAI,wBAC7CqhB,EAAeZ,GAAWzgB,EAAO,GAAI,gBACrC9J,EAAK,CACPz1B,KAAM,EACN6+B,QAASmhB,GAAWzgB,EAAO,GAAI,WAC/B5J,MAAOoqB,GAAaxgB,EAAO,GAAI,SAC/BohB,qBAAsBA,EACtBC,aAAcA,EACdR,SAAU,KACVC,SAAUL,GAAWzgB,EAAO,GAAI,YAChC/yB,GAAIozC,GAAcrgB,EAAO,IACzBpgC,MAAO6gD,GAAWzgB,EAAO,GAAI,SAC7BtpB,KAAM4pC,GAAWtgB,EAAO,GAAI,QAC5BshB,WAAYf,GAAiBvgB,EAAO,GAAI,eAG5C,OAAsB,IAAlBA,EAAOj/B,SAGXm1B,EAAGhZ,KAAO8O,GAAUtV,GACpBuqC,GAAmB/qB,EAAI8J,EAAOt1B,MAAM,KAHzBwrB,EA6TiCqsB,CAAcltB,IAElD,MAAM,IAAIr0B,MAAM,gCAEpB,MAAMuH,EAAS,IAAIi5C,GAqCnB,GApCe,MAAXtrB,EAAGz1B,OACH8H,EAAO9H,KAAOy1B,EAAGz1B,MAER,MAATy1B,EAAGjpB,KACH1E,EAAO0E,GAAKipB,EAAGjpB,IAEH,MAAZipB,EAAGE,QACH7tB,EAAO6tB,MAAQF,EAAGE,OAEH,MAAfF,EAAG4qB,WACHv4C,EAAOu4C,SAAW5qB,EAAG4qB,UAEN,MAAf5qB,EAAG2qB,WACHt4C,EAAOs4C,SAAW3qB,EAAG2qB,UAEM,MAA3B3qB,EAAGkrB,uBACH74C,EAAO64C,qBAAuBlrB,EAAGkrB,sBAEd,MAAnBlrB,EAAGmrB,eACH94C,EAAO84C,aAAenrB,EAAGmrB,cAEd,MAAXnrB,EAAGxf,OACHnO,EAAOmO,KAAOwf,EAAGxf,MAEL,MAAZwf,EAAGt2B,QACH2I,EAAO3I,MAAQs2B,EAAGt2B,OAEJ,MAAds2B,EAAGoJ,UACH/2B,EAAO+2B,QAAUpJ,EAAGoJ,SAEJ,MAAhBpJ,EAAGuM,YACHl6B,EAAOk6B,UAAYqM,GAAU9hC,KAAKkpB,EAAGuM,YAEpB,MAAjBvM,EAAGorB,aACH/4C,EAAO+4C,WAAaprB,EAAGorB,YAEZ,MAAXprB,EAAGhZ,KAAc,CACjB,IAAI3U,EAAOs5C,WAMP,MAAM,IAAI7gD,MAAM,4CALhB,GAAIuH,EAAO2U,OAASgZ,EAAGhZ,KACnB,MAAM,IAAIlc,MAAM,iBAO5B,GAAe,MAAXk1B,EAAGlpB,KAAc,CACjB,IAAIzE,EAAOs5C,WAMP,MAAM,IAAI7gD,MAAM,2CALhB,GAAIuH,EAAOyE,KAAK/E,iBAAmBiuB,EAAGlpB,MAAQ,IAAI/E,cAC9C,MAAM,IAAIjH,MAAM,iBAO5B,OAAOuH,GAGf43C,GAAqB,IAAI78C,QC/kBzB,IAWIk/C,GAAqBC,GAXrB7gD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IASxF,SAASyX,GAAS3Z,GACd,OAAa,MAATA,EACO,KAEJA,EAEX,SAAS8iD,GAAO9iD,GACZ,OAAa,MAATA,EACO,KAEJA,EAAM+L,WAGV,MAAMg3C,GACTlgD,YAAYo+C,EAAUQ,EAAcD,GAChCngD,EAAiBY,KAAM,CACnBg/C,SAAUtnC,GAASsnC,GACnBQ,aAAc9nC,GAAS8nC,GACvBD,qBAAsB7nC,GAAS6nC,KAGvC9R,SACI,MAAMuR,SAAEA,EAAQQ,aAAEA,EAAYD,qBAAEA,GAAyBv/C,KACzD,MAAO,CACH0tC,MAAO,UACPsR,SAAU6B,GAAO7B,GACjBQ,aAAcqB,GAAOrB,GACrBD,qBAAsBsB,GAAOtB,KA8ClC,MAAMwB,GACTngD,YAAYmyB,EAAOuX,GACfqW,GAAoBngD,IAAIR,UAAM,GACd,MAAZsqC,IACAA,EAAW0W,IAEfjhD,GAAuBC,KAAM2gD,GAAqB1iD,OAAO4J,OAAOkrB,EAAMkuB,aAAa7iD,KAAKi2B,IACpF,GAAoB,iBAAhB,GAA4BA,EAAGiW,WAAaA,EAC5C,MAAM,IAAInrC,MAAM,qBAEpB,OAAOk1B,MACN,KAELj1B,EAAiBY,KAAM,CACnBsqC,SAAAA,EACAjvB,KAAM3D,GAASqb,EAAM1X,MACrB29B,OAAQjmB,EAAMimB,OACdkI,UAAWnuB,EAAMmuB,UACjBC,WAAYpuB,EAAMouB,WAClB5sB,MAAOxB,EAAMwB,MACb6sB,WAAYruB,EAAMquB,WAClBnC,SAAUlsB,EAAMksB,SAChBoC,QAAStuB,EAAMsuB,QACfC,MAAOvuB,EAAMuuB,MACbC,UAAWxuB,EAAMwuB,UACjBC,cAAe9pC,GAASqb,EAAMyuB,iBAGlCP,mBAAiB,OAAOxgD,GAAuBT,KAAM2gD,GAAqB,KAI9ElT,SACI,MAAM+T,cAAEA,EAAaJ,WAAEA,EAAUG,UAAEA,EAAStC,SAAEA,EAAQoC,QAAEA,EAAOhmC,KAAEA,EAAIimC,MAAEA,EAAK/sB,MAAEA,EAAKykB,OAAEA,EAAMmI,WAAEA,EAAUD,UAAEA,EAASD,aAAEA,GAAiBjhD,KACrI,MAAO,CACH0tC,MAAO,QACP8T,cAAeX,GAAOW,GACtBJ,WAAYP,GAAOO,GACnBG,UAAAA,EACAtC,SAAU4B,GAAO5B,GACjBoC,QAASR,GAAOQ,GAChBhmC,KAAAA,EAAMimC,MAAAA,EAAO/sB,MAAAA,EAAOykB,OAAAA,EAAQmI,WAAAA,EAAYD,UAAAA,EACxCD,aAAAA,GAGR,EAAEN,GAAsB,IAAIl/C,QAAWkK,OAAO25B,aAC1C,IAAI5mC,EAAQ,EACZ,MAAO,CACH6mC,KAAM,IACE7mC,EAAQsB,KAAKd,OACN,CACHnB,MAAOiC,KAAKihD,aAAaviD,KAAU8mC,MAAM,GAG1C,CAAEznC,WAAO2B,EAAW8lC,MAAM,IAIzCtmC,aAAW,OAAOc,KAAKihD,aAAa/hD,OACpCuiD,WACA,OAAsB,MAAlBzhD,KAAKkhD,UACE,KAEJ,IAAIzmC,KAAsB,IAAjBza,KAAKkhD,WAEzBrjD,qBAAqBa,GACjB,MAAM21B,EAAKr0B,KAAKihD,aAAaviD,GAC7B,GAAU,MAAN21B,EACA,MAAM,IAAIl1B,MAAM,cAEpB,MAAoB,iBAAR,QACMa,KAAKsqC,SAASoX,eAAertB,GAGpCA,EAGfstB,UAAY,QAAS3hD,KAAKqb,KAC1BklC,WAAa,QAASvgD,KAAKwhD,cAC3BI,gBACI,IAAK5hD,KAAK2hD,UACN,MAAM,IAAIxiD,MAAM,IAEpB,MA+OG,CAAE0iD,OAAQ,aAAcxmC,MADA0X,EA9OM/yB,MA+OMqb,KAAM29B,OAAQjmB,EAAMimB,QADnE,IAAmCjmB,GA3O5B,MAAM+uB,GACTlhD,YAAYmG,EAAKujC,GACG,MAAZA,IACAA,EAAW0W,IAEfhhD,KAAKsqC,SAAWA,EAChB,MAAMnH,EAASllC,OAAO4J,OAAOd,EAAIo8B,OAAOt6B,SACxCzJ,EAAiBY,KAAM,CACnB+hD,gBAAiBh7C,EAAIg7C,gBACrBC,UAAWj7C,EAAIi7C,UACfC,YAAal7C,EAAIk7C,YACjBC,QAASn7C,EAAIm7C,QACb3vB,QAASxrB,EAAIwrB,QACb1d,KAAM9N,EAAI8N,KACVsuB,OAAAA,EACAzkC,MAAOqI,EAAIrI,MACXyjD,iBAAkBp7C,EAAIo7C,mBAM9B1U,SACI,MAAMlb,QAAEA,EAAOyvB,UAAEA,EAASC,YAAEA,EAAWptC,KAAEA,EAAInW,MAAEA,EAAKwjD,QAAEA,EAAO/e,OAAEA,EAAM4e,gBAAEA,EAAeI,iBAAEA,GAAqBniD,KAC7G,MAAO,CACH0tC,MAAO,MACPnb,QAAAA,EAASyvB,UAAAA,EAAWC,YAAAA,EAAaptC,KAAAA,EAAMnW,MAAAA,EACvCwjD,QAAAA,EAAS/e,OAAAA,EAAQ4e,gBAAAA,EAAiBI,iBAAAA,GAG1CtkD,iBACI,aAAcmC,KAAKsqC,SAAS8X,SAASpiD,KAAKgiD,WAE9CnkD,uBACI,aAAcmC,KAAKsqC,SAASoX,eAAe1hD,KAAK+hD,iBAEpDlkD,8BACI,aAAcmC,KAAKsqC,SAAS+X,sBAAsBriD,KAAK+hD,iBAE3DO,eACI,MA6MG,CAAET,OAAQ,WAAY96C,IAAK,CAC1Bg7C,iBAFoBh7C,EA5MM/G,MA8ML+hD,gBACrBC,UAAWj7C,EAAIi7C,UACfC,YAAal7C,EAAIk7C,YACjB1vB,QAASxrB,EAAIwrB,QACb1d,KAAM9N,EAAI8N,KACVsuB,OAAQllC,OAAO4J,OAAOd,EAAIo8B,OAAOt6B,SACjCnK,MAAOqI,EAAIrI,QARvB,IAAgCqI,GAzMzB,MAAMw7C,GACT3hD,YAAYyzB,EAAIiW,GACZsW,GAAyBpgD,IAAIR,UAAM,GACnB,MAAZsqC,IACAA,EAAW0W,IAEfjhD,GAAuBC,KAAM4gD,GAA0B3iD,OAAO4J,OAAOwsB,EAAGmuB,KAAKpkD,KAAK2I,IAC9E,GAAIujC,IAAavjC,EAAIujC,SAEjB,MAAM,IAAInrC,MAAM,qBAEpB,OAAO4H,MACN,KACL3H,EAAiBY,KAAM,CACnBsqC,SAAAA,EACAl/B,GAAIipB,EAAGjpB,GACPD,KAAMkpB,EAAGlpB,KACTs3C,gBAAiBpuB,EAAGouB,gBACpBpnC,KAAMgZ,EAAGhZ,KACT3c,MAAO21B,EAAG31B,MACVsjD,UAAW3tB,EAAG2tB,UACdC,YAAa5tB,EAAG4tB,YAChBS,UAAWruB,EAAGquB,UACdrB,QAAShtB,EAAGgtB,QACZsB,kBAAmBtuB,EAAGsuB,kBACtB3D,SAAW3qB,EAAGuuB,mBAAqBvuB,EAAG2qB,SACtC6D,UAAWxuB,EAAGwuB,UACdhc,OAAQxS,EAAGwS,OACXic,KAAMzuB,EAAGyuB,OAGbN,WAAS,OAAO/hD,GAAuBT,KAAM4gD,GAA0B,KAI3EnT,SACI,MAAMriC,GAAEA,EAAED,KAAEA,EAAIs3C,gBAAEA,EAAepnC,KAAEA,EAAI3c,MAAEA,EAAKsjD,UAAEA,EAASC,YAAEA,EAAWS,UAAEA,EAASF,KAAEA,EAAIK,UAAEA,EAAShc,OAAEA,EAAMic,KAAEA,GAAS9iD,KACrH,MAAO,CACH0tC,MAAO,qBACPsU,UAAAA,EAAWC,YAAAA,EAAaY,UAAAA,EAAWJ,gBAAAA,EACnCE,kBAAmB9B,GAAO7gD,KAAK2iD,mBAC/Bx3C,KAAAA,EACA6zC,SAAU6B,GAAO7gD,KAAKg/C,UACtBqC,QAASR,GAAO7gD,KAAKqhD,SACrBhmC,KAAAA,EAAM3c,MAAAA,EAAO8jD,KAAAA,EAAME,UAAAA,EAAWI,KAAAA,EAAMjc,OAAAA,EAAQz7B,GAAAA,GAGhDlM,aAAW,OAAOc,KAAKwiD,KAAKtjD,OAChC,EAAE0hD,GAA2B,IAAIn/C,QAAWkK,OAAO25B,aAC/C,IAAI5mC,EAAQ,EACZ,MAAO,CACH6mC,KAAM,IACE7mC,EAAQsB,KAAKd,OACN,CAAEnB,MAAOiC,KAAKwiD,KAAK9jD,KAAU8mC,MAAM,GAEvC,CAAEznC,WAAO2B,EAAW8lC,MAAM,IAIzCud,UACA,OAAO/iD,KAAKqhD,QAAUrhD,KAAKg/C,SAE/BnhD,iBACI,MAAMk1B,QAAc/yB,KAAKsqC,SAAS8X,SAASpiD,KAAKgiD,WAChD,GAAa,MAATjvB,EACA,MAAM,IAAI5zB,MAAM,QAEpB,OAAO4zB,EAEXl1B,uBACI,MAAMw2B,QAAWr0B,KAAKsqC,SAASoX,eAAe1hD,KAAKqb,MACnD,GAAU,MAANgZ,EACA,MAAM,IAAIl1B,MAAM,QAEpB,OAAOk1B,EAEXx2B,sBACI,aAAcmC,KAAKsqC,SAAS0Y,iBAAoBhjD,KAAKiiD,YAAc,EAEvEK,eACI,OAAOW,GAA+BjjD,MAE1CkjD,eAAejxC,GACX,OAAIA,IAAUA,EAAM0vC,UACT16C,GAAOnD,WAAW,gDAAiD,wBAAyB,CAC/FY,UAAW,0BAGZy+C,GAAiCnjD,KAAMiS,IAI/C,MAAMmxC,GACTxiD,YAAYyzB,EAAIiW,GACI,MAAZA,IACAA,EAAW0W,IAEfhhD,KAAKsqC,SAAWA,EAChBtqC,KAAKiiD,YAAiC,MAAlB5tB,EAAG4tB,YAAuB5tB,EAAG4tB,YAAc,KAC/DjiD,KAAKgiD,UAA6B,MAAhB3tB,EAAG2tB,UAAqB3tB,EAAG2tB,UAAY,KACzDhiD,KAAKqb,KAAOgZ,EAAGhZ,KACfrb,KAAKtB,MAAQ21B,EAAG31B,MAChBsB,KAAKpB,KAAOy1B,EAAGz1B,KACfoB,KAAKmL,KAAOkpB,EAAGlpB,KACfnL,KAAKoL,GAAKipB,EAAGjpB,IAAM,KACnBpL,KAAKi/C,SAAW5qB,EAAG4qB,SACnBj/C,KAAKu0B,MAAQF,EAAGE,MAChBv0B,KAAK6U,KAAOwf,EAAGxf,KACf7U,KAAKjC,MAAQs2B,EAAGt2B,MAChBiC,KAAKg/C,SAAW3qB,EAAG2qB,SACnBh/C,KAAKu/C,qBAAmD,MAA3BlrB,EAAGkrB,qBAAgClrB,EAAGkrB,qBAAuB,KAC1Fv/C,KAAKw/C,aAAmC,MAAnBnrB,EAAGmrB,aAAwBnrB,EAAGmrB,aAAe,KAClEx/C,KAAKy9B,QAAUpJ,EAAGoJ,QAClBz9B,KAAK4gC,UAAYvM,EAAGuM,UACpB5gC,KAAKy/C,WAA+B,MAAjBprB,EAAGorB,WAAsBprB,EAAGorB,WAAa,KAKhEhS,SACI,MAAMwU,YAAEA,EAAWD,UAAEA,EAAStjD,MAAEA,EAAK2c,KAAEA,EAAIzc,KAAEA,EAAIwM,GAAEA,EAAED,KAAEA,EAAIopB,MAAEA,EAAK1f,KAAEA,EAAI+rB,UAAEA,EAAS6e,WAAEA,GAAez/C,KACpG,MAAO,CACH0tC,MAAO,qBACP+R,WAAAA,EAAYwC,YAAAA,EAAaD,UAAAA,EACzBvkB,QAASojB,GAAO7gD,KAAKy9B,SACrB5oB,KAAAA,EAAM1J,KAAAA,EACN8zC,SAAU4B,GAAO7gD,KAAKi/C,UACtBD,SAAU6B,GAAO7gD,KAAKg/C,UACtB3jC,KAAAA,EACAmkC,aAAcqB,GAAO7gD,KAAKw/C,cAC1BD,qBAAsBsB,GAAO7gD,KAAKu/C,sBAClChrB,MAAAA,EAAOqM,UAAAA,EAAWx1B,GAAAA,EAAI1M,MAAAA,EAAOE,KAAAA,EAC7Bb,MAAO8iD,GAAO7gD,KAAKjC,QAG3BF,iBACI,IAAIokD,EAAcjiD,KAAKiiD,YACvB,GAAmB,MAAfA,EAAqB,CACrB,MAAM5tB,QAAWr0B,KAAK0hD,iBAClBrtB,IACA4tB,EAAc5tB,EAAG4tB,aAGzB,GAAmB,MAAfA,EACA,OAAO,KAEX,MAAMlvB,EAAQ/yB,KAAKsqC,SAAS8X,SAASH,GACrC,GAAa,MAATlvB,EACA,MAAM,IAAI5zB,MAAM,QAEpB,OAAO4zB,EAEXl1B,uBACI,OAAOmC,KAAKsqC,SAASoX,eAAe1hD,KAAKqb,MAE7Cxd,WAAWwlD,GACP,OAAOrjD,KAAKsqC,SAASgZ,mBAAmBtjD,KAAKqb,KAAMgoC,GAEvD1B,UACI,OAA0B,MAAlB3hD,KAAKgiD,UAEjB3B,WACI,OAAsB,IAAdrgD,KAAKpB,KAEjB0hD,WACI,OAAsB,IAAdtgD,KAAKpB,KAEjB2hD,WACI,OAAsB,IAAdvgD,KAAKpB,KAEjB0jD,eACI,OAAKtiD,KAAK2hD,UAKHsB,GAA+BjjD,MAJ3BiH,GAAOnD,WAAW,wCAAyC,wBAAyB,CACvFY,UAAW,kBAKvBw+C,eAAejxC,GACX,OAAKjS,KAAK2hD,UAKN1vC,IAAUA,EAAM0vC,UACT16C,GAAOnD,WAAW,gDAAiD,wBAAyB,CAC/FY,UAAW,kBAGZy+C,GAAiCnjD,KAAMiS,GATnChL,GAAOnD,WAAW,wCAAyC,wBAAyB,CACvFY,UAAW,mBAc3B,SAASy+C,GAAiC9uB,EAAIpiB,GAC1C,MAAO,CAAE4vC,OAAQ,sBAAuBxtB,GAAAA,EAAIpiB,MAAAA,GAEhD,SAASgxC,GAA+B5uB,GACpC,MAAO,CAAEwtB,OAAQ,mBAAoBxtB,GAAAA,GAazC,SAASkvB,KACL,MAAM,IAAIpkD,MAAM,oCAkEP,MAAA6hD,GAAgB,IAhE7B,MACQ1W,eAAa,OAAOtqC,KACxBnC,mBAAqB,OAAO0lD,KAC5B1lD,mBAAqB,OAAO0lD,KAC5B1lD,kBAAkBw2B,GAAM,OAAOkvB,KAC/B1lD,WAAWw2B,GAAM,OAAOkvB,KACxB1lD,kBAAkBiF,GAAQ,OAAOygD,KAEjC1lD,uBAAyB,OAAO0lD,KAEhC1lD,mBAAmB00B,EAASixB,GACxB,OAAOD,KAEX1lD,4BAA4B00B,EAASixB,GACjC,OAAOD,KAEX1lD,cAAc00B,EAASixB,GACnB,OAAOD,KAEX1lD,mBAAmB00B,EAASkxB,EAAUD,GAClC,OAAOD,KAGX1lD,2BAA2B6lD,GAAY,OAAOH,KAE9C1lD,eAAe8lD,GACX,OAAOJ,KAEX1lD,+BAA+B8lD,GAC3B,OAAOJ,KAEX1lD,qBAAqBwd,GACjB,OAAOkoC,KAEX1lD,4BAA4Bwd,GACxB,OAAOkoC,KAGX1lD,cAAckD,GACV,OAAOwiD,KAGX1lD,oBAAoB00B,GAChB,OAAOgxB,KAEX1lD,yBAAyBwd,EAAMgoC,EAAUld,GACrC,OAAOod,KAEX1lD,mBAAmB2lD,GACf,OAAOD,KAGX1lD,SAAS8Q,EAAO7N,GAAY,OAAOyiD,KACnC1lD,WAAW8Q,EAAO7N,GAAY,OAAOyiD,KACrC1lD,WAAW8Q,KAAU/I,GAAQ,OAAO29C,KACpC1lD,oBAAoB8Q,GAAS,OAAO40C,KACpC1lD,gBAAgB8Q,GAAS,OAAO40C,KAChC1lD,UAAU8Q,EAAO7N,GAAY,OAAOyiD,KACpC1lD,yBAAyB8Q,GAAS,OAAO40C,KACzC1lD,kBAAkB8Q,EAAO7N,GAAY,OAAOyiD,KAC5C1lD,qBAAqB8Q,EAAO7N,GAAY,OAAOyiD,OC7enD,IAWIK,GAAmBC,GAXnB9jD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAuBxF,MAAMw3B,GAAiBhyB,OAAO,sEAM9B,SAAS7B,GAAU7F,GACf,GAAuB,iBAAX,EACR,MAAM,IAAIoB,MAAM,kBAEpB,OAAOpB,EAEJ,MAAM+lD,GACTljD,cACIgjD,GAAkBpjD,IAAIR,UAAM,GAC5B6jD,GAAqBrjD,IAAIR,UAAM,GAC/B,MAAMuyB,EAAUvyB,KAAKuyB,QAAQtY,KAAKja,MAC5B+jD,EAAY/jD,KAAK+jD,UAAU9pC,KAAKja,MAChCwjD,EAAWxjD,KAAKwjD,SAASvpC,KAAKja,MAC9B6U,EAAO7U,KAAK6U,KAAKoF,KAAKja,MACtBqb,EAAOrb,KAAKqb,KAAKpB,KAAKja,MACtBg5C,EAASh5C,KAAKg5C,OAAO/+B,KAAKja,MAC1BgkD,EAAUhkD,KAAKgkD,QAAQ/pC,KAAKja,MAC5BmjC,EAASnjC,KAAKikD,QAAQ5oC,GAC5Btb,GAAuBC,KAAM4jD,GAAmB,CAC5CrxB,QAAAA,EACAwxB,UAAAA,EACAP,SAAAA,EACA3uC,KAAAA,EACAwG,KAAAA,EACA29B,OAAAA,EACAgL,QAAAA,EACA7gB,OAAAA,EACApiC,OAAQf,KAAK6C,OAAO,CAChBqhD,UAAWlkD,KAAKmkD,UAAUX,OAAU9jD,GACpC0kD,QAASpkD,KAAKmkD,UAAUX,OAAU9jD,GAClCsiD,UAAWhiD,KAAKmkD,UAAU9oC,OAAM3b,GAChC6yB,QAASvyB,KAAKmkD,UAAU5xB,OAAS7yB,GACjCyjC,OAAQnjC,KAAKmkD,UAAUhhB,OAAQzjC,KAEnC2kD,mBAAoBrkD,KAAK6C,OAAO,CAC5BsI,KAAMnL,KAAKmkD,UAAU5xB,GACrB3zB,KAAMoB,KAAKmkD,UAAUnL,GACrB5tC,GAAIpL,KAAKmkD,UAAU5xB,GACnBgC,MAAOv0B,KAAKmkD,UAAUnL,GACtBiG,SAAUj/C,KAAKmkD,UAAUH,GACzBhF,SAAUh/C,KAAKmkD,UAAUH,GACzBxE,aAAcx/C,KAAKmkD,UAAUH,GAC7BzE,qBAAsBv/C,KAAKmkD,UAAUH,GACrCnvC,KAAM7U,KAAKmkD,UAAUtvC,GACrB9W,MAAOiC,KAAKmkD,UAAUH,KAE1BM,oBAAqBtkD,KAAK6C,OAAO,CAC7BwY,KAAMA,EACN3c,MAAOs6C,EACPp6C,KAAMoB,KAAKmkD,UAAUnL,EAAQ,GAE7BgJ,UAAWhiD,KAAKmkD,UAAU9oC,GAC1B4mC,YAAajiD,KAAKmkD,UAAUnL,GAE5Bvb,QAASz9B,KAAKmkD,UAAUnL,GACxB7tC,KAAMonB,EACNnnB,GAAIpL,KAAKuyB,QACT0sB,SAAU8E,EACV/E,SAAUh/C,KAAKmkD,UAAUJ,GACzBvE,aAAcx/C,KAAKmkD,UAAUJ,GAC7BxE,qBAAsBv/C,KAAKmkD,UAAUJ,GACrChmD,MAAOgmD,EACPlvC,KAAMA,EACN0f,MAAOykB,EACPhpB,EAAG3U,EACHkG,EAAGlG,EACH5c,EAAGu6C,EACHyG,WAAYz/C,KAAKmkD,UAAUnkD,KAAKy/C,aACjC,CACC/gD,MAAO,CAAC,uBAEb,KACHqB,GAAuBC,KAAM6jD,GAAsB7jD,KAAK6C,OAAO,CAC3Dm2C,OAAQA,EACR39B,KAAMrb,KAAKmkD,UAAU9oC,EAAM,MAC3B6lC,UAAWlI,EACXmI,WAAY9lC,EACZkZ,MAAOv0B,KAAKmkD,UAAUvgD,GAAW,sBACjCw9C,WAAY2C,EACZ9E,SAAU8E,EACV1C,QAAS0C,EACTzC,MAAOthD,KAAKmkD,UAAU5xB,EAAS,8CAC/BgvB,UAAW39C,GACX49C,cAAexhD,KAAKmkD,UAAUJ,KAC9B,KAGRxxB,QAAQx0B,GACJ,OAAOm1B,GAAWn1B,GAGtBgtC,YAAYhtC,GAIR,OAH0B,KAAtB4X,GAAW5X,IAA6C,+BAA5B6X,GAAU7X,EAAO,EAAG,KAChDkJ,GAAOlD,mBAAmB,uBAAwB,QAAShG,GAExDiC,KAAKuyB,QAAQ3c,GAAU7X,EAAO,KAGzC0kD,gBAAgB1kD,GACZ,OAAOq2B,GAAiB,CACpBjpB,KAAMnL,KAAKuyB,QAAQx0B,EAAMoN,MACzBopB,MAAOttB,GAAOzB,UAAUzH,EAAMw2B,MAAO,iBAI7CivB,SAASzlD,GACL,GAAa,MAATA,EACA,MAAO,SAEX,OAAQA,GACJ,IAAK,WACD,MAAO,MACX,IAAK,SACL,IAAK,UACD,OAAOA,EAEf,MAAuB,iBAAX,GAAwByW,GAAYzW,IAAU4X,GAAW5X,GAAS,GACnEwX,GAASxX,GAEbkJ,GAAOlD,mBAAmB,mBAAoB,QAAShG,GAGlEg1B,MAAMh1B,EAAOusC,GACT,MAAM/7B,EAAS9N,GAAuBT,KAAM6jD,GAAsB,KAAKtjD,KAAKP,KAAMjC,GAElF,OADAwQ,EAAO0yC,aAAeljD,EAAMkjD,aAAa7iD,KAAKW,GAAMiB,KAAKqb,KAAKtc,KACvD,IAAIgiD,GAAMxyC,EAAQ+7B,GAE7Bia,sBAAsBxmD,EAAOusC,GACzB,MAAM,IAAInrC,MAGdklD,mBAAmBtmD,EAAOusC,GACtB,OAAO7pC,GAAuBT,KAAM4jD,GAAmB,KAAKS,mBAAmBtmD,GAEnFumD,oBAAoBvmD,EAAOusC,GAGL,OAFlBvsC,EAAQE,OAAOoN,OAAO,GAAItN,IAEhB8W,MAA+B,MAAf9W,EAAM0Q,QAC5B1Q,EAAM8W,KAAO9W,EAAM0Q,OAED,MAAlB1Q,EAAMkhD,UAAoBlhD,EAAM8Q,MAChC9Q,EAAMkhD,SAAWlhD,EAAM8Q,KAE3B9Q,EAAQ0C,GAAuBT,KAAM4jD,GAAmB,KAAKU,oBAAoBvmD,GACjF,MAAM6vC,EAAMX,GAAU9hC,KAAK,CAAE6kB,EAAGjyB,EAAMiyB,EAAGzO,EAAGxjB,EAAMwjB,EAAG9iB,EAAGV,EAAMU,IAK9D,OAJAV,EAAM6iC,UAAYgN,EACG,MAAjB7vC,EAAM0/B,UACN1/B,EAAM0/B,QAAUmQ,EAAIT,eAEjB,IAAIiW,GAAoBrlD,EAAOusC,GAG1CvjC,IAAIhJ,EAAOusC,GACP,MAAMvjC,EAAM/G,KAAK6C,OAAO,CACpB0vB,QAASvyB,KAAKuyB,QACdyvB,UAAWhiD,KAAKqb,KAChB4mC,YAAajiD,KAAKg5C,OAClBnkC,KAAM7U,KAAK6U,KACXnW,MAAOsB,KAAKg5C,OACZkJ,QAASliD,KAAKwkD,QACdrhB,OAAQnjC,KAAKmjC,OACb4e,gBAAiB/hD,KAAKqb,KACtB8mC,iBAAkBniD,KAAKg5C,QACxB,CACCt6C,MAAO,CAAC,aAXAsB,CAYTjC,GACH,OAAO,IAAI+jD,GAAI/6C,EAAKujC,GAExBma,QAAQ1mD,EAAOusC,GACX,MAAMma,EAAUzkD,KAAK6C,OAAO,CACxBm/C,UAAWhiD,KAAKqb,KAChB4mC,YAAajiD,KAAKg5C,OAClByJ,gBAAiBziD,KAAKmkD,UAAUnkD,KAAKuyB,SACrCowB,kBAAmB3iD,KAAK+jD,UACxB54C,KAAMnL,KAAKuyB,QACX8uB,QAASrhD,KAAK+jD,UACdvB,KAAMxiD,KAAKikD,SAASxlD,GAAOuB,KAAK+G,IAAItI,EAAG6rC,KACvCoY,UAAW1iD,KAAK6U,KAChBiuC,KAAM9iD,KAAKmkD,UAAUnkD,KAAK6U,MAC1BgyB,OAAQ7mC,KAAKmkD,UAAUnkD,KAAKg5C,QAC5B5tC,GAAIpL,KAAKuyB,QACTysB,SAAUh/C,KAAKmkD,UAAUnkD,KAAK+jD,WAC9B1oC,KAAMrb,KAAKqb,KACX3c,MAAOsB,KAAKg5C,OACZp6C,KAAMoB,KAAKmkD,UAAUnkD,KAAKg5C,OAAQ,IACnC,CACC39B,KAAM,CAAC,mBACP2jC,SAAU,CAAC,qBACXtgD,MAAO,CAAC,qBAnBIsB,CAoBbjC,GAEH,GAAoB,MAAhB0mD,EAAQ3B,KACR,GAAI2B,EAAQ3B,KAAK5jD,QAAU,EAAG,CAE1B,MAAMnB,EAAQ6I,SAAS69C,EAAQ3B,MAC/B,GAAc,IAAV/kD,GAAyB,IAAVA,EAWf,OAAOkJ,GAAOnD,WAAW,0BAA2B,WAAY,CAC5D/F,MAAO0mD,EAAQ3B,OAVnB,GAAsB,MAAlB2B,EAAQ5d,QAAkB4d,EAAQ5d,SAAW9oC,EAC7C,OAAOkJ,GAAOnD,WAAW,kCAAmC,WAAY,CACpE/F,MAAO,CAAE+kD,KAAM2B,EAAQ3B,KAAMjc,OAAQ4d,EAAQ5d,UAGrD4d,EAAQ5d,OAAS9oC,SACV0mD,EAAQ3B,UAQlB,IAAKtuC,GAAYiwC,EAAQ3B,KAAM,IAEhC,OAAO77C,GAAOnD,WAAW,4BAA6B,WAAY,CAC9D/F,MAAO0mD,EAAQ3B,OAK3B,OAAO,IAAIP,GAAmBkC,EAASna,GAG3CnH,OAAOplC,GACH,OAAO0C,GAAuBT,KAAM4jD,GAAmB,KAAKzgB,OAAOplC,GAEvEgD,OAAOhD,GACH,OAAO0C,GAAuBT,KAAM4jD,GAAmB,KAAK7iD,OAAOhD,GAEvE2mD,UAAU3mD,GAEN,OADA+I,QAAQC,IAAI,KAAMhJ,GACX,KAGX+kC,YAAY/kC,GACR,MAAM,IAAIoB,MAKdsgD,WAAW1hD,GACP,OAAOkgD,GAAclgD,GAGzB4mD,aAAax4C,EAAQy4C,GACjB,OAAS7mD,GACAA,EAGEoO,EAAO5L,KAAKP,KAAMjC,GAFd6mD,EAMnBT,UAAUh4C,EAAQ04C,GACd,OAAS9mD,GACQ,MAATA,EACO8mD,EAEJ14C,EAAO5L,KAAKP,KAAMjC,GAIjCkmD,QAAQ93C,GACJ,OAASwsC,IACL,IAAK5rC,MAAMN,QAAQksC,GACf,MAAM,IAAIx5C,MAAM,gBAEpB,OAAOw5C,EAAMv6C,KAAKa,GAAMkN,EAAO5L,KAAKP,KAAMf,MAIlD8kD,UAAUhmD,GACN,OAAOkJ,GAAOtB,UAAU5H,EAAO,SAEnCimD,QAAQjmD,GACJ,MAAM2I,EAAS1G,KAAK+jD,UAAUhmD,GAI9B,OAHI2I,EAAS,GAAKA,EAAS+wB,KACvBxwB,GAAOlD,mBAAmB,kBAAmB,QAAShG,GAEnD2I,EAGX89C,QAAQzmD,GACJ,OAAQA,GACJ,KAAK,EACL,IAAK,OACD,OAAO,EACX,KAAK,EACL,IAAK,QACD,OAAO,EAEf,OAAOkJ,GAAOlD,mBAAmB,oBAAoBJ,KAAKC,UAAU7F,KAAU,QAASA,GAK3F+mD,WAAWC,GAIP,OAHoB,MAAhBA,IACAA,GAAe,GAEnB,SAAkBhnD,GACd,GAAIyW,GAAYzW,EAAOgnD,GACnB,OAAOhnD,EAAMqI,cAEjB,MAAM,IAAIjH,MAAM,kBAGxB0V,KAAK9W,GAID,OAHyB,MAArB4X,GAAW5X,IACXkJ,GAAOlD,mBAAmB,GAAI,QAAShG,GAEpCA,EAGXsd,KAAKtd,GAID,OAH0B,KAAtB4X,GAAW5X,IACXkJ,GAAOlD,mBAAmB,GAAI,QAAShG,GAEpC0C,GAAuBT,KAAM4jD,GAAmB,KAAK/uC,KAAK9W,GAGrEi7C,OAAOj7C,GACH,OAAOkJ,GAAOzB,UAAUzH,GAK5B8E,OAAOsJ,EAAQ64C,GACX,OAASjnD,IACL,MAAM2I,EAAS,GACf,IAAK,MAAMlH,KAAO2M,EAAQ,CACtB,IAAI84C,EAASzlD,EACb,GAAIwlD,GAAYxlD,KAAOwlD,KAAcC,KAAUlnD,GAC3C,IAAK,MAAMmnD,KAAUF,EAASxlD,GAC1B,GAAI0lD,KAAUnnD,EAAO,CACjBknD,EAASC,EACT,MAIZ,IACI,MAAMC,EAAKh5C,EAAO3M,GAAKe,KAAKP,KAAMjC,EAAMknD,SAC7BvlD,IAAPylD,IACAz+C,EAAOlH,GAAO2lD,GAGtB,MAAO7jD,GACH,MAAMmC,EAAWnC,aAAiBnC,MAASmC,EAAMmC,QAAU,eAC3DwD,GAAOnD,WAAW,2BAA2BtE,MAAQiE,KAAY,WAAY,CAAE1F,MAAAA,KAGvF,OAAO2I,GAIf0+C,YAAYrnD,GACR,OAAO6R,GAAM3I,GAAOtB,UAAU5H,GAAQ,KAG9C6lD,GAAoB,IAAIniD,QAAWoiD,GAAuB,IAAIpiD,QC3YvD,MAAM4jD,GACTzkD,YAAYkC,GACR1D,EAAiBY,KAAM,CAAE8C,KAAAA,IAE7BgG,QACI,OAAO,IAAIu8C,GAAcrlD,KAAK8C,MAElCinC,SAASyC,GACL,OAAOxsC,MAGR,MAAMslD,WAAsBD,GAC/BzkD,YAAY2kD,EAAiB,EAAGC,GAC5Bn3C,MAAM,+BAAgCk3C,GAAkB,KACxD,MAAME,EAAQ,CAAEF,eAAAA,GAChB,SAAS/kD,EAAIsC,EAAM4iD,GACf,IAAI3nD,GAASynD,GAAS,IAAI1iD,GACb,MAAT/E,IACAA,EAAQ2nD,GAEW,iBAAX,GACRz+C,GAAOlD,mBAAmB,qBAAqBjB,IAAQ,QAAS0iD,GAEpEC,EAAM3iD,GAAQ/E,EAElByC,EAAI,SAAU,MACdA,EAAI,WAAY,MAChBA,EAAI,aAAc,GAClBA,EAAI,gBAAiB,IACrBA,EAAI,yBAA0B,MAC9BA,EAAI,sBAAuB,MAC3BpB,EAAiBY,KAAMylD,GAE3B38C,QACI,OAAO,IAAIw8C,GAActlD,KAAKulD,eAAgBvlD,OAK/C,MAAM2lD,WAAkBN,GAC3BzkD,YAAY2xB,EAASqzB,GACjBv3C,MAAM,0BACNjP,EAAiBY,KAAM,CACnBuyB,QAAUA,GA5CH,6CA6CPqzB,cAAkC,MAAjBA,EAAyB,EAAIA,IAGtD98C,QACI,OAAO,IAAI68C,GAAU3lD,KAAKuyB,QAASvyB,KAAK4lD,eAE5C7b,SAASyC,GAEL,OADAA,EAAQ1B,UAAUvY,QAAQvyB,KAAKuyB,SACxBvyB,MAGR,MAAM6lD,WAA6BR,GACtCzkD,YAAYklD,GACRz3C,MAAM,uCACNjP,EAAiBY,KAAM,CACnB8lD,YAAa7+C,GAAOtB,UAAUmgD,KAGtCjoD,qBAAqBysC,GACjB,OAAOtqC,KAAK8lD,YAEhBh9C,QACI,OAAO,IAAI+8C,GAAqB7lD,KAAK8lD,cCrE7C,IAWIC,GAXAhmD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAyDxF,MAAM+lD,GAAW,IAAI3uC,IACf4uC,GAAmB,IAAInC,GACtB,MAAMoC,GACTtlD,YAAYkC,EAAMqjD,EAAUrb,GACxBib,GAAevlD,IAAIR,UAAM,GACzB,MAAMy9B,EAAUx2B,GAAOtB,UAAUwgD,GAChB,MAAbrb,IACAA,EAAYmb,IAEhB,MAAM/a,EAAU,IAAI7zB,IACpBtX,GAAuBC,KAAM+lD,GAAgB,CAAEjjD,KAAAA,EAAM26B,QAAAA,EAASqN,UAAAA,EAAWI,QAAAA,GAAW,KAExFuC,SACI,MAAO,CAAE3qC,KAAM9C,KAAK8C,KAAM26B,QAASz9B,KAAKy9B,SAExC36B,WAAS,OAAO7B,EAASR,GAAuBT,KAAM+lD,GAAgB,KAAM,QAC5EjjD,SAAK/E,GAASoD,EAASV,GAAuBT,KAAM+lD,GAAgB,KAAM,OAAQhoD,GAClF0/B,cAAY,OAAOx8B,EAASR,GAAuBT,KAAM+lD,GAAgB,KAAM,WAC/EtoB,YAAQ1/B,GAASoD,EAASV,GAAuBT,KAAM+lD,GAAgB,KAAM,UAAW9+C,GAAOtB,UAAU5H,EAAO,YAChH+sC,gBAAc,OAAO7pC,EAASR,GAAuBT,KAAM+lD,GAAgB,KAAM,aACjFjb,cAAU/sC,GAASoD,EAASV,GAAuBT,KAAM+lD,GAAgB,KAAM,YAAahoD,GAC5FmtC,cACA,OAAOn+B,MAAM5B,KAAK1K,GAAuBT,KAAM+lD,GAAgB,KAAK7a,QAAQ5rC,UAEhF8mD,aAAanb,GACT,GAAIjrC,KAAKoB,WACL,MAAM,IAAIjC,MAAM,UAEpB,GAAIsB,GAAuBT,KAAM+lD,GAAgB,KAAK7a,QAAQxqC,IAAIuqC,EAAOnoC,MACrE,MAAM,IAAI3D,MAAM,mCAAmC8rC,EAAOnoC,SAG9D,OADArC,GAAuBT,KAAM+lD,GAAgB,KAAK7a,QAAQ1qC,IAAIyqC,EAAOnoC,KAAMmoC,EAAOlB,SAAS/pC,OACpFA,KAEX0sC,UAAU5pC,GACN,OAAQrC,GAAuBT,KAAM+lD,GAAgB,KAAK7a,QAAQxqC,IAAIoC,IAAU,KAGpFujD,WAAWC,GACP,OAAQtmD,KAAKkrC,QAAQnqC,QAAQyN,GAAOA,EAAE1L,KAAKhE,MAAM,KAAK,KAAOwnD,IAEjEx9C,QACI,MAAMA,EAAQ,IAAIo9C,GAAQlmD,KAAK8C,KAAM9C,KAAKy9B,QAASz9B,KAAK8qC,WAIxD,OAHA9qC,KAAKkrC,QAAQtjC,SAASqjC,IAClBniC,EAAMs9C,aAAanb,EAAOniC,YAEvBA,EAEXjB,SAEI,OADA5J,OAAO4J,OAAOpH,GAAuBT,KAAM+lD,GAAgB,MACpD/lD,KAEXoB,WACI,OAAOnD,OAAOmD,SAASX,GAAuBT,KAAM+lD,GAAgB,MAExEQ,oBAAoBlyB,GAChB,MAAMmxB,EAAQxlD,KAAK0sC,UAAU,wBAA2B,IAAI4Y,GAC5D,IAAIz2C,EAAM22C,EAAMgB,OAIhB,GAHa,MAATnyB,EAAGjpB,KACHyD,GAAO22C,EAAMiB,UAEbpyB,EAAGxf,KACH,IAAK,IAAI5V,EAAI,EAAGA,EAAIo1B,EAAGxf,KAAK3V,OAAQD,GAAK,EACD,OAAhCo1B,EAAGxf,KAAKhO,UAAU5H,EAAGA,EAAI,GACzB4P,GAAO22C,EAAMkB,WAGb73C,GAAO22C,EAAMmB,cAIzB,GAAItyB,EAAGorB,WAAY,CACf,MAAMA,EAAaz/C,KAAK8qC,UAAU2U,WAAWprB,EAAGorB,YAChD,IAAK,MAAM1T,KAAQ0T,EACf5wC,GAAO22C,EAAMoB,oBAAsBpB,EAAMqB,uBAAyBpH,EAAW1T,GAAMgS,YAAY7+C,OAGvG,OAAO2P,EAEX5I,YAAYumC,GAER,GAAe,MAAXA,EACA,OAAO0Z,GAAQ/6C,KAAK,aAMxB,GAHyB,iBAAb,IACRqhC,EAAU/mC,OAAO+mC,IAEI,iBAArB,GAAsD,iBAArB,EAA+B,CAChE,MAAMsa,EAAcd,GAAStlD,IAAI8rC,GACjC,GAAIsa,EACA,OAAOA,IAEX,GAAyB,iBAAb,EACR,OAAO,IAAIZ,GAAQ,UAAW1Z,GAElCvlC,GAAOlD,mBAAmB,kBAAmB,UAAWyoC,GAG5D,GAA+B,mBAAnBA,EAAa,MAAkB,CAIvC,OAHcA,EAAQ1jC,QAM1B,GAAyB,iBAAb,EAAuB,CACD,iBAAlB0jC,EAAY,MAA+C,iBAArBA,EAAe,SAC7DvlC,GAAOlD,mBAAmB,yCAA0C,UAAWyoC,GAEnF,MAAMua,EAAS,IAAIb,GAAS1Z,EAAY,KAAIA,EAAe,SAO3D,OANIA,EAAQwa,YAAoC,MAAtBxa,EAAQya,aAC9BF,EAAOX,aAAa,IAAIT,GAAUnZ,EAAQwa,WAAYxa,EAAQya,aAK3DF,EAEX,OAAO9/C,GAAOlD,mBAAmB,kBAAmB,UAAWyoC,GAEnEvmC,gBAAgBihD,EAAeJ,GACI,iBAAnB,IACRI,EAAgBzhD,OAAOyhD,IAE3B,MAAMC,EAAWnB,GAAStlD,IAAIwmD,GAC1BC,GACAlgD,GAAOlD,mBAAmB,2BAA2BJ,KAAKC,UAAUujD,EAASrkD,QAAS,gBAAiBokD,GAE3GlB,GAASxlD,IAAI0mD,EAAeJ,IAGpCf,GAAiB,IAAItkD,QCtMrB,IAWI2lD,GAAmCC,GAAkCC,GAAgCC,GAAkCC,GAAqCC,GAA8BC,GAA6BC,GAAyBC,GAAiCC,GAAoCC,GAAmCC,GAAkCC,GAAgCC,GAAgCC,GAAqCC,GAX/epoD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAKxF,SAASsG,GAAK0G,GACV,OAAOtJ,KAAK6I,MAAM7I,KAAKC,UAAUqJ,IAc9B,MAAMm7C,GACTxnD,YAAY0pC,GACR8c,GAAkC7jD,IAAIvD,MACtCqnD,GAAiC7mD,IAAIR,UAAM,GAC3CsnD,GAA+B9mD,IAAIR,UAAM,GACzCunD,GAAiC/mD,IAAIR,UAAM,GAG3CwnD,GAAoChnD,IAAIR,UAAM,GAC9CD,GAAuBC,KAAMqnD,GAAkC/c,EAAU,KACzEvqC,GAAuBC,KAAMsnD,GAAgC,KAAM,KACnEvnD,GAAuBC,KAAMunD,GAAkC,IAAM,KACrExnD,GAAuBC,KAAMwnD,IAAsC,EAAG,KAEtEa,sBAAoB,OAAO5nD,GAAuBT,KAAMunD,GAAkC,KAC1Fc,oBAAgBtqD,GAASgC,GAAuBC,KAAMunD,GAAkCxpD,EAAO,KACnG8X,QACI,GAAIpV,GAAuBT,KAAMsnD,GAAgC,KAC7D,MAAM,IAAInoD,MAAM,8BAEpBsB,GAAuBT,KAAMonD,GAAmC,IAAKK,IAA8BlnD,KAAKP,MACxGD,GAAuBC,KAAMsnD,GAAgC7mD,GAAuBT,KAAMqnD,GAAkC,KAAKiB,YAAY7nD,GAAuBT,KAAMonD,GAAmC,IAAKK,IAA8BxtC,KAAKja,MAAOS,GAAuBT,KAAMunD,GAAkC,MAAO,KAEtUgB,OACI,IAAK9nD,GAAuBT,KAAMsnD,GAAgC,KAC9D,MAAM,IAAInoD,MAAM,0BAEpBsB,GAAuBT,KAAMqnD,GAAkC,KAAKmB,cAAc/nD,GAAuBT,KAAMsnD,GAAgC,MAC/IvnD,GAAuBC,KAAMsnD,GAAgC,KAAM,KAEvEmB,MAAMC,GACF1oD,KAAKuoD,OACDG,GACA3oD,GAAuBC,KAAMwnD,IAAsC,EAAG,KAG9EmB,SACI3oD,KAAK6V,SAGbwxC,GAAmC,IAAI5lD,QAAW6lD,GAAiC,IAAI7lD,QAAW8lD,GAAmC,IAAI9lD,QAAW+lD,GAAsC,IAAI/lD,QAAW2lD,GAAoC,IAAI9gD,QAAWmhD,GAA+B5pD,eAAe4pD,IACtS,MAAMxF,QAAoBxhD,GAAuBT,KAAMqnD,GAAkC,KAAKrE,iBAC9F,IAAgF,IAA5EviD,GAAuBT,KAAMwnD,GAAqC,KAAtE,CAKA,GAAIvF,IAAgBxhD,GAAuBT,KAAMwnD,GAAqC,KAAM,CACxF,IAAK,IAAIr1C,EAAI1R,GAAuBT,KAAMwnD,GAAqC,KAAO,EAAGr1C,GAAK8vC,EAAa9vC,IACvG1R,GAAuBT,KAAMqnD,GAAkC,KAAKuB,KAAK,QAASz2C,GAEtFpS,GAAuBC,KAAMwnD,GAAqCvF,EAAa,KAEnFliD,GAAuBC,KAAMsnD,GAAgC7mD,GAAuBT,KAAMqnD,GAAkC,KAAKiB,YAAY7nD,GAAuBT,KAAMonD,GAAmC,IAAKK,GAA8BxtC,KAAKja,MAAOS,GAAuBT,KAAMunD,GAAkC,MAAO,UAV9TxnD,GAAuBC,KAAMwnD,GAAqCvF,EAAa,MAYhF,MAAM4G,GACTjoD,YAAY0pC,GACRod,GAA4BlnD,IAAIR,UAAM,GACtC2nD,GAAwBnnD,IAAIR,UAAM,GAClCD,GAAuBC,KAAM0nD,GAA6Bpd,EAAU,KACpEvqC,GAAuBC,KAAM2nD,IAA0B1F,IACnDjiD,KAAK8oD,MAAM7G,EAAaxhD,GAAuBT,KAAM0nD,GAA6B,QACnF,KAEP7pD,YAAYokD,EAAa3X,GACrB,MAAM,IAAInrC,MAAM,kCAEpB0W,QACIpV,GAAuBT,KAAM2nD,GAAyB,KAAKpnD,KAAKP,MAAO,GACvES,GAAuBT,KAAM0nD,GAA6B,KAAKqB,GAAG,QAAStoD,GAAuBT,KAAM2nD,GAAyB,MAErIY,OACI9nD,GAAuBT,KAAM0nD,GAA6B,KAAK1mD,IAAI,QAASP,GAAuBT,KAAM2nD,GAAyB,MAEtIc,MAAMC,GAAmB1oD,KAAKuoD,OAC9BI,SAAW3oD,KAAK6V,SAEpB6xC,GAA8B,IAAIjmD,QAAWkmD,GAA0B,IAAIlmD,QACpE,MAAMunD,WAAgCH,GACzCjoD,YAAY0pC,EAAUvpC,GAClBsN,MAAMi8B,GACNsd,GAAgCpnD,IAAIR,UAAM,GAC1CD,GAAuBC,KAAM4nD,GAAiCrhD,GAAKxF,GAAS,KAEhFlD,YAAYokD,EAAa3X,GACrB,MAAM,IAAInrC,MAAM,UAIxByoD,GAAkC,IAAInmD,QAC/B,MAAMwnD,WAAqCJ,GAC9CjoD,YAAY0pC,EAAUjvB,GAClBhN,MAAMi8B,GACNud,GAAmCrnD,IAAIR,UAAM,GAC7CD,GAAuBC,KAAM6nD,GAAoCxsC,EAAM,KAE3Exd,YAAYokD,EAAa3X,GACrB,MAAMjW,QAAWiW,EAAS+X,sBAAsB5hD,GAAuBT,KAAM6nD,GAAoC,MAC7GxzB,GACAiW,EAASse,KAAKnoD,GAAuBT,KAAM6nD,GAAoC,KAAMxzB,IAIjGwzB,GAAqC,IAAIpmD,QAClC,MAAMynD,GACTtoD,YAAY0pC,EAAUvpC,GAClB+mD,GAAkCvkD,IAAIvD,MACtC+nD,GAAiCvnD,IAAIR,UAAM,GAC3CgoD,GAA+BxnD,IAAIR,UAAM,GACzCioD,GAA+BznD,IAAIR,UAAM,GAGzCkoD,GAAoC1nD,IAAIR,UAAM,GAC9CD,GAAuBC,KAAM+nD,GAAkCzd,EAAU,KACzEvqC,GAAuBC,KAAMgoD,GAAgCzhD,GAAKxF,GAAS,KAC3EhB,GAAuBC,KAAMioD,GAAgCxnD,GAAuBT,KAAM8nD,GAAmC,IAAKK,IAA8BluC,KAAKja,MAAO,KAC5KD,GAAuBC,KAAMkoD,IAAsC,EAAG,KAE1EryC,SACoF,IAA5EpV,GAAuBT,KAAMkoD,GAAqC,MAClEznD,GAAuBT,KAAM+nD,GAAkC,KAAK/E,iBAAiBt1C,MAAMu0C,IACvFliD,GAAuBC,KAAMkoD,GAAqCjG,EAAa,QAGvFxhD,GAAuBT,KAAM+nD,GAAkC,KAAKgB,GAAG,QAAStoD,GAAuBT,KAAMioD,GAAgC,MAEjJM,OACI9nD,GAAuBT,KAAM+nD,GAAkC,KAAK/mD,IAAI,QAASP,GAAuBT,KAAMioD,GAAgC,MAElJQ,MAAMC,GACF1oD,KAAKuoD,OACDG,GACA3oD,GAAuBC,KAAMkoD,IAAsC,EAAG,KAG9ES,SACI3oD,KAAK6V,SAGbkyC,GAAmC,IAAItmD,QAAWumD,GAAiC,IAAIvmD,QAAWwmD,GAAiC,IAAIxmD,QAAWymD,GAAsC,IAAIzmD,QAAWqmD,GAAoC,IAAIxhD,QAAW6hD,GAA+BtqD,eAA4CokD,GAEjU,IAAgF,IAA5ExhD,GAAuBT,KAAMkoD,GAAqC,KAClE,OAEJ,MAAMnnD,EAASwF,GAAK9F,GAAuBT,KAAMgoD,GAAgC,MACjFjnD,EAAOmjD,UAAYzjD,GAAuBT,KAAMkoD,GAAqC,KAAO,EAC5FnnD,EAAOqjD,QAAUnC,EACjB,MAAMO,QAAa/hD,GAAuBT,KAAM+nD,GAAkC,KAAKoB,QAAQpoD,GAG/F,GAAoB,IAAhByhD,EAAKtjD,OAAT,CAMAa,GAAuBC,KAAMkoD,GAAqCjG,EAAa,KAC/E,IAAK,MAAMl7C,KAAOy7C,EACd/hD,GAAuBT,KAAM+nD,GAAkC,KAAKa,KAAKnoD,GAAuBT,KAAMgoD,GAAgC,KAAMjhD,QAPxItG,GAAuBT,KAAMkoD,GAAqC,KAAOjG,EAAc,IACvFliD,GAAuBC,KAAMkoD,GAAqCjG,EAAc,GAAI,MC9KhG,IAWImH,GAA6BC,GAAwBC,GAA2BC,GAA+BC,GAAkCC,GAA8BC,GAAgCC,GAA6BC,GAA0BC,GAAmCC,GAA2BC,GAAwBC,GAA4BC,GAA0BC,GAXlZnqD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAgBxF,MAAM2sC,GAAOnnC,OAAO,GAEpB,SAAS0kD,GAAOlU,EAAQl4C,GACpB,OAAOk4C,EAAS,IAAMtyC,KAAKC,UAAU7F,GAAO,CAACM,EAAGI,KAC5C,GAAmB,iBAAP,EACR,MAAO,UAAUA,EAAEqL,aAEvB,GAAmB,iBAAP,EACR,OAAOrL,EAAE2H,cAGb,GAAmB,iBAAf,IAA4B2G,MAAMN,QAAQhO,GAAI,CAC9C,MAAMT,EAAOC,OAAOD,KAAKS,GAEzB,OADAT,EAAKghC,OACEhhC,EAAKO,QAAO,CAACC,EAAOgB,KACvBhB,EAAMgB,GAAOf,EAAEe,GACRhB,IACR,IAEP,OAAOC,KAGR,MAAM2rD,GACTxpD,YAAYkC,GAAQ1D,EAAiBY,KAAM,CAAE8C,KAAAA,IAC7C+S,SACA0yC,QACAE,MAAMC,IACNC,WAKJ,SAAS0B,GAAU3iD,GAGf,OAFAA,EAAQqF,MAAM5B,KAAK,IAAKxD,IAAID,GAAQpI,WAC9B0/B,OACCt3B,EAMX7J,eAAeysD,GAAgBC,EAAQjgB,GACnC,GAAc,MAAVigB,EACA,MAAM,IAAIprD,MAAM,iBAMpB,GAHI4N,MAAMN,QAAQ89C,KACdA,EAAS,CAAEpnB,OAAQonB,IAEC,iBAAZ,EACR,OAAQA,GACJ,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,UACD,MAAO,CAAE3rD,KAAM2rD,EAAQC,IAAKD,GAIxC,GAAI/1C,GAAY+1C,EAAQ,IAAK,CACzB,MAAMlvC,EAAOkvC,EAAOnkD,cACpB,MAAO,CAAExH,KAAM,cAAe4rD,IAAKL,GAAO,KAAM,CAAE9uC,KAAAA,IAASA,KAAAA,GAE/D,GAAIkvC,EAAO1I,OAAQ,CACf,MAAMlzC,EAAQ47C,EAEd,MAAO,CAAE3rD,KAAM,SAAU4rD,IAAKL,GAAO,SAAUx7C,GAAQ5N,QArCjDhD,EAqC8D4Q,EApCjEhL,KAAK6I,MAAM7I,KAAKC,UAAU7F,MADrC,IAAcA,EAuCV,GAAKwsD,EAAOh4B,SAAWg4B,EAAOpnB,OAAS,CACnC,MAAMx0B,EAAQ47C,EACRxpD,EAAS,CACXoiC,QAAUx0B,EAAMw0B,QAAU,IAAI/kC,KAAKW,GACtB,MAALA,EACO,KAEPgO,MAAMN,QAAQ1N,GACPsrD,GAAUtrD,EAAEX,KAAKW,GAAMA,EAAEqH,iBAE7BrH,EAAEqH,iBAGjB,GAAIuI,EAAM4jB,QAAS,CACf,MAAMk4B,EAAY,GACZz9C,EAAW,GACX09C,EAAc3e,IACZv3B,GAAYu3B,GACZ0e,EAAU9nD,KAAKopC,GAGf/+B,EAASrK,KAAK,WACV8nD,EAAU9nD,WAAWmyB,GAAeiX,EAAMzB,KADhC,KAKlBv9B,MAAMN,QAAQkC,EAAM4jB,SACpB5jB,EAAM4jB,QAAQ3qB,QAAQ8iD,GAGtBA,EAAW/7C,EAAM4jB,SAEjBvlB,EAAS9N,cACHhB,QAAQC,IAAI6O,GAEtBjM,EAAOwxB,QAAU83B,GAAUI,EAAUrsD,KAAK8T,GAAMA,EAAE9L,iBAEtD,MAAO,CAAErF,OAAAA,EAAQypD,IAAKL,GAAO,QAASppD,GAASnC,KAAM,SAEzD,OAAOqI,GAAOlD,mBAAmB,wBAAyB,QAASwmD,GAEvE,SAAS1iB,KAAY,OAAO,IAAKptB,MAAQotB,UAKlC,MAAM8iB,GAGT/pD,YAAYgqD,GAYR,GAXAxB,GAA4B7lD,IAAIvD,MAChCqpD,GAAuB7oD,IAAIR,UAAM,GACjCspD,GAA0B9oD,IAAIR,UAAM,GAEpCupD,GAA8B/oD,IAAIR,UAAM,GACxCwpD,GAAiChpD,IAAIR,UAAM,GAC3CypD,GAA6BjpD,IAAIR,UAAM,GACvC0pD,GAA+BlpD,IAAIR,UAAM,GACzC2pD,GAA4BnpD,IAAIR,UAAM,GACtC4pD,GAAyBppD,IAAIR,UAAM,GACnC6pD,GAAkCrpD,IAAIR,UAAM,GAC3B,QAAb4qD,EACA7qD,GAAuBC,KAAMypD,IAA8B,EAAM,KACjE1pD,GAAuBC,KAAMwpD,GAAkC,KAAM,UAEpE,GAAIoB,EAAU,CACf,MAAMpe,EAAU0Z,GAAQ/6C,KAAKy/C,GAC7B7qD,GAAuBC,KAAMypD,IAA8B,EAAO,KAClE1pD,GAAuBC,KAAMwpD,GAAkCtrD,QAAQI,QAAQkuC,GAAU,KACzFryB,YAAW,KAAQna,KAAK4oD,KAAK,UAAWpc,EAAS,QAAU,QAG3DzsC,GAAuBC,KAAMypD,IAA8B,EAAO,KAClE1pD,GAAuBC,KAAMwpD,GAAkC,KAAM,KAEzEzpD,GAAuBC,KAAM0pD,GAAgC,IAAIryC,IAAO,KACxEtX,GAAuBC,KAAMqpD,GAAwB,IAAIhyC,IAAO,KAChEtX,GAAuBC,KAAMspD,GAA2B,IAAIjyC,IAAO,KACnEtX,GAAuBC,KAAMupD,GAA+B,KAAM,KAClExpD,GAAuBC,KAAM2pD,GAA6B,EAAG,KAC7D5pD,GAAuBC,KAAM4pD,GAA0B,IAAIvyC,IAAO,KAClEtX,GAAuBC,KAAM6pD,IAAmC,EAAO,KAEvEvf,eAAa,OAAOtqC,KACpBkrC,cACA,OAAOn+B,MAAM5B,KAAK1K,GAAuBT,KAAMspD,GAA2B,KAAKhqD,UAEnF8mD,aAAanb,GACT,GAAIxqC,GAAuBT,KAAMspD,GAA2B,KAAK5oD,IAAIuqC,EAAOnoC,MACxE,MAAM,IAAI3D,MAAM,mCAAmC8rC,EAAOnoC,SAG9D,OADArC,GAAuBT,KAAMspD,GAA2B,KAAK9oD,IAAIyqC,EAAOnoC,KAAMmoC,EAAOlB,SAAS/pC,OACvFA,KAEX0sC,UAAU5pC,GACN,OAAQrC,GAAuBT,KAAMspD,GAA2B,KAAK5oD,IAAIoC,IAAU,KAEnF+nD,oBAAgB9sD,GAASgC,GAAuBC,KAAM6pD,KAAqC9rD,EAAO,KAClG8sD,sBAAoB,OAAOpqD,GAAuBT,KAAM6pD,GAAmC,KAC/FhsD,oBAAoBw2B,EAAIgX,EAAUyf,GAC9B,GAAI9qD,KAAK6qD,iBAAmC,IAAhBC,EAAK5rD,QAAyB,MAATm1B,EAAGjpB,GAChD,OAAO,KAEX,MAAM2/C,EAAS12B,EAAGjpB,GAAGhF,cACfyO,EAAOw2B,EAASjlC,cAChB4kD,EAAgB,GACtB,IAAK,IAAI/rD,EAAI,EAAGA,EAAI6rD,EAAK5rD,OAAQD,IAAK,CAClC,MAAMonC,EAAMykB,EAAK7rD,GAEXgsD,EAAO5kB,EAAI5N,QAAQ,WAAYsyB,GAAQtyB,QAAQ,SAAU5jB,GAOzDqwB,EAAU,IAAI8B,GAAaikB,IACF,IAA3B5kB,EAAIxhC,QAAQ,YACZqgC,EAAQD,KAAO,CAAEpwB,KAAAA,EAAMk2C,OAAAA,IAE3B,IAAIG,EAAe,gBACnB,MAAMxkB,QAAaqB,GAAU7C,GAC7B,IACI,MAAMx+B,EAASggC,EAAKrB,SACpB,GAAI3+B,EAAOmO,KACP,OAAOnO,EAAOmO,KAEdnO,EAAOjD,UACPynD,EAAexkD,EAAOjD,SAG9B,MAAOnC,IAEP,GAAIolC,EAAK5B,YAAc,KAAO4B,EAAK5B,WAAa,IAC5C,OAAO79B,GAAOnD,WAAW,yCAAyConD,IAAgB,iBAAkB,CAChGlzB,OAAQ,uBACR8K,YAAazO,EAAIpyB,KAAM,CAAEokC,IAAAA,EAAK6kB,aAAAA,KAItCF,EAAcroD,KAAKuoD,GAEvB,OAAOjkD,GAAOnD,WAAW,wCAAwCknD,EAAc5sD,KAAKsmC,GAAM/gC,KAAKC,UAAU8gC,KAAI7gC,KAAK,QAAS,iBAAkB,CACzIm0B,OAAQ,mBACR8K,YAAazO,EAAIpyB,KAAM,CAAE6oD,KAAAA,EAAME,cAAAA,KAGvCG,iBAAiB92B,EAAIhZ,EAAM4mC,GACvB,OAAO5tB,EAEX+2B,iBACI,OAAOnkD,GAAOnD,WAAW,kCAAmC,wBAAyB,CACjFY,UAAW,mBAGnB7G,eAAeqoC,GACX,OAAOj/B,GAAOnD,WAAW,uBAAuBoiC,EAAIhhC,SAAU,wBAAyB,CACnFR,UAAWwhC,EAAIhhC,OACfjD,KAAMikC,IAIdroC,uBACI,OAAOoJ,GAAOzB,gBAAgB/E,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAAEkF,OAAQ,mBAAqB,aAEtKrH,kBAAkB00B,GACd,MAAyB,iBAAb,EACDA,QAEEA,EAAQW,aAEzBr1B,mBAAmB2lD,GACf,MAAMhX,QAAgBxsC,KAAK6qC,aAC3B,GAA0B,iBAAd,GAA0BtmC,OAAO4W,cAAcqoC,IAAaA,EAAW,EAAG,CAElF,IAAIvB,QAAoBjiD,KAAKgjD,iBAK7B,OAJAf,GAAeuB,EACXvB,EAAc,IACdA,EAAc,GAEXzV,EAAQ1B,UAAU0Y,SAASvB,GAEtC,OAAOzV,EAAQ1B,UAAU0Y,SAASA,GAEtC3lD,mBAEI,GAA2E,MAAvE4C,GAAuBT,KAAMwpD,GAAkC,KAAc,CAE7E,MAAM6B,EAAgBrrD,KAAKorD,iBAAiB19C,MAAM8+B,IAC9CxsC,KAAK4oD,KAAK,UAAWpc,EAAS,MACvBA,KACPlrC,IAKA,MAHIb,GAAuBT,KAAMwpD,GAAkC,OAAS6B,GACxEtrD,GAAuBC,KAAMwpD,GAAkC,KAAM,KAEnEloD,KAGV,OADAvB,GAAuBC,KAAMwpD,GAAkC6B,EAAe,WACjEA,EAEjB,MAAMC,EAAiB7qD,GAAuBT,KAAMwpD,GAAkC,MAC/E+B,EAAUC,SAAgBttD,QAAQC,IAAI,CACzCmtD,EACAtrD,KAAKorD,mBAkBT,OAhBIG,EAAS9tB,UAAY+tB,EAAO/tB,UACxBh9B,GAAuBT,KAAMypD,GAA8B,MAE3DzpD,KAAK4oD,KAAK,UAAW4C,EAAQD,GAEzB9qD,GAAuBT,KAAMwpD,GAAkC,OAAS8B,GACxEvrD,GAAuBC,KAAMwpD,GAAkCtrD,QAAQI,QAAQktD,GAAS,MAK5FvkD,GAAOnD,WAAW,oBAAoBynD,EAAS9tB,cAAc+tB,EAAO/tB,WAAY,gBAAiB,CAC7F9uB,MAAO,aAIZ48C,EAASziD,QAAQjB,SAE5BhK,mBACI,MAAMk1B,MAAEA,EAAKisB,SAAEA,SAAmBlhD,EAAkB,CAChDi1B,MAAO/yB,KAAKoiD,SAAS,UACrBpD,SAAW,WACP,IACI,MAAMA,QAAiBv+C,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAAEkF,OAAQ,gBACtI,OAAO+B,GAAOtB,UAAUq5C,EAAU,aAEtC,MAAO19C,IACP,OAAO,MANA,KASf,IAAIk+C,EAAe,KAAMD,EAAuB,KAChD,GAAIxsB,GAASA,EAAMyuB,cAAe,CAI9BjC,EAAuB95C,OAAO,cAE9B,MAAMgmD,SAA2BzrD,KAAK6qC,cAAc6B,UAAU,uCAC1D+e,IACAlM,QAA6BkM,EAAkBC,eAAe1rD,OAElEw/C,EAAgBzsB,EAAMyuB,cAAgB5U,GAAQ2S,EAElD,OAAO,IAAIuB,GAAQ9B,EAAUQ,EAAcD,GAE/C1hD,sBAAsB8tD,GAClB,MAAMnf,QAAgBxsC,KAAK6qC,aAErB3F,EAAUjnC,OAAOoN,OAAO,GAAIsgD,QAAgB7tD,EAAkB,CAChEsN,GAAKugD,EAASvgD,GAAK0pB,GAAe62B,EAASvgD,GAAIpL,WAAQN,EACvDyL,KAAOwgD,EAASxgD,KAAO2pB,GAAe62B,EAASxgD,KAAMnL,WAAQN,KAEjE,OAAO8sC,EAAQ1B,UAAUuZ,mBAAmBnf,GAEhDrnC,kBAAkB+tD,GACd,MAAM9oB,QAAoB9iC,KAAK6rD,gBAAgBD,GAC/C,OAAO3kD,GAAOtB,gBAAgBlF,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAC/HkF,OAAQ,cAAe49B,YAAAA,IACvB,aAERjlC,WAAW+tD,GACP,MAAMv3B,GAAEA,EAAEmvB,SAAEA,SAAmB1lD,EAAkB,CAC7Cu2B,GAAIr0B,KAAK6rD,gBAAgBD,GACzBpI,SAAUxjD,KAAK8rD,aAAaF,EAAIpI,YAEpC,OAAO/iD,GAAuBT,KAAMopD,GAA6B,IAAKW,IAAwBxpD,KAAKP,KAAMq0B,EAAImvB,EAAUoI,EAAIlhB,eAAiB,GAAK,GAGrJ7sC,mBAAmBkuD,EAAUC,GACzB,MAAMz5B,QAAEA,EAAOixB,SAAEA,SAAmB1lD,EAAkB,CAClDy0B,QAASuC,GAAei3B,GACxBvI,SAAUxjD,KAAK8rD,aAAaE,KAEhC,OAAO/kD,GAAOtB,gBAAgBlF,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAC/HkF,OAAQ,aAAcqtB,QAAAA,EAASixB,SAAAA,IAC/B,aAER3lD,4BAA4BkuD,EAAUC,GAClC,MAAMz5B,QAAEA,EAAOixB,SAAEA,SAAmB1lD,EAAkB,CAClDy0B,QAASuC,GAAei3B,GACxBvI,SAAUxjD,KAAK8rD,aAAaE,KAEhC,OAAO/kD,GAAOzB,gBAAgB/E,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAC/HkF,OAAQ,sBAAuBqtB,QAAAA,EAASixB,SAAAA,IACxC,aAER3lD,cAAckuD,EAAUC,GACpB,MAAMz5B,QAAEA,EAAOixB,SAAEA,SAAmB1lD,EAAkB,CAClDy0B,QAASuC,GAAei3B,GACxBvI,SAAUxjD,KAAK8rD,aAAaE,KAEhC,OAAO32C,SAAc5U,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CACtHkF,OAAQ,UAAWqtB,QAAAA,EAASixB,SAAAA,KAGpC3lD,mBAAmBkuD,EAAUE,EAAWD,GACpC,MAAMvI,EAAWx8C,GAAOtB,UAAUsmD,IAC5B15B,QAAEA,EAAOixB,SAAEA,SAAmB1lD,EAAkB,CAClDy0B,QAASuC,GAAei3B,GACxBvI,SAAUxjD,KAAK8rD,aAAaE,KAEhC,OAAO32C,SAAc5U,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CACtHkF,OAAQ,eAAgBqtB,QAAAA,EAASkxB,SAAAA,EAAUD,SAAAA,KAInD3lD,2BAA2B6lD,GACvB,MAAM,IAAIvkD,MAIdtB,eAAek1B,GACX,MAAM5mB,SAAgBnM,KAAK6qC,cAAcC,UACnCv8B,QAAe9N,GAAuBT,KAAMopD,GAA6B,IAAKY,IAA4BzpD,KAAKP,KAAM+yB,GAAO,GAClI,OAAc,MAAVxkB,EACO,KAEJpC,EAAO4mB,MAAMxkB,EAAQvO,MAEhCnC,+BAA+Bk1B,GAC3B,MAAM5mB,SAAgBnM,KAAK6qC,cAAcC,UACnCv8B,EAAS9N,GAAuBT,KAAMopD,GAA6B,IAAKY,IAA4BzpD,KAAKP,KAAM+yB,GAAO,GAC5H,OAAc,MAAVxkB,EACO,KAEJpC,EAAOo4C,sBAAsBh2C,EAAQvO,MAEhDnC,qBAAqBwd,GACjB,MAAMlP,SAAgBnM,KAAK6qC,cAAcC,UACnCv8B,QAAe9N,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAAEkF,OAAQ,iBAAkBmW,KAAAA,IACtJ,OAAOlP,EAAOm4C,oBAAoB/1C,EAAQvO,MAE9CnC,4BAA4Bwd,GACxB,MAAMlP,SAAgBnM,KAAK6qC,cAAcC,UACnC2Z,QAAgBhkD,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAAEkF,OAAQ,wBAAyBmW,KAAAA,IAC9J,GAAe,MAAXopC,EACA,OAAO,KAIX,GAAwB,MAApBA,EAAQzF,UAAiD,MAA7ByF,EAAQ7B,kBAA2B,CAC/D,MAAMvuB,QAAW5zB,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAAEkF,OAAQ,iBAAkBmW,KAAAA,IAClJopC,EAAQ7B,kBAAoBvuB,EAAG2qB,SAEnC,OAAO7yC,EAAOs4C,QAAQA,EAASzkD,MAEnCnC,iBAAiBkD,GAEb,MAAMoiC,GAAUpiC,EAAOoiC,QAAU,IAAI/kC,KAAKW,GAC7B,MAALA,EACO,KAEPgO,MAAMN,QAAQ1N,GACPsrD,GAAUtrD,EAAEX,KAAKW,GAAMA,EAAEqH,iBAE7BrH,EAAEqH,gBAEP47C,EAAa,cAAejhD,EAAUA,EAAOihD,eAAYtiD,EACzDwsD,EAAS,GAEXnrD,EAAOwxB,UACHxlB,MAAMN,QAAQ1L,EAAOwxB,SACrB25B,EAAO35B,QAAUr0B,QAAQC,IAAI4C,EAAOwxB,QAAQn0B,KAAK8T,GAAM4iB,GAAe5iB,EAAGlS,SAGzEksD,EAAO35B,QAAUuC,GAAe/zB,EAAOwxB,QAASvyB,OAIxD,MAAMmsD,EAAe3sD,IACE,MAAfuB,EAAOvB,KAGX0sD,EAAO1sD,GAAOQ,KAAK8rD,aAAa/qD,EAAOvB,MAE3C2sD,EAAY,aACZA,EAAY,WAEZ,MAAMzlD,QAAe5I,EAAkBouD,GAMvC,GAJIn/C,MAAMN,QAAQ/F,EAAO6rB,UACrB7rB,EAAO6rB,QAAQyM,OAEnBt4B,EAAOy8B,OAASA,EACZ6e,EAAW,CACX,GAAIjhD,EAAOmjD,WAAanjD,EAAOqjD,QAC3B,MAAM,IAAIjlD,MAAM,kBAEpBuH,EAAOs7C,UAAYA,EAEvB,OAAOt7C,EAGX7I,cAAcuuD,GACV,MAAM5f,QAAEA,EAAOzrC,OAAEA,SAAiBjD,EAAkB,CAChD0uC,QAASxsC,KAAK6qC,aACd9pC,OAAQf,KAAKqsD,WAAWD,KAE5B,aAAc3rD,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAAEkF,OAAQ,UAAWnE,OAAAA,KAAW3C,KAAKkhB,GAC7IktB,EAAQ1B,UAAU/jC,IAAIuY,EAAGtf,QAIxCssD,aAAa7uB,GACT,OAAOx2B,GAAOnD,WAAW,4CAA6C,wBAAyB,CAC3FY,UAAW,mBAGnB7G,kBAAkBiF,GACd,aAAaunC,GAAYkiB,SAASvsD,KAAM8C,GAE5CjF,gBAAgBiF,GACZ,MAAMiyB,QAAiB/0B,KAAKwsD,YAAY1pD,GACxC,OAAIiyB,QACaA,EAAS03B,YAEnB,KAEX5uD,kBAAkBiF,GACd,GAAsB,iBAAV,EAMP,CACD,MAAMyvB,QAAgBzvB,EAAKowB,aAC3B,OAAe,MAAXX,EACOtrB,GAAOlD,mBAAmB,kCAAmC,OAAQjB,GAEzEyvB,EAXqB,CAC5B,MAAMwC,QAAiB/0B,KAAKwsD,YAAY1pD,GACxC,GAAIiyB,EACA,aAAaA,EAAS7B,aAU9B,OAAO,KAEXr1B,oBAAoB00B,GAChB,MAAM,IAAIpzB,MAGdtB,yBAAyBwd,EAAMgoC,EAAW,EAAGld,GACzC,OAAiB,IAAbkd,EACOrjD,KAAKqiD,sBAAsBhnC,GAE/B,IAAInd,SAAQL,MAAOS,EAASouD,KAC/B,IAAIC,EAAQ,KACZ,MAAM7rD,EAAY,MAAOmhD,IACrB,IACI,MAAMwC,QAAgBzkD,KAAKqiD,sBAAsBhnC,GACjD,GAAe,MAAXopC,GACIxC,EAAcwC,EAAQxC,YAAc,GAAKoB,EAOzC,OANA/kD,EAAQmmD,GACRzkD,KAAKgB,IAAI,QAASF,QACd6rD,IACAC,aAAaD,GACbA,EAAQ,OAMxB,MAAOrrD,GACHwF,QAAQC,IAAI,MAAOzF,GAEvBtB,KAAK6sD,KAAK,QAAS/rD,IAER,MAAXqlC,IACAwmB,EAAQxyC,YAAW,KACF,MAATwyC,IAGJA,EAAQ,KACR3sD,KAAKgB,IAAI,QAASF,GAClB4rD,EAAOzlD,GAAOzD,UAAU,UAAW,UAAW,CAAEw0B,OAAQ,gBACzDmO,IAEPrlC,QAAed,KAAKgjD,qBAG5BnlD,mBAAmB2lD,GACf,MAAM,IAAIrkD,MAGdqpD,cAAcsE,GACV,MAAMH,EAAQlsD,GAAuBT,KAAM4pD,GAA0B,KAAKlpD,IAAIosD,GACzEH,IAGDA,EAAMA,OACNC,aAAaD,EAAMA,OAEvBlsD,GAAuBT,KAAM4pD,GAA0B,KAAK9qB,OAAOguB,IAEvExE,YAAYpuB,EAAOiM,EAAU,GACzB,IAAIt8B,EAAIkjD,EACR,MAAMD,GAAW/sD,GAAuBC,KAAM2pD,IAA8BoD,EAAKtsD,GAAuBT,KAAM2pD,GAA6B,KAAM9/C,EAAKkjD,IAAMA,GAAK,KAAMljD,GACjKod,EAAO,KACTxmB,GAAuBT,KAAM4pD,GAA0B,KAAK9qB,OAAOguB,GACnE5yB,KAEJ,GAAIl6B,KAAKgtD,OACLvsD,GAAuBT,KAAM4pD,GAA0B,KAAKppD,IAAIssD,EAAS,CAAEH,MAAO,KAAM1lC,KAAAA,EAAMgmC,KAAM9mB,QAEnG,CACD,MAAMwmB,EAAQxyC,WAAW8M,EAAMkf,GAC/B1lC,GAAuBT,KAAM4pD,GAA0B,KAAKppD,IAAIssD,EAAS,CAAEH,MAAAA,EAAO1lC,KAAAA,EAAMgmC,KAAMplB,OAElG,OAAOilB,EAEXI,mBAAmBjmC,GACf,IAAK,MAAMkmC,KAAO1sD,GAAuBT,KAAMqpD,GAAwB,KAAK/pD,SACxE2nB,EAAKkmC,EAAIC,YAKjBC,eAAeF,GACX,OAAQA,EAAIvuD,MACR,IAAK,QACL,IAAK,UACD,OAAO,IAAIwrD,GAAoB+C,EAAIvuD,MACvC,IAAK,QACD,OAAO,IAAIwpD,GAAuBpoD,MACtC,IAAK,QACD,OAAO,IAAIkpD,GAAuBlpD,KAAMmtD,EAAIpsD,QAChD,IAAK,cACD,OAAO,IAAIkoD,GAA6BjpD,KAAMmtD,EAAI9xC,MACtD,IAAK,SACD,OAAO,IAAI2tC,GAAwBhpD,KAAMmtD,EAAIpsD,QAErD,MAAM,IAAI5B,MAAM,sBAAsBguD,EAAIvuD,QAE9C0uD,mBAAmBC,EAAQC,GACvB,IAAK,MAAML,KAAO1sD,GAAuBT,KAAMqpD,GAAwB,KAAK/pD,SACxE,GAAI6tD,EAAIC,aAAeG,EAAQ,CACvBJ,EAAIM,SACJN,EAAIC,WAAW7E,OAEnB4E,EAAIC,WAAaI,EACbL,EAAIM,SACJD,EAAO33C,QAE6D,MAApEpV,GAAuBT,KAAMupD,GAA+B,MAC5DiE,EAAO/E,MAAMhoD,GAAuBT,KAAMupD,GAA+B,MAE7E,OAIZ1rD,SAAS8Q,EAAO7N,GACZ,MAAMqsD,QAAY1sD,GAAuBT,KAAMopD,GAA6B,IAAKc,IAA0B3pD,KAAKP,KAAM2O,GAStH,OARAw+C,EAAIO,UAAU/qD,KAAK,CAAE7B,SAAAA,EAAU+rD,MAAM,IAChCM,EAAIM,UACLN,EAAIC,WAAWv3C,QACfs3C,EAAIM,SAAU,EAC0D,MAApEhtD,GAAuBT,KAAMupD,GAA+B,MAC5D4D,EAAIC,WAAW3E,MAAMhoD,GAAuBT,KAAMupD,GAA+B,OAGlFvpD,KAEXnC,WAAW8Q,EAAO7N,GACd,MAAMqsD,QAAY1sD,GAAuBT,KAAMopD,GAA6B,IAAKc,IAA0B3pD,KAAKP,KAAM2O,GAStH,OARAw+C,EAAIO,UAAU/qD,KAAK,CAAE7B,SAAAA,EAAU+rD,MAAM,IAChCM,EAAIM,UACLN,EAAIC,WAAWv3C,QACfs3C,EAAIM,SAAU,EAC0D,MAApEhtD,GAAuBT,KAAMupD,GAA+B,MAC5D4D,EAAIC,WAAW3E,MAAMhoD,GAAuBT,KAAMupD,GAA+B,OAGlFvpD,KAEXnC,WAAW8Q,KAAU/I,GACjB,MAAMunD,QAAY1sD,GAAuBT,KAAMopD,GAA6B,IAAKa,IAA0B1pD,KAAKP,KAAM2O,EAAO/I,GAC7H,IAAKunD,EACD,OAAO,EAGX,MAAM/nD,EAAQ+nD,EAAIO,UAAUxuD,OAS5B,OARAiuD,EAAIO,UAAYP,EAAIO,UAAU3sD,QAAO,EAAGD,SAAAA,EAAU+rD,KAAAA,MAC9C,MAAMr5B,EAAU,IAAI7yB,EAAaX,KAAO6sD,EAAO,KAAO/rD,EAAW6N,GACjE,IACI7N,EAASP,KAAKP,QAAS4F,EAAM4tB,GAEjC,MAAOlyB,IACP,OAAQurD,KAEJznD,EAAQ,EAEpBvH,oBAAoB8Q,GAChB,GAAIA,EAAO,CACP,MAAMw+C,QAAY1sD,GAAuBT,KAAMopD,GAA6B,IAAKa,IAA0B1pD,KAAKP,KAAM2O,GACtH,OAAKw+C,EAGEA,EAAIO,UAAUxuD,OAFV,EAIf,IAAIyuD,EAAQ,EACZ,IAAK,MAAMD,UAAEA,KAAejtD,GAAuBT,KAAMqpD,GAAwB,KAAK/pD,SAClFquD,GAASD,EAAUxuD,OAEvB,OAAOyuD,EAEX9vD,gBAAgB8Q,GACZ,GAAIA,EAAO,CACP,MAAMw+C,QAAY1sD,GAAuBT,KAAMopD,GAA6B,IAAKa,IAA0B1pD,KAAKP,KAAM2O,GACtH,OAAKw+C,EAGEA,EAAIO,UAAUtvD,KAAI,EAAG0C,SAAAA,KAAeA,IAFhC,GAIf,IAAI4F,EAAS,GACb,IAAK,MAAMgnD,UAAEA,KAAejtD,GAAuBT,KAAMqpD,GAAwB,KAAK/pD,SAClFoH,EAASA,EAAO8O,OAAOk4C,EAAUtvD,KAAI,EAAG0C,SAAAA,KAAeA,KAE3D,OAAO4F,EAEX7I,UAAU8Q,EAAO7N,GACb,MAAMqsD,QAAY1sD,GAAuBT,KAAMopD,GAA6B,IAAKa,IAA0B1pD,KAAKP,KAAM2O,GACtH,IAAKw+C,EACD,OAAOntD,KAEX,GAAIc,EAAU,CACV,MAAMpC,EAAQyuD,EAAIO,UAAUtvD,KAAI,EAAG0C,SAAAA,KAAeA,IAAU+D,QAAQ/D,GAChEpC,GAAS,GACTyuD,EAAIO,UAAUnpB,OAAO7lC,EAAO,GASpC,OANKoC,GAAqC,IAAzBqsD,EAAIO,UAAUxuD,SACvBiuD,EAAIM,SACJN,EAAIC,WAAW7E,OAEnB9nD,GAAuBT,KAAMqpD,GAAwB,KAAKvqB,OAAOquB,EAAI3C,MAElExqD,KAEXnC,yBAAyB8Q,GACrB,GAAIA,EAAO,CACP,MAAM67C,IAAEA,EAAGiD,QAAEA,EAAOL,WAAEA,SAAqB3sD,GAAuBT,KAAMopD,GAA6B,IAAKc,IAA0B3pD,KAAKP,KAAM2O,GAC3I8+C,GACAL,EAAW7E,OAEf9nD,GAAuBT,KAAMqpD,GAAwB,KAAKvqB,OAAO0rB,QAGjE,IAAK,MAAOA,GAAKiD,QAAEA,EAAOL,WAAEA,MAAiB3sD,GAAuBT,KAAMqpD,GAAwB,KAC1FoE,GACAL,EAAW7E,OAEf9nD,GAAuBT,KAAMqpD,GAAwB,KAAKvqB,OAAO0rB,GAGzE,OAAOxqD,KAGXnC,kBAAkB8Q,EAAO7N,GACrB,aAAad,KAAK+oD,GAAGp6C,EAAO7N,GAGhCjD,qBAAqB8Q,EAAO7N,GACxB,OAAOd,KAAKgB,IAAI2N,EAAO7N,GAI3BjD,iBAEImC,KAAK4tD,qBAEL,IAAK,MAAMd,KAAWrsD,GAAuBT,KAAM4pD,GAA0B,KAAK5rD,OAC9EgC,KAAKwoD,cAAcsE,GAGvBE,aAAW,OAA4E,MAApEvsD,GAAuBT,KAAMupD,GAA+B,KACnFd,MAAMC,GACF,GAAwE,MAApEjoD,GAAuBT,KAAMupD,GAA+B,KAAc,CAC1E,GAAI9oD,GAAuBT,KAAMupD,GAA+B,QAAUb,EACtE,OAEJ,OAAOzhD,GAAOnD,WAAW,yCAA0C,wBAAyB,CACxFY,UAAW,UAGnB1E,KAAKktD,oBAAoB3rC,GAAMA,EAAEknC,MAAMC,KACvC3oD,GAAuBC,KAAMupD,KAAiCb,EAAiB,KAC/E,IAAK,MAAMiE,KAASlsD,GAAuBT,KAAM4pD,GAA0B,KAAKtqD,SAExEqtD,EAAMA,OACNC,aAAaD,EAAMA,OAGvBA,EAAMM,KAAOplB,KAAY8kB,EAAMM,KAGvCtE,SACI,GAAwE,MAApEloD,GAAuBT,KAAMupD,GAA+B,KAAhE,CAGAvpD,KAAKktD,oBAAoB3rC,GAAMA,EAAEonC,WACjC5oD,GAAuBC,KAAMupD,GAA+B,KAAM,KAClE,IAAK,MAAMoD,KAASlsD,GAAuBT,KAAM4pD,GAA0B,KAAKtqD,SAAU,CAEtF,IAAI6mC,EAAUwmB,EAAMM,KAChB9mB,EAAU,IACVA,EAAU,GAGdwmB,EAAMM,KAAOplB,KAEb1tB,WAAWwyC,EAAM1lC,KAAMkf,MAwGnC,SAAS0nB,GAAannD,EAAQmP,GAC1B,IACI,MAAMP,EAAQw4C,GAAYpnD,EAAQmP,GAClC,GAAIP,EACA,OAAOukB,GAAavkB,GAG5B,MAAOhU,IACP,OAAO,KAEX,SAASwsD,GAAYpnD,EAAQmP,GACzB,GAAe,OAAXnP,EACA,OAAO,KAEX,IACI,MAAMC,EAASM,GAAOzB,UAAUoQ,GAAUlP,EAAQmP,EAAOA,EAAQ,KAC3D3W,EAAS+H,GAAOzB,UAAUoQ,GAAUlP,EAAQC,EAAQA,EAAS,KACnE,OAAOiP,GAAUlP,EAAQC,EAAS,GAAIA,EAAS,GAAKzH,GAExD,MAAOoC,IACP,OAAO,KAEX,SAASkoC,GAAOzrC,GACZ,MAAM2I,EAASqJ,GAAQhS,GACvB,GAAI2I,EAAOxH,OAAS,GAChB,MAAM,IAAIC,MAAM,+BAEpB,MAAMsqC,EAAS,IAAIjjC,WAAW,IAE9B,OADAijC,EAAOjpC,IAAIkG,EAAQ,GAAKA,EAAOxH,QACxBuqC,EAEX,SAASC,GAAS3rC,GACd,GAAKA,EAAMmB,OAAS,IAAQ,EACxB,OAAOnB,EAEX,MAAM2I,EAAS,IAAIF,WAA0C,GAA/BwS,KAAKC,KAAKlb,EAAMmB,OAAS,KAEvD,OADAwH,EAAOlG,IAAIzC,GACJ2I,EAzIX2iD,GAAyB,IAAI5nD,QAAW6nD,GAA4B,IAAI7nD,QAAW8nD,GAAgC,IAAI9nD,QAAW+nD,GAAmC,IAAI/nD,QAAWgoD,GAA+B,IAAIhoD,QAAWioD,GAAiC,IAAIjoD,QAAWkoD,GAA8B,IAAIloD,QAAWmoD,GAA2B,IAAInoD,QAAWooD,GAAoC,IAAIpoD,QAAW2nD,GAA8B,IAAI9iD,QAAWwjD,GAEzcjsD,eAAyCqoC,GAErC,MAAMskB,EAAML,GAAOjkB,EAAIhhC,OAAQghC,GAC/B,IAAI6nB,EAAUttD,GAAuBT,KAAM0pD,GAAgC,KAAKhpD,IAAI8pD,GAUpF,OATKuD,IACDA,EAAU/tD,KAAKguD,SAAS9nB,GACxBzlC,GAAuBT,KAAM0pD,GAAgC,KAAKlpD,IAAIgqD,EAAKuD,GAC3E5zC,YAAW,KACH1Z,GAAuBT,KAAM0pD,GAAgC,KAAKhpD,IAAI8pD,KAASuD,GAC/EttD,GAAuBT,KAAM0pD,GAAgC,KAAK5qB,OAAO0rB,KAE9E,YAEMuD,GACdhE,GAAyBlsD,eAAeksD,EAAuB11B,EAAImvB,EAAUyK,GACxEA,GAjyBmB,IAkyBnBhnD,GAAOnD,WAAW,0CAA2C,iBAAkB,CAC3Ek0B,OAAQ,qBACR8K,YAAa7kC,OAAOoN,OAAO,GAAIgpB,EAAI,CAAEmvB,SAAAA,EAAU9Y,gBAAgB,MAGvE,MAAM5H,EAA0BzO,EAChC,IACI,OAAOhf,SAAcrV,KAAKguD,SAAS,CAAE9oD,OAAQ,OAAQ49B,YAAAA,EAAa0gB,SAAAA,KAEtE,MAAOliD,GAEH,IAAKtB,KAAK6qD,iBAAmBrpD,EAAgBF,IAAU2sD,GAAW,GAAkB,WAAbzK,GAA2C,MAAlB1gB,EAAY13B,IAA8C,eAAhCwK,GAAUtU,EAAMuT,KAAM,EAAG,GAAqB,CACpK,MAAMA,EAAOvT,EAAMuT,KACbq5C,QAAiBp5B,GAAegO,EAAY13B,GAAIpL,MAEtD,IAAImuD,EACJ,IACIA,EA8HhB,SAA6Bt5C,GACzB,MAAMnO,EAAS,CACXqkD,OAAQ,GAAID,KAAM,GAAIzf,SAAU,GAAIvK,SAAU,GAAIygB,UAAW,GAAI7e,UAAW,IAEhF,GAAI/sB,GAAWd,GAAQ,IACnB,MAAM,IAAI1V,MAAM,oCAEpB,MAAM4rD,EAASn1C,GAAUf,EAAM,EAAG,IAClC,GAAIe,GAAUm1C,EAAQ,EAAG,MAAQn1C,GAAU/E,GAAO,EAAG,IACjD,MAAM,IAAI1R,MAAM,iCAEpBuH,EAAOqkD,OAASn1C,GAAUm1C,EAAQ,IAElC,IACI,MAAMD,EAAO,GACPsD,EAAannD,GAAOzB,UAAUoQ,GAAUf,EAAM,GAAI,KAClDw5C,EAAapnD,GAAOzB,UAAUoQ,GAAUf,EAAMu5C,EAAYA,EAAa,KACvEE,EAAW14C,GAAUf,EAAMu5C,EAAa,IAC9C,IAAK,IAAIpwC,EAAI,EAAGA,EAAIqwC,EAAYrwC,IAAK,CACjC,MAAMqoB,EAAMwnB,GAAaS,EAAc,GAAJtwC,GACnC,GAAW,MAAPqoB,EACA,MAAM,IAAIlnC,MAAM,SAEpB2rD,EAAKnoD,KAAK0jC,GAEd3/B,EAAOokD,KAAOA,EAElB,MAAOxpD,GACH,MAAM,IAAInC,MAAM,+BAGpB,IACI,MAAMksC,EAAWyiB,GAAYj5C,EAAM,IACnC,GAAgB,MAAZw2B,EACA,MAAM,IAAIlsC,MAAM,SAEpBuH,EAAO2kC,SAAWA,EAEtB,MAAO/pC,GACH,MAAM,IAAInC,MAAM,mCAGpB,GAAIyW,GAAUf,EAAM,IAAK,OAASe,GAAU/E,GAAO,EAAG,IAClD,MAAM,IAAI1R,MAAM,4CAEpBuH,EAAOo6B,SAAWlrB,GAAUf,EAAM,GAAI,KAEtC,IACI,MAAM0sC,EAAYuM,GAAYj5C,EAAM,KACpC,GAAiB,MAAb0sC,EACA,MAAM,IAAIpiD,MAAM,SAEpBuH,EAAO66C,UAAYA,EAEvB,MAAOjgD,GACH,MAAM,IAAInC,MAAM,oCAGpB,OADAuH,EAAOg8B,UAAY,0CAA0C5jC,MAAM,KAAKV,KAAKC,GAAMqI,EAAOrI,KACnFqI,EAxLgB6nD,CAAoB34C,GAAUtU,EAAMuT,KAAM,IAEzD,MAAOvT,GACH,OAAO2F,GAAOnD,WAAWxC,EAAMmC,QAAS,iBAAkB,CACtDu0B,OAAQ,WACR8K,YAAAA,EAAa7gC,KAAM,CAAE4S,KAAAA,KAI7B,GAAIs5C,EAASpD,OAAO3kD,gBAAkB8nD,EAAS9nD,cAC3C,OAAOa,GAAOnD,WAAW,4BAA6B,iBAAkB,CACpE+Q,KAAAA,EAAMiuB,YAAAA,EACNF,eAAgB,sDAChBD,UAAW,iBACXD,UAAWyrB,EAASzrB,YAG5B,MAAM8rB,QAAmBxuD,KAAKyuD,cAAc3rB,EAAaqrB,EAAS9iB,SAAU8iB,EAASrD,MACrF,OAAkB,MAAd0D,EACOvnD,GAAOnD,WAAW,iCAAkC,iBAAkB,CACzEk0B,OAAQ,eACR8K,YAAAA,EAAa7gC,KAAM,CAAE4S,KAAMvT,EAAMuT,KAAM6tB,UAAWyrB,EAASzrB,aAG5DjiC,GAAuBT,KAAMopD,GAA6B,IAAKW,GAAwBxpD,KAAKP,KAAM,CACrGoL,GAAI8iD,EACJr5C,KAAMW,GAAO,CACT24C,EAASrtB,SAAU6I,GAAY,CAAC6kB,EAAYL,EAAS5M,eAE1DiC,EAAUyK,EAAU,GAE3B,MAAM3sD,IAEX0oD,GAA6BnsD,eAA0Ck1B,EAAO27B,GAC7E,MAAMviD,SAAgBnM,KAAK6qC,cAAcC,UACzC,OAAIt2B,GAAYue,EAAO,UACNtyB,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAC9GkF,OAAQ,WAAY88C,UAAWjvB,EAAO27B,oBAAAA,UAGjCjuD,GAAuBT,KAAMopD,GAA6B,IAAKU,IAA2BvpD,KAAKP,KAAM,CAC9GkF,OAAQ,WAAYs+C,SAAUr3C,EAAOq3C,SAASzwB,GAAQ27B,oBAAAA,KAE3DzE,GAA2BpsD,eAAwC8Q,EAAOggD,GACzE,IAAIxB,QAAY7C,GAAgB37C,EAAO3O,MAMvC,MAHiB,UAAbmtD,EAAIvuD,MAAoB+vD,GAAYA,EAASzvD,OAAS,IAA6B,IAAxByvD,EAAS,GAAGzM,UACvEiL,QAAY7C,GAAgB,CAAEzI,OAAQ,WAAY96C,IAAK4nD,EAAS,IAAM3uD,OAEnES,GAAuBT,KAAMqpD,GAAwB,KAAK3oD,IAAIysD,EAAI3C,MAAQ,MAClFN,GAA2BrsD,eAAwC8Q,GAClE,MAAMigD,QAAqBtE,GAAgB37C,EAAO3O,MAE5CwqD,EAAMoE,EAAapE,IACzB,IAAI2C,EAAM1sD,GAAuBT,KAAMqpD,GAAwB,KAAK3oD,IAAI8pD,GACxE,IAAK2C,EAAK,CAINA,EAAM,CAAEC,WAHWptD,KAAKqtD,eAAeuB,GAGnBpE,IAAAA,EAAKqE,eAFF,IAAIptD,QAEcqtD,QADzB,IAAIz3C,IAC8Bo2C,SAAS,EAAOC,UAAW,IAC7EjtD,GAAuBT,KAAMqpD,GAAwB,KAAK7oD,IAAIgqD,EAAK2C,GAEvE,OAAOA,GAyCX,MAAM4B,GAAQ,IAAIvoD,WAAW,IAE7B,SAASmjC,GAAYl0B,GACjB,MAAM/O,EAAS,GACf,IAAIkjC,EAAY,EAEhB,IAAK,IAAI3qC,EAAI,EAAGA,EAAIwW,EAAMvW,OAAQD,IAC9ByH,EAAO/D,KAAKosD,IACZnlB,GAAa,GAEjB,IAAK,IAAI3qC,EAAI,EAAGA,EAAIwW,EAAMvW,OAAQD,IAAK,CACnC,MAAM4V,EAAO5N,GAAO3B,SAASmQ,EAAMxW,IAEnCyH,EAAOzH,GAAKuqC,GAAOI,GAEnBljC,EAAO/D,KAAK6mC,GAAO30B,EAAK3V,SACxBwH,EAAO/D,KAAK+mC,GAAS70B,IACrB+0B,GAAa,GAAmC,GAA9B5wB,KAAKC,KAAKpE,EAAK3V,OAAS,IAE9C,OAAOsW,GAAO9O,GAElB,MAAMmK,GAAQ,qECj9Bd,IAWIm+C,GAA2BC,GAA+BC,GAAyBC,GAAuBC,GAA8BC,GAXxI5uD,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAEpFF,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAMjG,MAAMuxD,GACT1uD,YAAY0pC,GACR0kB,GAA0BzrD,IAAIvD,MAC9BZ,EAAiBY,KAAM,CAAEsqC,SAAWA,GAAY,OAEpDzsC,iBAAiB2lD,GACb,OAAO/iD,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,cAAcuvD,mBAAmBvvD,KAAKkzB,aAAcswB,GAEtK3lD,0BAA0B2lD,GACtB,OAAO/iD,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,uBAAuBwvD,4BAA4BxvD,KAAKkzB,aAAcswB,GAExL3lD,kBAAkBw2B,GACd,OAAO5zB,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,eAAeyvD,kBAAkBhvD,GAAuBT,KAAMgvD,GAA2B,IAAKE,IAAyB3uD,KAAKP,KAAMq0B,IAEpPx2B,WAAWw2B,GACP,OAAO5zB,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,QAAQO,WAAWE,GAAuBT,KAAMgvD,GAA2B,IAAKE,IAAyB3uD,KAAKP,KAAMq0B,IAEtOx2B,0BAA0Bw2B,GACtB,MAAMiW,EAAW7pC,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,uBAExH,IAAIqJ,EAAMpL,OAAOoN,OAAO,GAAIgpB,GAS5B,GARc,MAAVhrB,EAAI+B,KACJ/B,EAAI+B,GAAKk/B,EAAStV,YAAY3rB,EAAI+B,IAAIsC,MAAMtC,GAC9B,MAANA,EACOnE,GAAOlD,mBAAmB,yCAA0C,QAASsF,EAAI+B,IAErFA,KAGC,MAAZ/B,EAAI8B,KAAc,CAClB,MAAMA,EAAO9B,EAAI8B,KACjB9B,EAAI8B,KAAOjN,QAAQC,IAAI,CACnB6B,KAAKkzB,aACLlzB,KAAKg1B,YAAY7pB,KAClBuC,MAAK,EAAE6kB,EAASpnB,KACVA,GAAQonB,EAAQnsB,gBAAkB+E,EAAK/E,cAGrCmsB,EAFItrB,GAAOlD,mBAAmB,4BAA6B,UAAWoH,KAcrF,OATiB,MAAb9B,EAAIkrB,QACJlrB,EAAIkrB,MAAQv0B,KAAK0vD,uBAErBrmD,EAAMvL,EAAkBuL,GACJ,MAAhBA,EAAI41C,WACJ51C,EAAI41C,SAAW3U,EAASmlB,YAAYpmD,IAExCA,EAAMvL,EAAkBuL,SAEXvL,EAAkBuL,GAEnCxL,kBAAkBiF,GACd,MAAMwnC,EAAW7pC,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,eACxH,aAAasqC,EAAStV,YAAYlyB,GAEtCjF,sBAAsBw2B,GAClB,MAAMiW,EAAW7pC,GAAuBT,KAAMgvD,GAA2B,IAAKC,IAA+B1uD,KAAKP,KAAM,mBAClH2vD,EAAQhQ,GAAYx0C,WAAWnL,KAAK4vD,oBAAoBv7B,IAC9D,aAAaiW,EAASulB,2BAA2B7vD,KAAK8vD,gBAAgBH,KAG9EX,GAA4B,IAAI1oD,QAAW2oD,GAAgC,SAAuCvqD,GAC9G,OAAI1E,KAAKsqC,SACEtqC,KAAKsqC,SAETrjC,GAAOnD,WAAW,mBAAoB,wBAAyB,CAAEY,UAAAA,KACzEwqD,GAA0BrxD,eAAuCw2B,GAEhE,MAAM07B,EAAU,GAChB,GAAe,OAFf17B,EAAKp2B,OAAOoN,OAAO,GAAIgpB,IAEhBlpB,KAAc,CACjB,MAAMA,EAAOkpB,EAAGlpB,KAChB4kD,EAAQptD,KAAKzE,QAAQC,IAAI,CACrB6B,KAAKkzB,aACLlzB,KAAKg1B,YAAY7pB,KAClBuC,MAAK,EAAE6kB,EAASpnB,MACVA,GAAQonB,EAAQnsB,gBAAkB+E,EAAK/E,eACxCa,GAAOlD,mBAAmB,4BAA6B,UAAWoH,GAEtEkpB,EAAGlpB,KAAOonB,MAIlB,aADMr0B,QAAQC,IAAI4xD,GACX17B,GAEJ,MAAM27B,WAAmBV,GAC5B1uD,YAAY2xB,EAAS+X,GACjBj8B,MAAMi8B,GACN6kB,GAAsB5rD,IAAIvD,MAC1BZ,EAAiBY,KAAM,CAAEuyB,QAAAA,IAE7B10B,mBAAqB,OAAOmC,KAAKuyB,QACjC09B,QAAQ3lB,GACJ,OAAO,IAAI0lB,GAAWhwD,KAAKuyB,QAAS+X,GAExCzsC,sBAAsBw2B,GAClB5zB,GAAuBT,KAAMmvD,GAAuB,IAAKC,IAA8B7uD,KAAKP,KAAM,eAAgB,mBAEtHnC,kBAAkB4F,GACdhD,GAAuBT,KAAMmvD,GAAuB,IAAKC,IAA8B7uD,KAAKP,KAAM,WAAY,eAElHnC,oBAAoB2hC,EAAQ3gC,EAAOd,GAC/B0C,GAAuBT,KAAMmvD,GAAuB,IAAKC,IAA8B7uD,KAAKP,KAAM,aAAc,kBAGxHmvD,GAAwB,IAAI7oD,QAAW8oD,GAA+B,SAAsC9kD,EAAQ5F,GAChH,OAAOuC,GAAOnD,WAAW,0BAA0BwG,IAAU,wBAAyB,CAClF5F,UAAAA,KAGD,MAAMwrD,WAAsBZ,GAE/B1uD,YAAYuvD,GACR9hD,MAAM8hD,EAAO7lB,UACb+kB,GAAsB7uD,IAAIR,UAAM,GAChCD,GAAuBC,KAAMqvD,GAAuBc,EAAQ,KAEhEtyD,mBACI,aAAa4C,GAAuBT,KAAMqvD,GAAuB,KAAKn8B,aAE1E+8B,QAAQ3lB,GACJ,OAAO,IAAI4lB,GAAczvD,GAAuBT,KAAMqvD,GAAuB,KAAKY,QAAQ3lB,IAE9FzsC,sBAAsBw2B,GAClB,aAAa5zB,GAAuBT,KAAMqvD,GAAuB,KAAKS,gBAAgBz7B,GAE1Fx2B,sBAAsBw2B,GAClB,aAAa5zB,GAAuBT,KAAMqvD,GAAuB,KAAKe,gBAAgB/7B,GAE1Fx2B,kBAAkB4F,GACd,aAAahD,GAAuBT,KAAMqvD,GAAuB,KAAKgB,YAAY5sD,GAEtF5F,oBAAoB2hC,EAAQ3gC,EAAOd,GAC/B,aAAa0C,GAAuBT,KAAMqvD,GAAuB,KAAKiB,cAAc9wB,EAAQ3gC,EAAOd,IAG3GsxD,GAAwB,IAAI5tD,QCtJ5B,MAAM8uD,GAAQ,IAAI5oD,IACX,SAAS6oD,GAAoBC,GAC5BF,GAAMjwD,IAAImwD,KAGdF,GAAMhtD,IAAIktD,GACV3pD,QAAQC,IAAI,8BACZD,QAAQC,IAAI,6BAA6B0pD,yCACzC3pD,QAAQC,IAAI,IACZD,QAAQC,IAAI,6EACZD,QAAQC,IAAI,sEACZD,QAAQC,IAAI,IACZD,QAAQC,IAAI,2EACZD,QAAQC,IAAI,0EACZD,QAAQC,IAAI,iFACZD,QAAQC,IAAI,IACZD,QAAQC,IAAI,sDACZD,QAAQC,IAAI,+BClBhB,IAWI2pD,GAA+BC,GAA8BC,GAAqCC,GAA4BC,GAA6BC,GAA0BC,GAA8BC,GAXnNlxD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAOjF,MAAMixD,GACTtwD,YAAY0pC,GACRomB,GAA8BntD,IAAIvD,MAClC2wD,GAA6BnwD,IAAIR,UAAM,GACvC4wD,GAAoCpwD,IAAIR,UAAM,GAC9C6wD,GAA2BrwD,IAAIR,UAAM,GACrC8wD,GAA4BtwD,IAAIR,UAAM,GACtCD,GAAuBC,KAAM2wD,GAA8BrmB,EAAU,KACrEvqC,GAAuBC,KAAM4wD,GAAqC,KAAM,KACxE7wD,GAAuBC,KAAM6wD,GAA4BpwD,GAAuBT,KAAM0wD,GAA+B,IAAKK,IAA0B92C,KAAKja,MAAO,KAChKD,GAAuBC,KAAM8wD,GAA6B,KAAM,KAEpEK,WAAW7mB,GACP,MAAM,IAAInrC,MAAM,iCAEpBiyD,aAAa9mB,EAAU5jC,GACnB,MAAM,IAAIvH,MAAM,iCAEpBkyD,SAAS/mB,GACL,MAAM,IAAInrC,MAAM,iCAEpB0W,QAAUpV,GAAuBT,KAAM0wD,GAA+B,IAAKK,IAA0BxwD,KAAKP,MAAO,GACjHuoD,OACI9nD,GAAuBT,KAAM0wD,GAA+B,IAAKM,IAA8BzwD,KAAKP,MACpGS,GAAuBT,KAAM2wD,GAA8B,KAAK3vD,IAAI,QAASP,GAAuBT,KAAM6wD,GAA4B,MAE1IpI,MAAMC,GACEA,GACAjoD,GAAuBT,KAAM0wD,GAA+B,IAAKM,IAA8BzwD,KAAKP,MAExGS,GAAuBT,KAAM2wD,GAA8B,KAAK3vD,IAAI,QAASP,GAAuBT,KAAM6wD,GAA4B,MAE1IlI,SAAW3oD,KAAK6V,SAEpB86C,GAA+B,IAAIlvD,QAAWmvD,GAAsC,IAAInvD,QAAWovD,GAA6B,IAAIpvD,QAAWqvD,GAA8B,IAAIrvD,QAAWivD,GAAgC,IAAIpqD,QAAWyqD,GAA2BlzD,eAAwCokD,GAC1S,IACkF,MAA1ExhD,GAAuBT,KAAM4wD,GAAqC,MAClE7wD,GAAuBC,KAAM4wD,GAAqC5wD,KAAKmxD,WAAW1wD,GAAuBT,KAAM2wD,GAA8B,MAAO,KAExJ,MAAMW,QAAiB7wD,GAAuBT,KAAM4wD,GAAqC,KACzF,GAAgB,MAAZU,EAEA,YADA7wD,GAAuBT,KAAM2wD,GAA8B,KAAKrD,mBAAmBttD,KAAMA,KAAKqxD,SAAS5wD,GAAuBT,KAAM2wD,GAA8B,OAGtK,MAAMnkB,QAAgB/rC,GAAuBT,KAAM2wD,GAA8B,KAAK9lB,aAItF,GAHKpqC,GAAuBT,KAAM8wD,GAA6B,MAC3D/wD,GAAuBC,KAAM8wD,GAA6BtkB,EAAS,KAEnE/rC,GAAuBT,KAAM8wD,GAA6B,KAAKrzB,UAAY+O,EAAQ/O,QACnF,MAAM,IAAIt+B,MAAM,iBAEpB,MAAMuH,QAAejG,GAAuBT,KAAM2wD,GAA8B,KAAKY,KAAK,uBAAwB,CAACD,UAC7GtxD,KAAKoxD,aAAa3wD,GAAuBT,KAAM2wD,GAA8B,KAAMjqD,GAE7F,MAAOpF,GACHwF,QAAQC,IAAI,QAASzF,GAEzBb,GAAuBT,KAAM2wD,GAA8B,KAAK9D,KAAK,QAASpsD,GAAuBT,KAAM6wD,GAA4B,OACxIG,GAA+B,WAC9B,MAAMQ,EAAkB/wD,GAAuBT,KAAM4wD,GAAqC,KACtFY,IACAzxD,GAAuBC,KAAM4wD,GAAqC,KAAM,KACxEY,EAAgB9jD,MAAM4jD,IAClB7wD,GAAuBT,KAAM2wD,GAA8B,KAAKY,KAAK,sBAAuB,CAACD,SAIlG,MAAMG,WAAgCP,GACzCtwD,YAAY0pC,EAAUvpC,GAvE1B,IAAckM,EAwENoB,MAAMi8B,GACN2mB,GAA+BzwD,IAAIR,UAAM,GACzCD,GAAuBC,KAAMixD,IA1EvBhkD,EA0E4DlM,EAzE/D4C,KAAK6I,MAAM7I,KAAKC,UAAUqJ,KAyE8C,KAE/EokD,SAAS/mB,GACL,OAAO,IAAI4e,GAAuB5e,EAAU7pC,GAAuBT,KAAMixD,GAAgC,MAE7GpzD,iBAAiBysC,GACb,MAAMgnB,QAAiBhnB,EAASinB,KAAK,gBAAiB,CAAC9wD,GAAuBT,KAAMixD,GAAgC,OAEpH,OADAnqD,QAAQC,IAAI,UAAWuqD,GAChBA,EAEXzzD,mBAAmBysC,EAAUonB,GACzB,MAAMllB,QAAgBlC,EAASO,aAC/B,IAAK,MAAMnkC,KAAUgrD,EAAS,CAC1B,MAAM3qD,EAAMylC,EAAQ1B,UAAU/jC,IAAIL,EAAQ4jC,GAC1CA,EAASse,KAAKnoD,GAAuBT,KAAMixD,GAAgC,KAAMlqD,KAI7FkqD,GAAiC,IAAIxvD,QAC9B,MAAMkwD,WAAkCT,GAC3CrzD,iBAAiBysC,GACb,aAAaA,EAASinB,KAAK,kCAAmC,IAElE1zD,mBAAmBysC,EAAUonB,GACzB,MAAMllB,QAAgBlC,EAASO,aAC/B,IAAK,MAAMnkC,KAAUgrD,EACjBpnB,EAASse,KAAK,UAAWpc,EAAQ1B,UAAUzvB,KAAK3U,KC/G5D,IAWIkrD,GAA4BC,GAA6BC,GAA0BC,GAXnFhyD,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAkBxF,MAAM+xD,GAAY,+CAA+ClzD,MAAM,MAEvE,SAASmzD,GAASl0D,GACd,GAAa,MAATA,GAAiBi0D,GAAUntD,mBAA2B,EACtD,OAAO9G,EAGX,GAAkC,mBAAtBA,EAAgB,WACxB,OAAOA,EAEX,GAAIgP,MAAMN,QAAQ1O,GACd,OAAQA,EAAMK,IAAI6zD,IAEtB,GAAuB,iBAAX,EACR,OAAOh0D,OAAOD,KAAKD,GAAOQ,QAAO,CAACC,EAAOgB,KACrChB,EAAMgB,GAAOzB,EAAMyB,GACZhB,IACR,IAEP,MAAM,IAAIW,MAAM,sBAAsBpB,mBAE1C,SAASm0D,GAAan0D,GAClB,OAAIA,EACOA,EAAMqI,cAEVrI,EAKX,MAAMo0D,GAAiB,CAGnBC,SAAS,EAETC,aAAe,GAAK,GAEpBC,eAAgB,KAGb,MAAMC,GACT3xD,YAAY0pC,EAAU/X,GAClBnzB,EAAiBY,KAAM,CAAEsqC,SAAAA,EAAU/X,QAAAA,IAEvC09B,QAAQ3lB,GACJ,OAAOrjC,GAAOnD,WAAW,iCAAkC,wBAAyB,CAChFY,UAAW,mBAGnB7G,mBACI,OAAOmC,KAAKuyB,QAEhB10B,mBACI,aAAamC,KAAKsqC,SAASO,aAE/BhtC,mBACI,aAAamC,KAAKsqC,SAASkoB,aAE/B30D,kBAAkBw2B,GACd,aAAar0B,KAAKsqC,SAASmlB,YAAYp7B,GAE3Cx2B,WAAWw2B,GACP,aAAar0B,KAAKsqC,SAAS/pC,KAAK8zB,GAEpCx2B,kBAAkBiF,GACd,aAAa9C,KAAKsqC,SAAStV,YAAYlyB,GAE3CjF,iBAAiB2lD,GACb,aAAaxjD,KAAKsqC,SAASilB,aAAavvD,KAAKuyB,SAEjD10B,0BAA0B2lD,GACtB,aAAaxjD,KAAKsqC,SAASklB,sBAAsBxvD,KAAKuyB,SAI1D10B,+BAA+B+tD,GAC3B,MAAMv3B,EAAK49B,GAASrG,GACd5+C,EAAW,GAEjB,GAAIqnB,EAAGlpB,KAAM,CACT,MAAMspB,EAAQJ,EAAGlpB,KACjB6B,EAASrK,KAAK,WACV,MAAMwI,QAAa2pB,GAAeL,EAAOz0B,KAAKsqC,UAClC,MAARn/B,GAAgBA,EAAK/E,gBAAkBpG,KAAKuyB,QAAQnsB,eACpDa,GAAOlD,mBAAmB,wBAAyB,cAAe6nD,GAEtEv3B,EAAGlpB,KAAOA,GALA,SASdkpB,EAAGlpB,KAAOnL,KAAKuyB,QAWnB,GANmB,MAAf8B,EAAG4qB,UACHjyC,EAASrK,KAAK,WACV0xB,EAAG4qB,eAAiBj/C,KAAKsqC,SAASmlB,YAAYxxD,OAAOoN,OAAOpN,OAAOoN,OAAO,GAAIgpB,GAAK,CAAElpB,KAAMnL,KAAKuyB,YADtF,IAKL,MAAT8B,EAAGjpB,GAAY,CACf,MAAMqnD,EAAMp+B,EAAGjpB,GACf4B,EAASrK,KAAK,WACV0xB,EAAGjpB,SAAW0pB,GAAe29B,EAAKzyD,KAAKsqC,WAD7B,IAKdt9B,EAAS9N,cACHhB,QAAQC,IAAI6O,GAEtB,MAAM0lD,EAAQ1yD,KAAKsqC,SAASqoB,kBAAkBt+B,GAC9C,OAAOr0B,KAAKsqC,SAASinB,KAAK,sBAAuB,CAACmB,IAEtD70D,sBAAsBw2B,GAElB,MAAM4tB,QAAoBjiD,KAAKsqC,SAAS0Y,iBAElC3nC,QAAarb,KAAK4yD,yBAAyBv+B,GAIjD,iBAAkBn2B,SAAQ,CAACI,EAASouD,KAChC,MAAMmG,EAAW,CAAC,IAAM,KAClBC,EAAUj1D,UAEZ,MAAMw2B,QAAWr0B,KAAKsqC,SAASoX,eAAermC,GACpC,MAANgZ,EAKJr0B,KAAKsqC,SAASge,aAAY,KAAQwK,MAAcD,EAASxpD,OAAS,KAJ9D/K,EAAQ0B,KAAKsqC,SAAS6gB,iBAAiB92B,EAAIhZ,EAAM4mC,KAMzD6Q,OAGRj1D,sBAAsB+tD,GAClB,MAAMv3B,EAAK49B,GAASrG,GAEpB,GAAIv3B,EAAGlpB,KAAM,CACT,MAAMA,QAAa2pB,GAAeT,EAAGlpB,KAAMnL,KAAKsqC,UAChD,GAAY,MAARn/B,GAAgBA,EAAK/E,gBAAkBpG,KAAKuyB,QAAQnsB,cACpD,OAAOa,GAAOlD,mBAAmB,wBAAyB,cAAe6nD,GAE7Ev3B,EAAGlpB,KAAOA,OAGVkpB,EAAGlpB,KAAOnL,KAAKuyB,QAEnB,MAAMmgC,EAAQ1yD,KAAKsqC,SAASqoB,kBAAkBt+B,GAC9C,aAAar0B,KAAKsqC,SAASinB,KAAK,uBAAwB,CAACmB,IAE7D70D,kBAAkBk1D,GACd,MAAMtvD,EAAkC,iBAAtB,EAAkC21B,GAAY25B,GAAYA,EAC5E,aAAa/yD,KAAKsqC,SAASinB,KAAK,gBAAiB,CAC7Cl8C,GAAQ5R,GAAUzD,KAAKuyB,QAAQnsB,gBAGvCvI,oBAAoB2hC,EAAQ3gC,EAAO6Q,GAC/B,MAAM3R,EAAQk0D,GAASviD,GAEjBsjD,QAAkB50B,GAAiB60B,aAAazzB,EAAQ3gC,EAAOd,GAAOF,MAAOE,IAC/E,MAAMw0B,QAAgBuC,GAAe/2B,GACrC,OAAe,MAAXw0B,EACOtrB,GAAOlD,mBAAmB,0CAA2C,QAAShG,GAElFw0B,KAEX,aAAavyB,KAAKsqC,SAASinB,KAAK,uBAAwB,CACpDvxD,KAAKuyB,QAAQnsB,cACbzC,KAAKC,UAAUw6B,GAAiB80B,WAAWF,EAAUxzB,OAAQ3gC,EAAOm0D,EAAUj1D,UAGtFF,aAAasf,GACT,OAAOnd,KAAKsqC,SAASinB,KAAK,yBAA0B,CAChDvxD,KAAKuyB,QAAQnsB,cAAe+W,EAAU,OAI9Ctf,yBAAyBk1D,GACrB,MAAMtvD,EAAkC,iBAAtB,EAAkC21B,GAAY25B,GAAYA,EAC5E,aAAa/yD,KAAKsqC,SAASinB,KAAK,WAAY,CACxCvxD,KAAKuyB,QAAQnsB,cAAeiP,GAAQ5R,MAIzC,MAAM0vD,WAA2BxI,GACpC/pD,YAAY4rC,GACRn+B,MAAMm+B,GACNolB,GAA2BpxD,IAAIR,UAAM,GACrC6xD,GAA4BrxD,IAAIR,UAAM,GACtCD,GAAuBC,KAAM4xD,GAA4B,EAAG,KAC5D7xD,GAAuBC,KAAM6xD,GAA6B5zD,OAAOoN,OAAO,GAAI8mD,IAAiB,KAEjGiB,YAAY5zD,GACR,OAAOiB,GAAuBT,KAAM6xD,GAA6B,KAAKryD,GAE1E6zD,YAAY/9B,GAER,IAAK,MAAMhZ,KAAQgZ,EAAS,CACxB,MAAM91B,EAAM8c,EACNve,EAAQu3B,EAAQ91B,GACtB,UAAY,UAAmBiB,GAAuBT,KAAM6xD,GAA6B,KAAKryD,GAC1F,OAAOyH,GAAOlD,mBAAmB,uBAAwB,WAAWvE,IAAOzB,GAInF,IAAK,MAAMue,KAAQgZ,EAAS,CACxB,MAAM91B,EAAM8c,EACZ7b,GAAuBT,KAAM6xD,GAA6B,KAAKryD,GAAQ81B,EAAQ91B,IAGvF8zD,eAAepuD,EAAQqJ,GACnB,IAAI1E,EAAIkjD,EACR,MAAO,CACH7nD,OAAAA,EAAQqJ,OAAAA,EAAQwtB,IAAKh8B,GAAuBC,KAAM4xD,IAA6B7E,EAAKtsD,GAAuBT,KAAM4xD,GAA4B,KAAM/nD,EAAKkjD,IAAMA,GAAK,KAAMljD,GAAK0pD,QAAS,OAO/L11D,WAAWqH,EAAQqJ,GAEf,MAAM,IAAIpP,MAAM,iCAEpBtB,gBAAgB00B,EAAU,GACtB,MAAMia,QAAgBxsC,KAAK6qC,aACrB2oB,QAAiBxzD,KAAKuxD,KAAK,eAAgB,IAEjD,GAAyB,iBAAb,EAAuB,CAC/B,GAAIh/B,EAAUihC,EAASt0D,OACnB,MAAM,IAAIC,MAAM,mBAEpB,OAAO,IAAIozD,GAAcvyD,KAAMwzD,EAASjhC,IAG5CA,EAAUia,EAAQ1B,UAAUvY,QAAQA,GACpC,IAAK,MAAMkhC,KAAWD,EAClB,GAAIhnB,EAAQ1B,UAAUvY,QAAQkhC,KAAaA,EACvC,OAAO,IAAIlB,GAAcvyD,KAAMyzD,GAGvC,MAAM,IAAIt0D,MAAM,mBAIpBtB,uBACI,OAAOqoD,GAAQ/6C,KAAKlE,GAAOtB,gBAAgB3F,KAAKguD,SAAS,CAAE9oD,OAAQ,cAEvEmoD,eAAeF,GAEX,MAAiB,YAAbA,EAAIvuD,KACG,IAAI+yD,GAA0B3xD,MAExB,UAAbmtD,EAAIvuD,KACG,IAAI6yD,GAAwBzxD,KAAMmtD,EAAIpsD,QAIhC,WAAbosD,EAAIvuD,MAA2C,aAAtBuuD,EAAIpsD,OAAO8gD,OAC7B,IAAIuI,GAAoB,UAE5B/7C,MAAMg/C,eAAeF,GAEhCwF,kBAAkBt+B,GACd,MAAM3tB,EAAS,GAuBf,MArBA,CAAC,UAAW,WAAY,WAAY,OAAQ,eAAgB,uBAAwB,QAAS,SAASkB,SAASpI,IAC3G,GAAe,MAAX60B,EAAG70B,GACH,OAEJ,IAAIk0D,EAASl0D,EACD,aAARA,IACAk0D,EAAS,OAEbhtD,EAAOgtD,GAAUn+C,GAAS8e,EAAG70B,OAGjC,CAAC,OAAQ,KAAM,QAAQoI,SAASpI,IACb,MAAX60B,EAAG70B,KAGPkH,EAAOlH,GAAO6V,GAAQgf,EAAG70B,QAGzB60B,EAAGorB,aACH/4C,EAAmB,WAAIu3C,GAAc5pB,EAAGorB,aAErC/4C,EAEXitD,cAAcztB,GACV,OAAQA,EAAIhhC,QACR,IAAK,UACD,MAAO,CAAEA,OAAQ,cAAeU,KAAM,IAC1C,IAAK,iBACD,MAAO,CAAEV,OAAQ,kBAAmBU,KAAM,IAC9C,IAAK,cACD,MAAO,CAAEV,OAAQ,eAAgBU,KAAM,IAC3C,IAAK,aACD,MAAO,CACHV,OAAQ,iBACRU,KAAM,CAACssD,GAAahsB,EAAI3T,SAAU2T,EAAIsd,WAE9C,IAAK,sBACD,MAAO,CACHt+C,OAAQ,0BACRU,KAAM,CAACssD,GAAahsB,EAAI3T,SAAU2T,EAAIsd,WAE9C,IAAK,UACD,MAAO,CACHt+C,OAAQ,cACRU,KAAM,CAACssD,GAAahsB,EAAI3T,SAAU2T,EAAIsd,WAE9C,IAAK,eACD,MAAO,CACHt+C,OAAQ,mBACRU,KAAM,CACFssD,GAAahsB,EAAI3T,SAChB,KAAO2T,EAAIud,SAAS35C,SAAS,IAC9Bo8B,EAAIsd,WAGhB,IAAK,kBACD,MAAO,CACHt+C,OAAQ,yBACRU,KAAM,CAACsgC,EAAI0tB,oBAEnB,IAAK,WACD,GAAI,aAAc1tB,EACd,MAAO,CACHhhC,OAAQ,uBACRU,KAAM,CAACsgC,EAAIsd,WAAYtd,EAAIwoB,sBAG9B,GAAI,cAAexoB,EACpB,MAAO,CACHhhC,OAAQ,qBACRU,KAAM,CAACsgC,EAAI8b,YAAa9b,EAAIwoB,sBAGpC,MACJ,IAAK,iBACD,MAAO,CACHxpD,OAAQ,2BACRU,KAAM,CAACsgC,EAAI7qB,OAEnB,IAAK,wBACD,MAAO,CACHnW,OAAQ,4BACRU,KAAM,CAACsgC,EAAI7qB,OAEnB,IAAK,OACD,MAAO,CACHnW,OAAQ,WACRU,KAAM,CAAC5F,KAAK2yD,kBAAkBzsB,EAAIpD,aAAcoD,EAAIsd,WAE5D,IAAK,cACD,MAAO,CACHt+C,OAAQ,kBACRU,KAAM,CAAC5F,KAAK2yD,kBAAkBzsB,EAAIpD,eAG1C,IAAK,UASD,OARIoD,EAAInlC,QAAgC,MAAtBmlC,EAAInlC,OAAOwxB,UACrBxlB,MAAMN,QAAQy5B,EAAInlC,OAAOwxB,SACzB2T,EAAInlC,OAAOwxB,QAAU2T,EAAInlC,OAAOwxB,QAAQn0B,IAAI8zD,IAG5ChsB,EAAInlC,OAAOwxB,QAAU2/B,GAAahsB,EAAInlC,OAAOwxB,UAG9C,CAAErtB,OAAQ,cAAeU,KAAM,CAACsgC,EAAInlC,SAEnD,OAAO,KAEX8yD,YAAY3uD,EAAQU,EAAMtE,GACtB,GAAe,aAAX4D,EAAuB,CACvB,MAAMwB,EAASotD,GAAYxyD,GAC3B,OAAIoF,EAGOO,GAAOzD,UAAU,0CAA2C,iBAAkB,CACjFqR,KAAMnO,EAAOmO,KACbiuB,YAAal9B,EAAK,KAGnBqB,GAAOzD,UAAU,2CAA4C,iBAAkB,CAClFqR,KAAM,KAAMiuB,YAAal9B,EAAK,GAAI3D,KAAM,CAAEX,MAAAA,KAKlD,MAAMmC,EAAUE,KAAKC,UA8K7B,SAAwB7F,GACpB,MAAM2I,EAAS,GAEf,OADAqtD,GAAgBh2D,EAAO2I,GAChBA,EAjL4BstD,CAAe1yD,IAC9C,OAAImC,EAAQgD,MAAM,iDACPQ,GAAOzD,UAAU,oDAAqD,qBAAsB,CAC/Fs/B,YAAal9B,EAAK,KAGtBnC,EAAQgD,MAAM,UAAYhD,EAAQgD,MAAM,WACjCQ,GAAOzD,UAAU,8BAA+B,gBAAiB,CACpEs/B,YAAal9B,EAAK,KAItBnC,EAAQgD,MAAM,4BAA8BhD,EAAQgD,MAAM,eACnDQ,GAAOzD,UAAU,0BAA2B,0BAA2B,CAC1Es/B,YAAal9B,EAAK,KAGtBnC,EAAQgD,MAAM,yBACPQ,GAAOzD,UAAU,gDAAiD,wBAAyB,CAC9FkB,UAAWQ,EAAQjD,KAAM,CAAE6gC,YAAal9B,EAAK,MAGtC,gBAAXV,GAA4BzB,EAAQgD,MAAM,gFACnCQ,GAAOzD,UAAU,4EAA6E,0BAA2B,CAC5Hs/B,YAAal9B,EAAK,KAGnBtE,EAEXzD,eAAeqoC,GAGX,GAAmB,SAAfA,EAAIhhC,QAAoC,gBAAfghC,EAAIhhC,OAA0B,CACvD,IAAImvB,EAAK6R,EAAIpD,YACb,GAAIzO,GAAiB,MAAXA,EAAGz1B,MAAgBqI,GAAOtB,UAAU0uB,EAAGz1B,OAEtB,MAAnBy1B,EAAGmrB,cAAmD,MAA3BnrB,EAAGkrB,qBAA8B,CAC5D,MAAM0U,QAAgBj0D,KAAKwyD,aACC,MAAxByB,EAAQzU,cAAwD,MAAhCyU,EAAQ1U,uBAExCrZ,EAAMjoC,OAAOoN,OAAO,GAAI66B,EAAK,CACzBpD,YAAa7kC,OAAOoN,OAAO,GAAIgpB,EAAI,CAAEz1B,UAAMc,QAM/D,MAAMwlC,EAAUllC,KAAK2zD,cAAcztB,GACnC,GAAe,MAAXhB,EAAiB,CACjBllC,KAAK4oD,KAAK,QAAS,CAAEhqD,KAAM,cAAesmC,QAAAA,IAC1C,IACI,MAAMx+B,QAAe1G,KAAKuxD,KAAKrsB,EAAQhgC,OAAQggC,EAAQt/B,MAGvD,OADA5F,KAAK4oD,KAAK,QAAS,CAAEhqD,KAAM,cAAe8H,OAAAA,IACnCA,EAEX,MAAOpF,GAEH,MADAtB,KAAK4oD,KAAK,QAAS,CAAEhqD,KAAM,WAAY0C,MAAAA,IACjCtB,KAAK6zD,YAAY3uB,EAAQhgC,OAAQggC,EAAQt/B,KAAMtE,IAG7D,OAAO+M,MAAM2/C,SAAS9nB,IAG9B0rB,GAA6B,IAAInwD,QAAWowD,GAA8B,IAAIpwD,QACvE,MAAMyyD,WAAwBf,GACjCvyD,YAAYylC,EAAKmG,GACF,MAAPnG,IACAA,EAAM,yBAEVh4B,MAAMm+B,GACNslB,GAAyBtxD,IAAIR,UAAM,GACnC+xD,GAAiCvxD,IAAIR,UAAM,GACtB,iBAAT,EACRD,GAAuBC,KAAM8xD,GAA0B,CAAE5sB,QAAS,IAAI8B,GAAaX,IAAQ,MAG3FtmC,GAAuBC,KAAM8xD,GAA0B7zD,OAAOoN,OAAO,GAAIg7B,GAAM,KAC/E5lC,GAAuBT,KAAM8xD,GAA0B,KAAK5sB,QAAUzkC,GAAuBT,KAAM8xD,GAA0B,KAAK5sB,QAAQp8B,SAE9I/I,GAAuBC,KAAM+xD,GAAkC,IAAM,KAEzEl0D,WAAWqH,EAAQqJ,GA/dvB,IAAcxQ,EAAAA,EAgeQwQ,EAAdA,EA/dG5K,KAAK6I,MAAM7I,KAAKC,UAAU7F,IAie7B,MAAMiqC,EAAa/pC,OAAOoN,OAAO,GAAI5K,GAAuBT,KAAM8xD,GAA0B,MAC5F9pB,EAAW9C,QAAU8C,EAAW9C,QAAQp8B,QACxCk/B,EAAW9C,QAAQD,KAAOjlC,KAAKszD,eAAepuD,EAAQqJ,GACtD,MAAM62B,QAAiB2C,GAAUC,GACjC5C,EAASY,WACT,MAAMt/B,EAAS0+B,EAASC,SACxB,MAAI,UAAW3+B,EACJO,GAAOnD,WAAW,sBAAuB,gBAAiB,CAC7D4C,OAAAA,IAGDA,EAAOA,OAEd2hD,sBAAoB,OAAO5nD,GAAuBT,KAAM+xD,GAAkC,KAC1F1J,oBAAgBtqD,GAChB,IAAKwG,OAAOC,UAAUzG,IAAUA,EAAQ,EACpC,MAAM,IAAIoB,MAAM,oBAEpBY,GAAuBC,KAAM+xD,GAAkCh0D,EAAO,KACtEiC,KAAKktD,oBAAoBC,KAvdjC,SAAoBpvD,GAChB,OAAQA,GAA4C,iBAA3BA,EAAqB,iBAudlCo2D,CAAWhH,KACXA,EAAI9E,gBAAkB5nD,GAAuBT,KAAM+xD,GAAkC,UAKrGD,GAA2B,IAAIrwD,QAAWswD,GAAmC,IAAItwD,QAK1E,MAAM2yD,WAA8BF,GACvCtzD,YAAYylC,EAAKmG,GACbn+B,MAAMg4B,EAAKmG,GACXptC,EAAiBY,KAAM,CAAEwsC,QAAAA,IAE7B3uC,uBACI,OAAOmC,KAAKwsC,SAGpB,SAASsnB,GAAY/1D,GACjB,GAAa,MAATA,EACA,OAAO,KAGX,GAA+B,iBAAnBA,EAAa,SAAkBA,EAAM0F,QAAQgD,MAAM,aAAe+N,GAAYzW,EAAM8W,MAC5F,MAAO,CAAEpR,QAAS1F,EAAM0F,QAASoR,KAAM9W,EAAM8W,MAGjD,GAAuB,iBAAX,EAAqB,CAC7B,IAAK,MAAMrV,KAAOzB,EAAO,CACrB,MAAM2I,EAASotD,GAAY/1D,EAAMyB,IACjC,GAAIkH,EACA,OAAOA,EAGf,OAAO,KAGX,GAAuB,iBAAX,EACR,IACI,OAAOotD,GAAYnwD,KAAK6I,MAAMzO,IAElC,MAAOuD,IAEX,OAAO,KAEX,SAASyyD,GAAgBh2D,EAAO2I,GAC5B,GAAa,MAAT3I,EAAJ,CAQA,GAJ+B,iBAAnBA,EAAa,SACrB2I,EAAO/D,KAAK5E,EAAM0F,SAGC,iBAAX,EACR,IAAK,MAAMjE,KAAOzB,EACdg2D,GAAgBh2D,EAAMyB,GAAMkH,GAIpC,GAAuB,iBAAX,EACR,IACI,OAAOqtD,GAAgBpwD,KAAK6I,MAAMzO,GAAQ2I,GAE9C,MAAOpF,MC5kBf,MAAM+yD,GAAgB,mEAYf,MAAMC,WAAqBF,GAC9BxzD,YAAYgqD,EAAW,YAAa2J,GAChC,MAAM/nB,EAAU0Z,GAAQ/6C,KAAKy/C,GACf,MAAV2J,IACAA,EAASF,IAGbhmD,MADmBimD,GAAaE,cAAchoB,EAAS+nB,GACrC/nB,GAClBptC,EAAiBY,KAAM,CAAEu0D,OAAAA,IAEzBlmD,MAAMglD,YAAY,CAAEjB,SAAS,IAEjC9F,aAAa7uB,GACT,IACI,OAAO,IAAI62B,GAAa72B,EAASz9B,KAAKu0D,QAE1C,MAAOjzD,IACP,OAAO+M,MAAMi+C,aAAa7uB,GAE9Bx3B,qBAAqBumC,EAAS+nB,GACZ,MAAVA,IACAA,EAASF,IAEb,MAAMnvB,EAAU,IAAI8B,GAAa,WAlCzC,SAAiBlkC,GACb,OAAQA,GACJ,IAAK,YACD,MAAO,mBACX,IAAK,QACD,MAAO,uBACX,IAAK,WACD,MAAO,wBAEf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAWjB,GAyBlB2xD,CAAQjoB,EAAQ1pC,SAASyxD,KACtErvB,EAAQkC,WAAY,EAOpB,MAAO,CAAElC,QAAAA,EAASqD,cANI1qC,MAAOqnC,EAASE,EAAU6oB,KACxCsG,IAAWF,IACX7D,GAAoB,iBAEjB,IAIfkE,sBACI,OAAQ10D,KAAKu0D,SAAWF,IC9ChC,MAAMA,GAAgB,mCA4Bf,MAAMM,WAAwBP,GACjCxzD,YAAYgqD,EAAW,YAAa2J,GAChC,MAAM/nB,EAAU0Z,GAAQ/6C,KAAKy/C,GACf,MAAV2J,IACAA,EAASF,IAEbhmD,MAAMsmD,GAAgBH,cAAchoB,EAAS+nB,GAAS/nB,GACtDptC,EAAiBY,KAAM,CAAEu0D,OAAAA,IAE7BjI,aAAa7uB,GACT,IACI,OAAO,IAAIk3B,GAAgBl3B,EAASz9B,KAAKu0D,QAE7C,MAAOjzD,IACP,OAAO+M,MAAMi+C,aAAa7uB,GAE9Bi3B,sBACI,OAAQ10D,KAAKu0D,SAAWF,GAE5BpuD,qBAAqBumC,EAAS+nB,GACZ,MAAVA,IACAA,EAASF,IAEb,MAAMnvB,EAAU,IAAI8B,GAAa,WAlDzC,SAAiBlkC,GACb,OAAQA,GACJ,IAAK,YACD,MAAO,4BACX,IAAK,UACD,MAAO,4BACX,IAAK,UACD,MAAO,4BACX,IAAK,SACD,MAAO,2BACX,IAAK,QACD,MAAO,0BACX,IAAK,QACD,MAAO,gCACX,IAAK,WACD,MAAO,+BACX,IAAK,WACD,MAAO,4BACX,IAAK,mBACD,MAAO,4BACX,IAAK,WACD,MAAO,4BACX,IAAK,iBACD,MAAO,0BAEf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAWjB,GAyBlB2xD,CAAQjoB,EAAQ1pC,YAAYyxD,KACzErvB,EAAQkC,WAAY,EAOpB,MAAO,CAAElC,QAAAA,EAASqD,cANI1qC,MAAOqnC,EAASE,EAAU6oB,KACxCsG,IAAWF,IACX7D,GAAoB,YAEjB,KC5DZ,MAAMoE,WAA2BR,GACpCxzD,YAAYgqD,EAAW,aACnB,MAAMpe,EAAU0Z,GAAQ/6C,KAAKy/C,GAC7B,GAAqB,cAAjBpe,EAAQ1pC,KACR,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAW6mD,GAEvEv8C,MAAM,8BAAgCm+B,ICG9C,MAAM6nB,GAAgB,qCAChBQ,GAAoB,+BAWnB,MAAMC,WAA0BnK,GACnC/pD,YAAYgqD,EAAU2J,GAClBlmD,QACA,MAAMm+B,EAAU0Z,GAAQ/6C,KAAKy/C,GAC7B,GAAc,MAAV2J,EAAgB,CAChB,MAAMtpB,EAASuB,EAAQE,UAAUmoB,IAE7BN,EADAtpB,EACSA,EAAO8pB,gBAGPV,GAGjBj1D,EAAiBY,KAAM,CAAEu0D,OAAAA,EAAQ/nB,QAAAA,IAEjCxsC,KAAKg1D,aAETA,aACI,MAAM/pB,EAASjrC,KAAKwsC,QAAQE,UAAUmoB,IACtC,GAAI5pB,EACA,OAAOA,EAAOgqB,QAElB,OAAQj1D,KAAKwsC,QAAQ1pC,MACjB,IAAK,YACD,MAAO,2BACX,IAAK,UACD,MAAO,mCACX,IAAK,UACD,MAAO,mCACX,IAAK,QACD,MAAO,iCACX,IAAK,SACD,MAAO,kCAGf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAW/D,KAAKwsC,SAE5EvG,OAAOlsB,EAAQxL,GACX,MAAM2mD,EAAQj3D,OAAOD,KAAKuQ,GAAQhQ,QAAO,CAACC,EAAOgB,KAC7C,MAAMzB,EAAQwQ,EAAO/O,GAIrB,OAHa,MAATzB,IACAS,GAAS,IAAIgB,KAAOzB,KAEjBS,IACR,IACG+1D,EAAWv0D,KAAW,OAAI,WAAWA,KAAKu0D,SAAW,GAC3D,MAAO,GAAGv0D,KAAKg1D,2BAA2Bj7C,IAASm7C,IAAQX,IAE/DY,aACI,MAAO,GAAGn1D,KAAKg1D,mBAEnBI,YAAYr7C,EAAQxL,GAGhB,OAFAA,EAAOwL,OAASA,EAChBxL,EAAO8mD,OAASr1D,KAAKu0D,OACdhmD,EAEX1Q,sBACI,OAAOmC,KAAKwsC,QAEhB3uC,YAAYkc,EAAQxL,EAAQ+mD,GACxB,MAAMjvB,EAAOivB,EAAOt1D,KAAKm1D,aAAen1D,KAAKimC,OAAOlsB,EAAQxL,GACtDilB,EAAW8hC,EAAOt1D,KAAKo1D,YAAYr7C,EAAQxL,GAAU,KAQrD22B,EAAU,IAAI8B,GAAaX,GAC3B2B,EAAa,CACf9C,QAAAA,EACAmD,qBAAsB,IACtBI,gBAAiB5qC,MAAOqnC,EAASE,KAC7B,MAAM1+B,EAAS0+B,EAASU,UAAYniC,KAAK6I,MAAMqtB,GAAauL,EAASH,OAAS,GACxEW,GAAwC,iBAAnBl/B,EAAa,OAAkBA,EAAOA,OAAS,IAAIN,cAAcvB,QAAQ,eAAiB,EAYrH,MAXe,UAAXkV,EAEIrT,GAA2B,GAAjBA,EAAOmgC,QAAiC,SAAlBngC,EAAOjD,SAAsBmiC,GAC7DR,EAASM,mBAAmBh/B,EAAOA,QAInCk/B,GACAR,EAASM,mBAAmBh/B,EAAOA,QAGpC0+B,IAGX5R,IACA0R,EAAQmC,UAAU,eAAgB,oDAClCnC,EAAQD,KAAOhnC,OAAOD,KAAKw1B,GAASp1B,KAAKC,GAAM,GAAGA,KAAKm1B,EAAQn1B,OAAMwF,KAAK,MAE9E,MAAMuhC,QAAiB2C,GAAUC,GAEjC,GADA5C,EAASY,YACJZ,EAASU,UACV,MAAM,IAAI3mC,MAUd,MAAMuH,EAAS/C,KAAK6I,MAAMqtB,GAAauL,EAASH,OAChD,GAAe,UAAXlrB,EAAoB,CACpB,GAAsB,OAAlBrT,EAAO6sD,QAAkB,CAEzB,MAAMjyD,EAAQ,IAAInC,MAAM,oBAExB,MADAmC,EAAMoF,OAAS/C,KAAKC,UAAU8C,GACxBpF,EAEV,GAAIoF,EAAOpF,MAAO,CAEd,MAAMA,EAAQ,IAAInC,MAAMuH,EAAOpF,MAAMmC,SAAW,iBAOhD,MANIiD,EAAOpF,MAAMC,OACbD,EAAMC,KAAOmF,EAAOpF,MAAMC,MAE1BmF,EAAOpF,MAAMuT,OACbvT,EAAMuT,KAAOnO,EAAOpF,MAAMuT,MAExBvT,EAEV,OAAOoF,EAAOA,OAId,GAAqB,GAAjBA,EAAOmgC,SAAmC,qBAAnBngC,EAAOjD,SAAqD,0BAAnBiD,EAAOjD,SACvE,OAAOiD,EAAOA,OAElB,GAAqB,GAAjBA,EAAOmgC,QAAiC,MAAlBngC,EAAOjD,QAAiB,CAC9C,MAAMnC,EAAQ,IAAInC,MAAM,oBAKxB,MAJAmC,EAAMoF,OAAS/C,KAAKC,UAAU8C,GAIxBpF,EAEV,OAAOoF,EAAOA,OAItB6uD,wBAAwBzyB,GACpB,MAAMp8B,EAAS,GACf,IAAK,IAAIlH,KAAOsjC,EAAa,CACzB,GAAwB,MAApBA,EAAYtjC,GACZ,SAEJ,IAAIzB,EAAQ+kC,EAAYtjC,GACZ,SAARA,GAA4B,IAAVzB,IAQlBA,EAJA,CAAEa,MAAM,EAAMqgD,UAAU,EAAMD,UAAU,EAAMwW,aAAa,EAAMjW,sBAAsB,EAAMhrB,OAAO,EAAMx2B,OAAO,GAAOyB,GAChH+V,GAASF,GAAQtX,IAEZ,eAARyB,EACG,IAAMQ,KAAKwsC,QAAQ1B,UAAU2U,WAAW1hD,GAAOK,KAAKoC,GACjD,aAAaA,EAAI+xB,0BAA0B/xB,EAAIu9C,YAAYl6C,KAAK,cACxEA,KAAK,KAAO,IAGPwR,GAAQtX,GAEpB2I,EAAOlH,GAAOzB,GAElB,OAAO2I,EAEX+uD,YAAYvvB,EAAK5kC,EAAOwhC,GAoEpB,MAAMxhC,EAEVzD,uBACI,OAAOmC,KAAKwsC,QAEhB3uC,eAAeqoC,GACX,OAAQA,EAAIhhC,QACR,IAAK,UACD,OAAOlF,KAAKwsC,QAAQ/O,QACxB,IAAK,iBACD,OAAOz9B,KAAK2mC,MAAM,QAAS,CAAE+uB,OAAQ,oBACzC,IAAK,cACD,OAAO11D,KAAK2mC,MAAM,QAAS,CAAE+uB,OAAQ,iBACzC,IAAK,aAED,OAAO11D,KAAK2mC,MAAM,UAAW,CACzB+uB,OAAQ,UACRnjC,QAAS2T,EAAI3T,QACbi4B,IAAKtkB,EAAIsd,WAEjB,IAAK,sBACD,OAAOxjD,KAAK2mC,MAAM,QAAS,CACvB+uB,OAAQ,0BACRnjC,QAAS2T,EAAI3T,QACbi4B,IAAKtkB,EAAIsd,WAEjB,IAAK,UACD,OAAOxjD,KAAK2mC,MAAM,QAAS,CACvB+uB,OAAQ,cACRnjC,QAAS2T,EAAI3T,QACbi4B,IAAKtkB,EAAIsd,WAEjB,IAAK,eACD,OAAOxjD,KAAK2mC,MAAM,QAAS,CACvB+uB,OAAQ,mBACRnjC,QAAS2T,EAAI3T,QACbkxB,SAAUvd,EAAIud,SACd+G,IAAKtkB,EAAIsd,WAEjB,IAAK,kBACD,OAAOxjD,KAAK2mC,MAAM,QAAS,CACvB+uB,OAAQ,yBACR1lD,IAAKk2B,EAAI0tB,oBACV,GAAMrpB,OAAOjpC,GACLtB,KAAKy1D,YAAYvvB,EAAK5kC,EAAO4kC,EAAI0tB,qBAEhD,IAAK,WACD,MAAI,aAAc1tB,EACPlmC,KAAK2mC,MAAM,QAAS,CACvB+uB,OAAQ,uBACRlL,IAAKtkB,EAAIsd,SACTgB,QAAUte,EAAIwoB,oBAAsB,OAAS,UAG9CznD,GAAOnD,WAAW,mDAAoD,wBAAyB,CAClGY,UAAW,wBAEnB,IAAK,iBACD,OAAO1E,KAAK2mC,MAAM,QAAS,CACvB+uB,OAAQ,2BACRC,OAAQzvB,EAAI7qB,OAEpB,IAAK,wBACD,OAAOrb,KAAK2mC,MAAM,QAAS,CACvB+uB,OAAQ,4BACRC,OAAQzvB,EAAI7qB,OAEpB,IAAK,OAAQ,CACT,GAAqB,WAAjB6qB,EAAIsd,SACJ,MAAM,IAAIrkD,MAAM,wDAEpB,MAAMy2D,EAAW51D,KAAKu1D,wBAAwBrvB,EAAIpD,aAClD8yB,EAAS77C,OAAS,QAClB67C,EAASF,OAAS,WAClB,IACI,aAAa11D,KAAK2mC,MAAM,QAASivB,GAAU,GAE/C,MAAOt0D,GACH,OAAOtB,KAAKy1D,YAAYvvB,EAAK5kC,EAAO4kC,EAAIpD,cAGhD,IAAK,cAAe,CAChB,MAAM8yB,EAAW51D,KAAKu1D,wBAAwBrvB,EAAIpD,aAClD8yB,EAAS77C,OAAS,QAClB67C,EAASF,OAAS,kBAClB,IACI,aAAa11D,KAAK2mC,MAAM,QAASivB,GAAU,GAE/C,MAAOt0D,GACH,OAAOtB,KAAKy1D,YAAYvvB,EAAK5kC,EAAO4kC,EAAIpD,eA2DpD,OAAOz0B,MAAM2/C,SAAS9nB,GAE1BroC,mBACI,OAAOmC,KAAKwsC,QAEhB3uC,sBACI,MAA0B,cAAtBmC,KAAKwsC,QAAQ1pC,KACN,EAEJuQ,kBAAkBrT,KAAK2mC,MAAM,QAAS,CAAE+uB,OAAQ,cAAeG,QAE1EnB,sBACI,MAAMzpB,EAASjrC,KAAKwsC,QAAQE,UAAUmoB,IACtC,OAAI5pB,EACQA,EAAO8pB,kBAAoB/0D,KAAKu0D,OAEpCF,KAAkBr0D,KAAKu0D,QCravC,MAAMuB,GAAmB,mCA4BlB,MAAMC,WAAuB3B,GAChCxzD,YAAYgqD,EAAW,YAAaoL,EAAWC,GAC3C,MAAMzpB,EAAU0Z,GAAQ/6C,KAAKy/C,GACZ,MAAboL,IACAA,EAAYF,IAEK,MAAjBG,IACAA,EAAgB,MAGpB5nD,MADmB0nD,GAAevB,cAAchoB,EAASwpB,EAAWC,GAClDzpB,GAClBptC,EAAiBY,KAAM,CAAEg2D,UAAAA,EAAWC,cAAAA,IAExC3J,aAAa7uB,GACT,IACI,OAAO,IAAIs4B,GAAet4B,EAASz9B,KAAKg2D,UAAWh2D,KAAKi2D,eAE5D,MAAO30D,IACP,OAAO+M,MAAMi+C,aAAa7uB,GAE9Bx3B,qBAAqBumC,EAASwpB,EAAWC,GACpB,MAAbD,IACAA,EAAYF,IAEK,MAAjBG,IACAA,EAAgB,MAEpB,MAAM/wB,EAAU,IAAI8B,GAAa,WAtDzC,SAAiBlkC,GACb,OAAQA,GACJ,IAAK,YACD,MAAO,oBACX,IAAK,UACD,MAAO,oBACX,IAAK,UACD,MAAO,oBACX,IAAK,QACD,MAAO,kBACX,IAAK,SACD,MAAO,mBACX,IAAK,QACD,MAAO,4BACX,IAAK,WACD,MAAO,2BACX,IAAK,WACD,MAAO,6BACX,IAAK,iBACD,MAAO,2BACX,IAAK,WACD,MAAO,6BACX,IAAK,mBACD,MAAO,6BAEf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAWjB,GA6BlB2xD,CAAQjoB,EAAQ1pC,YAAYkzD,KACzE9wB,EAAQkC,WAAY,EAChB6uB,GACA/wB,EAAQqC,eAAe,GAAI0uB,GAQ/B,MAAO,CAAE/wB,QAAAA,EAASqD,cANI1qC,MAAOqnC,EAASE,EAAU6oB,KACxC+H,IAAcF,IACdtF,GAAoB,mBAEjB,IAIfkE,sBACI,OAAQ10D,KAAKg2D,YAAcF,ICpEnC,MAAMI,GAAgB,CAClBC,UAAW,2BACXC,QAAS,2BACTC,QAAS,2BACTC,OAAQ,4BAeZ,SAASC,GAAgB/pB,EAASgqB,EAAQC,EAAsBC,GAC5DA,IAAiBA,EACjB,IAAIC,GAAY,EACZC,EAAgBJ,EAgBpB,OAfqB,MAAjBI,GACAA,EAAgBV,GAAc1pB,EAAQ1pC,MACjB,MAAjB8zD,GACA3vD,GAAOlD,mBAAmB,iDAAkD,gBAAiByyD,GAEjGE,GAAe,EACfC,GAAY,GAEPC,IAAkBV,GAAc1pB,EAAQ1pC,QAC7C4zD,GAAe,EACfC,GAAY,GAEY,MAAxBF,IACAA,EAAuB,MAEpB,CAAEG,cAAAA,EAAeH,qBAAAA,EAAsBE,UAAAA,EAAWD,aAAAA,GAEtD,MAAMG,WAAuBzC,GAChCxzD,YAAYgqD,EAAW,YAAa4L,EAAQM,EAAYC,GACpD,MAAMvqB,EAAU0Z,GAAQ/6C,KAAKy/C,IACvBgM,cAAEA,EAAaH,qBAAEA,EAAoBC,aAAEA,GAAiBH,GAAgB/pB,EAASgqB,EAAQM,EAAYC,GAE3G1oD,MADmBwoD,GAAerC,cAAchoB,EAASoqB,EAAeH,EAAsBC,GAC5ElqB,GAClBptC,EAAiBY,KAAM,CAAE42D,cAAAA,EAAeH,qBAAAA,EAAsBC,aAAAA,IAElEzwD,qBAAqBumC,EAASgqB,EAAQM,EAAYC,GAC9C,MAAMH,cAAEA,EAAaH,qBAAEA,EAAoBE,UAAEA,EAASD,aAAEA,GAAiBH,GAAgB/pB,EAASgqB,EAAQM,EAAYC,GACtH,IAAI1wB,EAAM,WA5ClB,SAAiBvjC,GACb,OAAQA,GACJ,IAAK,YACD,MAAO,mCACX,IAAK,UACD,MAAO,mCACX,IAAK,UACD,MAAO,mCACX,IAAK,SACD,MAAO,kCAEf,OAAOmE,GAAOlD,mBAAmB,sBAAuB,UAAWjB,GAiCzC2xD,CAAQjoB,EAAQ1pC,YAClC4zD,IACArwB,GAAO,OAEXA,GAAOuwB,EACP,MAAM1xB,EAAU,IAAI8B,GAAaX,GACjCnB,EAAQkC,WAAY,EAChBqvB,GACAvxB,EAAQqC,eAAe,GAAIkvB,GAQ/B,MAAO,CAAEvxB,QAAAA,EAASqD,cANI1qC,MAAOqnC,EAASE,EAAU6oB,KACxC0I,GACAnG,GAAoB,mBAEjB,IAIfkE,sBACI,OAAQ10D,KAAK42D,gBAAkBV,GAAcl2D,KAAKwsC,QAAQ1pC,OC5ElE,IAWIk0D,GAA6BC,GAA2BC,GAA0BC,GAAsCC,GAAiCC,GAA6BC,GAA+BC,GAA+BC,GAXpPz3D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IASxF,MAAMgQ,GAAOxK,OAAO,KACdmnC,GAAOnnC,OAAO,KAIpB,SAASoiC,KAAY,OAAO,IAAKptB,MAAQotB,UAEzC,MAAM4vB,GAAgB,CAAEC,aAAc,IAAKC,SAAU,EAAGC,OAAQ,GAC1DC,GAAe,CACjB5V,aAAc,EAAG6V,SAAU,EAAGC,cAAe,EAAGC,eAAgB,EAChEC,WAAY,EAAGC,kBAAmB,EAAGC,gBAAiB,EAAGC,MAAO,EAChExN,SAAU,KAAMyN,cAAe,KAAMC,WAAY,GAmBrD,SAAS/1D,GAAUiqC,EAASzuC,EAAOmoC,GAC/B,OAAQA,EAAIhhC,QACR,IAAK,UAIL,IAAK,cAEL,IAAK,aAmBL,IAAK,cACD,OAAO+B,GAAOtB,UAAU5H,GAAO+L,WAxBnC,IAAK,iBAML,IAAK,sBACD,OAAO7C,GAAOzB,UAAUzH,GAAO+L,WACnC,IAAK,UAEL,IAAK,eAWL,IAAK,OACD,OAAOuL,GAAQtX,GAVnB,IAAK,WACD,OAAImoC,EAAIwoB,oBACG/qD,KAAKC,UAAU4oC,EAAQ1B,UAAUyZ,sBAAsBxmD,IAE3D4F,KAAKC,UAAU4oC,EAAQ1B,UAAU/X,MAAMh1B,IAClD,IAAK,iBACD,OAAO4F,KAAKC,UAAU4oC,EAAQ1B,UAAUwZ,oBAAoBvmD,IAChE,IAAK,wBACD,OAAO4F,KAAKC,UAAU4oC,EAAQ1B,UAAU2Z,QAAQ1mD,IAKpD,IAAK,UACD,OAAO4F,KAAKC,UAAU7F,EAAMK,KAAKK,GAAM+tC,EAAQ1B,UAAU/jC,IAAItI,MAErE,OAAOwI,GAAOnD,WAAW,qBAAsB,wBAAyB,CACpEY,UAAW,YAAYf,KAAKC,UAAUsiC,EAAIhhC,aAKlD,SAASqzD,GAAYC,EAAQ9G,GACzB,MAAM+G,EAAQ,IAAIphD,IAClB,IAAK,MAAM3Q,OAAEA,EAAMgyD,OAAEA,EAAMd,OAAEA,KAAYlG,EAAS,CAC9C,MAAM3yD,EAAI05D,EAAM/3D,IAAIg4D,IAAW,CAAEhyD,OAAAA,EAAQkxD,OAAQ,GACjD74D,EAAE64D,QAAUA,EACZa,EAAMj4D,IAAIk4D,EAAQ35D,GAEtB,IACI45D,EADAC,EAAa,EAEjB,IAAK,MAAMhB,OAAEA,EAAMlxD,OAAEA,KAAY+xD,EAAMn5D,SAC/Bs4D,GAAUY,GAAUZ,EAASgB,IAC7BA,EAAahB,EACbe,EAAajyD,GAGrB,OAAOiyD,EAQX,SAASE,GAAUnH,GAEf,MAAMpyD,EAASoyD,EAAQtzD,KAAK4xB,GAAMvqB,OAAOuqB,EAAEtpB,UAC3CpH,EAAO0/B,MAAK,CAAC9sB,EAAGC,IAAQD,EAAIC,GAAM,EAAKA,EAAID,EAAK,EAAI,IACpD,MAAM4mD,EAAMx5D,EAAOJ,OAAS,EAE5B,OAAII,EAAOJ,OAAS,EACTI,EAAOw5D,IAGVx5D,EAAOw5D,EAAM,GAAKx5D,EAAOw5D,GAAO7oD,IAAQ28B,GA+B7C,MAAMmsB,WAAyBpO,GAClC/pD,YAAYo4D,EAAWxsB,GACnBn+B,MAAMm+B,GACNwqB,GAA4BzzD,IAAIvD,MAChCi3D,GAA0Bz2D,IAAIR,UAAM,GACpCk3D,GAAyB12D,IAAIR,UAAM,GACnCm3D,GAAqC32D,IAAIR,UAAM,GAC/CD,GAAuBC,KAAMi3D,GAA2B+B,EAAU56D,KAAKoQ,GAC/DA,aAAam8C,GACN1sD,OAAOoN,OAAO,CAAEi/B,SAAU97B,GAAKipD,GAAeI,IAG9C55D,OAAOoN,OAAO,GAAIosD,GAAejpD,EAAGqpD,MAE/C,KACJ93D,GAAuBC,KAAMk3D,IAA2B,EAAG,KAC3Dn3D,GAAuBC,KAAMm3D,GAAsC,KAAM,KACzEn3D,KAAKw4D,OAAS,EACdx4D,KAAKi5D,YAAc,EACnBj5D,KAAKk5D,aAAe,EAChBl5D,KAAKw4D,OAAS/3D,GAAuBT,KAAMi3D,GAA2B,KAAK14D,QAAO,CAAC2T,EAAG3F,IAAO2F,EAAI3F,EAAEqrD,QAAS,IAC5G3wD,GAAOlD,mBAAmB,gCAAiC,SAAU/D,KAAKw4D,QAI9EW,sBACA,OAAO14D,GAAuBT,KAAMi3D,GAA2B,KAAKpuD,QAExEhL,uBACI,OAAOqoD,GAAQ/6C,KAAKlE,GAAOtB,gBAAgB3F,KAAKguD,SAAS,CAAE9oD,OAAQ,cAAe2C,SAEtFhK,eAAeqoC,SACLzlC,GAAuBT,KAAMg3D,GAA6B,IAAKM,IAA+B/2D,KAAKP,MAEzG,MAAMo5D,EAAU,IAAIzxD,IACpB,IAAK,IAAI1I,EAAI,EAAGA,EAAIe,KAAKw4D,OAAQv5D,IAC7BwB,GAAuBT,KAAMg3D,GAA6B,IAAKK,IAA6B92D,KAAKP,KAAMo5D,EAASlzB,GAEpH,MAAMx/B,EAASjG,GAAuBT,KAAMg3D,GAA6B,IAAKQ,IAAiCj3D,KAAKP,KAAMo5D,EAASlzB,GACnI,IAAK,MAAMmzB,KAAUD,EACjBC,EAAO7zB,MAAO,EAElB,OAAO9+B,GAGfuwD,GAA4B,IAAIx1D,QAAWy1D,GAA2B,IAAIz1D,QAAW01D,GAAuC,IAAI11D,QAAWu1D,GAA8B,IAAI1wD,QAAW8wD,GAAkC,SAAyCkC,GAE/P,MAAMC,EAAa94D,GAAuBT,KAAMi3D,GAA2B,KAAKpuD,SCrM7E,SAAiB8vC,GACpB,IAAK,IAAI15C,EAAI05C,EAAMz5C,OAAS,EAAGD,EAAI,EAAGA,IAAK,CACvC,MAAM6oB,EAAI9O,KAAKxG,MAAMwG,KAAK6vB,UAAY5pC,EAAI,IACpCmd,EAAMu8B,EAAM15C,GAClB05C,EAAM15C,GAAK05C,EAAM7wB,GACjB6wB,EAAM7wB,GAAK1L,GDiMfo9C,CAAQD,GACRA,EAAWv6B,MAAK,CAAC9sB,EAAGC,IAAOA,EAAEwlD,SAAWzlD,EAAEylD,WAC1C,IAAK,MAAM8B,KAAUF,EACjB,IAAiC,IAA7BD,EAAQz0D,QAAQ40D,GAChB,OAAOA,EAGf,OAAO,MACRpC,GAA8B,SAAqC+B,EAASlzB,GAC3E,MAAMuzB,EAASh5D,GAAuBT,KAAMg3D,GAA6B,IAAKI,IAAiC72D,KAAKP,KAAM+M,MAAM5B,KAAKiuD,GAASh7D,KAAK4xB,GAAMA,EAAEypC,UAC3J,GAAc,MAAVA,EACA,OAAO,KAEX,MAAM/yD,EAAS,GACT2yD,EAAS,CACXI,OAAAA,EAAQ/yD,OAAAA,EAAQgzD,SAAS,EAAOl0B,MAAM,EACtCuoB,QAAS,KAAM4L,QAAS,MAEtBj/C,EAAMmtB,KAuBZ,OAtBAwxB,EAAOtL,QAAU,WACb,IACI0L,EAAO3B,WACPpxD,EAAOA,aAAe+yD,EAAOnvB,SAAS0jB,SAAS9nB,GAEnD,MAAO5kC,GACHm4D,EAAOzB,iBACPtxD,EAAOpF,MAAQA,EAEf+3D,EAAO7zB,MACPi0B,EAAO1B,gBAEX,MAAM6B,EAAM/xB,KAAYntB,EACxB++C,EAAOnB,YAAcsB,EACrBH,EAAOtB,gBAAkB,IAAOsB,EAAOtB,gBAAkB,IAAOyB,EAChEP,EAAOtL,QAAU,MAfJ,GAiBjBsL,EAAOM,QAAU,WAtNrB,IAAe/xB,QAAAA,EAuNK6xB,EAAO/B,aAtNhB,IAAIx5D,SAASI,IAAc6b,WAAW7b,EAASspC,OAuNlDyxB,EAAOM,QAAU,MAFJ,GAIjBP,EAAQ71D,IAAI81D,GACLA,GACR/B,GAGHz5D,iBACI,IAAIg8D,EAAcp5D,GAAuBT,KAAMm3D,GAAsC,KACrF,IAAK0C,EAAa,CACd,MAAM7sD,EAAW,GACjBvM,GAAuBT,KAAMi3D,GAA2B,KAAKrvD,SAAS6xD,IAClEzsD,EAASrK,KAzNrB9E,eAA2B47D,EAAQxX,GAC/B,KAAOwX,EAAOxX,YAAc,GAAKwX,EAAOxX,YAAcA,GAC7CwX,EAAOpB,gBACRoB,EAAOpB,cAAgB,WACnB,MAAMpW,QAAoBwX,EAAOnvB,SAAS0Y,iBACtCf,EAAcwX,EAAOxX,cACrBwX,EAAOxX,YAAcA,GAEzBwX,EAAOpB,cAAgB,MALJ,UAQrBoB,EAAOpB,cACboB,EAAOxB,YA6MW6B,CAAYL,EAAQ,IAClCzsD,EAASrK,KAAK,WACV82D,EAAO7O,eAAiB6O,EAAOnvB,SAASO,cAD9B,OAIlB9qC,GAAuBC,KAAMm3D,GAAsC0C,EAAc,iBAEvE37D,QAAQC,IAAI6O,GAElB,IAAIywB,EAAU,KACd,IAAK,MAAMg8B,KAAUh5D,GAAuBT,KAAMi3D,GAA2B,KAAM,CAC/E,MAAMzqB,EAAWitB,EAAe,SACjB,MAAXh8B,EACAA,EAAU+O,EAAQ/O,QAEb+O,EAAQ/O,UAAYA,GACzBx2B,GAAOnD,WAAW,6CAA8C,wBAAyB,CACrFY,UAAW,2BAZsD,GAgB3E,WAEJm1D,GACPtC,GAAgC15D,eAA6Cu7D,EAASlzB,GAErF,MAAMwrB,EAAU,GAChB,IAAK,MAAM2H,KAAUD,EACjB,GAAI,WAAYC,EAAO3yD,OAAQ,CAC3B,MAAMA,EAAS2yD,EAAO3yD,OAAOA,OAC7BgrD,EAAQ/uD,KAAK,CACT+D,OAAAA,EACAgyD,OAAQn2D,GAAW82D,EAAOI,OAAe,SAAG/yD,EAAQw/B,GACpD0xB,OAAQyB,EAAOI,OAAO7B,SAKlC,KAAIlG,EAAQnzD,QAAO,CAAC2T,EAAG8d,IAAO9d,EAAI8d,EAAE4nC,QAAS,GAAK53D,KAAKw4D,QAAvD,CAGA,OAAQtyB,EAAIhhC,QACR,IAAK,iBAAkB,CAEnB,IAAqE,IAAjEzE,GAAuBT,KAAMk3D,GAA0B,KAAa,CACpE,MAAM6C,EAAS/gD,KAAKC,KAAKhS,GAAOzB,UAAUqzD,GAAUp4D,GAAuBT,KAAMi3D,GAA2B,KAAK74D,KAAKmO,IAAO,CACzH7F,OAAQ6F,EAAE01C,YACVyW,OAAQzxD,GAAOzB,UAAU+G,EAAE01C,aAAan4C,WACxC8tD,OAAQrrD,EAAEqrD,YACR,cACN73D,GAAuBC,KAAMk3D,GAA0B6C,EAAQ,KAEnE,MAAMC,EAnLlB,SAAsBxB,EAAQ9G,GAC1B,GAAe,IAAX8G,EACA,OAAOvxD,GAAOzB,UAAUqzD,GAAUnH,GAAU,aAEhD,MAAM+G,EAAQ,IAAIphD,IACZ9T,EAAM,CAACmD,EAAQkxD,KACjB,MAAM74D,EAAI05D,EAAM/3D,IAAIgG,IAAW,CAAEA,OAAAA,EAAQkxD,OAAQ,GACjD74D,EAAE64D,QAAUA,EACZa,EAAMj4D,IAAIkG,EAAQ3H,IAEtB,IAAK,MAAM64D,OAAEA,EAAMlxD,OAAEA,KAAYgrD,EAAS,CACtC,MAAM1hC,EAAI/oB,GAAOzB,UAAUkB,GAC3BnD,EAAIysB,EAAI,EAAG4nC,GACXr0D,EAAIysB,EAAG4nC,GACPr0D,EAAIysB,EAAI,EAAG4nC,GAEf,IACIe,EADAC,EAAa,EAEjB,IAAK,MAAMhB,OAAEA,EAAMlxD,OAAEA,KAAY+xD,EAAMn5D,SAI/Bs4D,GAAUY,IAAWZ,EAASgB,GAA6B,MAAdD,GAAsBf,IAAWgB,GAAclyD,EAASiyD,KACrGC,EAAahB,EACbe,EAAajyD,GAGrB,OAAOiyD,EAwJcsB,CAAaj6D,KAAKw4D,OAAQ9G,GACvC,QAAahyD,IAATs6D,EACA,OAKJ,OAHIA,EAAOv5D,GAAuBT,KAAMk3D,GAA0B,MAC9Dn3D,GAAuBC,KAAMk3D,GAA0B8C,EAAM,KAE1Dv5D,GAAuBT,KAAMk3D,GAA0B,KAElE,IAAK,cACL,IAAK,cACD,OAAO2B,GAAUnH,GACrB,IAAK,WAGD,MAAI,aAAcxrB,GAAwB,YAAjBA,EAAIsd,SAClBkO,EAAQ,GAAGhrD,OAEf6xD,GAAYv4D,KAAKw4D,OAAQ9G,GACpC,IAAK,UACL,IAAK,aACL,IAAK,sBACL,IAAK,UACL,IAAK,eACL,IAAK,iBACL,IAAK,wBACL,IAAK,UAEL,IAAK,OAED,OAAO6G,GAAYv4D,KAAKw4D,OAAQ9G,GACpC,IAAK,kBACD,MAAM,IAAIvyD,MAAM,QAExB,OAAO8H,GAAOnD,WAAW,qBAAsB,wBAAyB,CACpEY,UAAW,YAAYf,KAAKC,UAAUsiC,EAAIhhC,eAE/CsyD,GAAkC35D,eAAe25D,EAAgC4B,EAASlzB,GACzF,GAAqB,IAAjBkzB,EAAQ5tD,KACR,MAAM,IAAIrM,MAAM,gBAIpB,MAAM+6D,EAAc,GAGpB,IAAIC,EAAa,EACjB,IAAK,MAAMd,KAAUD,EAUbC,EAAOtL,SACPmM,EAAYv3D,KAAK02D,EAAOtL,SAGxBsL,EAAOM,QACPO,EAAYv3D,KAAK02D,EAAOM,SAIxBN,EAAOK,UAIXL,EAAOK,SAAU,EACjBS,KAaJ,MAAMp8D,QAAc0C,GAAuBT,KAAMg3D,GAA6B,IAAKO,IAA+Bh3D,KAAKP,KAAMo5D,EAASlzB,GACtI,QAAcxmC,IAAV3B,EAAqB,CACrB,GAAIA,aAAiBoB,MACjB,MAAMpB,EAEV,OAAOA,EAIX,IAAK,IAAIkB,EAAI,EAAGA,EAAIk7D,EAAYl7D,IAC5BwB,GAAuBT,KAAMg3D,GAA6B,IAAKK,IAA6B92D,KAAKP,KAAMo5D,EAASlzB,GAEpH,GAA2B,IAAvBg0B,EAAYh7D,OACZ,MAAM,IAAIC,MAAM,kBAMpB,aADMjB,QAAQk8D,KAAKF,SACNz5D,GAAuBT,KAAMg3D,GAA6B,IAAKQ,GAAiCj3D,KAAKP,KAAMo5D,EAASlzB,IEtYrI,MAAMm0B,GAbN,WACI,GAAoB,oBAATv0C,KACP,OAAOA,KAEX,GAAsB,oBAAXC,OACP,OAAOA,OAEX,GAAsB,oBAAXC,OACP,OAAOA,OAEX,MAAM,IAAI7mB,MAAM,kCAGD8mB,GAAYq0C,UCH/B,IAWIC,GAA4BC,GAA0BC,GAA4BC,GAA0BC,GAA+BC,GAAkCC,GAAkCC,GAA2BC,GAAuBC,GAAsBC,GAXvRl7D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAMjF,MAAMi7D,GACTt6D,YAAY0pC,EAAUvpC,GAClBw5D,GAA2B/5D,IAAIR,UAAM,GACrCw6D,GAAyBh6D,IAAIR,UAAM,GACnCy6D,GAA2Bj6D,IAAIR,UAAM,GACrC06D,GAAyBl6D,IAAIR,UAAM,GACnC26D,GAA8Bn6D,IAAIR,UAAM,GACxCD,GAAuBC,KAAMu6D,GAA4BjwB,EAAU,KACnEvqC,GAAuBC,KAAMw6D,GAA0B72D,KAAKC,UAAU7C,GAAS,KAC/EhB,GAAuBC,KAAMy6D,GAA4B,KAAM,KAC/D16D,GAAuBC,KAAM06D,GAA0B,KAAM,KAC7D36D,GAAuBC,KAAM26D,GAA+B,KAAM,KAElE55D,aAAW,OAAO4C,KAAK6I,MAAM/L,GAAuBT,KAAMw6D,GAA0B,MACxF3kD,QACI9V,GAAuBC,KAAMy6D,GAA4Bh6D,GAAuBT,KAAMu6D,GAA4B,KAAKhJ,KAAK,gBAAiBvxD,KAAKe,QAAQ2M,MAAM4jD,IAE5J7wD,GAAuBT,KAAMu6D,GAA4B,KAAKY,UAAU7J,EAAUtxD,MAC3EsxD,KACP,KAER/I,OACK9nD,GAAuBT,KAAMy6D,GAA4B,KAAM/sD,MAAM4jD,IAClE7wD,GAAuBT,KAAMu6D,GAA4B,KAAKhJ,KAAK,kBAAmB,CAACD,OAE3FvxD,GAAuBC,KAAMy6D,GAA4B,KAAM,KAInEhS,MAAMC,GACGA,GACDzhD,GAAOnD,WAAW,mEAAoE,wBAAyB,CAC3GY,UAAW,iBAGnB3E,GAAuBC,KAAM06D,KAA4BhS,EAAiB,KAE9EC,SACI5oD,GAAuBC,KAAM06D,GAA0B,KAAM,KAEjEU,eAAe33D,GACX,GAAqE,MAAjEhD,GAAuBT,KAAMy6D,GAA4B,MAGO,OAAhEh6D,GAAuBT,KAAM06D,GAA0B,KAAe,CACtE,IAAIW,EAAc56D,GAAuBT,KAAM26D,GAA+B,KAE1EU,EADe,MAAfA,EACcr7D,KAAKs7D,MAAM76D,GAAuBT,KAAMu6D,GAA4B,KAAM92D,GAG1E43D,EAAY3tD,MAAK7P,gBACrBmC,KAAKs7D,MAAM76D,GAAuBT,KAAMu6D,GAA4B,KAAM92D,MAGxF1D,GAAuBC,KAAM26D,GAA+BU,EAAY3tD,MAAK,KACrEjN,GAAuBT,KAAM26D,GAA+B,OAASU,GACrEt7D,GAAuBC,KAAM26D,GAA+B,KAAM,QAEtE,MAGZ98D,YAAYysC,EAAU7mC,GAClB,MAAM,IAAItE,MAAM,4CAGxBo7D,GAA6B,IAAI94D,QAAW+4D,GAA2B,IAAI/4D,QAAWg5D,GAA6B,IAAIh5D,QAAWi5D,GAA2B,IAAIj5D,QAAWk5D,GAAgC,IAAIl5D,QACzM,MAAM85D,WAA8BL,GACvCt6D,YAAY0pC,GACRj8B,MAAMi8B,EAAU,CAAC,aAErBzsC,YAAYysC,EAAU7mC,GAClB6mC,EAASse,KAAK,QAAShiD,SAASnD,EAAQu1C,UAGzC,MAAMwiB,WAAgCN,GACzCt6D,YAAY0pC,GACRj8B,MAAMi8B,EAAU,CAAC,2BAErBzsC,YAAYysC,EAAU7mC,GAClB6mC,EAASse,KAAK,UAAWnlD,IAG1B,MAAMg4D,WAA8BP,GACvCt6D,YAAY0pC,EAAUvpC,GAClBsN,MAAMi8B,EAAU,CAAC,OAAQvpC,IACzB65D,GAAiCp6D,IAAIR,UAAM,GAC3C66D,GAAiCr6D,IAAIR,UAAM,GAC3CD,GAAuBC,KAAM46D,GAAkCj3D,KAAKC,UAAU7C,GAAS,KACvFhB,GAAuBC,KAAM66D,GAAkCvwB,EAASO,aAAan9B,MAAM8+B,GAAYA,EAAQ1B,YAAY,KAE3H4wB,gBAAc,OAAO/3D,KAAK6I,MAAM/L,GAAuBT,KAAM46D,GAAkC,MACnG/8D,YAAYysC,EAAU7mC,GAClB,MAAMqnC,QAAkBrqC,GAAuBT,KAAM66D,GAAkC,KACvFvwB,EAASse,KAAKnoD,GAAuBT,KAAM46D,GAAkC,KAAM9vB,EAAU/jC,IAAItD,EAAS6mC,KAGlHswB,GAAmC,IAAIn5D,QAAWo5D,GAAmC,IAAIp5D,QAClF,MAAMk6D,WAAuBxI,GAChCvyD,YAAY4rC,GACRn+B,MAAMm+B,GACNsuB,GAA0Bt6D,IAAIR,UAAM,GACpC+6D,GAAsBv6D,IAAIR,UAAM,GAEhCg7D,GAAqBx6D,IAAIR,UAAM,GAG/Bi7D,GAAwBz6D,IAAIR,UAAM,GAClCD,GAAuBC,KAAM86D,GAA2B,IAAIzjD,IAAO,KACnEtX,GAAuBC,KAAM+6D,IAAuB,EAAO,KAC3Dh7D,GAAuBC,KAAMg7D,GAAsB,IAAI3jD,IAAO,KAC9DtX,GAAuBC,KAAMi7D,GAAyB,IAAI5jD,IAAO,KAErEg2C,eAAeF,GACX,OAAQA,EAAIvuD,MACR,IAAK,QACD,OAAO,IAAIwrD,GAAoB,SACnC,IAAK,QACD,OAAO,IAAImR,GAAsBv7D,MACrC,IAAK,UACD,OAAO,IAAIw7D,GAAwBx7D,MACvC,IAAK,QACD,OAAO,IAAIy7D,GAAsBz7D,KAAMmtD,EAAIpsD,QAC/C,IAAK,SAGD,GAA0B,aAAtBosD,EAAIpsD,OAAO8gD,OACX,OAAO,IAAIuI,GAAoB,YAG3C,OAAO/7C,MAAMg/C,eAAeF,GAEhCgO,UAAU7J,EAAUlE,GAChB3sD,GAAuBT,KAAMg7D,GAAsB,KAAKx6D,IAAI8wD,EAAUlE,GACtE,MAAMwO,EAAUn7D,GAAuBT,KAAMi7D,GAAyB,KAAKv6D,IAAI4wD,GAC/E,GAAIsK,EAAS,CACT,IAAK,MAAMn4D,KAAWm4D,EAClBxO,EAAWgO,eAAe33D,GAE9BhD,GAAuBT,KAAMi7D,GAAyB,KAAKn8B,OAAOwyB,IAG1EzzD,WAAWqH,EAAQqJ,GACf,MAAMilB,EAAUxzB,KAAKszD,eAAepuD,EAAQqJ,GACtCstD,EAAU,IAAI39D,SAAQ,CAACI,EAASouD,KAClCjsD,GAAuBT,KAAM86D,GAA2B,KAAKt6D,IAAIgzB,EAAQuI,GAAI,CAAEvI,QAAAA,EAASl1B,QAAAA,EAASouD,OAAAA,OAKrG,OAHIjsD,GAAuBT,KAAM+6D,GAAuB,YAC9C/6D,KAAK87D,OAAOn4D,KAAKC,UAAU4vB,UAExBqoC,EAGjBh+D,eACI,IAAI4C,GAAuBT,KAAM+6D,GAAuB,KAAxD,CAGAh7D,GAAuBC,KAAM+6D,IAAuB,EAAM,KAC1D,IAAK,MAAMvnC,QAAEA,KAAa/yB,GAAuBT,KAAM86D,GAA2B,KAAKx7D,eAC7EU,KAAK87D,OAAOn4D,KAAKC,UAAU4vB,KAIzC31B,sBAAsB4F,GAClB,MAAMiD,EAAS/C,KAAK6I,MAAM/I,GAC1B,GAAI,OAAQiD,EAAQ,CAChB,MAAMm1D,EAAUp7D,GAAuBT,KAAM86D,GAA2B,KAAKp6D,IAAIgG,EAAOq1B,IACxF,IAAK8/B,EAED,YADA/0D,QAAQC,IAAI,6CAIhB,GADAtG,GAAuBT,KAAM86D,GAA2B,KAAKh8B,OAAOp4B,EAAOq1B,IACvE,UAAWr1B,EAAQ,CACnB,MAAMjD,QAAEA,EAAOlC,KAAEA,EAAIsT,KAAEA,GAASnO,EAAOpF,MACjCA,EAAQ2F,GAAOzD,UAAUC,GAAW,gBAAiB,eAAgB,CACvEyhC,QAAS,MAAMvhC,KAAKC,UAAUi4D,EAAQroC,WACtCvxB,KAAM,CAAEV,KAAAA,EAAMsT,KAAAA,KAElBgnD,EAAQnP,OAAOprD,QAGfu6D,EAAQv9D,QAAQoI,EAAOA,aAG1B,GAAsB,qBAAlBA,EAAOxB,OAA+B,CAC3C,MAAMosD,EAAW5qD,EAAO6H,OAAOqgD,aACzBxB,EAAa3sD,GAAuBT,KAAMg7D,GAAsB,KAAKt6D,IAAI4wD,GAC/E,GAAIlE,EACAA,EAAWgO,eAAe10D,EAAO6H,OAAO7H,YAEvC,CACD,IAAIk1D,EAAUn7D,GAAuBT,KAAMi7D,GAAyB,KAAKv6D,IAAI4wD,GAC9D,MAAXsK,IACAA,EAAU,GACVn7D,GAAuBT,KAAMi7D,GAAyB,KAAKz6D,IAAI8wD,EAAUsK,IAE7EA,EAAQj5D,KAAK+D,EAAO6H,OAAO7H,UAIvC7I,aAAa4F,GACT,MAAM,IAAItE,MAAM,mCAGxB27D,GAA4B,IAAIr5D,QAAWs5D,GAAwB,IAAIt5D,QAAWu5D,GAAuB,IAAIv5D,QAAWw5D,GAA0B,IAAIx5D,QCpOtJ,IAWIs6D,GAXAh8D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAKjF,MAAM+7D,WAA0BL,GACnC/6D,YAAYylC,EAAKmG,GACbn+B,MAAMm+B,GACNuvB,GAA6Bv7D,IAAIR,UAAM,GAEnCD,GAAuBC,KAAM+7D,GADZ,iBAAT,EACmD,IAAIzB,GAAUj0B,GAGdA,EAHoB,KAKnFrmC,KAAKi8D,UAAUC,OAAS,KACpBl8D,KAAKm8D,UAETn8D,KAAKi8D,UAAUG,UAAa34D,IACxBzD,KAAKq8D,gBAAgB54D,EAAQoR,OAGjConD,gBAAc,OAAOx7D,GAAuBT,KAAM+7D,GAA8B,KACpFl+D,aAAa4F,GACTzD,KAAKi8D,UAAU1K,KAAK9tD,ICpBrB,SAAS64D,GAAmB9vB,EAASlX,GAIxC,GAHe,MAAXA,IACAA,EAAU,IAEW,iBAArB,GAAiCkX,EAAQ/lC,MAAM,YAC/C,OAAO,IAAIytD,GAAgB1nB,GAE/B,GAAyB,iBAAb,GAAyBA,EAAQ/lC,MAAM,YAX9B1I,EAW2DyuC,IAVvC,mBAAhBzuC,EAAU,MACN,mBAAjBA,EAAW,MAUnB,OAAO,IAAIi+D,GAAkBxvB,GAZrC,IAAyBzuC,EAcrB,MAAMi7D,EAAY,GAClB,GAAwB,MAApB1jC,EAAQinC,QACR,IACIvD,EAAUr2D,KAAK,IAAIgyD,GAAgBnoB,EAASlX,EAAQinC,UAExD,MAAOj7D,GACHwF,QAAQC,IAAIzF,GAGpB,GAAqB,MAAjBg0B,EAAQknC,KACR,IACIxD,EAAUr2D,KAAK,IAAI2xD,GAAa9nB,EAASlX,EAAQknC,OAErD,MAAOl7D,GACHwF,QAAQC,IAAIzF,GAGpB,GAA2B,MAAvBg0B,EAAQmnC,WACR,IACIzD,EAAUr2D,KAAK,IAAIiyD,GAAmBpoB,IAE1C,MAAOlrC,GACHwF,QAAQC,IAAIzF,GAGpB,GAA0B,MAAtBg0B,EAAQonC,UACR,IACI1D,EAAUr2D,KAAK,IAAImyD,GAAkBtoB,EAASlX,EAAQonC,YAE1D,MAAOp7D,GACHwF,QAAQC,IAAIzF,GAGpB,GAAuB,MAAnBg0B,EAAQqnC,OACR,IACI,IACI1G,EADAD,EAAY1gC,EAAQqnC,OAEG,iBAAf,IACR1G,EAAgBD,EAAUC,cAC1BD,EAAYA,EAAUA,WAE1BgD,EAAUr2D,KAAK,IAAIozD,GAAevpB,EAASwpB,EAAWC,IAE1D,MAAO30D,GACHwF,QAAQC,IAAIzF,GAGpB,GAAuB,MAAnBg0B,EAAQsnC,OACR,IACI,IACIC,EACAnG,EAFAoG,EAAQxnC,EAAQsnC,OAGG,iBAAX,IACRlG,IAAiBoG,EAAMpG,aACvBmG,EAAYC,EAAMD,UAClBC,EAAQA,EAAMA,OAElB9D,EAAUr2D,KAAK,IAAIk0D,GAAerqB,EAASswB,EAAOD,EAAWnG,IAEjE,MAAOp1D,GACHwF,QAAQC,IAAIzF,GAGpB,GAAyB,IAArB03D,EAAU95D,OACV,MAAM,IAAIC,MAAM,QAEpB,OAAyB,IAArB65D,EAAU95D,OACH85D,EAAU,GAEd,IAAID,GAAiBC,GDxDhC+C,GAA+B,IAAIt6D,QEpC9B,MAACs7D,QAAoBr9D,ECA1B,IAWIs9D,GAAuCC,GAXvCl9D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAKjF,MAAMi9D,WAAiBpb,GAC1BlhD,YAAYmG,EAAKo2D,EAAOz8B,GACpBryB,MAAMtH,EAAKA,EAAIujC,UAEflrC,EAAiBY,KAAM,CAAE4F,KADZu3D,EAAM35B,eAAe9C,EAAU35B,EAAI8N,KAAM9N,EAAIo8B,QAC3BzC,SAAAA,EAAU08B,UAAWD,IAEpDE,gBAAc,OAAOr9D,KAAK0gC,SAAS59B,KACnCw6D,qBAAmB,OAAOt9D,KAAK0gC,SAASv0B,UAEzC,MAAMoxD,WAAmChb,GAC5C3hD,YAAYu8D,EAAO7yB,EAAUjW,GACzBhmB,MAAMgmB,EAAIiW,GACV0yB,GAAsCx8D,IAAIR,UAAM,GAChDD,GAAuBC,KAAMg9D,GAAuCG,EAAO,KAE3E3a,WACA,OAAOn0C,MAAMm0C,KAAKpkD,KAAK2I,IACnB,MAAM25B,EAAW35B,EAAIo8B,OAAOjkC,OAASuB,GAAuBT,KAAMg9D,GAAuC,KAAKn7B,SAAS96B,EAAIo8B,OAAO,IAAM,KACxI,OAAIzC,EACO,IAAIw8B,GAASn2D,EAAKtG,GAAuBT,KAAMg9D,GAAuC,KAAMt8B,GAG5F35B,MAKvBi2D,GAAwC,IAAIv7D,QACrC,MAAM+7D,WAAoCpa,GAC7CxiD,YAAYu8D,EAAO7yB,EAAUjW,GACzBhmB,MAAMgmB,EAAIiW,GACV2yB,GAAuCz8D,IAAIR,UAAM,GACjDD,GAAuBC,KAAMi9D,GAAwCE,EAAO,KAEhFt/D,WAAWwlD,GACP,MAAMoB,QAAgBp2C,MAAMovD,OAC5B,OAAe,MAAXhZ,EACO,KAEJ,IAAI8Y,GAA2B98D,GAAuBT,KAAMi9D,GAAwC,KAAMj9D,KAAKsqC,SAAUma,IAGxIwY,GAAyC,IAAIx7D,QACtC,MAAMi8D,WAA6B/8D,EACtCC,YAAY+8D,EAAU78D,EAAUC,EAAQ2/B,EAAUk9B,GAC9CvvD,MAAMsvD,EAAU78D,EAAUC,GAC1B,MAAMgG,EAAM,IAAIm2D,GAASU,EAAMD,EAASP,UAAW18B,GAEnDthC,EAAiBY,KAAM,CAAE4F,KADZ+3D,EAASP,UAAU55B,eAAe9C,EAAU35B,EAAI8N,KAAM9N,EAAIo8B,QACxCzC,SAAAA,EAAU35B,IAAAA,IAEzCs2D,gBACA,OAAOr9D,KAAK0gC,SAAS59B,KAErBw6D,qBACA,OAAOt9D,KAAK0gC,SAASv0B,SAEzBtO,iBACI,aAAamC,KAAK+G,IAAIq7C,WAE1BvkD,uBACI,aAAamC,KAAK+G,IAAI26C,iBAE1B7jD,8BACI,aAAamC,KAAK+G,IAAIs7C,yBC7EvB,MCEMp7C,GAAS,IAAI5D,EDFH,wCEAvB,IAWIw6D,GAXA99D,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAiBxF,SAAS69D,GAAW//D,GAChB,OAAQA,GAAwC,mBAAvBA,EAAiB,YAU9C,MAAMggE,GACFn9D,YAAY+8D,EAAUj9B,EAAU96B,GAG5B,GAFAi4D,GAA4Br9D,IAAIR,UAAM,GACtCZ,EAAiBY,KAAM,CAAE0gC,SAAAA,IACrBA,EAAS9yB,OAAO1O,OAAS0G,EAAK1G,OAC9B,MAAM,IAAIC,MAAM,sBAGpB,MAAMk6D,EAAS2E,GAAUL,EAAStE,OAAQ,eACpCtkC,EAAW+oC,GAAWzE,GAAUA,EAAS,KAC/Ct5D,GAAuBC,KAAM69D,GAA6B,iBACtD,MAAMI,QAAqB//D,QAAQC,IAAIuiC,EAAS9yB,OAAOxP,KAAI,CAACqP,EAAO/O,IACxD+O,EAAMywD,UAAUt4D,EAAKlH,IAAQ,CAACE,EAAMb,IAC1B,YAATa,EACOk2B,GAAe/2B,EAAOg3B,GAE1Bh3B,OAGf,OAAO4/D,EAASP,UAAUn6B,mBAAmBvC,EAAUu9B,GATD,GAUpD,KAEVE,iBACI,OAAO19D,GAAuBT,KAAM69D,GAA6B,MAazE,SAASG,GAAUjgE,EAAOqgE,GACtB,OAAa,MAATrgE,EACO,KAEqB,mBAApBA,EAAMqgE,GACPrgE,EAEPA,EAAMusC,UAAiD,mBAA7BvsC,EAAMusC,SAAS8zB,GAClCrgE,EAAMusC,SAEV,KAEX,SAAS+zB,GAAYtgE,GACjB,OAAa,MAATA,EACO,KAEJA,EAAMusC,UAAY,KAEtBzsC,eAAeygE,GAAcC,GAEhC,MAAMC,E1B3CH,SAAqBt4B,GACxB,MAAMx/B,EAAS,GAEXw/B,EAAI96B,KACJ1E,EAAO0E,GAAK86B,EAAI96B,IAEhB86B,EAAI/6B,OACJzE,EAAOyE,KAAO+6B,EAAI/6B,MAElB+6B,EAAIrxB,OACJnO,EAAOmO,KAAOQ,GAAQ6wB,EAAIrxB,OAE9B,MAAM4pD,EAAa,qEAAqE3/D,MAAM,KAC9F,IAAK,MAAMU,KAAOi/D,EACRj/D,KAAO0mC,GAAoB,MAAZA,EAAI1mC,KAGzBkH,EAAOlH,GAAOyH,GAAOtB,UAAUugC,EAAI1mC,GAAM,WAAWA,MAExD,MAAMk/D,EAAa,aAAa5/D,MAAM,KACtC,IAAK,MAAMU,KAAOk/D,EACRl/D,KAAO0mC,GAAoB,MAAZA,EAAI1mC,KAGzBkH,EAAOlH,GAAOyH,GAAOzB,UAAU0gC,EAAI1mC,GAAM,WAAWA,MAcxD,OAZI0mC,EAAIuZ,aACJ/4C,EAAO+4C,WAAaxB,GAAc/X,EAAIuZ,aAEtC,aAAcvZ,IACdx/B,EAAO88C,SAAWtd,EAAIsd,UAEtB,mBAAoBtd,IACpBx/B,EAAOi4D,wBAA0Bz4B,EAAIwE,gBAErC,eAAgBxE,IAChBx/B,EAAOk4D,WAAa14B,EAAI04B,YAErBl4D,E0BKWm4D,CAAY1pC,GAAMW,YAAYyoC,EAAK,cAarD,OAVIC,EAAUpzD,GACVnE,GAAOlD,mBAAmB,qBAAsB,eAAgBy6D,EAAUpzD,IAErEozD,EAAU3pD,MACf5N,GAAOlD,mBAAmB,uBAAwB,iBAAkBy6D,EAAU3pD,MAG9E2pD,EAAUrzD,OACVqzD,EAAUrzD,WAAa2pB,GAAe0pC,EAAUrzD,OAE7CqzD,EA3CXX,GAA8B,IAAIp8D,QA0DlC,MAAMq9D,WAnDN,WACI,OAAOC,SAkDiBC,IACxBp+D,YAAY+8D,EAAUn+D,GAClB6O,QACAjP,EAAiBY,KAAM,CACnB8C,KAAM66D,EAASP,UAAU17B,gBAAgBliC,GACzCy/D,UAAWtB,EAAUrhD,KAAM9c,IAY/B,OAVc,IAAI8X,MAAMtX,KAAM,CAE1BgH,MAAOnJ,MAAOwB,EAAQ6/D,EAASt5D,IACVvG,EAAO8/D,eAAev5D,GAC1BqJ,eACI5P,EAAO+/D,cAAcx5D,SAEzBvG,EAAOkyD,QAAQ3rD,KAMpC86B,eACA,OAAO1gC,KAAKi/D,UAAU7B,UAAUz7B,YAAY3hC,KAAKsc,MAErD6iD,eAAev5D,GACX,OAAO5F,KAAKi/D,UAAU7B,UAAUz7B,YAAY3hC,KAAKsc,KAAM1W,GAE3D/H,6BAA6B+H,GACzB,MAAM86B,EAAW1gC,KAAKm/D,eAAev5D,GAErC,IAAI44D,EAAY,GAIhB,GAHI99B,EAAS9yB,OAAO1O,OAAS,IAAM0G,EAAK1G,SACpCs/D,QAAkBF,GAAc14D,EAAKyD,QAErCq3B,EAAS9yB,OAAO1O,SAAW0G,EAAK1G,OAChC,MAAM,IAAIC,MAAM,8EAEpB,MAAM8+D,QAjDPpgE,eAA2BwhE,EAASzxD,EAAQhI,GAE/C,MAAMyzD,EAAS2E,GAAUqB,EAAS,eAC5BtqC,EAAW+oC,GAAWzE,GAAUA,EAAS,KAC/C,aAAan7D,QAAQC,IAAIyP,EAAOxP,KAAI,CAACqP,EAAO/O,IACjC+O,EAAMywD,UAAUt4D,EAAKlH,IAAQ,CAACE,EAAMb,IAC1B,YAATa,EACOk2B,GAAe/2B,EAAOg3B,GAE1Bh3B,OAwCgBuhE,CAAYt/D,KAAKi/D,UAAU5F,OAAQ34B,EAAS9yB,OAAQhI,GAC/E,OAAO3H,OAAOoN,OAAO,GAAImzD,QAAiB1gE,EAAkB,CACxDsN,GAAIpL,KAAKi/D,UAAU/rC,aACnBre,KAAM7U,KAAKi/D,UAAU7B,UAAU56B,mBAAmB9B,EAAUu9B,MAGpEpgE,oBAAoB+H,GAChB,MAAMc,QAAe1G,KAAKu/D,oBAAoB35D,GAC9C,OAAsB,IAAlBc,EAAOxH,OACAwH,EAAO,GAEXA,EAEX7I,cAAc+H,GACV,MAAMyzD,EAASr5D,KAAKi/D,UAAU5F,OAC9B,KA/ISt7D,EA+IIs7D,IA9ImC,mBAA3Bt7D,EAAqB,gBA+ItC,OAAOkJ,GAAOnD,WAAW,wDAAyD,wBAAyB,CACvGY,UAAW,oBAjJ3B,IAAiB3G,EAoJT,MAAMs2B,QAAWglC,EAAOjJ,sBAAsBpwD,KAAK4vD,uBAAuBhqD,IACpE0kC,EAAW+zB,GAAYr+D,KAAKi/D,UAAU5F,QAC5C,OAAO,IAAImE,GAA4Bx9D,KAAKi/D,UAAU7B,UAAW9yB,EAAUjW,GAE/Ex2B,qBAAqB+H,GACjB,MAAMyzD,EAAS2E,GAAUh+D,KAAKi/D,UAAU5F,OAAQ,eAChD,OAhKat7D,EAgKIs7D,IA/J2B,mBAAvBt7D,EAAiB,kBAoKzBs7D,EAAO5J,kBAAkBzvD,KAAK4vD,uBAAuBhqD,IAJvDqB,GAAOnD,WAAW,kDAAmD,wBAAyB,CACjGY,UAAW,gBAlK3B,IAAqB3G,EAuKjBF,0BAA0B+H,GACtB,MAAMyzD,EAAS2E,GAAUh+D,KAAKi/D,UAAU5F,OAAQ,QAChD,KA5KSt7D,EA4KIs7D,IA3KwB,mBAAhBt7D,EAAU,KA4K3B,OAAOkJ,GAAOnD,WAAW,2CAA4C,wBAAyB,CAC1FY,UAAW,SA9K3B,IAAiB3G,EAiLT,MAAM2iC,EAAW1gC,KAAKm/D,eAAev5D,GAC/ByuB,QAAWr0B,KAAK4vD,uBAAuBhqD,GAC7C,IAAIc,EAAS,KACb,IACIA,QAAe2yD,EAAO94D,KAAK8zB,GAE/B,MAAO/yB,GACH,GAAIE,EAAgBF,GAChB,MAAMtB,KAAKi/D,UAAU7B,UAAU55D,UAAUk9B,EAAUp/B,EAAMuT,KAAMwf,GAEnE,MAAM/yB,EAEV,OAAOtB,KAAKi/D,UAAU7B,UAAU36B,qBAAqB/B,EAAUh6B,IAMvE,MAAM84D,WAHN,WACI,OAAOT,SAEgBU,IACvB7+D,YAAY+8D,EAAUn+D,GAMlB,OALA6O,QACAjP,EAAiBY,KAAM,CACnB8C,KAAM66D,EAASP,UAAUx7B,aAAapiC,GACtCy/D,UAAWtB,EAAUrhD,KAAM9c,IAExB,IAAI8X,MAAMtX,KAAM,CAEnBgH,MAAOnJ,MAAOwB,EAAQ6/D,EAASt5D,IACpB,IAAIm4D,GAAoBJ,EAAUt+D,EAAO8/D,eAAev5D,GAAOA,KAK9E86B,eACA,OAAO1gC,KAAKi/D,UAAU7B,UAAUv7B,SAAS7hC,KAAKsc,MAElD6iD,eAAev5D,GACX,OAAO5F,KAAKi/D,UAAU7B,UAAUv7B,SAAS7hC,KAAKsc,KAAM1W,IAQ5D,MAAM8F,GAAWC,OAAOC,IAAI,4BACtB8zD,GAAiB,IAAIj+D,QAI3B,SAASk+D,GAAYhC,GACjB,OAAO+B,GAAeh/D,IAAIi9D,EAASjyD,KAMvC7N,eAAe+hE,GAAUjC,EAAUhvD,GAC/B,IAAI+xB,EACAyC,EACJ,GAAIp2B,MAAMN,QAAQkC,GAEd+xB,EAAWi9B,EAASP,UAAUv7B,SAASlzB,EAAM,IAC7Cw0B,EAASx0B,OAER,GAAuB,iBAAX,EAEb+xB,EAAWi9B,EAASP,UAAUv7B,SAASlzB,GACvCw0B,EAAS,CAACw6B,EAASP,UAAUn7B,cAAcvB,SAE1C,IAjBW3iC,EAiBI4Q,IAhBgB,iBAAnB,GAAgC,mBAAoB5Q,GAC9B,mBAA1BA,EAAoB,gBAAqBA,EAAM2iC,SAiBxDA,EAAW/xB,EAAM+xB,SACjByC,QAAex0B,EAAMwvD,qBAEpB,CAAA,KAAI,aAAcxvD,GAOnB,MADA7H,QAAQC,IAAI4H,GACN,IAAIxP,MAAM,QALhBuhC,EAAW/xB,EAAM+xB,SACjByC,EAAS,CAACw6B,EAASP,UAAUn7B,cAAcvB,IAzBnD,IAAoB3iC,EAgChBolC,EAASA,EAAO/kC,KAAKW,IACjB,OAAS,MAALA,EACO,KAEPgO,MAAMN,QAAQ1N,IA9PP2I,EA+PU3I,EAAEX,KAAKW,GAAMA,EAAEqH,iBA9PxCsB,EAAQqF,MAAM5B,KAAK,IAAKxD,IAAID,GAAQpI,WAC9B0/B,OACCt3B,GA8PI3I,EAAEqH,cAjQjB,IAAmBsB,KA4Qf,MAAO,CAAEg5B,SAAAA,EAAU8pB,IATPrnB,EAAO/kC,KAAKW,GACX,MAALA,EACO,OAEPgO,MAAMN,QAAQ1N,GACPA,EAAE8E,KAAK,KAEX9E,IACR8E,KAAK,KACgBs/B,OAAAA,GAE5BtlC,eAAegiE,GAAOlC,EAAUhvD,GAC5B,MAAMmxD,KAAEA,GAASH,GAAYhC,GAC7B,OAAOmC,EAAKp/D,WAAWk/D,GAAUjC,EAAUhvD,IAAQ67C,MAAQ,KAE/D3sD,eAAekiE,GAAOpC,EAAUhvD,GAE5B,MAAM27B,EAAW+zB,GAAYV,EAAStE,QACtC,IAAK/uB,EACD,OAAOrjC,GAAOnD,WAAW,+CAAgD,wBAAyB,CAC9FY,UAAW,OAGnB,MAAMg8B,SAAEA,EAAQ8pB,IAAEA,EAAGrnB,OAAEA,SAAiBy8B,GAAUjC,EAAUhvD,IACtDo9B,KAAEA,EAAI+zB,KAAEA,GAASH,GAAYhC,GACnC,IAAIxQ,EAAM2S,EAAKp/D,IAAI8pD,GACnB,IAAK2C,EAAK,CACN,MACMpsD,EAAS,CAAEwxB,QADAwZ,GAAc4xB,EACLx6B,OAAAA,GACpBriC,EAAYiG,IACd,MAAMysB,EAAU,IAAIkqC,GAAqBC,EAAU,KAAMhvD,EAAO+xB,EAAU35B,GAC1E6hD,GAAK+U,EAAUhvD,EAAO6kB,EAAQ5tB,KAAM4tB,IAExC,IAAIi6B,GAAU,EAedN,EAAM,CAAE3C,IAAAA,EAAKkD,UAAW,GAAI73C,MAdd,KACN43C,IAGJnjB,EAASye,GAAGhoD,EAAQD,GACpB2sD,GAAU,IASqBlF,KAPtB,KACJkF,IAGLnjB,EAAStpC,IAAID,EAAQD,GACrB2sD,GAAU,KAGdqS,EAAKt/D,IAAIgqD,EAAK2C,GAElB,OAAOA,EAyBX,IAAI6S,GAAW9hE,QAAQI,UACvBT,eAAe+qD,GAAK+U,EAAUhvD,EAAO/I,EAAM4tB,GACvC,UACUwsC,GAEV,MAAO1+D,IACP,MAAM2+D,EA7BVpiE,eAAqB8/D,EAAUhvD,EAAO/I,EAAM4tB,SAClCwsC,GACN,MAAM7S,QAAY0S,GAAOlC,EAAUhvD,GACnC,IAAKw+C,EACD,OAAO,EAEX,MAAM/nD,EAAQ+nD,EAAIO,UAAUxuD,OAY5B,OAXAiuD,EAAIO,UAAYP,EAAIO,UAAU3sD,QAAO,EAAGD,SAAAA,EAAU+rD,KAAAA,MAC9C,MAAMqT,EAAWt6D,EAAKiD,QAClB2qB,GACA0sC,EAASv9D,KAAK,IAAI+6D,GAAqBC,EAAW9Q,EAAO,KAAO/rD,EAAW6N,EAAO6kB,EAAQkN,SAAUlN,EAAQzsB,MAEhH,IACIjG,EAASP,KAAKo9D,KAAauC,GAE/B,MAAO5+D,IACP,OAAQurD,KAEJznD,EAAQ,EAWMk2D,CAAMqC,EAAUhvD,EAAO/I,EAAM4tB,GAEnD,OADAwsC,GAAWC,QACEA,EAEjB,MAAM9oD,GAAiB,CAAC,QACjB,MAAMgpD,GACTv/D,YAAYvB,EAAQiiC,EAAK+3B,EAAS,KAAM+G,GAIpC,IAAIC,EAFJjhE,EAAiBY,KAAM,CAAEX,OAAAA,EAAQg6D,OAAAA,EAAQ+D,UAD3Bh8B,GAAUj2B,KAAKm2B,KAE7BrjC,OAAO0B,eAAeK,KAAM0L,GAAU,CAAE3N,MAAO,KAE/C,IAAIguC,EAAO,KACPu0B,EAAW,KACf,GAAIF,EAAW,CACX,MAAM91B,EAAW+zB,GAAYhF,GAC7BiH,EAAW,IAAI9C,GAA4Bx9D,KAAKo9D,UAAW9yB,EAAU81B,GAEzE,IAAIN,EAAO,IAAIzoD,IAEf,GAAwB,iBAAZ,EACR,GAAI7C,GAAYnV,GACZ0sC,EAAO1sC,EACPghE,EAAcniE,QAAQI,QAAQe,OAE7B,CACD,MAAM01B,EAAWipC,GAAU3E,EAAQ,eACnC,IAAKyE,GAAW/oC,GACZ,MAAM9tB,GAAOzD,UAAU,mDAAoD,wBAAyB,CAChGkB,UAAW,gBAGnB27D,EAActrC,EAASC,YAAY31B,GAAQqO,MAAMq+B,IAC7C,GAAY,MAARA,EACA,MAAM,IAAI5sC,MAAM,QAGpB,OADAwgE,GAAY3/D,MAAM+rC,KAAOA,EAClBA,UAKfs0B,EAAchhE,EAAO6zB,aAAaxlB,MAAMq+B,IACpC,GAAY,MAARA,EACA,MAAM,IAAI5sC,MAAM,QAGpB,OADAwgE,GAAY3/D,MAAM+rC,KAAOA,EAClBA,KA/KvB,IAAqB4xB,EAAUr+D,EAAVq+D,EAmLD39D,KAnLWV,EAmLL,CAAE+gE,YAAAA,EAAat0B,KAAAA,EAAMu0B,SAAAA,EAAUR,KAAAA,GAlLrDJ,GAAel/D,IAAIm9D,EAASjyD,IAAWpM,GAoLnC,MAAMihE,EAAU,IAAIjpD,MAAM,GAAI,CAC1B5W,IAAK,CAACrB,EAAQmhE,EAAOvgE,KAEjB,GAAIkX,GAAetS,QAAQ27D,IAAU,EACjC,OAAO/oD,QAAQ/W,IAAIrB,EAAQmhE,EAAOvgE,GAEtC,MAAMsX,EAAO9U,OAAO+9D,GACd95D,EAAS1G,KAAK6hC,SAAStqB,GAC7B,GAAI7Q,EACA,OAAOA,EAEX,MAAM,IAAIvH,MAAM,2BAA2BoY,QAKnD,OAFAnY,EAAiBY,KAAM,CAAEugE,QAAAA,IAElB,IAAIjpD,MAAMtX,KAAM,CACnBU,IAAK,CAACrB,EAAQmhE,EAAOvgE,KACjB,GAAIugE,KAASnhE,GAAU8X,GAAetS,QAAQ27D,IAAU,EACpD,OAAO/oD,QAAQ/W,IAAIrB,EAAQmhE,EAAOvgE,GAEtC,MAAMsX,EAAO9U,OAAO+9D,GACd95D,EAASrH,EAAOsiC,YAAYpqB,GAClC,GAAI7Q,EACA,OAAOA,EAEX,MAAM,IAAIvH,MAAM,4BAA4BoY,QAIxD1Z,mBAAqB,aAAa8hE,GAAY3/D,MAAMqgE,YACpDxiE,wBACI,MAAMysC,EAAW+zB,GAAYr+D,KAAKq5D,QAClC,IAAK/uB,EACD,OAAOrjC,GAAOnD,WAAW,oCAAqC,wBAAyB,CACnFY,UAAW,oBAGnB,MAAMnD,QAAa+oC,EAASm2B,cAAczgE,KAAKkzB,cAC/C,MAAa,OAAT3xB,EACO,KAEJA,EAEX1D,0BAEI,MAAMyiE,EAAWtgE,KAAK0gE,wBACtB,GAAIJ,EAEA,aADMA,EAAS7C,OACRz9D,KAIX,GAAY,YADOA,KAAK2gE,kBAEpB,OAAO3gE,KAGX,MAAMsqC,EAAW+zB,GAAYr+D,KAAKq5D,QAClC,OAAgB,MAAZ/uB,EACOrjC,GAAOnD,WAAW,6CAA8C,wBAAyB,CAC5FY,UAAW,sBAGZ,IAAIxG,SAAQ,CAACI,EAASouD,KACzB,MAAMkU,EAAY/iE,UACd,IAEI,GAAY,YADOmC,KAAK2gE,kBAEpB,OAAOriE,EAAQ0B,MAEnBsqC,EAASuiB,KAAK,QAAS+T,GAE3B,MAAOt/D,GACHorD,EAAOprD,KAGfs/D,OAGRF,wBACI,OAAOf,GAAY3/D,MAAMsgE,SAE7B3+B,YAAYniC,GAIR,MAHqB,iBAAT,IACRA,EAAMA,EAAI2M,UAEd,IAAY2yD,GAAc9+D,KAAMR,GAEpCqiC,SAASriC,GAIL,MAHqB,iBAAT,IACRA,EAAMA,EAAI2M,UAEd,IAAYqzD,GAAax/D,KAAMR,GAEnC3B,uBAAuBwd,GAEnB,MAAM,IAAIlc,MAAM,SAEpBtB,kBAAkB8Q,EAAOu1C,EAAY,EAAGE,EAAU,UAC9C,MAAMrY,KAAEA,EAAIs0B,YAAEA,GAAgBV,GAAY3/D,MACpCuyB,EAAWwZ,SAAqBs0B,GAChC3/B,SAAEA,EAAQyC,OAAEA,SAAiBy8B,GAAU5/D,KAAM2O,GAC7C5N,EAAS,CAAEwxB,QAAAA,EAAS4Q,OAAAA,EAAQ+gB,UAAAA,EAAWE,QAAAA,GACvC9Z,EAAW+zB,GAAYr+D,KAAKq5D,QAClC,OAAK/uB,SAKSA,EAAS6e,QAAQpoD,IAAS3C,KAAK2I,GAClC,IAAIm2D,GAASn2D,EAAK/G,KAAKo9D,UAAW18B,KALlCz5B,GAAOnD,WAAW,2CAA4C,wBAAyB,CAC1FY,UAAW,gBAOvB7G,SAAS8Q,EAAO7N,GACZ,MAAMqsD,QAAY4S,GAAO//D,KAAM2O,GAG/B,OAFAw+C,EAAIO,UAAU/qD,KAAK,CAAE7B,SAAAA,EAAU+rD,MAAM,IACrCM,EAAIt3C,QACG7V,KAEXnC,WAAW8Q,EAAO7N,GACd,MAAMqsD,QAAY4S,GAAO//D,KAAM2O,GAG/B,OAFAw+C,EAAIO,UAAU/qD,KAAK,CAAE7B,SAAAA,EAAU+rD,MAAM,IACrCM,EAAIt3C,QACG7V,KAEXnC,WAAW8Q,KAAU/I,GACjB,aAAagjD,GAAK5oD,KAAM2O,EAAO/I,EAAM,MAEzC/H,oBAAoB8Q,GAChB,GAAIA,EAAO,CACP,MAAMw+C,QAAY0S,GAAO7/D,KAAM2O,GAC/B,OAAKw+C,EAGEA,EAAIO,UAAUxuD,OAFV,EAIf,MAAM4gE,KAAEA,GAASH,GAAY3/D,MAC7B,IAAI2tD,EAAQ,EACZ,IAAK,MAAMD,UAAEA,KAAeoS,EAAKxgE,SAC7BquD,GAASD,EAAUxuD,OAEvB,OAAOyuD,EAEX9vD,gBAAgB8Q,GACZ,GAAIA,EAAO,CACP,MAAMw+C,QAAY0S,GAAO7/D,KAAM2O,GAC/B,OAAKw+C,EAGEA,EAAIO,UAAUtvD,KAAI,EAAG0C,SAAAA,KAAeA,IAFhC,GAIf,MAAMg/D,KAAEA,GAASH,GAAY3/D,MAC7B,IAAI0G,EAAS,GACb,IAAK,MAAMgnD,UAAEA,KAAeoS,EAAKxgE,SAC7BoH,EAASA,EAAO8O,OAAOk4C,EAAUtvD,KAAI,EAAG0C,SAAAA,KAAeA,KAE3D,OAAO4F,EAEX7I,UAAU8Q,EAAO7N,GACb,MAAMqsD,QAAY0S,GAAO7/D,KAAM2O,GAC/B,IAAKw+C,EACD,OAAOntD,KAEX,GAAIc,EAAU,CACV,MAAMpC,EAAQyuD,EAAIO,UAAUtvD,KAAI,EAAG0C,SAAAA,KAAeA,IAAU+D,QAAQ/D,GAChEpC,GAAS,GACTyuD,EAAIO,UAAUnpB,OAAO7lC,EAAO,GAOpC,OAJgB,MAAZoC,GAA6C,IAAzBqsD,EAAIO,UAAUxuD,SAClCiuD,EAAI5E,OACJoX,GAAY3/D,MAAM8/D,KAAKhhC,OAAOquB,EAAI3C,MAE/BxqD,KAEXnC,yBAAyB8Q,GACrB,GAAIA,EAAO,CACP,MAAMw+C,QAAY0S,GAAO7/D,KAAM2O,GAC/B,IAAKw+C,EACD,OAAOntD,KAEXmtD,EAAI5E,OACJoX,GAAY3/D,MAAM8/D,KAAKhhC,OAAOquB,EAAI3C,SAEjC,CACD,MAAMsV,KAAEA,GAASH,GAAY3/D,MAC7B,IAAK,MAAMwqD,IAAEA,EAAGjC,KAAEA,KAAUuX,EAAKxgE,SAC7BipD,IACAuX,EAAKhhC,OAAO0rB,GAGpB,OAAOxqD,KAGXnC,kBAAkB8Q,EAAO7N,GACrB,aAAad,KAAK+oD,GAAGp6C,EAAO7N,GAGhCjD,qBAAqB8Q,EAAO7N,GACxB,aAAad,KAAKgB,IAAI2N,EAAO7N,GAEjCmF,kBAAkBq7B,GAMd,OALA,cAA6B6+B,GACzBv/D,YAAY2xB,EAAS8mC,EAAS,MAC1BhrD,MAAMkkB,EAAS+O,EAAK+3B,KAMhCpzD,YAAY5G,EAAQiiC,EAAK+3B,EAAS,MAE9B,OADiB,IAAIr5D,KAAKX,EAAQiiC,EAAK+3B,IAOxC,MAAMwH,WAHb,WACI,OAAOV,GAEmBW,KCnoB9B,MAAMC,GAAW,gCACXC,GAAO,YACb,SAASC,GAAOC,EAAOC,GACnB,IAAIC,EAAU,GACd,OAAOF,EAAM3iE,QAAO,CAACC,EAAOkb,KACpBA,IAASynD,EACTC,IAEK1nD,EAAKjT,MAAMu6D,IAChBxiE,EAAMmE,KAAKF,OAAOC,aAAa0+D,GAAW1nD,IAG1C0nD,EAAU,GACV5iE,EAAMmE,KAAK+W,IAERlb,IACR,IAyBA,SAAS6iE,GAAUxsD,GACtB,GAAgB,MAAZA,EAAK,GACL,MAAMxU,UAAU,yBAEpB,OA3BG,SAAgBwU,EAAMirD,GAEzB,IAAK,IAAI7gE,EAAI8hE,GAAS7hE,OAAS,EAAGD,GAAK,EAAGA,IACtC4V,EAAOA,EAAK/V,MAAMiiE,GAAS9hE,IAAI4E,KAAKi8D,EAAKj5D,UAAU,EAAI5H,EAAG,EAAIA,EAAI,IAGtE,MAAMqiE,EAAS,GACTC,EAAW1sD,EAAK4jB,QAAQ,8BAA8B,CAACt6B,EAAKqZ,EAAMgqD,EAAM9nD,KAC1E,GAAI8nD,EACA,IAAK,IAAIviE,EAAI2H,SAAS46D,GAAOviE,GAAK,EAAGA,IACjCqiE,EAAO3+D,KAAK,UAIhB2+D,EAAO3+D,KAAK6U,EAAKpR,eAErB,MAAO,MAEX,GAAIm7D,EACA,MAAM,IAAIpiE,MAAM,cAAcwE,KAAKC,UAAU29D,MAEjD,OAAON,GAAOA,GAAOK,EAAQ,KAAM,KAM5BvrC,CAAOlhB,EAAKhO,UAAU,EAAI,EAAIk6D,GAAS7hE,QAAS2V,EAAKhO,UAAU,EAAG,EAAI,EAAIk6D,GAAS7hE,SC7CvF,MCEM+H,GAAS,IAAI5D,EDFH,yCEChB,MAAMo+D,GACT7gE,YAAY8gE,GACRtiE,EAAiBY,KAAM,CAAE0hE,OAAAA,IAG7B5iE,MAAM6iE,GACF,OAAOA,EAASv7D,cAActH,MAAM,OAGxC+E,KAAKq9D,GACD,OAAOA,EAAMr9D,KAAK,MCT1B,IAWI+9D,GAAwBC,GAAmBC,GAAuBC,GAAoBC,GAXtFjiE,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAOjF,MAAMgiE,WAAoBR,GAC7B7gE,YAAY8gE,EAAQ7sD,EAAMme,GACtB3kB,MAAMqzD,GACNE,GAAuBr+D,IAAIvD,MAC3B6hE,GAAkBrhE,IAAIR,UAAM,GAC5B8hE,GAAsBthE,IAAIR,UAAM,GAChC+hE,GAAmBvhE,IAAIR,UAAM,GAC7BD,GAAuBC,KAAM6hE,GAAmBhtD,EAAM,KACtD9U,GAAuBC,KAAM8hE,GAAuB9uC,EAAU,KAC9DjzB,GAAuBC,KAAM+hE,GAAoB,KAAM,KAEvDl7C,YAAU,OAAOpmB,GAAuBT,KAAM6hE,GAAmB,KACrEK,eACI,OAAOb,GAAU5gE,GAAuBT,KAAM6hE,GAAmB,MAErEM,QAAQzjE,GACJ,MAAMwiE,EAAQzgE,GAAuBT,KAAM4hE,GAAwB,IAAKI,IAAwBzhE,KAAKP,MAIrG,OAHItB,EAAQ,GAAKA,GAASwiE,EAAMhiE,SAC5B+H,GAAOlD,mBAAmB,uBAAuBrF,IAAS,QAASA,GAEhEwiE,EAAMxiE,GAEjB0jE,aAAa1oD,GACT,OAAOjZ,GAAuBT,KAAM4hE,GAAwB,IAAKI,IAAwBzhE,KAAKP,MAAM6E,QAAQ6U,IAGpHmoD,GAAoB,IAAIpgE,QAAWqgE,GAAwB,IAAIrgE,QAAWsgE,GAAqB,IAAItgE,QAAWmgE,GAAyB,IAAIt7D,QAAW07D,GAAyB,WAC3K,GAA6D,MAAzDvhE,GAAuBT,KAAM+hE,GAAoB,KAAc,CAC/D,MAAMb,EAAQlhE,KAAKkiE,eAInB,GAFiBnmC,GAAGmlC,EAAMr9D,KAAK,MAAQ,QAEtBpD,GAAuBT,KAAM8hE,GAAuB,KACjE,MAAM,IAAI3iE,MAAM,sBAAsBa,KAAK0hE,iBAG/C3hE,GAAuBC,KAAM+hE,GAAoBb,EAAO,KAE5D,OAAOzgE,GAAuBT,KAAM+hE,GAAoB,MClDrD,MAAMM,GAAS,IAHf,cAAqBJ,GACxBrhE,cAAgByN,MAAM,KAHZ,w3LACG,wECAJpH,GAAS,IAAI5D,ECFH,sCCCVi/D,GAAYrkE,OAAO4J,OAAO,CACvC06D,GAAIA,KCFJ,IAWIC,GAXAziE,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAKjF,MAAMwiE,WAAqBR,GAC9BrhE,YAAY8gE,EAAQ7sD,EAAM6tD,EAAQ1vC,GAC9B3kB,MAAMqzD,EAAQ7sD,EAAMme,GACpBwvC,GAAqBhiE,IAAIR,UAAM,GAC/BD,GAAuBC,KAAMwiE,GAAsBE,EAAQ,KAE3DC,cAAY,OAAOliE,GAAuBT,KAAMwiE,GAAsB,KAC1EN,eACI,OCpBD,SAAoBrtD,EAAM+tD,GAC7B,IAAI1B,EAAQG,GAAUxsD,GAAMhR,KAAK,KAoBjC,OAlBA++D,EAAQ9jE,MAAM,MAAM8I,SAAS86D,IACzB,MAAMj8D,EAAQi8D,EAAOj8D,MAAM,iCAC3B,IAAKA,EACD,MAAM,IAAItH,MAAM,kCAEpB,IAAI0jE,EAAY,EAChB,MAAMC,ECVP,SAAoBhzD,EAAO+E,GAC9B,MAAM9R,GAAY,GAAK+M,GAAS,EAC1BpJ,EAAS,GACf,IAAIlI,EAAQ,EAAG8R,EAAO,EAAGyyD,EAAQ,EACjC,IAAK,IAAI9jE,EAAI,EAAGA,EAAI4V,EAAK3V,OAAQD,IAK7B,IAHAT,EAAUA,GAAS,EAPZ,mEAOwBqG,QAAQgQ,EAAK5V,IAC5CqR,GAAQ,EAEDA,GAAQR,GAAO,CAElB,MAAM/R,EAASS,GAAU8R,EAAOR,EAChCtR,IAAU,GAAM8R,EAAOR,GAAU,EACjCQ,GAAQR,EAGM,IAAV/R,EACAglE,GAAShgE,GAGT2D,EAAO/D,KAAK5E,EAAQglE,GACpBA,EAAQ,GAIpB,OAAOr8D,EDfes8D,CAAWp8D,SAASH,EAAM,IAAKA,EAAM,IACjDw8D,EAAWr8D,SAASH,EAAM,IAC1By8D,EAAQ,IAAI36D,OAAO,KAAK9B,EAAM,OAAQ,KAC5Cy6D,EAAQA,EAAMzoC,QAAQyqC,GAAO,CAAC/kE,EAAK0V,KAEnB,KADEivD,EAAUD,KAEpBhvD,EAASpR,OAAOC,aAAamR,EAAO6e,WAAW,GAAIuwC,GACnDJ,KAEGhvD,QAGRqtD,EAAMpiE,MAAM,KDDRqkE,CAAWnjE,KAAK6mB,MAAO7mB,KAAK2iE,UGf3C,SAASS,GAAa9yD,GAClB,OAAS,GAAKA,GAAQ,GAAO,EAAIA,EAAQ,IAM7C,SAAS+yD,GAAkB1B,EAAU2B,EAAWjB,IAC5Cp7D,GAAOrC,gBAAgB,QACP,MAAZ0+D,IACAA,EAAWjB,IAEf,MAAMnB,EAAQoC,EAASxkE,MAAM6iE,IACxBT,EAAMhiE,OAAS,GAAO,GAAKgiE,EAAMhiE,OAAS,IAAMgiE,EAAMhiE,OAAS,KAChE+H,GAAOlD,mBAAmB,0BAA2B,WAAY,gBAErE,MAAMw/D,EAAU3uD,GAAS,IAAIpO,WAAWwS,KAAKC,KAAK,GAAKioD,EAAMhiE,OAAS,KACtE,IAAIyH,EAAS,EACb,IAAK,IAAI1H,EAAI,EAAGA,EAAIiiE,EAAMhiE,OAAQD,IAAK,CACnC,IAAIP,EAAQ4kE,EAASlB,aAAalB,EAAMjiE,GAAGsD,UAAU,UACtC,IAAX7D,GACAuI,GAAOlD,mBAAmB,kCAAkC9E,IAAK,WAAY,gBAEjF,IAAK,IAAIukE,EAAM,EAAGA,EAAM,GAAIA,IACpB9kE,EAAS,GAAM,GAAK8kE,IACpBD,EAAQ58D,GAAU,IAAO,GAAM,EAAKA,EAAS,GAEjDA,IAGR,MAAM88D,EAAc,GAAKvC,EAAMhiE,OAAS,EAElCwkE,EAAeN,GADAlC,EAAMhiE,OAAS,GAMpC,OAJiB0V,GAASmM,GAAOwiD,EAAQ16D,MAAM,EAAG46D,EAAc,KAAK,GAAKC,MACxDH,EAAQA,EAAQrkE,OAAS,GAAKwkE,IAC5Cz8D,GAAOlD,mBAAmB,4BAA6B,WAAY,gBAEhEsR,GAAQkuD,EAAQ16D,MAAM,EAAG46D,EAAc,IAElD,SAASE,GAAkBJ,EAASD,EAAWjB,KACtCkB,EAAQrkE,OAAS,GAAMqkE,EAAQrkE,OAAS,IAAMqkE,EAAQrkE,OAAS,KAChE+H,GAAOlD,mBAAmB,uBAAwB,UAAW,gBAEjD,MAAZu/D,IACAA,EAAWjB,IAEf,MAAMuB,EAAU,CAAC,GACjB,IAAIC,EAAgB,GACpB,IAAK,IAAI5kE,EAAI,EAAGA,EAAIskE,EAAQrkE,OAAQD,IAE5B4kE,EAAgB,GAChBD,EAAQA,EAAQ1kE,OAAS,KAAO,EAChC0kE,EAAQA,EAAQ1kE,OAAS,IAAMqkE,EAAQtkE,GACvC4kE,GAAiB,IAIjBD,EAAQA,EAAQ1kE,OAAS,KAAO2kE,EAChCD,EAAQA,EAAQ1kE,OAAS,IAAMqkE,EAAQtkE,IAAO,EAAI4kE,EAElDD,EAAQjhE,KAAK4gE,EAAQtkE,KAvDpB,GAuDsC,EAAI4kE,GAvD7B,EAAK,MAwDnBA,GAAiB,GAIzB,MAAMC,EAAeP,EAAQrkE,OAAS,EAChC8zB,EAAWpsB,SAASma,GAAOwiD,GAAS18D,UAAU,EAAG,GAAI,IAAMu8D,GAAaU,GAI9E,OAFAF,EAAQA,EAAQ1kE,OAAS,KAAO4kE,EAChCF,EAAQA,EAAQ1kE,OAAS,IAAO8zB,GAAa,EAAI8wC,EAC1CR,EAASz/D,KAAK+/D,EAAQxlE,KAAKM,GAAU4kE,EAASnB,QAAQzjE,MHpDjE8jE,GAAuB,IAAI/gE,QGsD3B,MAAMgK,GAAS,GACR,MAAMs4D,GACTnjE,YAAYoE,EAAOu+D,EAASS,EAAQ7mD,EAAUmmD,GAC1B,MAAZnmD,IACAA,EAAW,IAEC,MAAZmmD,IACAA,EAAWjB,IAEfp7D,GAAOnC,cAAcE,EAAOyG,GAAQ,YACpCrM,EAAiBY,KAAM,CAAEgkE,OAAAA,EAAQ7mD,SAAAA,EAAUmmD,SAAAA,EAAUC,QAAAA,IAEzDU,cACI,MAAM7mD,EAAOgc,GAAY,WAAap5B,KAAKmd,SAAU0a,EAAAA,yBAAyBqsC,MAC9E,OAAOhnD,GAAOkc,GAAYp5B,KAAKgkE,OAAQnsC,EAAwBA,yBAACqsC,MAAO9mD,EAAM,KAAM,GAAI,UAE3FnX,kBAAkB+9D,EAAQ7mD,EAAUmmD,GAEhC,MAAMC,EAAUF,GAAkBW,EAAQV,GAE1C,OADAU,EAASL,GAAkB18D,GAAO3B,SAASi+D,GAAUD,GAC9C,IAAIS,GAASt4D,GAAQ83D,EAASS,EAAQ7mD,EAAUmmD,GAE3Dr9D,mBAAmBk+D,EAAUhnD,EAAUmmD,GACnC,MAAMC,EAAUt8D,GAAO3B,SAAS6+D,EAAU,WACpCH,EAASL,GAAkBJ,EAASD,GAC1C,OAAO,IAAIS,GAASt4D,GAAQ4J,GAAQkuD,GAAUS,EAAQ7mD,EAAUmmD,GAEpEr9D,uBAAuBk+D,EAAUb,GAE7B,OAAOK,GADS18D,GAAO3B,SAAS6+D,EAAU,WACRb,GAEtCr9D,uBAAuB+9D,EAAQV,GAC3B,OAAOD,GAAkBW,EAAQV,GAErCr9D,uBAAuB+9D,EAAQV,GAC3B,IAEI,OADAD,GAAkBW,EAAQV,IACnB,EAEX,MAAOhiE,IACP,OAAO,GCvHf,IAWI8iE,GAXArkE,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IASjF,MAAMokE,WAAmB/U,GAC5B1uD,YAAY40C,EAAYlL,GACpBj8B,MAAMi8B,GACN85B,GAAuB5jE,IAAIR,UAAM,GACjCD,GAAuBC,KAAMokE,GAAwB5uB,EAAY,KAEjEp2C,EAAiBY,KAAM,CAAEuyB,QADT4rB,GAAen+C,KAAKskE,WAAW7pB,aAI/C6pB,iBAAe,OAAO7jE,GAAuBT,KAAMokE,GAAwB,KAC3E5uB,iBAAe,OAAOx1C,KAAKskE,WAAW9uB,WAC1C33C,mBAAqB,OAAOmC,KAAKuyB,QACjC09B,QAAQ3lB,GACJ,OAAO,IAAI+5B,GAAW5jE,GAAuBT,KAAMokE,GAAwB,KAAM95B,GAErFzsC,sBAAsB+tD,GAElB,MAAMv3B,EAAKp2B,OAAOoN,OAAO,GAAIugD,QAAW9tD,EAAkB,CACtDsN,GAAKwgD,EAAIxgD,GAAK0pB,GAAe82B,EAAIxgD,GAAIpL,KAAKsqC,eAAY5qC,EACtDyL,KAAOygD,EAAIzgD,KAAO2pB,GAAe82B,EAAIzgD,KAAMnL,KAAKsqC,eAAY5qC,KAEjD,MAAX20B,EAAGlpB,OACC+nB,GAAWmB,EAAGlpB,QAAUnL,KAAKuyB,SAC7BtrB,GAAOlD,mBAAmB,oCAAqC,UAAW6nD,EAAIzgD,aAE3EkpB,EAAGlpB,MAGd,MAAMo5D,EAAM5kB,GAAYx0C,KAAKkpB,GAE7B,OADAkwC,EAAI3jC,UAAY5gC,KAAKskE,WAAWjoB,KAAKkoB,EAAI1kB,cAClC0kB,EAAI/2B,WAEf3vC,kBAAkB4F,GACd,OAAOzD,KAAKskE,WAAWjoB,KAAK9f,GAAY94B,IAAU+pC,WAEtD3vC,oBAAoB2hC,EAAQ3gC,EAAOd,GAE/B,MAAMi1D,QAAkB50B,GAAiB60B,aAAazzB,EAAQ3gC,EAAOd,GAAOF,MAAOiF,IAC/E,GAAqB,MAAjB9C,KAAKsqC,SACL,OAAOrjC,GAAOnD,WAAW,8CAA+C,wBAAyB,CAC7FY,UAAW,cACXzC,KAAM,CAAEa,KAAAA,KAGhB,MAAMyvB,QAAgBvyB,KAAKsqC,SAAStV,YAAYlyB,GAChD,OAAe,MAAXyvB,EACOtrB,GAAOnD,WAAW,wBAAyB,oBAAqB,CACnE/F,MAAO+E,IAGRyvB,KAEX,OAAOvyB,KAAKskE,WAAWjoB,KAAKje,GAAiB/iB,KAAK23C,EAAUxzB,OAAQ3gC,EAAOm0D,EAAUj1D,QAAQyvC,YAGrG42B,GAAyB,IAAI3iE,QCzE7B,IAWIoI,GAAI26D,GAAwBC,GAX5BhkE,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAEpFF,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAc3F2mE,MAAAA,GAAc,mBAErBC,GAAe,IAAIn+D,WAAW,CAAC,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,MACnFo+D,GAAc,WACdv0C,GAAI5qB,OAAO,sEAEjB,SAASo/D,GAAK9mE,EAAOmB,GACjB,IAAIwH,EAAS,GACb,KAAO3I,GACH2I,EAJQ,mBAIS3I,EAAQ,IAAM2I,EAC/B3I,EAAQib,KAAK4vB,MAAM7qC,EAAQ,IAE/B,KAAO2I,EAAOxH,OAAkB,EAATA,GACnBwH,EAAS,IAAMA,EAEnB,MAAO,KAAOA,EAElB,SAASo+D,GAAkBp1D,GACvB,MAAM3R,EAAQkJ,GAAO3B,SAASoK,GAG9B,OAAOqE,GADOyB,GAAO,CAACzX,EADR6X,GAAUmL,GAAOA,GAAOhjB,IAAS,EAAG,MAItD,MAAM0N,GAAS,GACf,SAASs5D,GAAMrmE,EAAOsmE,EAAWvqB,EAAWjF,GACxC,MAAM3gC,EAAO,IAAIrO,WAAW,IAC5B,GAAI9H,EAAQkmE,GAAa,CACrB,GAAkB,MAAdpvB,EACA,OAAOvuC,GAAOnD,WAAW,uCAAwC,wBAAyB,CACtFY,UAAW,gBAInBmQ,EAAKrU,IAAIoU,GAAS4gC,GAAa,QAI/B3gC,EAAKrU,IAAIoU,GAAS6lC,IAGtB,IAAK,IAAIx7C,EAAI,GAAIA,GAAK,EAAGA,GAAK,EAC1B4V,EAAK,IAAM5V,GAAK,IAAQP,GAAU,GAAKO,EAAM,IAEjD,MAAMgmE,EAAIrwD,GAASgS,GAAY,SAAUo+C,EAAWnwD,IACpD,MAAO,CAAEqwD,GAAID,EAAEp8D,MAAM,EAAG,IAAKs8D,GAAIF,EAAEp8D,MAAM,KAE7C,SAASu8D,GAAW1pB,EAAM2pB,GACtB,MAAMr5D,EAAaq5D,EAAKvmE,MAAM,KAC9B,GAA0B,IAAtBkN,EAAW9M,QAAmC,MAAlB8M,EAAW,IAA6B,IAAf0vC,EAAKtxC,MAC1D,MAAM,IAAIjL,MAAM,kBAAoBkmE,GAElB,MAAlBr5D,EAAW,IACXA,EAAW2N,QAEf,IAAIjT,EAASg1C,EACb,IAAK,IAAIz8C,EAAI,EAAGA,EAAI+M,EAAW9M,OAAQD,IAAK,CACxC,MAAMqmE,EAAYt5D,EAAW/M,GAC7B,GAAIqmE,EAAU7+D,MAAM,aAAc,CAC9B,MAAM/H,EAAQkI,SAAS0+D,EAAUz+D,UAAU,EAAGy+D,EAAUpmE,OAAS,IACjE,GAAIR,GAASkmE,GACT,MAAM,IAAIzlE,MAAM,wBAA0BmmE,GAE9C5+D,EAASA,EAAO6+D,YAAYX,GAAclmE,OAEzC,CAAA,IAAI4mE,EAAU7+D,MAAM,YAQrB,MAAM,IAAItH,MAAM,4BAA8BmmE,GARZ,CAClC,MAAM5mE,EAAQkI,SAAS0+D,GACvB,GAAI5mE,GAASkmE,GACT,MAAM,IAAIzlE,MAAM,wBAA0BmmE,GAE9C5+D,EAASA,EAAO6+D,YAAY7mE,KAMpC,OAAOgI,EAEJ,MAAM8+D,WAAqBnB,GAC9BzjE,YAAYoE,EAAOs/D,EAAYmB,EAAmBT,EAAWK,EAAM3mE,EAAO0L,EAAOu3D,EAAUr3B,GACvFj8B,MAAMi2D,EAAYh6B,GAClBrjC,GAAOnC,cAAcE,EAAOyG,GAAQ,gBACpCrM,EAAiBY,KAAM,CAAEy6C,UAAW6pB,EAAW3nB,sBAE/Cv9C,EAAiBY,KAAM,CACnBylE,kBAAAA,EAAmBC,YAFH9vD,GAAUgX,GAAU7L,GAAO/gB,KAAKy6C,YAAa,EAAG,GAGhEuqB,UAAAA,EAAWK,KAAAA,EAAM3mE,MAAAA,EAAO0L,MAAAA,IAE5BhL,EAAiBY,KAAM,CAAE2hE,SAAAA,IAE7B1R,QAAQ3lB,GACJ,OAAO,IAAIk7B,GAAa/5D,GAAQzL,KAAKskE,WAAYtkE,KAAKylE,kBAAmBzlE,KAAKglE,UAAWhlE,KAAKqlE,KAAMrlE,KAAKtB,MAAOsB,KAAKoK,MAAOpK,KAAK2hE,SAAUr3B,GAE3Iq7B,kBAMA,GAAI3lE,KAAKoK,OAAS,IACd,MAAM,IAAIjL,MAAM,oBAEpB,OAAO2lE,GAAkBtvD,GAAO,CAC5B,aAAcqvD,GAAK7kE,KAAKoK,MAAO,GAAIpK,KAAKylE,kBACxCZ,GAAK7kE,KAAKtB,MAAO,GAAIsB,KAAKglE,UAC1BxvD,GAAO,CAAC,OAAQxV,KAAKw1C,gBAG7BowB,UAAY,OAAqB,MAAb5lE,KAAKqlE,KACzBQ,SACI,OAAO,IAAIC,GAAiBr6D,GAAQzL,KAAKuyB,QAASvyB,KAAKy6C,UAAWz6C,KAAKylE,kBAAmBzlE,KAAKglE,UAAWhlE,KAAKqlE,KAAMrlE,KAAKtB,MAAOsB,KAAKoK,MAAOpK,KAAKsqC,UAEtJi7B,YAAYQ,GACR,MAAMrnE,EAAQuI,GAAOzB,UAAUugE,EAAQ,SACvC,GAAIrnE,EAAQ,WACR,MAAM,IAAIS,MAAM,mBAAqBsD,OAAO/D,IAGhD,IAAI2mE,EAAOrlE,KAAKqlE,KACZA,IACAA,GAAQ,KAAe,WAAR3mE,GACXA,EAAQkmE,KACRS,GAAQ,MAGhB,MAAMF,GAAEA,EAAED,GAAEA,GAAOH,GAAMrmE,EAAOsB,KAAKglE,UAAWhlE,KAAKy6C,UAAWz6C,KAAKw1C,YAC/DwwB,EAAK,IAAIvpB,GAAW7sC,IAAOH,GAASy1D,GAAMz/D,OAAOzF,KAAKw1C,aAAenlB,GAAG,KAC9E,OAAO,IAAIm1C,GAAa/5D,GAAQu6D,EAAIhmE,KAAK0lE,YAAarwD,GAAQ8vD,GAAKE,EAAM3mE,EAAOsB,KAAKoK,MAAQ,EAAGpK,KAAK2hE,SAAU3hE,KAAKsqC,UAExH86B,WAAWC,GACP,OAAOD,GAAWplE,KAAMqlE,GAE5Bp/D,gBAAgB8zC,GACZ,OAAOt5C,GAAuB+kE,GAAc37D,GAAI,IAAK26D,IAAwBjkE,KAAKilE,GAAczrB,EAAM,MAE1G9zC,kBAAkB+9D,EAAQ7mD,EAAW,GAAIkoD,EAAOX,GAAapB,EAAWjB,IAC/DgD,IACDA,EAAOX,IAEX,MAAM/C,EAAWoC,GAASkC,WAAWjC,EAAQ7mD,EAAUmmD,GACvD,OAAO7iE,GAAuB+kE,GAAc37D,GAAI,IAAK26D,IAAwBjkE,KAAKilE,GAAc7D,EAASsC,cAAetC,GAAUyD,WAAWC,GAEjJp/D,oBAAoB07D,EAAU0D,EAAOX,IAIjC,OAHKW,IACDA,EAAOX,IAEJjkE,GAAuB+kE,GAAc37D,GAAI,IAAK26D,IAAwBjkE,KAAKilE,GAAc7D,EAASsC,cAAetC,GAAUyD,WAAWC,GAEjJp/D,uBAAuB0/D,GACnB,MAAMrwD,EAAQV,GAASZ,GAAa2xD,IACf,KAAjBrwD,EAAMpW,QAAiB4lE,GAAkBxvD,EAAMzM,MAAM,EAAG,OAAS88D,GACjE1+D,GAAOlD,mBAAmB,uBAAwB,cAAe,gBAErE,MAAMqG,EAAQkL,EAAM,GACdmwD,EAAoBpwD,GAAQC,EAAMzM,MAAM,EAAG,IAC3CnK,EAAQkI,SAASyO,GAAQC,EAAMzM,MAAM,EAAG,KAAKhC,UAAU,GAAI,IAC3Dm+D,EAAY3vD,GAAQC,EAAMzM,MAAM,GAAI,KACpCrJ,EAAM8V,EAAMzM,MAAM,GAAI,IAC5B,OAAQwM,GAAQC,EAAMzM,MAAM,EAAG,KAE3B,IAAK,aACL,IAAK,aAAc,CACf,MAAM4xC,EAAYplC,GAAQ7V,GAC1B,OAAO,IAAIsmE,GAAiBr6D,GAAQ0yC,GAAe1D,GAAYA,EAAWgrB,EAAmBT,EAAW,KAAMtmE,EAAO0L,EAAO,MAGhI,IAAK,aACL,IAAK,cACD,GAAe,IAAX5K,EAAI,GACJ,MAEJ,OAAO,IAAIgmE,GAAa/5D,GAAQ,IAAIgxC,GAAWj9C,EAAIqJ,MAAM,IAAK48D,EAAmBT,EAAW,KAAMtmE,EAAO0L,EAAO,KAAM,MAE9H,OAAOnD,GAAOlD,mBAAmB,8BAA+B,cAAe,gBAEnFkC,oBAAoBkX,EAAW,GAAIkoD,EAAOX,GAAapB,EAAWjB,IACzDgD,IACDA,EAAOX,IAEX,MAAM/C,EAAWoC,GAASmC,YAAYz4C,GAAY,IAAKtQ,EAAUmmD,GACjE,OAAO7iE,GAAuB+kE,GAAc37D,GAAI,IAAK26D,IAAwBjkE,KAAKilE,GAAc7D,EAASsC,cAAetC,GAAUyD,WAAWC,IAGrJx7D,GAAK27D,GAAchB,GAAyB,SAAgC2B,EAAOxE,GAC/E,MAAM5nB,EAAO9yC,GAAO3B,SAAS6gE,EAAO,QACpC,GAAIpsB,EAAK76C,OAAS,IAAM66C,EAAK76C,OAAS,GAClC,MAAM,IAAIC,MAAM,gBAEpB,MAAM8lE,EAAIrwD,GAASgS,GAAY,SAAU+9C,GAAc5qB,IACjDuqB,EAAa,IAAI7nB,GAAWpnC,GAAQ4vD,EAAEp8D,MAAM,EAAG,MACrD,OAAO,IAAI28D,GAAa/5D,GAAQ64D,EAAY,aAAcjvD,GAAQ4vD,EAAEp8D,MAAM,KAAM,IAAK,EAAG,EAAG84D,EAAU,OAElG,MAAMmE,WAAyB9V,GAClCpvD,YAAYoE,EAAOutB,EAASkoB,EAAWgrB,EAAmBT,EAAWK,EAAM3mE,EAAO0L,EAAOkgC,GACrFj8B,MAAMkkB,EAAS+X,GACfrjC,GAAOnC,cAAcE,EAAOyG,GAAQ,oBACpCrM,EAAiBY,KAAM,CAAEy6C,UAAAA,IAEzBr7C,EAAiBY,KAAM,CACnBy6C,UAAAA,EAAWirB,YAFK9vD,GAAUgX,GAAU7L,GAAO05B,IAAa,EAAG,GAEnCgrB,kBAAAA,EAAmBT,UAAAA,EAAWK,KAAAA,EAAM3mE,MAAAA,EAAO0L,MAAAA,IAG3E6lD,QAAQ3lB,GACJ,OAAO,IAAIw7B,GAAiBr6D,GAAQzL,KAAKuyB,QAASvyB,KAAKy6C,UAAWz6C,KAAKylE,kBAAmBzlE,KAAKglE,UAAWhlE,KAAKqlE,KAAMrlE,KAAKtB,MAAOsB,KAAKoK,MAAOkgC,GAE7Iq7B,kBAMA,GAAI3lE,KAAKoK,OAAS,IACd,MAAM,IAAIjL,MAAM,oBAEpB,OAAO2lE,GAAkBtvD,GAAO,CAC5B,aACAqvD,GAAK7kE,KAAKoK,MAAO,GACjBpK,KAAKylE,kBACLZ,GAAK7kE,KAAKtB,MAAO,GACjBsB,KAAKglE,UACLhlE,KAAKy6C,aAGbmrB,UAAY,OAAqB,MAAb5lE,KAAKqlE,KACzBE,YAAYQ,GACR,MAAMrnE,EAAQuI,GAAOzB,UAAUugE,EAAQ,SACvC,GAAIrnE,EAAQ,WACR,MAAM,IAAIS,MAAM,mBAAqBsD,OAAO/D,IAGhD,IAAI2mE,EAAOrlE,KAAKqlE,KACZA,IACAA,GAAQ,KAAe,WAAR3mE,GACXA,EAAQkmE,KACRS,GAAQ,MAGhB,MAAMF,GAAEA,EAAED,GAAEA,GAAOH,GAAMrmE,EAAOsB,KAAKglE,UAAWhlE,KAAKy6C,UAAW,MAC1D2rB,EAAK3pB,GAAW4pB,WAAWnB,EAAIllE,KAAKy6C,WAAW,GAC/CloB,EAAU4rB,GAAeioB,GAC/B,OAAO,IAAIN,GAAiBr6D,GAAQ8mB,EAAS6zC,EAAIpmE,KAAK0lE,YAAarwD,GAAQ8vD,GAAKE,EAAM3mE,EAAOsB,KAAKoK,MAAQ,EAAGpK,KAAKsqC,UAEtH86B,WAAWC,GACP,OAAOD,GAAWplE,KAAMqlE,IAGzB,MAAMiB,GACT1lE,YAAYojE,EAAQ7mD,EAAW,GAAIkoD,EAAO,iBAAkB3D,EAASW,IACjEoC,GAA0BjkE,IAAIR,UAAM,GACpCD,GAAuBC,KAAMykE,GAA2Be,GAAaS,WAAWjC,EAAQ7mD,EAAUkoD,EAAM3D,GAAS,KAErH6E,UAAU7nE,EAAQ,GACd,OAAO+B,GAAuBT,KAAMykE,GAA2B,KAAKc,YAAY7mE,IAIjF,SAAS8nE,GAAeT,GAC3B,MAAMrnE,EAAQuI,GAAOzB,UAAUugE,EAAQ,SAIvC,OAHIrnE,EAAQ,GAAKA,GAASkmE,KACtB39D,GAAOlD,mBAAmB,wBAAyB,QAASrF,GAEzD,aAAaA;uFANxB+lE,GAA4B,IAAIhjE,QCpRhC,IAWIglE,GAAUC,GAASC,GAXnB5mE,GAA0BC,QAAQA,OAAKD,wBAA2B,SAAUE,EAAUC,EAAOnC,EAAOoC,EAAMC,GAC1G,GAAa,MAATD,EAAc,MAAM,IAAIE,UAAU,kCACtC,GAAa,MAATF,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,2EACvG,MAAiB,MAATF,EAAeC,EAAEG,KAAKN,EAAUlC,GAASqC,EAAIA,EAAErC,MAAQA,EAAQmC,EAAMM,IAAIP,EAAUlC,GAASA,GAEpG0C,GAA0BT,QAAQA,OAAKS,wBAA2B,SAAUR,EAAUC,EAAOC,EAAMC,GACnG,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAErC,MAAQmC,EAAMQ,IAAIT,IAIxF,MAAM2mE,GAAiB,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,IAEvCC,GAAO,CAAC,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,KAEtLC,GAAI,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CC,GAAK,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAEhgDlmD,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FkmD,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAE1/FC,GAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAE1/Fj3B,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/Fi3B,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY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"} \ No newline at end of file diff --git a/packages/ethers/lib/_version.d.ts b/packages/ethers/lib/_version.d.ts index a68ad1c65..305b63049 100644 --- a/packages/ethers/lib/_version.d.ts +++ b/packages/ethers/lib/_version.d.ts @@ -1,2 +1,2 @@ -export declare const version = "ethers@6.0.0-beta.5"; +export declare const version = "ethers@6.0.0-beta.6"; //# sourceMappingURL=_version.d.ts.map \ No newline at end of file diff --git a/packages/ethers/lib/_version.js b/packages/ethers/lib/_version.js index 8e5a1f332..be590dd21 100644 --- a/packages/ethers/lib/_version.js +++ b/packages/ethers/lib/_version.js @@ -1,2 +1,2 @@ -export const version = "ethers@6.0.0-beta.5"; +export const version = "ethers@6.0.0-beta.6"; //# sourceMappingURL=_version.js.map \ No newline at end of file diff --git a/packages/ethers/package.json b/packages/ethers/package.json index af533fe5a..9f37b2a44 100644 --- a/packages/ethers/package.json +++ b/packages/ethers/package.json @@ -6,17 +6,17 @@ "@ethersproject/bytes": "6.0.0-beta.3", "@ethersproject/contract": "6.0.0-beta.4", "@ethersproject/crypto": "6.0.0-beta.2", - "@ethersproject/hash": "6.0.0-beta.4", - "@ethersproject/logger": "6.0.0-beta.4", + "@ethersproject/hash": "6.0.0-beta.5", + "@ethersproject/logger": "6.0.0-beta.5", "@ethersproject/math": "6.0.0-beta.3", - "@ethersproject/properties": "6.0.0-beta.3", - "@ethersproject/providers": "6.0.0-beta.5", + "@ethersproject/properties": "6.0.0-beta.4", + "@ethersproject/providers": "6.0.0-beta.6", "@ethersproject/rlp": "6.0.0-beta.2", "@ethersproject/signing-key": "6.0.0-beta.2", "@ethersproject/strings": "6.0.0-beta.2", "@ethersproject/transaction": "6.0.0-beta.2", - "@ethersproject/wallet": "6.0.0-beta.5", - "@ethersproject/web": "6.0.0-beta.3", + "@ethersproject/wallet": "6.0.0-beta.6", + "@ethersproject/web": "6.0.0-beta.4", "@ethersproject/wordlists": "6.0.0-beta.2" }, "description": "Ethereum Providers for ethers.", @@ -67,5 +67,5 @@ "sideEffects": false, "type": "module", "types": "./lib/index.d.ts", - "version": "6.0.0-beta.6" + "version": "6.0.0-beta.7" } diff --git a/packages/ethers/src.ts/_version.ts b/packages/ethers/src.ts/_version.ts index 51dcda1b1..b9bb6aa07 100644 --- a/packages/ethers/src.ts/_version.ts +++ b/packages/ethers/src.ts/_version.ts @@ -1 +1 @@ -export const version = "ethers@6.0.0-beta.5"; \ No newline at end of file +export const version = "ethers@6.0.0-beta.6"; \ No newline at end of file diff --git a/packages/hash/lib/_version.d.ts b/packages/hash/lib/_version.d.ts index 89b9c1573..86bfe603a 100644 --- a/packages/hash/lib/_version.d.ts +++ b/packages/hash/lib/_version.d.ts @@ -1,2 +1,2 @@ -export declare const version = "@ethersproject/hash@6.0.0-beta.3"; +export declare const version = "@ethersproject/hash@6.0.0-beta.4"; //# sourceMappingURL=_version.d.ts.map \ No newline at end of file diff --git a/packages/hash/lib/_version.js b/packages/hash/lib/_version.js index 203aaa52e..1c8bc000e 100644 --- a/packages/hash/lib/_version.js +++ b/packages/hash/lib/_version.js @@ -1,2 +1,2 @@ -export const version = "@ethersproject/hash@6.0.0-beta.3"; +export const version = "@ethersproject/hash@6.0.0-beta.4"; //# sourceMappingURL=_version.js.map \ No newline at end of file diff --git a/packages/hash/package.json b/packages/hash/package.json index fd81b9699..14d2e0c60 100644 --- a/packages/hash/package.json +++ b/packages/hash/package.json @@ -36,5 +36,5 @@ "sideEffects": false, "type": "module", "types": "./lib/index.d.ts", - "version": "6.0.0-beta.4" + "version": "6.0.0-beta.5" } diff --git a/packages/hash/src.ts/_version.ts b/packages/hash/src.ts/_version.ts index 733b17b1c..f67858bbd 100644 --- a/packages/hash/src.ts/_version.ts +++ b/packages/hash/src.ts/_version.ts @@ -1 +1 @@ -export const version = "@ethersproject/hash@6.0.0-beta.3"; \ No newline at end of file +export const version = "@ethersproject/hash@6.0.0-beta.4"; \ No newline at end of file diff --git a/packages/logger/lib/_version.d.ts b/packages/logger/lib/_version.d.ts index b97998eae..6a2dc735e 100644 --- a/packages/logger/lib/_version.d.ts +++ b/packages/logger/lib/_version.d.ts @@ -1,2 +1,2 @@ -export declare const version = "@ethersproject/logger@6.0.0-beta.3"; +export declare const version = "@ethersproject/logger@6.0.0-beta.4"; //# sourceMappingURL=_version.d.ts.map \ No newline at end of file diff --git a/packages/logger/lib/_version.js b/packages/logger/lib/_version.js index 64056851e..b4b278fd5 100644 --- a/packages/logger/lib/_version.js +++ b/packages/logger/lib/_version.js @@ -1,2 +1,2 @@ -export const version = "@ethersproject/logger@6.0.0-beta.3"; +export const version = "@ethersproject/logger@6.0.0-beta.4"; //# sourceMappingURL=_version.js.map \ No newline at end of file diff --git a/packages/logger/package.json b/packages/logger/package.json index efc48c61a..e7bf45a4f 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -28,5 +28,5 @@ "sideEffects": false, "type": "module", "types": "./lib/index.d.ts", - "version": "6.0.0-beta.4" + "version": "6.0.0-beta.5" } diff --git a/packages/logger/src.ts/_version.ts b/packages/logger/src.ts/_version.ts index d16fc55fe..dfeb2ec0d 100644 --- a/packages/logger/src.ts/_version.ts +++ b/packages/logger/src.ts/_version.ts @@ -1 +1 @@ -export const version = "@ethersproject/logger@6.0.0-beta.3"; \ No newline at end of file +export const version = "@ethersproject/logger@6.0.0-beta.4"; \ No newline at end of file diff --git a/packages/properties/lib/_version.d.ts b/packages/properties/lib/_version.d.ts index acc2eb2e7..6d03f6978 100644 --- a/packages/properties/lib/_version.d.ts +++ b/packages/properties/lib/_version.d.ts @@ -1,2 +1,2 @@ -export declare const version = "@ethersproject/properties@6.0.0-beta.2"; +export declare const version = "@ethersproject/properties@6.0.0-beta.3"; //# sourceMappingURL=_version.d.ts.map \ No newline at end of file diff --git a/packages/properties/lib/_version.js b/packages/properties/lib/_version.js index a08c9d34f..34206ec8e 100644 --- a/packages/properties/lib/_version.js +++ b/packages/properties/lib/_version.js @@ -1,2 +1,2 @@ -export const version = "@ethersproject/properties@6.0.0-beta.2"; +export const version = "@ethersproject/properties@6.0.0-beta.3"; //# sourceMappingURL=_version.js.map \ No newline at end of file diff --git a/packages/properties/package.json b/packages/properties/package.json index 605fd288b..3de26a09a 100644 --- a/packages/properties/package.json +++ b/packages/properties/package.json @@ -30,5 +30,5 @@ "sideEffects": false, "type": "module", "types": "./lib/index.d.ts", - "version": "6.0.0-beta.3" + "version": "6.0.0-beta.4" } diff --git a/packages/properties/src.ts/_version.ts b/packages/properties/src.ts/_version.ts index 0b940a193..9aeb9f397 100644 --- a/packages/properties/src.ts/_version.ts +++ b/packages/properties/src.ts/_version.ts @@ -1 +1 @@ -export const version = "@ethersproject/properties@6.0.0-beta.2"; \ No newline at end of file +export const version = "@ethersproject/properties@6.0.0-beta.3"; \ No newline at end of file diff --git a/packages/providers/lib/_version.d.ts b/packages/providers/lib/_version.d.ts index 315f68cfa..604781c43 100644 --- a/packages/providers/lib/_version.d.ts +++ b/packages/providers/lib/_version.d.ts @@ -1,2 +1,2 @@ -export declare const version = "@ethersproject/providers@6.0.0-beta.4"; +export declare const version = "@ethersproject/providers@6.0.0-beta.5"; //# sourceMappingURL=_version.d.ts.map \ No newline at end of file diff --git a/packages/providers/lib/_version.js b/packages/providers/lib/_version.js index 1f438bd32..47d7582c1 100644 --- a/packages/providers/lib/_version.js +++ b/packages/providers/lib/_version.js @@ -1,2 +1,2 @@ -export const version = "@ethersproject/providers@6.0.0-beta.4"; +export const version = "@ethersproject/providers@6.0.0-beta.5"; //# sourceMappingURL=_version.js.map \ No newline at end of file diff --git a/packages/providers/lib/common-networks.d.ts b/packages/providers/lib/common-networks.d.ts index 8d2d50a5a..5c7bf6ea5 100644 --- a/packages/providers/lib/common-networks.d.ts +++ b/packages/providers/lib/common-networks.d.ts @@ -1,4 +1,8 @@ -import { Network as _Network } from "./network.js"; -declare const Network: typeof _Network; +/** + * Exports the same Network as "./network.js" except with common + * networks injected registered. + */ +import { Network } from "./network.js"; +export declare function injectCommonNetworks(): void; export { Network }; //# sourceMappingURL=common-networks.d.ts.map \ No newline at end of file diff --git a/packages/providers/lib/common-networks.d.ts.map b/packages/providers/lib/common-networks.d.ts.map index 4c32cc164..a1c5b91b4 100644 --- a/packages/providers/lib/common-networks.d.ts.map +++ b/packages/providers/lib/common-networks.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"common-networks.d.ts","sourceRoot":"","sources":["../src.ts/common-networks.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AA4FnD,QAAA,MAAM,OAAO,iBAAiC,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,CAAA"} \ No newline at end of file +{"version":3,"file":"common-networks.d.ts","sourceRoot":"","sources":["../src.ts/common-networks.ts"],"names":[],"mappings":"AACA;;;GAGG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAUvC,wBAAgB,oBAAoB,IAAI,IAAI,CA8E3C;AAID,OAAO,EAAE,OAAO,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/providers/lib/common-networks.js b/packages/providers/lib/common-networks.js index 82b4629dc..7e884ff9d 100644 --- a/packages/providers/lib/common-networks.js +++ b/packages/providers/lib/common-networks.js @@ -1,8 +1,12 @@ +/** + * Exports the same Network as "./network.js" except with common + * networks injected registered. + */ import { EnsPlugin, GasCostPlugin, MaxPriorityFeePlugin } from "./plugins-network.js"; import { EtherscanPlugin } from "./provider-etherscan.js"; -import { Network as _Network } from "./network.js"; +import { Network } from "./network.js"; // See: https://chainlist.org -function injectCommonNetworks(Network) { +export function injectCommonNetworks() { /// Register popular Ethereum networks function registerEth(name, chainId, options) { const func = function () { @@ -67,8 +71,7 @@ function injectCommonNetworks(Network) { url: "http:/\/api-testnet.bscscan.com" } }); - return Network; } -const Network = injectCommonNetworks(_Network); +injectCommonNetworks(); export { Network }; //# sourceMappingURL=common-networks.js.map \ No newline at end of file diff --git a/packages/providers/lib/common-networks.js.map b/packages/providers/lib/common-networks.js.map index 4655a0d7d..3ee86217b 100644 --- a/packages/providers/lib/common-networks.js.map +++ b/packages/providers/lib/common-networks.js.map @@ -1 +1 @@ -{"version":3,"file":"common-networks.js","sourceRoot":"","sources":["../src.ts/common-networks.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"common-networks.js","sourceRoot":"","sources":["../src.ts/common-networks.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/providers/package.json b/packages/providers/package.json index 860a99175..207dedbb3 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -39,5 +39,5 @@ "sideEffects": false, "type": "module", "types": "./lib/index.d.ts", - "version": "6.0.0-beta.5" + "version": "6.0.0-beta.6" } diff --git a/packages/providers/src.ts/_version.ts b/packages/providers/src.ts/_version.ts index 57076b77f..d891f6335 100644 --- a/packages/providers/src.ts/_version.ts +++ b/packages/providers/src.ts/_version.ts @@ -1 +1 @@ -export const version = "@ethersproject/providers@6.0.0-beta.4"; \ No newline at end of file +export const version = "@ethersproject/providers@6.0.0-beta.5"; \ No newline at end of file diff --git a/packages/wallet/lib/_version.d.ts b/packages/wallet/lib/_version.d.ts index 185f50968..e4ee34c65 100644 --- a/packages/wallet/lib/_version.d.ts +++ b/packages/wallet/lib/_version.d.ts @@ -1,2 +1,2 @@ -export declare const version = "@ethersproject/wallet@6.0.0-beta.4"; +export declare const version = "@ethersproject/wallet@6.0.0-beta.5"; //# sourceMappingURL=_version.d.ts.map \ No newline at end of file diff --git a/packages/wallet/lib/_version.js b/packages/wallet/lib/_version.js index 73c3ef9e1..0717c0d85 100644 --- a/packages/wallet/lib/_version.js +++ b/packages/wallet/lib/_version.js @@ -1,2 +1,2 @@ -export const version = "@ethersproject/wallet@6.0.0-beta.4"; +export const version = "@ethersproject/wallet@6.0.0-beta.5"; //# sourceMappingURL=_version.js.map \ No newline at end of file diff --git a/packages/wallet/package.json b/packages/wallet/package.json index d174f5bfc..e54d5b8e2 100644 --- a/packages/wallet/package.json +++ b/packages/wallet/package.json @@ -40,5 +40,5 @@ "sideEffects": false, "type": "module", "types": "./lib/index.d.ts", - "version": "6.0.0-beta.5" + "version": "6.0.0-beta.6" } diff --git a/packages/wallet/src.ts/_version.ts b/packages/wallet/src.ts/_version.ts index 802b0e5f6..8c08eda57 100644 --- a/packages/wallet/src.ts/_version.ts +++ b/packages/wallet/src.ts/_version.ts @@ -1 +1 @@ -export const version = "@ethersproject/wallet@6.0.0-beta.4"; \ No newline at end of file +export const version = "@ethersproject/wallet@6.0.0-beta.5"; \ No newline at end of file diff --git a/packages/web/lib/_version.d.ts b/packages/web/lib/_version.d.ts index e5f17d02e..44811bda7 100644 --- a/packages/web/lib/_version.d.ts +++ b/packages/web/lib/_version.d.ts @@ -1,2 +1,2 @@ -export declare const version = "@ethersproject/web@6.0.0-beta.2"; +export declare const version = "@ethersproject/web@6.0.0-beta.3"; //# sourceMappingURL=_version.d.ts.map \ No newline at end of file diff --git a/packages/web/lib/_version.js b/packages/web/lib/_version.js index 3f4583558..3e5026268 100644 --- a/packages/web/lib/_version.js +++ b/packages/web/lib/_version.js @@ -1,2 +1,2 @@ -export const version = "@ethersproject/web@6.0.0-beta.2"; +export const version = "@ethersproject/web@6.0.0-beta.3"; //# sourceMappingURL=_version.js.map \ No newline at end of file diff --git a/packages/web/package.json b/packages/web/package.json index 3b7ab13a4..68a0c845e 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -33,5 +33,5 @@ "sideEffects": false, "type": "module", "types": "./lib/index.d.ts", - "version": "6.0.0-beta.3" + "version": "6.0.0-beta.4" } diff --git a/packages/web/src.ts/_version.ts b/packages/web/src.ts/_version.ts index 24245db47..a9fbf1698 100644 --- a/packages/web/src.ts/_version.ts +++ b/packages/web/src.ts/_version.ts @@ -1 +1 @@ -export const version = "@ethersproject/web@6.0.0-beta.2"; \ No newline at end of file +export const version = "@ethersproject/web@6.0.0-beta.3"; \ No newline at end of file