@emblemvault/auth-sdk 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +180 -0
- package/dist/EmblemAuthSDK.d.ts +150 -0
- package/dist/EmblemAuthSDK.d.ts.map +1 -0
- package/dist/SessionManager.d.ts +57 -0
- package/dist/SessionManager.d.ts.map +1 -0
- package/dist/emblem-auth.min.js +15 -0
- package/dist/emblem-auth.min.js.map +1 -0
- package/dist/emblem-auth.umd.js +15 -0
- package/dist/emblem-auth.umd.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/dist/signers/ethers.d.ts +20 -0
- package/dist/signers/ethers.d.ts.map +1 -0
- package/dist/signers/ethers.js +2 -0
- package/dist/signers/ethers.js.map +1 -0
- package/dist/signers/ethers.mjs +2 -0
- package/dist/signers/ethers.mjs.map +1 -0
- package/dist/signers/http.d.ts +4 -0
- package/dist/signers/http.d.ts.map +1 -0
- package/dist/signers/index.d.ts +9 -0
- package/dist/signers/index.d.ts.map +1 -0
- package/dist/signers/index.js +2 -0
- package/dist/signers/index.js.map +1 -0
- package/dist/signers/index.mjs +2 -0
- package/dist/signers/index.mjs.map +1 -0
- package/dist/signers/solana.d.ts +32 -0
- package/dist/signers/solana.d.ts.map +1 -0
- package/dist/signers/solana.js +2 -0
- package/dist/signers/solana.js.map +1 -0
- package/dist/signers/solana.mjs +2 -0
- package/dist/signers/solana.mjs.map +1 -0
- package/dist/signers/utils.d.ts +10 -0
- package/dist/signers/utils.d.ts.map +1 -0
- package/dist/signers/validation.d.ts +43 -0
- package/dist/signers/validation.d.ts.map +1 -0
- package/dist/signers/vault.d.ts +3 -0
- package/dist/signers/vault.d.ts.map +1 -0
- package/dist/signers/viem.d.ts +15 -0
- package/dist/signers/viem.d.ts.map +1 -0
- package/dist/signers/viem.js +2 -0
- package/dist/signers/viem.js.map +1 -0
- package/dist/signers/viem.mjs +2 -0
- package/dist/signers/viem.mjs.map +1 -0
- package/dist/signers/web3.d.ts +13 -0
- package/dist/signers/web3.d.ts.map +1 -0
- package/dist/signers/web3.js +2 -0
- package/dist/signers/web3.js.map +1 -0
- package/dist/signers/web3.mjs +2 -0
- package/dist/signers/web3.mjs.map +1 -0
- package/dist/types/auth.d.ts +96 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/config.d.ts +43 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/events.d.ts +27 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/session.d.ts +63 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/signers.d.ts +37 -0
- package/dist/types/signers.d.ts.map +1 -0
- package/package.json +145 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((n="undefined"!=typeof globalThis?globalThis:n||self).EmblemAuth={})}(this,function(n){"use strict";class e{constructor(n={}){this.session=null,this.timer=null,this.events={},this.onRefresh=n.onRefresh,this.refreshSkewMs=n.refreshSkewMs??6e4}setSession(n){this.session=n,this.schedule(),this.emit("session",n)}getSession(){return this.session}clear(){this.session=null,this.cancel(),this.emit("session",null)}on(n,e){this.events[n]||(this.events[n]=[]),this.events[n].push(e)}off(n,e){const t=this.events[n];if(t){const n=t.indexOf(e);-1!==n&&t.splice(n,1)}}destroy(){this.cancel(),this.session=null,Object.keys(this.events).forEach(n=>{delete this.events[n]})}emit(n,e){const t=this.events[n];if(t)for(const r of t)try{r(e)}catch(e){console.error(`Error in session event handler for ${n}:`,e)}}cancel(){this.timer&&(clearTimeout(this.timer),this.timer=null)}schedule(){this.cancel();const n=this.session;if(!n?.expiresAt)return;const e=Date.now(),t=n.expiresAt-e;if(t<=0)return void this.emit("sessionExpired",n);const r=Math.max(0,t-this.refreshSkewMs);this.emit("sessionWillRefresh",{inMs:r,ttl:t}),this.timer=setTimeout(async()=>{if(this.onRefresh)try{const e=await this.onRefresh(n);e?.expiresAt&&e.authToken?(this.setSession(e),this.emit("sessionRefreshed",e)):Date.now()>=n.expiresAt&&this.emit("sessionExpired",n)}catch(e){console.error("Session refresh error:",e),Date.now()>=n.expiresAt&&this.emit("sessionExpired",n)}else Date.now()>=n.expiresAt&&this.emit("sessionExpired",n)},r)}}async function t(n,e,t){const r=t.baseUrl??"https://api.emblemvault.ai",a=await async function(n){if("function"==typeof n.getAuthHeaders){const e=await n.getAuthHeaders();if(e&&"object"==typeof e)return e}const e=n.jwt??("function"==typeof n.getJwt?await n.getJwt():void 0)??n.sdk?.getSession()?.authToken??void 0;if(e)return{Authorization:`Bearer ${e}`};if(n.apiKey)return{"x-api-key":n.apiKey};throw new Error("No authentication available: provide jwt, getJwt(), getAuthHeaders(), sdk, or apiKey")}(t),o=await fetch(`${r}${n}`,{method:"POST",headers:{"content-type":"application/json",...a},body:JSON.stringify(e,(n,e)=>"bigint"==typeof e?e.toString():e)});if(!o.ok){const n=await o.text().catch(()=>"");throw new Error(function(n,e){let t=`Emblem signer error ${n}`;return n>=500?t+=": Internal server error":401===n||403===n?t+=": Authentication failed":404===n?t+=": Resource not found":405===n?t+=": Method not allowed":e&&(t+=`: ${e.substring(0,200)}`),t}(o.status,n))}return o.json()}function r(n,e){const t=Number(n);if(!Number.isSafeInteger(t))throw new Error(`${e} value ${n} exceeds safe integer range (max: ${Number.MAX_SAFE_INTEGER})`);return t}function a(n){return"bigint"==typeof n?"0x"+n.toString(16):n}function o(n){const e={...n};return void 0!==e.value&&(e.value=a(e.value)),void 0!==e.gas&&(e.gasLimit=a(e.gas),delete e.gas),void 0!==e.gasLimit&&(e.gasLimit=a(e.gasLimit)),void 0!==e.gasPrice&&(e.gasPrice=a(e.gasPrice)),void 0!==e.maxFeePerGas&&(e.maxFeePerGas=a(e.maxFeePerGas)),void 0!==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=a(e.maxPriorityFeePerGas)),void 0!==e.nonce&&(e.nonce=r(e.nonce,"nonce")),void 0!==e.chainId&&(e.chainId=r(e.chainId,"chainId")),void 0===e.maxFeePerGas&&void 0===e.maxPriorityFeePerGas||(void 0===e.gasPrice&&void 0!==e.maxFeePerGas&&(e.gasPrice=e.maxFeePerGas),delete e.maxFeePerGas,delete e.maxPriorityFeePerGas),delete e.type,delete e.accessList,delete e.account,delete e.chain,delete e.from,e}function i(n){let e="0x";for(let t=0;t<n.length;t++)e+=n[t].toString(16).padStart(2,"0");return e}async function s(n){const e=await t("/vault/info",{},n);if(!e||!e.vaultId||!e.evmAddress)throw new Error("Invalid vault info response: missing required fields");if(!String(e.evmAddress).startsWith("0x"))throw new Error("Invalid evmAddress format in response");return{vaultId:e.vaultId,tokenId:e.vaultId,address:e.address||"",evmAddress:e.evmAddress,created_by:e.created_by}}class c{constructor(n,e){this.publicKey=e.address,this.config=n,this.vaultId=e.vaultId}async signMessage(n){const e="string"==typeof n?(new TextEncoder).encode(n):n,r=btoa(String.fromCharCode(...e)),a=await t("/sign-solana-message",{vaultId:this.vaultId,message:r},this.config);try{const n="undefined"!=typeof window?window:void 0;if(n?.bs58)return n.bs58.decode(a.signature);return Uint8Array.from(atob(a.signature),n=>n.charCodeAt(0))}catch(n){if(a.signature.startsWith("0x")){const n=a.signature.slice(2),e=new Uint8Array(n.length/2);for(let t=0;t<n.length;t+=2)e[t/2]=parseInt(n.substr(t,2),16);return e}throw new Error(`Unable to decode signature format: ${n}`)}}async signTransaction(n){const e=this.serializeTransaction(n),r=await t("/sign-solana-transaction",{vaultId:this.vaultId,transactionToSign:e,broadcast:!1,versionedTransaction:!0},this.config),a=r.serializedSignedTransaction||r.signedTransaction;if(!a)throw new Error("No signed transaction data received from server");return this.deserializeTransaction(a)}serializeTransaction(n){if(n&&"object"==typeof n){if(n.serialize){const e=n.serialize();return btoa(String.fromCharCode(...e))}if(n.instructions||n.recentBlockhash)throw new Error("Cannot serialize unsigned transaction objects. Please use VersionedTransaction.")}return n}deserializeTransaction(n){if("object"==typeof n&&n&&n.serializedSignedTransaction&&(n=n.serializedSignedTransaction),"string"==typeof n)try{const e=atob(n);return new Uint8Array(e.split("").map(n=>n.charCodeAt(0)))}catch(n){throw console.error("Failed to decode transaction:",n),new Error(`Unable to deserialize transaction response: ${n}`)}return n}getVaultId(){return this.vaultId}async signAllTransactions(n){const e=[];for(const t of n)e.push(await this.signTransaction(t));return e}canSign(n){return n===this.publicKey}async signAndBroadcast(n,e=!0){const r=this.serializeTransaction(n),a=await t("/sign-solana-transaction",{vaultId:this.vaultId,transactionToSign:r,broadcast:e,versionedTransaction:!0},this.config);if(e){if(!a.transactionSignature)throw new Error("No transaction signature received from broadcast");return a.transactionSignature}if(!a.serializedSignedTransaction)throw new Error("No signed transaction data received from server");return a.serializedSignedTransaction}}function l(n,e,t,r){if("a"===t&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?n!==e||!r:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?r:"a"===t?r.call(n):r?r.value:e.get(n)}function u(n,e,t,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?n!==e||!a:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(n,t):a?a.value=t:e.set(n,t),t}var d,h;"function"==typeof SuppressedError&&SuppressedError;class p{constructor(n,e,t){d.set(this,void 0),h.set(this,void 0),this.address=n,u(this,d,e,"f"),u(this,h,t,"f")}async signMessage(n){const e="string"==typeof n?n:i(n);return(await t("/sign-eth-message",{vaultId:l(this,d,"f"),message:e},l(this,h,"f"))).signature}async signTypedData(n,e,r){return(await t("/sign-typed-message",{vaultId:l(this,d,"f"),domain:n,types:e,message:r},l(this,h,"f"))).signature}async signTransaction(n){const e=o(n);return{rawTransaction:(await t("/sign-eth-tx",{vaultId:l(this,d,"f"),transaction:e},l(this,h,"f"))).signedTransaction}}}d=new WeakMap,h=new WeakMap;class f{constructor(n){if(this.session=null,this.pendingNonce=null,this.overlayEl=null,this._iframeEl=null,this.overlayCleanup=null,this.events={},this._cachedVaultInfo=null,!n?.appId)throw new Error("appId is required");if(this.config={...n,authUrl:n.authUrl??"https://auth.emblemvault.ai",apiUrl:n.apiUrl??"https://api.emblemvault.ai",persistSession:n.persistSession??!0},this.storageKey=`emblem_session_${n.appId}`,this.messageHandler=this.onMessage.bind(this),window.addEventListener("message",this.messageHandler),this.sessionMgr=new e({onRefresh:async n=>{try{return await this.refreshSession()||n}catch{return n}}}),this.sessionMgr.on("sessionExpired",n=>this.emit("sessionExpired",n)),this.sessionMgr.on("sessionRefreshed",n=>this.emit("sessionRefreshed",n)),this.sessionMgr.on("sessionWillRefresh",n=>this.emit("sessionWillRefresh",n)),this.config.persistSession){const n=this.loadPersistedSession();n&&this.hydrateSession(n)}}async authenticateWallet(n){const{network:e,message:t,signature:r,publicKey:a,address:o}=n;if(!this.config.apiUrl)throw new Error("apiUrl is required for authenticateWallet");if(!e||!t||!r)throw new Error("network, message, signature are required");const i=`${this.config.apiUrl.replace(/\/$/,"")}/api/auth/wallet/verify-external`,s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:this.config.appId,network:e,message:t,signature:r,publicKey:a,address:o})});if(!s.ok){const n=await this.safeJson(s),e=new Error(n?.error||`wallet_verify_${s.status}`);throw e.status=s.status,e.payload=n,e}const c=await s.json(),l=c?.session;return l&&(this.session=l,this.persistSession(l),this.sessionMgr.setSession(l),this.config.onSuccess?.(l),this.emit("session",l)),l}async openAuthModal(){const n=window.location.origin;let e=null,t=null;try{e=await this.getAuthInit({origin:n})}catch(n){t=n,console.warn("[EmblemAuthSDK] /api/auth/init failed:",t?.message||n)}const r=e?.nonce||this.randomId();this.pendingNonce=r;let a=this.resolveModalUrl({nonce:r,origin:n,state:e?.state});if("origin_not_allowed"===t?.payload?.error)try{const e=new URL("/connect",this.config.authUrl);e.searchParams.set("error","origin_not_allowed"),e.searchParams.set("appId",this.config.appId),e.searchParams.set("origin",n),a=e.toString()}catch{}const o=this.config.modalMode||"auto";let i=!1;if("iframe"===o||"auto"===o)try{i=this.openIframeModal(a)}catch(n){console.warn("[EmblemAuthSDK] iframe modal failed, will fallback to popup:",n?.message)}if(!i){const n=this.popupFeatures();if(!window.open(a,"emblem-auth",n)){const n=new Error("Popup blocked. Please allow popups for this site.");this.emitError(n)}}}getSession(){return this.session}async refreshSession(){try{if(!this.session)return null;const n=this.tryGetOriginFromConfig();if(!n)return this.session;const e=`${n}/api/auth/refresh`,t=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({}),credentials:"include"});if(!t.ok)return this.session;const r=await t.json(),a=r?.session;return a&&(this.session=a,this.persistSession(a),this.sessionMgr.setSession(a),this.emit("session",a)),this.session}catch{return this.session}}async getVaultInfo(){if(this._cachedVaultInfo)return this._cachedVaultInfo;const n=this.getSession();if(!n?.authToken)throw new Error("No session");if(!this.config.apiUrl)throw new Error("apiUrl is required");const e=this.config.apiUrl.replace(/\/$/,""),t=await fetch(`${e}/vault/info`,{method:"POST",headers:{Authorization:`Bearer ${n.authToken}`,"Content-Type":"application/json"},body:"{}"});if(!t.ok)throw new Error("Failed to fetch vault info");const r=await t.json();return this._cachedVaultInfo=r,r}async getVaultApiKey(){if(!this.config.apiUrl)throw new Error("apiUrl is required");const n=this.getSession();if(!n?.authToken)throw new Error("No active session");const e=this.config.apiUrl.replace(/\/$/,""),t=n.authToken,r=n.user?.vaultId;let a=null;try{const n=await fetch(`${e}/vault/info-complete`,{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(n.ok){const e=await n.json();a=e?.raw?.pkp?.api_key_hash||e?.raw?.pkp?.apiKeyHash||null}}catch{}if(!a)try{const t=n.appId,o=n.user?.identifier||"",i=t?`${t}:${o}`:o;if(i){const n=await fetch(`${e}/api/vaults/${encodeURIComponent(i)}`);if(n.ok){const e=await n.json(),t=Array.isArray(e)?e.find(n=>String(n.tokenId||n.token_id)===String(r))||e[0]:null;a=t?.api_key_hash||t?.apiKeyHash||null}}}catch{}if(!a){const n=await fetch(`${e}/api/vaults/${encodeURIComponent(r)}/api-key`,{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!n.ok)throw new Error(`gen_key_${n.status}`);const a=await n.json(),o=a?.apiKey||a?.key||null;if(!o)throw new Error("missing_apiKey");return o}const o=await fetch(`${e}/decrypt`,{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"},body:JSON.stringify({tokenId:r,dataToEncryptHash:a})});if(!o.ok)throw new Error(`decrypt_${o.status}`);const i=await o.json(),s=i?.decryptedString||null;if(!s)throw new Error("missing_decrypted");return s}hydrateSession(n){n?.authToken&&(this.session=n,this.persistSession(n),this._cachedVaultInfo=null,this.sessionMgr.setSession(n),this.emit("session",n))}logout(){this.session=null,this.persistSession(null),this._cachedVaultInfo=null,this.sessionMgr.clear(),this.emit("session",null)}on(n,e){this.events[n]||(this.events[n]=[]),this.events[n].push(e)}off(n,e){const t=this.events[n];if(t){const n=t.indexOf(e);-1!==n&&t.splice(n,1)}}async getSignerContext(){const n=this.getSession();if(!n?.authToken)throw new Error("No active session. Call openAuthModal() or authenticateWallet() first.");const e=await this.getVaultInfo();return{config:{baseUrl:this.config.apiUrl,getJwt:()=>this.getSession()?.authToken},vaultInfo:{vaultId:e.vaultId,evmAddress:e.evmAddress||"0x",address:e.solanaAddress||e.address||"",tokenId:e.tokenId,created_by:e.created_by}}}async toViemAccount(){const{config:n,vaultInfo:e}=await this.getSignerContext();return async function(n,e){const r=e??await s(n),{evmAddress:a,vaultId:c}=r,{toAccount:l}=await Promise.resolve().then(function(){return Mo});return l({address:a,async signMessage({message:e}){let r,a=!1;if("string"==typeof e)r=e,a=!1;else if(e&&void 0!==e.raw){const n=e.raw;r="string"==typeof n?n:i(n),a=!0}else if(e instanceof Uint8Array)r=i(e),a=!1;else{if("string"!=typeof(o=e)||!/^0x[0-9a-fA-F]*$/.test(o))throw new Error(`Unsupported message type: ${typeof e}. Expected string, Uint8Array, or hex string.`);r=e,a=!1}var o;return(await t("/sign-eth-message",{vaultId:c,message:r,raw:a},n)).signature},async signTypedData(e){const{domain:r,types:a,message:o}=e;return(await t("/sign-typed-message",{vaultId:c,domain:r,types:a,message:o},n)).signature},async signTransaction(e,r){const a=o(e);return(await t("/sign-eth-tx",{vaultId:c,transaction:a},n)).signedTransaction}})}(n,e)}async toEthersWallet(n){const{config:e,vaultInfo:r}=await this.getSignerContext();return async function(n,e,r){let a;try{a=await Promise.resolve().then(function(){return Wv})}catch{throw new Error("ethers is required for toEthersWallet(). Install it with: npm install ethers")}const{AbstractSigner:c,resolveAddress:l}=a,u=r??await s(n);class d extends c{constructor(n,e,t){super(e??null),this._address=null,this._vaultId=null,this._chainId=1,this._config=n,t?.address&&(this._address=t.address),t?.vaultId&&(this._vaultId=t.vaultId),t?.chainId&&(this._chainId=t.chainId)}async initialize(){return this._initPromise||(this._initPromise=s(this._config).then(n=>{this._address=n.evmAddress,this._vaultId=n.vaultId}).catch(n=>{throw this._initPromise=void 0,n})),this._initPromise}async getAddress(){return this._address||await this.initialize(),this._address}getVaultId(){if(!this._vaultId)throw new Error("Wallet not initialized. Call initialize() first.");return this._vaultId}setChainId(n){this._chainId=n}getChainId(){return this._chainId}connect(n){if(!n)throw new Error("Provider cannot be null");return new d(this._config,n,{address:this._address??void 0,vaultId:this._vaultId??void 0,chainId:this._chainId})}async signMessage(n){this._vaultId||await this.initialize();const e="string"==typeof n?n:i(n);return(await t("/sign-eth-message",{vaultId:this._vaultId,message:e},this._config)).signature}async signTypedData(n,e,r){this._vaultId||await this.initialize();const a={...e};return a&&a.EIP712Domain&&delete a.EIP712Domain,(await t("/sign-typed-message",{vaultId:this._vaultId,domain:n,types:a,message:r},this._config)).signature}async _signTypedData(n,e,t){return this.signTypedData(n,e,t)}async signTransaction(n){this._vaultId||await this.initialize();const e=n.from,r=await this.getAddress();if(e&&e.toLowerCase()!==r.toLowerCase())throw new Error("transaction from does not match signer address");const a=this.provider?{...await this.populateTransaction(n)}:{...n};if(a.from&&delete a.from,!("to"in a)||!a.to)throw new Error("Transaction must have a 'to' address");if(void 0===a.nonce||null===a.nonce)throw new Error("Transaction must have a nonce");const i=o(a);return(await t("/sign-eth-tx",{vaultId:this._vaultId,transaction:i,options:{chainId:this._chainId}},this._config)).signedTransaction}async sendTransaction(n){if(!this.provider)throw new Error("Provider required to send transaction");const e=await this.signTransaction(n);return await this.provider.broadcastTransaction(e)}async populateTransaction(n){const e={...n};if(!this.provider)throw new Error("Provider required to populate transaction");const t=e.from?await l(e.from,this.provider):await this.getAddress();let r;if(e.chainId)r=BigInt(e.chainId),this._chainId=Number(e.chainId);else{const n=await this.provider.getNetwork();r=n.chainId,this._chainId=Number(n.chainId)}const a=null!=e.nonce?Number(e.nonce):await this.provider.getTransactionCount(t,"pending"),o=e.to?await l(e.to,this.provider):null,i=e.value?BigInt(e.value.toString()):0n;let s;if(e.gasLimit)s=BigInt(e.gasLimit.toString());else try{s=await this.provider.estimateGas({...e,from:t})}catch{s=21000n}let c=null;e.gasPrice||2===e.type?e.gasPrice&&(c=BigInt(e.gasPrice.toString())):c=(await this.provider.getFeeData()).gasPrice??null;const u={from:t,to:o,value:i,nonce:a,gasLimit:s,data:e.data,chainId:r,type:e.type||void 0};return null!==c&&(u.gasPrice=c),e.maxFeePerGas&&(u.maxFeePerGas=BigInt(e.maxFeePerGas.toString())),e.maxPriorityFeePerGas&&(u.maxPriorityFeePerGas=BigInt(e.maxPriorityFeePerGas.toString())),u}async signAndBroadcast(n,e=!1){if(!this.provider)throw new Error("Provider required to send transaction");const t=await this.signTransaction(n),r=(await this.provider.broadcastTransaction(t)).hash;return e&&await this.provider.waitForTransaction(r),r}}return new d(n,e,{address:u.evmAddress,vaultId:u.vaultId})}(e,n,r)}async toWeb3Adapter(){const{config:n,vaultInfo:e}=await this.getSignerContext();return async function(n,e){const t=e??await s(n);return new p(t.evmAddress,t.vaultId,n)}(n,e)}async toSolanaWeb3Signer(){const{config:n,vaultInfo:e}=await this.getSignerContext();return async function(n,e){const t=e??await s(n);return new c(n,t)}(n,e)}async toSolanaKitSigner(){const{config:n,vaultInfo:e}=await this.getSignerContext();return async function(n,e){const t=e??await s(n);return new c(n,t)}(n,e)}destroy(){window.removeEventListener("message",this.messageHandler),this.sessionMgr.destroy(),this.closeOverlay(),Object.keys(this.events).forEach(n=>{delete this.events[n]})}resolveModalUrl(n){const e=`${this.config.authUrl.replace(/\/$/,"")}/connect`,t=new URL(e,window.location.href);return t.searchParams.set("appId",this.config.appId),t.searchParams.set("origin",n.origin),t.searchParams.set("nonce",n.nonce),n.state&&t.searchParams.set("state",n.state),t.toString()}onMessage(n){try{if(!new Set([window.location.origin,this.tryGetOriginFromConfig()].filter(Boolean)).has(n.origin))return;const e=n.data;if("emblem-auth-success"!==e?.type)return;if(!this.pendingNonce||e.nonce!==this.pendingNonce)return void console.error("[EmblemAuthSDK] Nonce mismatch");this.pendingNonce=null;const t=e.session;this.session=t,this.persistSession(t),this.sessionMgr.setSession(t),t&&this.config.onSuccess&&this.config.onSuccess(t),this.emit("session",t),this.closeOverlay()}catch(n){this.emitError(n)}}emit(n,e){const t=this.events[n];if(t)for(const r of t)try{r(e)}catch(e){console.error(`Error in auth event handler for ${n}:`,e)}}emitError(n){this.config.onError?.(n),this.emit("authError",n)}popupFeatures(){const n=Math.max(0,(window.outerHeight-600)/2);return`popup=yes,width=420,height=600,left=${Math.max(0,(window.outerWidth-420)/2)},top=${n}`}randomId(){const n=new Uint8Array(16);if(window.crypto?.getRandomValues)window.crypto.getRandomValues(n);else for(let e=0;e<n.length;e++)n[e]=Math.floor(256*Math.random());return Array.from(n,n=>n.toString(16).padStart(2,"0")).join("")}tryGetOriginFromConfig(){try{if(!this.config.authUrl)return null;return new URL(this.config.authUrl,window.location.href).origin}catch{return null}}async getAuthInit(n){const e=await fetch(`${this.config.authUrl.replace(/\/$/,"")}/api/auth/init`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:this.config.appId,origin:n.origin})}),t=await e.json().catch(()=>null);if(!e.ok){const n=new Error(`init ${e.status}`);throw n.status=e.status,n.payload=t||{},n}return t}openIframeModal(n){this.overlayEl&&this.closeOverlay();const e=document.createElement("div");e.setAttribute("data-emblem-overlay",""),e.style.position="fixed",e.style.inset="0",e.style.background="rgba(0,0,0,0.5)",e.style.zIndex="999999",e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center";const t=document.createElement("div");t.style.width="min(420px, 95vw)",t.style.height="min(600px, 90vh)",t.style.background="#12161b",t.style.border="1px solid #222b35",t.style.borderRadius="12px",t.style.boxShadow="0 12px 48px rgba(0,0,0,0.7)",t.style.overflow="hidden",t.style.position="relative";const r=document.createElement("button");r.textContent="×",r.setAttribute("aria-label","Close"),r.style.position="absolute",r.style.top="6px",r.style.right="8px",r.style.zIndex="2",r.style.background="transparent",r.style.color="#e6eef8",r.style.border="none",r.style.fontSize="20px",r.style.cursor="pointer",r.onclick=()=>this.closeOverlay();const a=document.createElement("iframe");a.src=n,a.style.width="100%",a.style.height="100%",a.style.border="0",a.referrerPolicy="no-referrer",a.allow="clipboard-read; clipboard-write;",t.appendChild(r),t.appendChild(a),e.appendChild(t),document.body.appendChild(e);const o=n=>{"Escape"===n.key&&this.closeOverlay()};return document.addEventListener("keydown",o,{capture:!0}),this.overlayEl=e,this._iframeEl=a,this.overlayCleanup=()=>{document.removeEventListener("keydown",o,{capture:!0})},!0}closeOverlay(){try{this.overlayCleanup?.()}catch{}this.overlayCleanup=null,this.overlayEl?.parentNode&&this.overlayEl.parentNode.removeChild(this.overlayEl),this.overlayEl=null,this._iframeEl=null}async safeJson(n){try{return await n.json()}catch{return null}}loadPersistedSession(){try{if("undefined"==typeof localStorage)return null;const n=localStorage.getItem(this.storageKey);if(!n)return null;const e=JSON.parse(n);return e?.authToken&&e?.expiresAt?Date.now()>=e.expiresAt?(localStorage.removeItem(this.storageKey),null):e:null}catch{return null}}persistSession(n){try{if("undefined"==typeof localStorage)return;n&&this.config.persistSession?localStorage.setItem(this.storageKey,JSON.stringify(n)):localStorage.removeItem(this.storageKey)}catch{}}}const g="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;function m(n){if(!Number.isSafeInteger(n)||n<0)throw new Error("positive integer expected, got "+n)}function b(n,...e){if(!((t=n)instanceof Uint8Array||ArrayBuffer.isView(t)&&"Uint8Array"===t.constructor.name))throw new Error("Uint8Array expected");var t;if(e.length>0&&!e.includes(n.length))throw new Error("Uint8Array expected of length "+e+", got length="+n.length)}function y(n){if("function"!=typeof n||"function"!=typeof n.create)throw new Error("Hash should be wrapped by utils.createHasher");m(n.outputLen),m(n.blockLen)}function v(n,e=!0){if(n.destroyed)throw new Error("Hash instance has been destroyed");if(e&&n.finished)throw new Error("Hash#digest() has already been called")}function w(n,e){b(n);const t=e.outputLen;if(n.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function k(...n){for(let e=0;e<n.length;e++)n[e].fill(0)}function A(n){return new DataView(n.buffer,n.byteOffset,n.byteLength)}function E(n,e){return n<<32-e|n>>>e}function x(n,e){return n<<e|n>>>32-e>>>0}function I(n){return n<<24&4278190080|n<<8&16711680|n>>>8&65280|n>>>24&255}const P=(()=>68===new Uint8Array(new Uint32Array([287454020]).buffer)[0])()?n=>n:function(n){for(let e=0;e<n.length;e++)n[e]=I(n[e]);return n},N=(()=>"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex)(),z=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));const R=48,T=57,S=65,B=70,C=97,O=102;function U(n){return n>=R&&n<=T?n-R:n>=S&&n<=B?n-(S-10):n>=C&&n<=O?n-(C-10):void 0}function F(n){if("string"!=typeof n)throw new Error("string expected");return new Uint8Array((new TextEncoder).encode(n))}function L(n){return"string"==typeof n&&(n=F(n)),b(n),n}function j(n){return"string"==typeof n&&(n=F(n)),b(n),n}function D(...n){let e=0;for(let t=0;t<n.length;t++){const r=n[t];b(r),e+=r.length}const t=new Uint8Array(e);for(let e=0,r=0;e<n.length;e++){const a=n[e];t.set(a,r),r+=a.length}return t}class M{}function G(n){const e=e=>n().update(L(e)).digest(),t=n();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>n(),e}function q(n=32){if(g&&"function"==typeof g.getRandomValues)return g.getRandomValues(new Uint8Array(n));if(g&&"function"==typeof g.randomBytes)return Uint8Array.from(g.randomBytes(n));throw new Error("crypto.getRandomValues must be defined")}
|
|
2
|
+
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const H=BigInt(0),K=BigInt(1);function V(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&"Uint8Array"===n.constructor.name}function _(n){if(!V(n))throw new Error("Uint8Array expected")}function Q(n,e){if("boolean"!=typeof e)throw new Error(n+" boolean expected, got "+e)}function J(n){const e=n.toString(16);return 1&e.length?"0"+e:e}function $(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);return""===n?H:BigInt("0x"+n)}const W="function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex,Z=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function Y(n){if(_(n),W)return n.toHex();let e="";for(let t=0;t<n.length;t++)e+=Z[n[t]];return e}const X=48,nn=57,en=65,tn=70,rn=97,an=102;function on(n){return n>=X&&n<=nn?n-X:n>=en&&n<=tn?n-(en-10):n>=rn&&n<=an?n-(rn-10):void 0}function sn(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);if(W)return Uint8Array.fromHex(n);const e=n.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(t);for(let e=0,a=0;e<t;e++,a+=2){const t=on(n.charCodeAt(a)),o=on(n.charCodeAt(a+1));if(void 0===t||void 0===o){const e=n[a]+n[a+1];throw new Error('hex string expected, got non-hex character "'+e+'" at index '+a)}r[e]=16*t+o}return r}function cn(n){return $(Y(n))}function ln(n){return _(n),$(Y(Uint8Array.from(n).reverse()))}function un(n,e){return sn(n.toString(16).padStart(2*e,"0"))}function dn(n,e){return un(n,e).reverse()}function hn(n,e,t){let r;if("string"==typeof e)try{r=sn(e)}catch(e){throw new Error(n+" must be hex string or Uint8Array, cause: "+e)}else{if(!V(e))throw new Error(n+" must be hex string or Uint8Array");r=Uint8Array.from(e)}const a=r.length;if("number"==typeof t&&a!==t)throw new Error(n+" of length "+t+" expected, got "+a);return r}function pn(...n){let e=0;for(let t=0;t<n.length;t++){const r=n[t];_(r),e+=r.length}const t=new Uint8Array(e);for(let e=0,r=0;e<n.length;e++){const a=n[e];t.set(a,r),r+=a.length}return t}const fn=n=>"bigint"==typeof n&&H<=n;function gn(n,e,t){return fn(n)&&fn(e)&&fn(t)&&e<=n&&n<t}function mn(n,e,t,r){if(!gn(e,t,r))throw new Error("expected valid "+n+": "+t+" <= n < "+r+", got "+e)}const bn=n=>(K<<BigInt(n))-K,yn=n=>new Uint8Array(n),vn=n=>Uint8Array.from(n);const wn={bigint:n=>"bigint"==typeof n,function:n=>"function"==typeof n,boolean:n=>"boolean"==typeof n,string:n=>"string"==typeof n,stringOrUint8Array:n=>"string"==typeof n||V(n),isSafeInteger:n=>Number.isSafeInteger(n),array:n=>Array.isArray(n),field:(n,e)=>e.Fp.isValid(n),hash:n=>"function"==typeof n&&Number.isSafeInteger(n.outputLen)};function kn(n,e,t={}){const r=(e,t,r)=>{const a=wn[t];if("function"!=typeof a)throw new Error("invalid validator function");const o=n[e];if(!(r&&void 0===o||a(o,n)))throw new Error("param "+String(e)+" is invalid. Expected "+t+", got "+o)};for(const[n,t]of Object.entries(e))r(n,t,!1);for(const[n,e]of Object.entries(t))r(n,e,!0);return n}function An(n){const e=new WeakMap;return(t,...r)=>{const a=e.get(t);if(void 0!==a)return a;const o=n(t,...r);return e.set(t,o),o}}const En=BigInt(0),xn=BigInt(1),In=BigInt(2),Pn=BigInt(3),Nn=BigInt(4),zn=BigInt(5),Rn=BigInt(8);function Tn(n,e){const t=n%e;return t>=En?t:e+t}function Sn(n,e,t){let r=n;for(;e-- >En;)r*=r,r%=t;return r}function Bn(n,e){if(n===En)throw new Error("invert: expected non-zero number");if(e<=En)throw new Error("invert: expected positive modulus, got "+e);let t=Tn(n,e),r=e,a=En,o=xn;for(;t!==En;){const n=r%t,e=a-o*(r/t);r=t,t=n,a=o,o=e}if(r!==xn)throw new Error("invert: does not exist");return Tn(a,e)}function Cn(n,e){const t=(n.ORDER+xn)/Nn,r=n.pow(e,t);if(!n.eql(n.sqr(r),e))throw new Error("Cannot find square root");return r}function On(n,e){const t=(n.ORDER-zn)/Rn,r=n.mul(e,In),a=n.pow(r,t),o=n.mul(e,a),i=n.mul(n.mul(o,In),a),s=n.mul(o,n.sub(i,n.ONE));if(!n.eql(n.sqr(s),e))throw new Error("Cannot find square root");return s}function Un(n){return n%Nn===Pn?Cn:n%Rn===zn?On:function(n){if(n<BigInt(3))throw new Error("sqrt is not defined for small field");let e=n-xn,t=0;for(;e%In===En;)e/=In,t++;let r=In;const a=Mn(n);for(;1===jn(a,r);)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(1===t)return Cn;let o=a.pow(r,e);const i=(e+xn)/In;return function(n,r){if(n.is0(r))return r;if(1!==jn(n,r))throw new Error("Cannot find square root");let a=t,s=n.mul(n.ONE,o),c=n.pow(r,e),l=n.pow(r,i);for(;!n.eql(c,n.ONE);){if(n.is0(c))return n.ZERO;let e=1,t=n.sqr(c);for(;!n.eql(t,n.ONE);)if(e++,t=n.sqr(t),e===a)throw new Error("Cannot find square root");const r=xn<<BigInt(a-e-1),o=n.pow(s,r);a=e,s=n.sqr(o),c=n.mul(c,s),l=n.mul(l,o)}return l}}(n)}const Fn=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ln(n,e,t=!1){const r=new Array(e.length).fill(t?n.ZERO:void 0),a=e.reduce((e,t,a)=>n.is0(t)?e:(r[a]=e,n.mul(e,t)),n.ONE),o=n.inv(a);return e.reduceRight((e,t,a)=>n.is0(t)?e:(r[a]=n.mul(e,r[a]),n.mul(e,t)),o),r}function jn(n,e){const t=(n.ORDER-xn)/In,r=n.pow(e,t),a=n.eql(r,n.ONE),o=n.eql(r,n.ZERO),i=n.eql(r,n.neg(n.ONE));if(!a&&!o&&!i)throw new Error("invalid Legendre symbol result");return a?1:o?0:-1}function Dn(n,e){void 0!==e&&m(e);const t=void 0!==e?e:n.toString(2).length;return{nBitLength:t,nByteLength:Math.ceil(t/8)}}function Mn(n,e,t=!1,r={}){if(n<=En)throw new Error("invalid field: expected ORDER > 0, got "+n);const{nBitLength:a,nByteLength:o}=Dn(n,e);if(o>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let i;const s=Object.freeze({ORDER:n,isLE:t,BITS:a,BYTES:o,MASK:bn(a),ZERO:En,ONE:xn,create:e=>Tn(e,n),isValid:e=>{if("bigint"!=typeof e)throw new Error("invalid field element: expected bigint, got "+typeof e);return En<=e&&e<n},is0:n=>n===En,isOdd:n=>(n&xn)===xn,neg:e=>Tn(-e,n),eql:(n,e)=>n===e,sqr:e=>Tn(e*e,n),add:(e,t)=>Tn(e+t,n),sub:(e,t)=>Tn(e-t,n),mul:(e,t)=>Tn(e*t,n),pow:(n,e)=>function(n,e,t){if(t<En)throw new Error("invalid exponent, negatives unsupported");if(t===En)return n.ONE;if(t===xn)return e;let r=n.ONE,a=e;for(;t>En;)t&xn&&(r=n.mul(r,a)),a=n.sqr(a),t>>=xn;return r}(s,n,e),div:(e,t)=>Tn(e*Bn(t,n),n),sqrN:n=>n*n,addN:(n,e)=>n+e,subN:(n,e)=>n-e,mulN:(n,e)=>n*e,inv:e=>Bn(e,n),sqrt:r.sqrt||(e=>(i||(i=Un(n)),i(s,e))),toBytes:n=>t?dn(n,o):un(n,o),fromBytes:n=>{if(n.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+n.length);return t?ln(n):cn(n)},invertBatch:n=>Ln(s,n),cmov:(n,e,t)=>t?e:n});return Object.freeze(s)}function Gn(n){if("bigint"!=typeof n)throw new Error("field order must be bigint");const e=n.toString(2).length;return Math.ceil(e/8)}function qn(n){const e=Gn(n);return e+Math.ceil(e/2)}function Hn(n,e,t){return n&e^~n&t}function Kn(n,e,t){return n&e^n&t^e&t}class Vn extends M{constructor(n,e,t,r){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=n,this.outputLen=e,this.padOffset=t,this.isLE=r,this.buffer=new Uint8Array(n),this.view=A(this.buffer)}update(n){v(this),b(n=L(n));const{view:e,buffer:t,blockLen:r}=this,a=n.length;for(let o=0;o<a;){const i=Math.min(r-this.pos,a-o);if(i===r){const e=A(n);for(;r<=a-o;o+=r)this.process(e,o);continue}t.set(n.subarray(o,o+i),this.pos),this.pos+=i,o+=i,this.pos===r&&(this.process(e,0),this.pos=0)}return this.length+=n.length,this.roundClean(),this}digestInto(n){v(this),w(n,this),this.finished=!0;const{buffer:e,view:t,blockLen:r,isLE:a}=this;let{pos:o}=this;e[o++]=128,k(this.buffer.subarray(o)),this.padOffset>r-o&&(this.process(t,0),o=0);for(let n=o;n<r;n++)e[n]=0;!function(n,e,t,r){if("function"==typeof n.setBigUint64)return n.setBigUint64(e,t,r);const a=BigInt(32),o=BigInt(4294967295),i=Number(t>>a&o),s=Number(t&o),c=r?4:0,l=r?0:4;n.setUint32(e+c,i,r),n.setUint32(e+l,s,r)}(t,r-8,BigInt(8*this.length),a),this.process(t,0);const i=A(n),s=this.outputLen;if(s%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const c=s/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let n=0;n<c;n++)i.setUint32(4*n,l[n],a)}digest(){const{buffer:n,outputLen:e}=this;this.digestInto(n);const t=n.slice(0,e);return this.destroy(),t}_cloneInto(n){n||(n=new this.constructor),n.set(...this.get());const{blockLen:e,buffer:t,length:r,finished:a,destroyed:o,pos:i}=this;return n.destroyed=o,n.finished=a,n.length=r,n.pos=i,r%e&&n.buffer.set(t),n}clone(){return this._cloneInto()}}const _n=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Qn=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),Jn=BigInt(2**32-1),$n=BigInt(32);function Wn(n,e=!1){return e?{h:Number(n&Jn),l:Number(n>>$n&Jn)}:{h:0|Number(n>>$n&Jn),l:0|Number(n&Jn)}}function Zn(n,e=!1){const t=n.length;let r=new Uint32Array(t),a=new Uint32Array(t);for(let o=0;o<t;o++){const{h:t,l:i}=Wn(n[o],e);[r[o],a[o]]=[t,i]}return[r,a]}const Yn=(n,e,t)=>n>>>t,Xn=(n,e,t)=>n<<32-t|e>>>t,ne=(n,e,t)=>n>>>t|e<<32-t,ee=(n,e,t)=>n<<32-t|e>>>t,te=(n,e,t)=>n<<64-t|e>>>t-32,re=(n,e,t)=>n>>>t-32|e<<64-t;function ae(n,e,t,r){const a=(e>>>0)+(r>>>0);return{h:n+t+(a/2**32|0)|0,l:0|a}}const oe=(n,e,t)=>(n>>>0)+(e>>>0)+(t>>>0),ie=(n,e,t,r)=>e+t+r+(n/2**32|0)|0,se=(n,e,t,r)=>(n>>>0)+(e>>>0)+(t>>>0)+(r>>>0),ce=(n,e,t,r,a)=>e+t+r+a+(n/2**32|0)|0,le=(n,e,t,r,a)=>(n>>>0)+(e>>>0)+(t>>>0)+(r>>>0)+(a>>>0),ue=(n,e,t,r,a,o)=>e+t+r+a+o+(n/2**32|0)|0,de=Uint32Array.from([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]),he=new Uint32Array(64);class pe extends Vn{constructor(n=32){super(64,n,8,!1),this.A=0|_n[0],this.B=0|_n[1],this.C=0|_n[2],this.D=0|_n[3],this.E=0|_n[4],this.F=0|_n[5],this.G=0|_n[6],this.H=0|_n[7]}get(){const{A:n,B:e,C:t,D:r,E:a,F:o,G:i,H:s}=this;return[n,e,t,r,a,o,i,s]}set(n,e,t,r,a,o,i,s){this.A=0|n,this.B=0|e,this.C=0|t,this.D=0|r,this.E=0|a,this.F=0|o,this.G=0|i,this.H=0|s}process(n,e){for(let t=0;t<16;t++,e+=4)he[t]=n.getUint32(e,!1);for(let n=16;n<64;n++){const e=he[n-15],t=he[n-2],r=E(e,7)^E(e,18)^e>>>3,a=E(t,17)^E(t,19)^t>>>10;he[n]=a+he[n-7]+r+he[n-16]|0}let{A:t,B:r,C:a,D:o,E:i,F:s,G:c,H:l}=this;for(let n=0;n<64;n++){const e=l+(E(i,6)^E(i,11)^E(i,25))+Hn(i,s,c)+de[n]+he[n]|0,u=(E(t,2)^E(t,13)^E(t,22))+Kn(t,r,a)|0;l=c,c=s,s=i,i=o+e|0,o=a,a=r,r=t,t=e+u|0}t=t+this.A|0,r=r+this.B|0,a=a+this.C|0,o=o+this.D|0,i=i+this.E|0,s=s+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(t,r,a,o,i,s,c,l)}roundClean(){k(he)}destroy(){this.set(0,0,0,0,0,0,0,0),k(this.buffer)}}const fe=(()=>Zn(["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(n=>BigInt(n))))(),ge=(()=>fe[0])(),me=(()=>fe[1])(),be=new Uint32Array(80),ye=new Uint32Array(80);class ve extends Vn{constructor(n=64){super(128,n,16,!1),this.Ah=0|Qn[0],this.Al=0|Qn[1],this.Bh=0|Qn[2],this.Bl=0|Qn[3],this.Ch=0|Qn[4],this.Cl=0|Qn[5],this.Dh=0|Qn[6],this.Dl=0|Qn[7],this.Eh=0|Qn[8],this.El=0|Qn[9],this.Fh=0|Qn[10],this.Fl=0|Qn[11],this.Gh=0|Qn[12],this.Gl=0|Qn[13],this.Hh=0|Qn[14],this.Hl=0|Qn[15]}get(){const{Ah:n,Al:e,Bh:t,Bl:r,Ch:a,Cl:o,Dh:i,Dl:s,Eh:c,El:l,Fh:u,Fl:d,Gh:h,Gl:p,Hh:f,Hl:g}=this;return[n,e,t,r,a,o,i,s,c,l,u,d,h,p,f,g]}set(n,e,t,r,a,o,i,s,c,l,u,d,h,p,f,g){this.Ah=0|n,this.Al=0|e,this.Bh=0|t,this.Bl=0|r,this.Ch=0|a,this.Cl=0|o,this.Dh=0|i,this.Dl=0|s,this.Eh=0|c,this.El=0|l,this.Fh=0|u,this.Fl=0|d,this.Gh=0|h,this.Gl=0|p,this.Hh=0|f,this.Hl=0|g}process(n,e){for(let t=0;t<16;t++,e+=4)be[t]=n.getUint32(e),ye[t]=n.getUint32(e+=4);for(let n=16;n<80;n++){const e=0|be[n-15],t=0|ye[n-15],r=ne(e,t,1)^ne(e,t,8)^Yn(e,0,7),a=ee(e,t,1)^ee(e,t,8)^Xn(e,t,7),o=0|be[n-2],i=0|ye[n-2],s=ne(o,i,19)^te(o,i,61)^Yn(o,0,6),c=ee(o,i,19)^re(o,i,61)^Xn(o,i,6),l=se(a,c,ye[n-7],ye[n-16]),u=ce(l,r,s,be[n-7],be[n-16]);be[n]=0|u,ye[n]=0|l}let{Ah:t,Al:r,Bh:a,Bl:o,Ch:i,Cl:s,Dh:c,Dl:l,Eh:u,El:d,Fh:h,Fl:p,Gh:f,Gl:g,Hh:m,Hl:b}=this;for(let n=0;n<80;n++){const e=ne(u,d,14)^ne(u,d,18)^te(u,d,41),y=ee(u,d,14)^ee(u,d,18)^re(u,d,41),v=u&h^~u&f,w=le(b,y,d&p^~d&g,me[n],ye[n]),k=ue(w,m,e,v,ge[n],be[n]),A=0|w,E=ne(t,r,28)^te(t,r,34)^te(t,r,39),x=ee(t,r,28)^re(t,r,34)^re(t,r,39),I=t&a^t&i^a&i,P=r&o^r&s^o&s;m=0|f,b=0|g,f=0|h,g=0|p,h=0|u,p=0|d,({h:u,l:d}=ae(0|c,0|l,0|k,0|A)),c=0|i,l=0|s,i=0|a,s=0|o,a=0|t,o=0|r;const N=oe(A,x,P);t=ie(N,k,E,I),r=0|N}({h:t,l:r}=ae(0|this.Ah,0|this.Al,0|t,0|r)),({h:a,l:o}=ae(0|this.Bh,0|this.Bl,0|a,0|o)),({h:i,l:s}=ae(0|this.Ch,0|this.Cl,0|i,0|s)),({h:c,l:l}=ae(0|this.Dh,0|this.Dl,0|c,0|l)),({h:u,l:d}=ae(0|this.Eh,0|this.El,0|u,0|d)),({h:h,l:p}=ae(0|this.Fh,0|this.Fl,0|h,0|p)),({h:f,l:g}=ae(0|this.Gh,0|this.Gl,0|f,0|g)),({h:m,l:b}=ae(0|this.Hh,0|this.Hl,0|m,0|b)),this.set(t,r,a,o,i,s,c,l,u,d,h,p,f,g,m,b)}roundClean(){k(be,ye)}destroy(){k(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const we=G(()=>new pe),ke=G(()=>new ve);class Ae extends M{constructor(n,e){super(),this.finished=!1,this.destroyed=!1,y(n);const t=L(e);if(this.iHash=n.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,a=new Uint8Array(r);a.set(t.length>r?n.create().update(t).digest():t);for(let n=0;n<a.length;n++)a[n]^=54;this.iHash.update(a),this.oHash=n.create();for(let n=0;n<a.length;n++)a[n]^=106;this.oHash.update(a),k(a)}update(n){return v(this),this.iHash.update(n),this}digestInto(n){v(this),b(n,this.outputLen),this.finished=!0,this.iHash.digestInto(n),this.oHash.update(n),this.oHash.digestInto(n),this.destroy()}digest(){const n=new Uint8Array(this.oHash.outputLen);return this.digestInto(n),n}_cloneInto(n){n||(n=Object.create(Object.getPrototypeOf(this),{}));const{oHash:e,iHash:t,finished:r,destroyed:a,blockLen:o,outputLen:i}=this;return n.finished=r,n.destroyed=a,n.blockLen=o,n.outputLen=i,n.oHash=e._cloneInto(n.oHash),n.iHash=t._cloneInto(n.iHash),n}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Ee=(n,e,t)=>new Ae(n,e).update(t).digest();Ee.create=(n,e)=>new Ae(n,e);const xe=BigInt(0),Ie=BigInt(1);function Pe(n,e){const t=e.negate();return n?t:e}function Ne(n,e){if(!Number.isSafeInteger(n)||n<=0||n>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+n)}function ze(n,e){Ne(n,e);const t=2**n;return{windows:Math.ceil(e/n)+1,windowSize:2**(n-1),mask:bn(n),maxNumber:t,shiftBy:BigInt(n)}}function Re(n,e,t){const{windowSize:r,mask:a,maxNumber:o,shiftBy:i}=t;let s=Number(n&a),c=n>>i;s>r&&(s-=o,c+=Ie);const l=e*r;return{nextN:c,offset:l+Math.abs(s)-1,isZero:0===s,isNeg:s<0,isNegF:e%2!=0,offsetF:l}}const Te=new WeakMap,Se=new WeakMap;function Be(n){return Se.get(n)||1}function Ce(n,e,t,r){!function(n,e){if(!Array.isArray(n))throw new Error("array expected");n.forEach((n,t)=>{if(!(n instanceof e))throw new Error("invalid point at index "+t)})}(t,n),function(n,e){if(!Array.isArray(n))throw new Error("array of scalars expected");n.forEach((n,t)=>{if(!e.isValid(n))throw new Error("invalid scalar at index "+t)})}(r,e);const a=t.length,o=r.length;if(a!==o)throw new Error("arrays of points and scalars must have equal length");const i=n.ZERO,s=function(n){let e;for(e=0;n>H;n>>=K,e+=1);return e}(BigInt(a));let c=1;s>12?c=s-3:s>4?c=s-2:s>0&&(c=2);const l=bn(c),u=new Array(Number(l)+1).fill(i);let d=i;for(let n=Math.floor((e.BITS-1)/c)*c;n>=0;n-=c){u.fill(i);for(let e=0;e<o;e++){const a=r[e],o=Number(a>>BigInt(n)&l);u[o]=u[o].add(t[e])}let e=i;for(let n=u.length-1,t=i;n>0;n--)t=t.add(u[n]),e=e.add(t);if(d=d.add(e),0!==n)for(let n=0;n<c;n++)d=d.double()}return d}function Oe(n){return kn(n.Fp,Fn.reduce((n,e)=>(n[e]="function",n),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"})),kn(n,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Dn(n.n,n.nBitLength),...n,p:n.Fp.ORDER})}function Ue(n){void 0!==n.lowS&&Q("lowS",n.lowS),void 0!==n.prehash&&Q("prehash",n.prehash)}class Fe extends Error{constructor(n=""){super(n)}}const Le={Err:Fe,_tlv:{encode:(n,e)=>{const{Err:t}=Le;if(n<0||n>256)throw new t("tlv.encode: wrong tag");if(1&e.length)throw new t("tlv.encode: unpadded data");const r=e.length/2,a=J(r);if(a.length/2&128)throw new t("tlv.encode: long form length too big");const o=r>127?J(a.length/2|128):"";return J(n)+o+a+e},decode(n,e){const{Err:t}=Le;let r=0;if(n<0||n>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[r++]!==n)throw new t("tlv.decode: wrong tlv");const a=e[r++];let o=0;if(!!(128&a)){const n=127&a;if(!n)throw new t("tlv.decode(long): indefinite length not supported");if(n>4)throw new t("tlv.decode(long): byte length is too big");const i=e.subarray(r,r+n);if(i.length!==n)throw new t("tlv.decode: length bytes not complete");if(0===i[0])throw new t("tlv.decode(long): zero leftmost byte");for(const n of i)o=o<<8|n;if(r+=n,o<128)throw new t("tlv.decode(long): not minimal encoding")}else o=a;const i=e.subarray(r,r+o);if(i.length!==o)throw new t("tlv.decode: wrong value length");return{v:i,l:e.subarray(r+o)}}},_int:{encode(n){const{Err:e}=Le;if(n<De)throw new e("integer: negative integers are not allowed");let t=J(n);if(8&Number.parseInt(t[0],16)&&(t="00"+t),1&t.length)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(n){const{Err:e}=Le;if(128&n[0])throw new e("invalid signature integer: negative");if(0===n[0]&&!(128&n[1]))throw new e("invalid signature integer: unnecessary leading zero");return cn(n)}},toSig(n){const{Err:e,_int:t,_tlv:r}=Le,a=hn("signature",n),{v:o,l:i}=r.decode(48,a);if(i.length)throw new e("invalid signature: left bytes after parsing");const{v:s,l:c}=r.decode(2,o),{v:l,l:u}=r.decode(2,c);if(u.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(s),s:t.decode(l)}},hexFromSig(n){const{_tlv:e,_int:t}=Le,r=e.encode(2,t.encode(n.r))+e.encode(2,t.encode(n.s));return e.encode(48,r)}};function je(n,e){return Y(un(n,e))}const De=BigInt(0),Me=BigInt(1);BigInt(2);const Ge=BigInt(3),qe=BigInt(4);function He(n){const e=function(n){const e=Oe(n);kn(e,{a:"field",b:"field"},{allowInfinityPoint:"boolean",allowedPrivateKeyLengths:"array",clearCofactor:"function",fromBytes:"function",isTorsionFree:"function",toBytes:"function",wrapPrivateKey:"boolean"});const{endo:t,Fp:r,a:a}=e;if(t){if(!r.eql(a,r.ZERO))throw new Error("invalid endo: CURVE.a must be 0");if("object"!=typeof t||"bigint"!=typeof t.beta||"function"!=typeof t.splitScalar)throw new Error('invalid endo: expected "beta": bigint and "splitScalar": function')}return Object.freeze({...e})}(n),{Fp:t}=e,r=Mn(e.n,e.nBitLength),a=e.toBytes||((n,e,r)=>{const a=e.toAffine();return pn(Uint8Array.from([4]),t.toBytes(a.x),t.toBytes(a.y))}),o=e.fromBytes||(n=>{const e=n.subarray(1);return{x:t.fromBytes(e.subarray(0,t.BYTES)),y:t.fromBytes(e.subarray(t.BYTES,2*t.BYTES))}});function i(n){const{a:r,b:a}=e,o=t.sqr(n),i=t.mul(o,n);return t.add(t.add(i,t.mul(n,r)),a)}function s(n,e){const r=t.sqr(e),a=i(n);return t.eql(r,a)}if(!s(e.Gx,e.Gy))throw new Error("bad curve params: generator point");const c=t.mul(t.pow(e.a,Ge),qe),l=t.mul(t.sqr(e.b),BigInt(27));if(t.is0(t.add(c,l)))throw new Error("bad curve params: a or b");function u(n){const{allowedPrivateKeyLengths:t,nByteLength:r,wrapPrivateKey:a,n:o}=e;if(t&&"bigint"!=typeof n){if(V(n)&&(n=Y(n)),"string"!=typeof n||!t.includes(n.length))throw new Error("invalid private key");n=n.padStart(2*r,"0")}let i;try{i="bigint"==typeof n?n:cn(hn("private key",n,r))}catch(e){throw new Error("invalid private key, expected hex or "+r+" bytes, got "+typeof n)}return a&&(i=Tn(i,o)),mn("private key",i,Me,o),i}function d(n){if(!(n instanceof f))throw new Error("ProjectivePoint expected")}const h=An((n,e)=>{const{px:r,py:a,pz:o}=n;if(t.eql(o,t.ONE))return{x:r,y:a};const i=n.is0();null==e&&(e=i?t.ONE:t.inv(o));const s=t.mul(r,e),c=t.mul(a,e),l=t.mul(o,e);if(i)return{x:t.ZERO,y:t.ZERO};if(!t.eql(l,t.ONE))throw new Error("invZ was invalid");return{x:s,y:c}}),p=An(n=>{if(n.is0()){if(e.allowInfinityPoint&&!t.is0(n.py))return;throw new Error("bad point: ZERO")}const{x:r,y:a}=n.toAffine();if(!t.isValid(r)||!t.isValid(a))throw new Error("bad point: x or y not FE");if(!s(r,a))throw new Error("bad point: equation left != right");if(!n.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class f{constructor(n,e,r){if(null==n||!t.isValid(n))throw new Error("x required");if(null==e||!t.isValid(e)||t.is0(e))throw new Error("y required");if(null==r||!t.isValid(r))throw new Error("z required");this.px=n,this.py=e,this.pz=r,Object.freeze(this)}static fromAffine(n){const{x:e,y:r}=n||{};if(!n||!t.isValid(e)||!t.isValid(r))throw new Error("invalid affine point");if(n instanceof f)throw new Error("projective point not allowed");const a=n=>t.eql(n,t.ZERO);return a(e)&&a(r)?f.ZERO:new f(e,r,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(n){const e=Ln(t,n.map(n=>n.pz));return n.map((n,t)=>n.toAffine(e[t])).map(f.fromAffine)}static fromHex(n){const e=f.fromAffine(o(hn("pointHex",n)));return e.assertValidity(),e}static fromPrivateKey(n){return f.BASE.multiply(u(n))}static msm(n,e){return Ce(f,r,n,e)}_setWindowSize(n){b.setWindowSize(this,n)}assertValidity(){p(this)}hasEvenY(){const{y:n}=this.toAffine();if(t.isOdd)return!t.isOdd(n);throw new Error("Field doesn't support isOdd")}equals(n){d(n);const{px:e,py:r,pz:a}=this,{px:o,py:i,pz:s}=n,c=t.eql(t.mul(e,s),t.mul(o,a)),l=t.eql(t.mul(r,s),t.mul(i,a));return c&&l}negate(){return new f(this.px,t.neg(this.py),this.pz)}double(){const{a:n,b:r}=e,a=t.mul(r,Ge),{px:o,py:i,pz:s}=this;let c=t.ZERO,l=t.ZERO,u=t.ZERO,d=t.mul(o,o),h=t.mul(i,i),p=t.mul(s,s),g=t.mul(o,i);return g=t.add(g,g),u=t.mul(o,s),u=t.add(u,u),c=t.mul(n,u),l=t.mul(a,p),l=t.add(c,l),c=t.sub(h,l),l=t.add(h,l),l=t.mul(c,l),c=t.mul(g,c),u=t.mul(a,u),p=t.mul(n,p),g=t.sub(d,p),g=t.mul(n,g),g=t.add(g,u),u=t.add(d,d),d=t.add(u,d),d=t.add(d,p),d=t.mul(d,g),l=t.add(l,d),p=t.mul(i,s),p=t.add(p,p),d=t.mul(p,g),c=t.sub(c,d),u=t.mul(p,h),u=t.add(u,u),u=t.add(u,u),new f(c,l,u)}add(n){d(n);const{px:r,py:a,pz:o}=this,{px:i,py:s,pz:c}=n;let l=t.ZERO,u=t.ZERO,h=t.ZERO;const p=e.a,g=t.mul(e.b,Ge);let m=t.mul(r,i),b=t.mul(a,s),y=t.mul(o,c),v=t.add(r,a),w=t.add(i,s);v=t.mul(v,w),w=t.add(m,b),v=t.sub(v,w),w=t.add(r,o);let k=t.add(i,c);return w=t.mul(w,k),k=t.add(m,y),w=t.sub(w,k),k=t.add(a,o),l=t.add(s,c),k=t.mul(k,l),l=t.add(b,y),k=t.sub(k,l),h=t.mul(p,w),l=t.mul(g,y),h=t.add(l,h),l=t.sub(b,h),h=t.add(b,h),u=t.mul(l,h),b=t.add(m,m),b=t.add(b,m),y=t.mul(p,y),w=t.mul(g,w),b=t.add(b,y),y=t.sub(m,y),y=t.mul(p,y),w=t.add(w,y),m=t.mul(b,w),u=t.add(u,m),m=t.mul(k,w),l=t.mul(v,l),l=t.sub(l,m),m=t.mul(v,b),h=t.mul(k,h),h=t.add(h,m),new f(l,u,h)}subtract(n){return this.add(n.negate())}is0(){return this.equals(f.ZERO)}wNAF(n){return b.wNAFCached(this,n,f.normalizeZ)}multiplyUnsafe(n){const{endo:r,n:a}=e;mn("scalar",n,De,a);const o=f.ZERO;if(n===De)return o;if(this.is0()||n===Me)return this;if(!r||b.hasPrecomputes(this))return b.wNAFCachedUnsafe(this,n,f.normalizeZ);let{k1neg:i,k1:s,k2neg:c,k2:l}=r.splitScalar(n),u=o,d=o,h=this;for(;s>De||l>De;)s&Me&&(u=u.add(h)),l&Me&&(d=d.add(h)),h=h.double(),s>>=Me,l>>=Me;return i&&(u=u.negate()),c&&(d=d.negate()),d=new f(t.mul(d.px,r.beta),d.py,d.pz),u.add(d)}multiply(n){const{endo:r,n:a}=e;let o,i;if(mn("scalar",n,Me,a),r){const{k1neg:e,k1:a,k2neg:s,k2:c}=r.splitScalar(n);let{p:l,f:u}=this.wNAF(a),{p:d,f:h}=this.wNAF(c);l=b.constTimeNegate(e,l),d=b.constTimeNegate(s,d),d=new f(t.mul(d.px,r.beta),d.py,d.pz),o=l.add(d),i=u.add(h)}else{const{p:e,f:t}=this.wNAF(n);o=e,i=t}return f.normalizeZ([o,i])[0]}multiplyAndAddUnsafe(n,e,t){const r=f.BASE,a=(n,e)=>e!==De&&e!==Me&&n.equals(r)?n.multiply(e):n.multiplyUnsafe(e),o=a(this,e).add(a(n,t));return o.is0()?void 0:o}toAffine(n){return h(this,n)}isTorsionFree(){const{h:n,isTorsionFree:t}=e;if(n===Me)return!0;if(t)return t(f,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:n,clearCofactor:t}=e;return n===Me?this:t?t(f,this):this.multiplyUnsafe(e.h)}toRawBytes(n=!0){return Q("isCompressed",n),this.assertValidity(),a(f,this,n)}toHex(n=!0){return Q("isCompressed",n),Y(this.toRawBytes(n))}}f.BASE=new f(e.Gx,e.Gy,t.ONE),f.ZERO=new f(t.ZERO,t.ONE,t.ZERO);const{endo:g,nBitLength:m}=e,b=(y=f,v=g?Math.ceil(m/2):m,{constTimeNegate:Pe,hasPrecomputes:n=>1!==Be(n),unsafeLadder(n,e,t=y.ZERO){let r=n;for(;e>xe;)e&Ie&&(t=t.add(r)),r=r.double(),e>>=Ie;return t},precomputeWindow(n,e){const{windows:t,windowSize:r}=ze(e,v),a=[];let o=n,i=o;for(let n=0;n<t;n++){i=o,a.push(i);for(let n=1;n<r;n++)i=i.add(o),a.push(i);o=i.double()}return a},wNAF(n,e,t){let r=y.ZERO,a=y.BASE;const o=ze(n,v);for(let n=0;n<o.windows;n++){const{nextN:i,offset:s,isZero:c,isNeg:l,isNegF:u,offsetF:d}=Re(t,n,o);t=i,c?a=a.add(Pe(u,e[d])):r=r.add(Pe(l,e[s]))}return{p:r,f:a}},wNAFUnsafe(n,e,t,r=y.ZERO){const a=ze(n,v);for(let n=0;n<a.windows&&t!==xe;n++){const{nextN:o,offset:i,isZero:s,isNeg:c}=Re(t,n,a);if(t=o,!s){const n=e[i];r=r.add(c?n.negate():n)}}return r},getPrecomputes(n,e,t){let r=Te.get(e);return r||(r=this.precomputeWindow(e,n),1!==n&&Te.set(e,t(r))),r},wNAFCached(n,e,t){const r=Be(n);return this.wNAF(r,this.getPrecomputes(r,n,t),e)},wNAFCachedUnsafe(n,e,t,r){const a=Be(n);return 1===a?this.unsafeLadder(n,e,r):this.wNAFUnsafe(a,this.getPrecomputes(a,n,t),e,r)},setWindowSize(n,e){Ne(e,v),Se.set(n,e),Te.delete(n)}});var y,v;return{CURVE:e,ProjectivePoint:f,normPrivateKeyToScalar:u,weierstrassEquation:i,isWithinCurveOrder:function(n){return gn(n,Me,e.n)}}}function Ke(n){const e=function(n){const e=Oe(n);return kn(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}(n),{Fp:t,n:r,nByteLength:a,nBitLength:o}=e,i=t.BYTES+1,s=2*t.BYTES+1;function c(n){return Tn(n,r)}function l(n){return Bn(n,r)}const{ProjectivePoint:u,normPrivateKeyToScalar:d,weierstrassEquation:h,isWithinCurveOrder:p}=He({...e,toBytes(n,e,r){const a=e.toAffine(),o=t.toBytes(a.x),i=pn;return Q("isCompressed",r),r?i(Uint8Array.from([e.hasEvenY()?2:3]),o):i(Uint8Array.from([4]),o,t.toBytes(a.y))},fromBytes(n){const e=n.length,r=n[0],a=n.subarray(1);if(e!==i||2!==r&&3!==r){if(e===s&&4===r){return{x:t.fromBytes(a.subarray(0,t.BYTES)),y:t.fromBytes(a.subarray(t.BYTES,2*t.BYTES))}}throw new Error("invalid Point, expected length of "+i+", or uncompressed "+s+", got "+e)}{const n=cn(a);if(!gn(n,Me,t.ORDER))throw new Error("Point is not on curve");const e=h(n);let o;try{o=t.sqrt(e)}catch(n){const e=n instanceof Error?": "+n.message:"";throw new Error("Point is not on curve"+e)}return!(1&~r)!==((o&Me)===Me)&&(o=t.neg(o)),{x:n,y:o}}}});function f(n){return n>r>>Me}const g=(n,e,t)=>cn(n.slice(e,t));class m{constructor(n,e,t){mn("r",n,Me,r),mn("s",e,Me,r),this.r=n,this.s=e,null!=t&&(this.recovery=t),Object.freeze(this)}static fromCompact(n){const e=a;return n=hn("compactSignature",n,2*e),new m(g(n,0,e),g(n,e,2*e))}static fromDER(n){const{r:e,s:t}=Le.toSig(hn("DER",n));return new m(e,t)}assertValidity(){}addRecoveryBit(n){return new m(this.r,this.s,n)}recoverPublicKey(n){const{r:r,s:a,recovery:o}=this,i=w(hn("msgHash",n));if(null==o||![0,1,2,3].includes(o))throw new Error("recovery id invalid");const s=2===o||3===o?r+e.n:r;if(s>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");const d=1&o?"03":"02",h=u.fromHex(d+je(s,t.BYTES)),p=l(s),f=c(-i*p),g=c(a*p),m=u.BASE.multiplyAndAddUnsafe(h,f,g);if(!m)throw new Error("point at infinify");return m.assertValidity(),m}hasHighS(){return f(this.s)}normalizeS(){return this.hasHighS()?new m(this.r,c(-this.s),this.recovery):this}toDERRawBytes(){return sn(this.toDERHex())}toDERHex(){return Le.hexFromSig(this)}toCompactRawBytes(){return sn(this.toCompactHex())}toCompactHex(){const n=a;return je(this.r,n)+je(this.s,n)}}const b={isValidPrivateKey(n){try{return d(n),!0}catch(n){return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{const n=qn(e.n);return function(n,e,t=!1){const r=n.length,a=Gn(e),o=qn(e);if(r<16||r<o||r>1024)throw new Error("expected "+o+"-1024 bytes of input, got "+r);const i=Tn(t?ln(n):cn(n),e-xn)+xn;return t?dn(i,a):un(i,a)}(e.randomBytes(n),e.n)},precompute:(n=8,e=u.BASE)=>(e._setWindowSize(n),e.multiply(BigInt(3)),e)};function y(n){if("bigint"==typeof n)return!1;if(n instanceof u)return!0;const r=hn("key",n).length,o=t.BYTES,i=o+1,s=2*o+1;return e.allowedPrivateKeyLengths||a===i?void 0:r===i||r===s}const v=e.bits2int||function(n){if(n.length>8192)throw new Error("input is too large");const e=cn(n),t=8*n.length-o;return t>0?e>>BigInt(t):e},w=e.bits2int_modN||function(n){return c(v(n))},k=bn(o);function A(n){return mn("num < 2^"+o,n,De,k),un(n,a)}function E(n,r,a=x){if(["recovered","canonical"].some(n=>n in a))throw new Error("sign() legacy options not supported");const{hash:o,randomBytes:i}=e;let{lowS:s,prehash:h,extraEntropy:g}=a;null==s&&(s=!0),n=hn("msgHash",n),Ue(a),h&&(n=hn("prehashed msgHash",o(n)));const b=w(n),y=d(r),k=[A(y),A(b)];if(null!=g&&!1!==g){const n=!0===g?i(t.BYTES):g;k.push(hn("extraEntropy",n))}const E=pn(...k),I=b;return{seed:E,k2sig:function(n){const e=v(n);if(!p(e))return;const t=l(e),r=u.BASE.multiply(e).toAffine(),a=c(r.x);if(a===De)return;const o=c(t*c(I+a*y));if(o===De)return;let i=(r.x===a?0:2)|Number(r.y&Me),d=o;return s&&f(o)&&(d=function(n){return f(n)?c(-n):n}(o),i^=1),new m(a,d,i)}}}const x={lowS:e.lowS,prehash:!1},I={lowS:e.lowS,prehash:!1};return u.BASE._setWindowSize(8),{CURVE:e,getPublicKey:function(n,e=!0){return u.fromPrivateKey(n).toRawBytes(e)},getSharedSecret:function(n,e,t=!0){if(!0===y(n))throw new Error("first arg must be private key");if(!1===y(e))throw new Error("second arg must be public key");return u.fromHex(e).multiply(d(n)).toRawBytes(t)},sign:function(n,t,r=x){const{seed:a,k2sig:o}=E(n,t,r),i=e,s=function(n,e,t){if("number"!=typeof n||n<2)throw new Error("hashLen must be a number");if("number"!=typeof e||e<2)throw new Error("qByteLen must be a number");if("function"!=typeof t)throw new Error("hmacFn must be a function");let r=yn(n),a=yn(n),o=0;const i=()=>{r.fill(1),a.fill(0),o=0},s=(...n)=>t(a,r,...n),c=(n=yn(0))=>{a=s(vn([0]),n),r=s(),0!==n.length&&(a=s(vn([1]),n),r=s())},l=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let n=0;const t=[];for(;n<e;){r=s();const e=r.slice();t.push(e),n+=r.length}return pn(...t)};return(n,e)=>{let t;for(i(),c(n);!(t=e(l()));)c();return i(),t}}(i.hash.outputLen,i.nByteLength,i.hmac);return s(a,o)},verify:function(n,t,r,a=I){const o=n;t=hn("msgHash",t),r=hn("publicKey",r);const{lowS:i,prehash:s,format:d}=a;if(Ue(a),"strict"in a)throw new Error("options.strict was renamed to lowS");if(void 0!==d&&"compact"!==d&&"der"!==d)throw new Error("format must be compact or der");const h="string"==typeof o||V(o),p=!h&&!d&&"object"==typeof o&&null!==o&&"bigint"==typeof o.r&&"bigint"==typeof o.s;if(!h&&!p)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let f,g;try{if(p&&(f=new m(o.r,o.s)),h){try{"compact"!==d&&(f=m.fromDER(o))}catch(n){if(!(n instanceof Le.Err))throw n}f||"der"===d||(f=m.fromCompact(o))}g=u.fromHex(r)}catch(n){return!1}if(!f)return!1;if(i&&f.hasHighS())return!1;s&&(t=e.hash(t));const{r:b,s:y}=f,v=w(t),k=l(y),A=c(v*k),E=c(b*k),x=u.BASE.multiplyAndAddUnsafe(g,A,E)?.toAffine();return!!x&&c(x.x)===b},ProjectivePoint:u,Signature:m,utils:b}}function Ve(n){return{hash:n,hmac:(e,...t)=>Ee(n,e,D(...t)),randomBytes:q}}const _e=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Qe=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Je=BigInt(0),$e=BigInt(1),We=BigInt(2),Ze=(n,e)=>(n+e/We)/e;const Ye=Mn(_e,void 0,void 0,{sqrt:function(n){const e=_e,t=BigInt(3),r=BigInt(6),a=BigInt(11),o=BigInt(22),i=BigInt(23),s=BigInt(44),c=BigInt(88),l=n*n*n%e,u=l*l*n%e,d=Sn(u,t,e)*u%e,h=Sn(d,t,e)*u%e,p=Sn(h,We,e)*l%e,f=Sn(p,a,e)*p%e,g=Sn(f,o,e)*f%e,m=Sn(g,s,e)*g%e,b=Sn(m,c,e)*m%e,y=Sn(b,s,e)*g%e,v=Sn(y,t,e)*u%e,w=Sn(v,i,e)*f%e,k=Sn(w,r,e)*l%e,A=Sn(k,We,e);if(!Ye.eql(Ye.sqr(A),n))throw new Error("Cannot find square root");return A}}),Xe=function(n,e){const t=e=>Ke({...n,...Ve(e)});return{...t(e),create:t}}({a:Je,b:BigInt(7),Fp:Ye,n:Qe,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:n=>{const e=Qe,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-$e*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=t,i=BigInt("0x100000000000000000000000000000000"),s=Ze(o*n,e),c=Ze(-r*n,e);let l=Tn(n-s*t-c*a,e),u=Tn(-s*r-c*o,e);const d=l>i,h=u>i;if(d&&(l=e-l),h&&(u=e-u),l>i||u>i)throw new Error("splitScalar: Endomorphism failed, k="+n);return{k1neg:d,k1:l,k2neg:h,k2:u}}}},we),nt=Uint8Array.from([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),et=(()=>Uint8Array.from(new Array(16).fill(0).map((n,e)=>e)))(),tt=(()=>et.map(n=>(9*n+5)%16))(),rt=(()=>{const n=[[et],[tt]];for(let e=0;e<4;e++)for(let t of n)t.push(t[e].map(n=>nt[n]));return n})(),at=(()=>rt[0])(),ot=(()=>rt[1])(),it=[[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(n=>Uint8Array.from(n)),st=at.map((n,e)=>n.map(n=>it[e][n])),ct=ot.map((n,e)=>n.map(n=>it[e][n])),lt=Uint32Array.from([0,1518500249,1859775393,2400959708,2840853838]),ut=Uint32Array.from([1352829926,1548603684,1836072691,2053994217,0]);function dt(n,e,t,r){return 0===n?e^t^r:1===n?e&t|~e&r:2===n?(e|~t)^r:3===n?e&r|t&~r:e^(t|~r)}const ht=new Uint32Array(16);class pt extends Vn{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){const{h0:n,h1:e,h2:t,h3:r,h4:a}=this;return[n,e,t,r,a]}set(n,e,t,r,a){this.h0=0|n,this.h1=0|e,this.h2=0|t,this.h3=0|r,this.h4=0|a}process(n,e){for(let t=0;t<16;t++,e+=4)ht[t]=n.getUint32(e,!0);let t=0|this.h0,r=t,a=0|this.h1,o=a,i=0|this.h2,s=i,c=0|this.h3,l=c,u=0|this.h4,d=u;for(let n=0;n<5;n++){const e=4-n,h=lt[n],p=ut[n],f=at[n],g=ot[n],m=st[n],b=ct[n];for(let e=0;e<16;e++){const r=x(t+dt(n,a,i,c)+ht[f[e]]+h,m[e])+u|0;t=u,u=c,c=0|x(i,10),i=a,a=r}for(let n=0;n<16;n++){const t=x(r+dt(e,o,s,l)+ht[g[n]]+p,b[n])+d|0;r=d,d=l,l=0|x(s,10),s=o,o=t}}this.set(this.h1+i+l|0,this.h2+c+d|0,this.h3+u+r|0,this.h4+t+o|0,this.h0+a+s|0)}roundClean(){k(ht)}destroy(){this.destroyed=!0,k(this.buffer),this.set(0,0,0,0,0)}}const ft=G(()=>new pt);
|
|
3
|
+
/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */function gt(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&"Uint8Array"===n.constructor.name}function mt(n,e){return!!Array.isArray(e)&&(0===e.length||(n?e.every(n=>"string"==typeof n):e.every(n=>Number.isSafeInteger(n))))}function bt(n){if("function"!=typeof n)throw new Error("function expected");return!0}function yt(n,e){if("string"!=typeof e)throw new Error(`${n}: string expected`);return!0}function vt(n){if(!Number.isSafeInteger(n))throw new Error(`invalid integer: ${n}`)}function wt(n){if(!Array.isArray(n))throw new Error("array expected")}function kt(n,e){if(!mt(!0,e))throw new Error(`${n}: array of strings expected`)}function At(n,e){if(!mt(!1,e))throw new Error(`${n}: array of numbers expected`)}function Et(...n){const e=n=>n,t=(n,e)=>t=>n(e(t));return{encode:n.map(n=>n.encode).reduceRight(t,e),decode:n.map(n=>n.decode).reduce(t,e)}}function xt(n){const e="string"==typeof n?n.split(""):n,t=e.length;kt("alphabet",e);const r=new Map(e.map((n,e)=>[n,e]));return{encode:r=>(wt(r),r.map(r=>{if(!Number.isSafeInteger(r)||r<0||r>=t)throw new Error(`alphabet.encode: digit index outside alphabet "${r}". Allowed: ${n}`);return e[r]})),decode:e=>(wt(e),e.map(e=>{yt("alphabet.decode",e);const t=r.get(e);if(void 0===t)throw new Error(`Unknown letter: "${e}". Allowed: ${n}`);return t}))}}function It(n=""){return yt("join",n),{encode:e=>(kt("join.decode",e),e.join(n)),decode:e=>(yt("join.decode",e),e.split(n))}}function Pt(n,e="="){return vt(n),yt("padding",e),{encode(t){for(kt("padding.encode",t);t.length*n%8;)t.push(e);return t},decode(t){kt("padding.decode",t);let r=t.length;if(r*n%8)throw new Error("padding: invalid, string should have whole number of bytes");for(;r>0&&t[r-1]===e;r--){if((r-1)*n%8==0)throw new Error("padding: invalid, string has too much padding")}return t.slice(0,r)}}}function Nt(n){return bt(n),{encode:n=>n,decode:e=>n(e)}}function zt(n,e,t){if(e<2)throw new Error(`convertRadix: invalid from=${e}, base cannot be less than 2`);if(t<2)throw new Error(`convertRadix: invalid to=${t}, base cannot be less than 2`);if(wt(n),!n.length)return[];let r=0;const a=[],o=Array.from(n,n=>{if(vt(n),n<0||n>=e)throw new Error(`invalid integer: ${n}`);return n}),i=o.length;for(;;){let n=0,s=!0;for(let a=r;a<i;a++){const i=o[a],c=e*n,l=c+i;if(!Number.isSafeInteger(l)||c/e!==n||l-i!==c)throw new Error("convertRadix: carry overflow");const u=l/t;n=l%t;const d=Math.floor(u);if(o[a]=d,!Number.isSafeInteger(d)||d*t+n!==l)throw new Error("convertRadix: carry overflow");s&&(d?s=!1:r=a)}if(a.push(n),s)break}for(let e=0;e<n.length-1&&0===n[e];e++)a.push(0);return a.reverse()}const Rt=(n,e)=>0===e?n:Rt(e,n%e),Tt=(n,e)=>n+(e-Rt(n,e)),St=(()=>{let n=[];for(let e=0;e<40;e++)n.push(2**e);return n})();function Bt(n,e,t,r){if(wt(n),e<=0||e>32)throw new Error(`convertRadix2: wrong from=${e}`);if(t<=0||t>32)throw new Error(`convertRadix2: wrong to=${t}`);if(Tt(e,t)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${t} carryBits=${Tt(e,t)}`);let a=0,o=0;const i=St[e],s=St[t]-1,c=[];for(const r of n){if(vt(r),r>=i)throw new Error(`convertRadix2: invalid data word=${r} from=${e}`);if(a=a<<e|r,o+e>32)throw new Error(`convertRadix2: carry overflow pos=${o} from=${e}`);for(o+=e;o>=t;o-=t)c.push((a>>o-t&s)>>>0);const n=St[o];if(void 0===n)throw new Error("invalid carry");a&=n-1}if(a=a<<t-o&s,!r&&o>=e)throw new Error("Excess padding");if(!r&&a>0)throw new Error(`Non-zero padding: ${a}`);return r&&o>0&&c.push(a>>>0),c}function Ct(n){vt(n);return{encode:e=>{if(!gt(e))throw new Error("radix.encode input should be Uint8Array");return zt(Array.from(e),256,n)},decode:e=>(At("radix.decode",e),Uint8Array.from(zt(e,n,256)))}}function Ot(n,e=!1){if(vt(n),n<=0||n>32)throw new Error("radix2: bits should be in (0..32]");if(Tt(8,n)>32||Tt(n,8)>32)throw new Error("radix2: carry overflow");return{encode:t=>{if(!gt(t))throw new Error("radix2.encode input should be Uint8Array");return Bt(Array.from(t),8,n,!e)},decode:t=>(At("radix2.decode",t),Uint8Array.from(Bt(t,n,8,e)))}}function Ut(n){return bt(n),function(...e){try{return n.apply(null,e)}catch(n){}}}function Ft(n,e){return vt(n),bt(e),{encode(t){if(!gt(t))throw new Error("checksum.encode: input should be Uint8Array");const r=e(t).slice(0,n),a=new Uint8Array(t.length+n);return a.set(t),a.set(r,t.length),a},decode(t){if(!gt(t))throw new Error("checksum.decode: input should be Uint8Array");const r=t.slice(0,-n),a=t.slice(-n),o=e(r).slice(0,n);for(let e=0;e<n;e++)if(o[e]!==a[e])throw new Error("Invalid checksum");return r}}}const Lt={alphabet:xt,chain:Et,checksum:Ft,convertRadix:zt,convertRadix2:Bt,radix:Ct,radix2:Ot,join:It,padding:Pt};Et(Ot(4),xt("0123456789ABCDEF"),It("")),Et(Ot(5),xt("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),Pt(5),It("")),Et(Ot(5),xt("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),It("")),Et(Ot(5),xt("0123456789ABCDEFGHIJKLMNOPQRSTUV"),Pt(5),It("")),Et(Ot(5),xt("0123456789ABCDEFGHIJKLMNOPQRSTUV"),It("")),Et(Ot(5),xt("0123456789ABCDEFGHJKMNPQRSTVWXYZ"),It(""),Nt(n=>n.toUpperCase().replace(/O/g,"0").replace(/[IL]/g,"1")));const jt=(()=>"function"==typeof Uint8Array.from([]).toBase64&&"function"==typeof Uint8Array.fromBase64)();jt||Et(Ot(6),xt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),Pt(6),It("")),Et(Ot(6),xt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),It("")),jt||Et(Ot(6),xt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),Pt(6),It("")),Et(Ot(6),xt("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),It(""));const Dt=n=>Et(Ct(58),xt(n),It("")),Mt=Dt("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");Dt("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"),Dt("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz");const Gt=Et(xt("qpzry9x8gf2tvdw0s3jn54khce6mua7l"),It("")),qt=[996825010,642813549,513874426,1027748829,705979059];function Ht(n){const e=n>>25;let t=(33554431&n)<<5;for(let n=0;n<qt.length;n++)1==(e>>n&1)&&(t^=qt[n]);return t}function Kt(n,e,t=1){const r=n.length;let a=1;for(let e=0;e<r;e++){const t=n.charCodeAt(e);if(t<33||t>126)throw new Error(`Invalid prefix (${n})`);a=Ht(a)^t>>5}a=Ht(a);for(let e=0;e<r;e++)a=Ht(a)^31&n.charCodeAt(e);for(let n of e)a=Ht(a)^n;for(let n=0;n<6;n++)a=Ht(a);return a^=t,Gt.encode(Bt([a%St[30]],30,5,!1))}function Vt(n){const e="bech32"===n?1:734539939,t=Ot(5),r=t.decode,a=t.encode,o=Ut(r);function i(n,t,r=90){yt("bech32.encode prefix",n),gt(t)&&(t=Array.from(t)),At("bech32.encode",t);const a=n.length;if(0===a)throw new TypeError(`Invalid prefix length ${a}`);const o=a+7+t.length;if(!1!==r&&o>r)throw new TypeError(`Length ${o} exceeds limit ${r}`);const i=n.toLowerCase(),s=Kt(i,t,e);return`${i}1${Gt.encode(t)}${s}`}function s(n,t=90){yt("bech32.decode input",n);const r=n.length;if(r<8||!1!==t&&r>t)throw new TypeError(`invalid string length: ${r} (${n}). Expected (8..${t})`);const a=n.toLowerCase();if(n!==a&&n!==n.toUpperCase())throw new Error("String must be lowercase or uppercase");const o=a.lastIndexOf("1");if(0===o||-1===o)throw new Error('Letter "1" must be present between prefix and data only');const i=a.slice(0,o),s=a.slice(o+1);if(s.length<6)throw new Error("Data must be at least 6 characters long");const c=Gt.decode(s).slice(0,-6),l=Kt(i,c,e);if(!s.endsWith(l))throw new Error(`Invalid checksum in ${n}: expected "${l}"`);return{prefix:i,words:c}}return{encode:i,decode:s,encodeFromBytes:function(n,e){return i(n,a(e))},decodeToBytes:function(n){const{prefix:e,words:t}=s(n,!1);return{prefix:e,words:t,bytes:r(t)}},decodeUnsafe:Ut(s),fromWords:r,fromWordsUnsafe:o,toWords:a}}Vt("bech32"),Vt("bech32m");(()=>"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex)()||Et(Ot(4),xt("0123456789abcdef"),It(""),Nt(n=>{if("string"!=typeof n||n.length%2!=0)throw new TypeError(`hex.decode: expected string, got ${typeof n} with length ${n.length}`);return n.toLowerCase()}));const _t=Xe.ProjectivePoint,Qt=(n=>Et(Ft(4,e=>n(n(e))),Mt))(we);function Jt(n){b(n);const e=0===n.length?"0":function(n){if(b(n),N)return n.toHex();let e="";for(let t=0;t<n.length;t++)e+=z[n[t]];return e}(n);return BigInt("0x"+e)}function $t(n){if("bigint"!=typeof n)throw new Error("bigint expected");return function(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);if(N)return Uint8Array.fromHex(n);const e=n.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(t);for(let e=0,a=0;e<t;e++,a+=2){const t=U(n.charCodeAt(a)),o=U(n.charCodeAt(a+1));if(void 0===t||void 0===o){const e=n[a]+n[a+1];throw new Error('hex string expected, got non-hex character "'+e+'" at index '+a)}r[e]=16*t+o}return r}(n.toString(16).padStart(64,"0"))}const Wt=F("Bitcoin seed"),Zt={private:76066276,public:76067358},Yt=2147483648,Xt=n=>{if(!Number.isSafeInteger(n)||n<0||n>2**32-1)throw new Error("invalid number, should be from 0 to 2**32-1, got "+n);const e=new Uint8Array(4);return A(e).setUint32(0,n,!1),e};class nr{get fingerprint(){if(!this.pubHash)throw new Error("No publicKey set!");return A(this.pubHash).getUint32(0,!1)}get identifier(){return this.pubHash}get pubKeyHash(){return this.pubHash}get privateKey(){return this.privKeyBytes||null}get publicKey(){return this.pubKey||null}get privateExtendedKey(){const n=this.privateKey;if(!n)throw new Error("No private key");return Qt.encode(this.serialize(this.versions.private,D(new Uint8Array([0]),n)))}get publicExtendedKey(){if(!this.pubKey)throw new Error("No public key");return Qt.encode(this.serialize(this.versions.public,this.pubKey))}static fromMasterSeed(n,e=Zt){if(b(n),8*n.length<128||8*n.length>512)throw new Error("HDKey: seed length must be between 128 and 512 bits; 256 bits is advised, got "+n.length);const t=Ee(ke,Wt,n);return new nr({versions:e,chainCode:t.slice(32),privateKey:t.slice(0,32)})}static fromExtendedKey(n,e=Zt){const t=Qt.decode(n),r=A(t),a=r.getUint32(0,!1),o={versions:e,depth:t[4],parentFingerprint:r.getUint32(5,!1),index:r.getUint32(9,!1),chainCode:t.slice(13,45)},i=t.slice(45),s=0===i[0];if(a!==e[s?"private":"public"])throw new Error("Version mismatch");return new nr(s?{...o,privateKey:i.slice(1)}:{...o,publicKey:i})}static fromJSON(n){return nr.fromExtendedKey(n.xpriv)}constructor(n){if(this.depth=0,this.index=0,this.chainCode=null,this.parentFingerprint=0,!n||"object"!=typeof n)throw new Error("HDKey.constructor must not be called directly");if(this.versions=n.versions||Zt,this.depth=n.depth||0,this.chainCode=n.chainCode||null,this.index=n.index||0,this.parentFingerprint=n.parentFingerprint||0,!this.depth&&(this.parentFingerprint||this.index))throw new Error("HDKey: zero depth with non-zero index/parent fingerprint");if(n.publicKey&&n.privateKey)throw new Error("HDKey: publicKey and privateKey at same time.");if(n.privateKey){if(!Xe.utils.isValidPrivateKey(n.privateKey))throw new Error("Invalid private key");this.privKey="bigint"==typeof n.privateKey?n.privateKey:Jt(n.privateKey),this.privKeyBytes=$t(this.privKey),this.pubKey=Xe.getPublicKey(n.privateKey,!0)}else{if(!n.publicKey)throw new Error("HDKey: no public or private key provided");this.pubKey=_t.fromHex(n.publicKey).toRawBytes(!0)}var e;this.pubHash=(e=this.pubKey,ft(we(e)))}derive(n){if(!/^[mM]'?/.test(n))throw new Error('Path must start with "m" or "M"');if(/^[mM]'?$/.test(n))return this;const e=n.replace(/^[mM]'?\//,"").split("/");let t=this;for(const n of e){const e=/^(\d+)('?)$/.exec(n),r=e&&e[1];if(!e||3!==e.length||"string"!=typeof r)throw new Error("invalid child index: "+n);let a=+r;if(!Number.isSafeInteger(a)||a>=Yt)throw new Error("Invalid index");"'"===e[2]&&(a+=Yt),t=t.deriveChild(a)}return t}deriveChild(n){if(!this.pubKey||!this.chainCode)throw new Error("No publicKey or chainCode set");let e=Xt(n);if(n>=Yt){const n=this.privateKey;if(!n)throw new Error("Could not derive hardened child key");e=D(new Uint8Array([0]),n,e)}else e=D(this.pubKey,e);const t=Ee(ke,this.chainCode,e),r=Jt(t.slice(0,32)),a=t.slice(32);if(!Xe.utils.isValidPrivateKey(r))throw new Error("Tweak bigger than curve order");const o={versions:this.versions,chainCode:a,depth:this.depth+1,parentFingerprint:this.fingerprint,index:n};try{if(this.privateKey){const n=Tn(this.privKey+r,Xe.CURVE.n);if(!Xe.utils.isValidPrivateKey(n))throw new Error("The tweak was out of range or the resulted private key is invalid");o.privateKey=n}else{const n=_t.fromHex(this.pubKey).add(_t.fromPrivateKey(r));if(n.equals(_t.ZERO))throw new Error("The tweak was equal to negative P, which made the result key invalid");o.publicKey=n.toRawBytes(!0)}return new nr(o)}catch(e){return this.deriveChild(n+1)}}sign(n){if(!this.privateKey)throw new Error("No privateKey set!");return b(n,32),Xe.sign(n,this.privKey).toCompactRawBytes()}verify(n,e){if(b(n,32),b(e,64),!this.publicKey)throw new Error("No publicKey set!");let t;try{t=Xe.Signature.fromCompact(e)}catch(n){return!1}return Xe.verify(t,n,this.publicKey)}wipePrivateData(){return this.privKey=void 0,this.privKeyBytes&&(this.privKeyBytes.fill(0),this.privKeyBytes=void 0),this}toJSON(){return{xpriv:this.privateExtendedKey,xpub:this.publicExtendedKey}}serialize(n,e){if(!this.chainCode)throw new Error("No chainCode set");return b(e,33),D(Xt(n),new Uint8Array([this.depth]),Xt(this.parentFingerprint),Xt(this.index),this.chainCode,e)}}const er="2.43.4";let tr=({docsBaseUrl:n,docsPath:e="",docsSlug:t})=>e?`${n??"https://viem.sh"}${e}${t?`#${t}`:""}`:void 0,rr=`viem@${er}`;class ar extends Error{constructor(n,e={}){const t=e.cause instanceof ar?e.cause.details:e.cause?.message?e.cause.message:e.details,r=e.cause instanceof ar&&e.cause.docsPath||e.docsPath,a=tr?.({...e,docsPath:r});super([n||"An error occurred.","",...e.metaMessages?[...e.metaMessages,""]:[],...a?[`Docs: ${a}`]:[],...t?[`Details: ${t}`]:[],...rr?[`Version: ${rr}`]:[]].join("\n"),e.cause?{cause:e.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.details=t,this.docsPath=r,this.metaMessages=e.metaMessages,this.name=e.name??this.name,this.shortMessage=n,this.version=er}walk(n){return or(this,n)}}function or(n,e){return e?.(n)?n:n&&"object"==typeof n&&"cause"in n&&void 0!==n.cause?or(n.cause,e):e?null:n}class ir extends ar{constructor({max:n,min:e,signed:t,size:r,value:a}){super(`Number "${a}" is not in safe ${r?`${8*r}-bit ${t?"signed":"unsigned"} `:""}integer range ${n?`(${e} to ${n})`:`(above ${e})`}`,{name:"IntegerOutOfRangeError"})}}class sr extends ar{constructor({givenSize:n,maxSize:e}){super(`Size cannot exceed ${e} bytes. Given size: ${n} bytes.`,{name:"SizeOverflowError"})}}function cr(n,{strict:e=!0}={}){return!!n&&("string"==typeof n&&(e?/^0x[0-9a-fA-F]*$/.test(n):n.startsWith("0x")))}function lr(n){return cr(n,{strict:!1})?Math.ceil((n.length-2)/2):n.length}function ur(n,{dir:e="left"}={}){let t="string"==typeof n?n.replace("0x",""):n,r=0;for(let n=0;n<t.length-1&&"0"===t["left"===e?n:t.length-n-1].toString();n++)r++;return t="left"===e?t.slice(r):t.slice(0,t.length-r),"string"==typeof n?(1===t.length&&"right"===e&&(t=`${t}0`),`0x${t.length%2==1?`0${t}`:t}`):t}class dr extends ar{constructor({offset:n,position:e,size:t}){super(`Slice ${"start"===e?"starting":"ending"} at offset "${n}" is out-of-bounds (size: ${t}).`,{name:"SliceOffsetOutOfBoundsError"})}}class hr extends ar{constructor({size:n,targetSize:e,type:t}){super(`${t.charAt(0).toUpperCase()}${t.slice(1).toLowerCase()} size (${n}) exceeds padding size (${e}).`,{name:"SizeExceedsPaddingSizeError"})}}function pr(n,{dir:e,size:t=32}={}){return"string"==typeof n?fr(n,{dir:e,size:t}):function(n,{dir:e,size:t=32}={}){if(null===t)return n;if(n.length>t)throw new hr({size:n.length,targetSize:t,type:"bytes"});const r=new Uint8Array(t);for(let a=0;a<t;a++){const o="right"===e;r[o?a:t-a-1]=n[o?a:n.length-a-1]}return r}(n,{dir:e,size:t})}function fr(n,{dir:e,size:t=32}={}){if(null===t)return n;const r=n.replace("0x","");if(r.length>2*t)throw new hr({size:Math.ceil(r.length/2),targetSize:t,type:"hex"});return`0x${r["right"===e?"padEnd":"padStart"](2*t,"0")}`}const gr=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function mr(n,e={}){return"number"==typeof n||"bigint"==typeof n?vr(n,e):"string"==typeof n?kr(n,e):"boolean"==typeof n?br(n,e):yr(n,e)}function br(n,e={}){const t=`0x${Number(n)}`;return"number"==typeof e.size?(zr(t,{size:e.size}),pr(t,{size:e.size})):t}function yr(n,e={}){let t="";for(let e=0;e<n.length;e++)t+=gr[n[e]];const r=`0x${t}`;return"number"==typeof e.size?(zr(r,{size:e.size}),pr(r,{dir:"right",size:e.size})):r}function vr(n,e={}){const{signed:t,size:r}=e,a=BigInt(n);let o;r?o=t?(1n<<8n*BigInt(r)-1n)-1n:2n**(8n*BigInt(r))-1n:"number"==typeof n&&(o=BigInt(Number.MAX_SAFE_INTEGER));const i="bigint"==typeof o&&t?-o-1n:0;if(o&&a>o||a<i){const e="bigint"==typeof n?"n":"";throw new ir({max:o?`${o}${e}`:void 0,min:`${i}${e}`,signed:t,size:r,value:`${n}${e}`})}const s=`0x${(t&&a<0?(1n<<BigInt(8*r))+BigInt(a):a).toString(16)}`;return r?pr(s,{size:r}):s}const wr=new TextEncoder;function kr(n,e={}){return yr(wr.encode(n),e)}const Ar=new TextEncoder;function Er(n,e={}){return"number"==typeof n||"bigint"==typeof n?function(n,e){const t=vr(n,e);return Pr(t)}(n,e):"boolean"==typeof n?function(n,e={}){const t=new Uint8Array(1);if(t[0]=Number(n),"number"==typeof e.size)return zr(t,{size:e.size}),pr(t,{size:e.size});return t}(n,e):cr(n)?Pr(n,e):Nr(n,e)}const xr={zero:48,nine:57,A:65,F:70,a:97,f:102};function Ir(n){return n>=xr.zero&&n<=xr.nine?n-xr.zero:n>=xr.A&&n<=xr.F?n-(xr.A-10):n>=xr.a&&n<=xr.f?n-(xr.a-10):void 0}function Pr(n,e={}){let t=n;e.size&&(zr(t,{size:e.size}),t=pr(t,{dir:"right",size:e.size}));let r=t.slice(2);r.length%2&&(r=`0${r}`);const a=r.length/2,o=new Uint8Array(a);for(let n=0,e=0;n<a;n++){const t=Ir(r.charCodeAt(e++)),a=Ir(r.charCodeAt(e++));if(void 0===t||void 0===a)throw new ar(`Invalid byte sequence ("${r[e-2]}${r[e-1]}" in "${r}").`);o[n]=16*t+a}return o}function Nr(n,e={}){const t=Ar.encode(n);return"number"==typeof e.size?(zr(t,{size:e.size}),pr(t,{dir:"right",size:e.size})):t}function zr(n,{size:e}){if(lr(n)>e)throw new sr({givenSize:lr(n),maxSize:e})}function Rr(n,e={}){const{signed:t}=e;e.size&&zr(n,{size:e.size});const r=BigInt(n);if(!t)return r;const a=(n.length-2)/2;return r<=(1n<<8n*BigInt(a)-1n)-1n?r:r-BigInt(`0x${"f".padStart(2*a,"f")}`)-1n}function Tr(n,e={}){return Number(Rr(n,e))}class Sr extends Map{constructor(n){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=n}get(n){const e=super.get(n);return super.has(n)&&void 0!==e&&(this.delete(n),super.set(n,e)),e}set(n,e){if(super.set(n,e),this.maxSize&&this.size>this.maxSize){const n=this.keys().next().value;n&&this.delete(n)}return this}}function Br(n){const{source:e}=n,t=new Map,r=new Sr(8192),a=new Map,o=({address:n,chainId:e})=>`${n}.${e}`;return{async consume({address:n,chainId:t,client:a}){const i=o({address:n,chainId:t}),s=this.get({address:n,chainId:t,client:a});this.increment({address:n,chainId:t});const c=await s;return await e.set({address:n,chainId:t},c),r.set(i,c),c},async increment({address:n,chainId:e}){const r=o({address:n,chainId:e}),a=t.get(r)??0;t.set(r,a+1)},async get({address:n,chainId:i,client:s}){const c=o({address:n,chainId:i});let l=a.get(c);l||(l=(async()=>{try{const t=await e.get({address:n,chainId:i,client:s}),a=r.get(c)??0;return a>0&&t<=a?a+1:(r.delete(c),t)}finally{this.reset({address:n,chainId:i})}})(),a.set(c,l));return(t.get(c)??0)+await l},reset({address:n,chainId:e}){const r=o({address:n,chainId:e});t.delete(r),a.delete(r)}}}const Cr=Br({source:{async get(n){const{address:e,client:t}=n;return async function(n,{address:e,blockTag:t="latest",blockNumber:r}){return Tr(await n.request({method:"eth_getTransactionCount",params:[e,"bigint"==typeof r?vr(r):t]},{dedupe:Boolean(r)}))}(t,{address:e,blockTag:"pending"})},set(){}}});function Or({r:n,s:e,to:t="hex",v:r,yParity:a}){const o=(()=>{if(0===a||1===a)return a;if(r&&(27n===r||28n===r||r>=35n))return r%2n==0n?1:0;throw new Error("Invalid `v` or `yParity` value")})(),i=`0x${new Xe.Signature(Rr(n),Rr(e)).toCompactHex()}${0===o?"1b":"1c"}`;return"hex"===t?i:Pr(i)}function Ur(n,e,t,r){y(n);const a=function(n,e){if(void 0!==e&&"[object Object]"!=={}.toString.call(e))throw new Error("options should be object or undefined");return Object.assign(n,e)}({dkLen:32,asyncTick:10},r),{c:o,dkLen:i,asyncTick:s}=a;if(m(o),m(i),m(s),o<1)throw new Error("iterations (c) should be >= 1");const c=j(e),l=j(t),u=new Uint8Array(i),d=Ee.create(n,c),h=d._cloneInto().update(l);return{c:o,dkLen:i,asyncTick:s,DK:u,PRF:d,PRFSalt:h}}function Fr(n,e,t,r){const{c:a,dkLen:o,DK:i,PRF:s,PRFSalt:c}=Ur(n,e,t,r);let l;const u=new Uint8Array(4),d=A(u),h=new Uint8Array(s.outputLen);for(let n=1,e=0;e<o;n++,e+=s.outputLen){const t=i.subarray(e,e+s.outputLen);d.setInt32(0,n,!1),(l=c._cloneInto(l)).update(u).digestInto(h),t.set(h.subarray(0,t.length));for(let n=1;n<a;n++){s._cloneInto(l).update(h).digestInto(h);for(let n=0;n<t.length;n++)t[n]^=h[n]}}return function(n,e,t,r,a){return n.destroy(),e.destroy(),r&&r.destroy(),k(a),t}(s,c,i,l,h)}function Lr(n){if("string"!=typeof n)throw new TypeError("invalid mnemonic type: "+typeof n);return n.normalize("NFKD")}function jr(n,e=128){if(m(e),e%32!=0||e>256)throw new TypeError("Invalid entropy");return function(n,e){t=n,b(t,16,20,24,28,32);var t;const r=function(n){if(!Array.isArray(n)||2048!==n.length||"string"!=typeof n[0])throw new Error("Wordlist: expected array of 2048 strings");return n.forEach(n=>{if("string"!=typeof n)throw new Error("wordlist: non-string element: "+n)}),Lt.chain(Lt.checksum(1,Dr),Lt.radix2(11,!0),Lt.alphabet(n))}(e).encode(n);return r.join((n=>"あいこくしん"===n[0])(e)?" ":" ")}(q(e/8),n)}const Dr=n=>{const e=8-n.length/4;return new Uint8Array([we(n)[0]>>e<<e])};function Mr(n,e=""){return Fr(ke,function(n){const e=Lr(n),t=e.split(" ");if(![12,15,18,21,24].includes(t.length))throw new Error("Invalid mnemonic");return{nfkd:e,words:t}}(n).nfkd,(n=>Lr("mnemonic"+n))(e),{c:2048,dkLen:64})}class Gr extends ar{constructor({address:n}){super(`Address "${n}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."],name:"InvalidAddressError"})}}const qr=BigInt(0),Hr=BigInt(1),Kr=BigInt(2),Vr=BigInt(7),_r=BigInt(256),Qr=BigInt(113),Jr=[],$r=[],Wr=[];for(let n=0,e=Hr,t=1,r=0;n<24;n++){[t,r]=[r,(2*t+3*r)%5],Jr.push(2*(5*r+t)),$r.push((n+1)*(n+2)/2%64);let a=qr;for(let n=0;n<7;n++)e=(e<<Hr^(e>>Vr)*Qr)%_r,e&Kr&&(a^=Hr<<(Hr<<BigInt(n))-Hr);Wr.push(a)}const Zr=Zn(Wr,!0),Yr=Zr[0],Xr=Zr[1],na=(n,e,t)=>t>32?((n,e,t)=>e<<t-32|n>>>64-t)(n,e,t):((n,e,t)=>n<<t|e>>>32-t)(n,e,t),ea=(n,e,t)=>t>32?((n,e,t)=>n<<t-32|e>>>64-t)(n,e,t):((n,e,t)=>e<<t|n>>>32-t)(n,e,t);class ta extends M{constructor(n,e,t,r=!1,a=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=n,this.suffix=e,this.outputLen=t,this.enableXOF=r,this.rounds=a,m(t),!(0<n&&n<200))throw new Error("only keccak-f1600 function is supported");var o;this.state=new Uint8Array(200),this.state32=(o=this.state,new Uint32Array(o.buffer,o.byteOffset,Math.floor(o.byteLength/4)))}clone(){return this._cloneInto()}keccak(){P(this.state32),function(n,e=24){const t=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let e=0;e<10;e++)t[e]=n[e]^n[e+10]^n[e+20]^n[e+30]^n[e+40];for(let e=0;e<10;e+=2){const r=(e+8)%10,a=(e+2)%10,o=t[a],i=t[a+1],s=na(o,i,1)^t[r],c=ea(o,i,1)^t[r+1];for(let t=0;t<50;t+=10)n[e+t]^=s,n[e+t+1]^=c}let e=n[2],a=n[3];for(let t=0;t<24;t++){const r=$r[t],o=na(e,a,r),i=ea(e,a,r),s=Jr[t];e=n[s],a=n[s+1],n[s]=o,n[s+1]=i}for(let e=0;e<50;e+=10){for(let r=0;r<10;r++)t[r]=n[e+r];for(let r=0;r<10;r++)n[e+r]^=~t[(r+2)%10]&t[(r+4)%10]}n[0]^=Yr[r],n[1]^=Xr[r]}k(t)}(this.state32,this.rounds),P(this.state32),this.posOut=0,this.pos=0}update(n){v(this),b(n=L(n));const{blockLen:e,state:t}=this,r=n.length;for(let a=0;a<r;){const o=Math.min(e-this.pos,r-a);for(let e=0;e<o;e++)t[this.pos++]^=n[a++];this.pos===e&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:n,suffix:e,pos:t,blockLen:r}=this;n[t]^=e,128&e&&t===r-1&&this.keccak(),n[r-1]^=128,this.keccak()}writeInto(n){v(this,!1),b(n),this.finish();const e=this.state,{blockLen:t}=this;for(let r=0,a=n.length;r<a;){this.posOut>=t&&this.keccak();const o=Math.min(t-this.posOut,a-r);n.set(e.subarray(this.posOut,this.posOut+o),r),this.posOut+=o,r+=o}return n}xofInto(n){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(n)}xof(n){return m(n),this.xofInto(new Uint8Array(n))}digestInto(n){if(w(n,this),this.finished)throw new Error("digest() was already called");return this.writeInto(n),this.destroy(),n}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,k(this.state)}_cloneInto(n){const{blockLen:e,suffix:t,outputLen:r,rounds:a,enableXOF:o}=this;return n||(n=new ta(e,t,r,o,a)),n.state32.set(this.state32),n.pos=this.pos,n.posOut=this.posOut,n.finished=this.finished,n.rounds=a,n.suffix=t,n.outputLen=r,n.enableXOF=o,n.destroyed=this.destroyed,n}}const ra=(()=>{return n=1,e=136,t=32,G(()=>new ta(e,n,t));var n,e,t})();function aa(n,e){const t=e||"hex",r=ra(cr(n,{strict:!1})?Er(n):n);return"bytes"===t?r:mr(r)}const oa=new Sr(8192);function ia(n,e){if(oa.has(`${n}.${e}`))return oa.get(`${n}.${e}`);const t=e?`${e}${n.toLowerCase()}`:n.substring(2).toLowerCase(),r=aa(Nr(t),"bytes"),a=(e?t.substring(`${e}0x`.length):t).split("");for(let n=0;n<40;n+=2)r[n>>1]>>4>=8&&a[n]&&(a[n]=a[n].toUpperCase()),(15&r[n>>1])>=8&&a[n+1]&&(a[n+1]=a[n+1].toUpperCase());const o=`0x${a.join("")}`;return oa.set(`${n}.${e}`,o),o}const sa=/^0x[a-fA-F0-9]{40}$/,ca=new Sr(8192);function la(n,e){const{strict:t=!0}=e??{},r=`${n}.${t}`;if(ca.has(r))return ca.get(r);const a=!(!sa.test(n)||n.toLowerCase()!==n&&t&&ia(n)!==n);return ca.set(r,a),a}function ua(n){if("string"==typeof n){if(!la(n,{strict:!1}))throw new Gr({address:n});return{address:n,type:"json-rpc"}}if(!la(n.address,{strict:!1}))throw new Gr({address:n.address});return{address:n.address,nonceManager:n.nonceManager,sign:n.sign,signAuthorization:n.signAuthorization,signMessage:n.signMessage,signTransaction:n.signTransaction,signTypedData:n.signTypedData,source:"custom",type:"local"}}function da(n){return ia(`0x${aa(`0x${n.substring(4)}`).substring(26)}`)}let ha=!1;async function pa({hash:n,privateKey:e,to:t="object"}){const{r:r,s:a,recovery:o}=Xe.sign(n.slice(2),e.slice(2),{lowS:!0,extraEntropy:cr(ha,{strict:!1})?Pr(ha):ha}),i={r:vr(r,{size:32}),s:vr(a,{size:32}),v:o?28n:27n,yParity:o};return"bytes"===t||"hex"===t?Or({...i,to:t}):i}function fa(n){return"string"==typeof n[0]?ga(n):function(n){let e=0;for(const t of n)e+=t.length;const t=new Uint8Array(e);let r=0;for(const e of n)t.set(e,r),r+=e.length;return t}(n)}function ga(n){return`0x${n.reduce((n,e)=>n+e.replace("0x",""),"")}`}class ma extends ar{constructor({offset:n}){super(`Offset \`${n}\` cannot be negative.`,{name:"NegativeOffsetError"})}}class ba extends ar{constructor({length:n,position:e}){super(`Position \`${e}\` is out of bounds (\`0 < position < ${n}\`).`,{name:"PositionOutOfBoundsError"})}}class ya extends ar{constructor({count:n,limit:e}){super(`Recursive read limit of \`${e}\` exceeded (recursive read count: \`${n}\`).`,{name:"RecursiveReadLimitExceededError"})}}const va={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:Number.POSITIVE_INFINITY,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new ya({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(n){if(n<0||n>this.bytes.length-1)throw new ba({length:this.bytes.length,position:n})},decrementPosition(n){if(n<0)throw new ma({offset:n});const e=this.position-n;this.assertPosition(e),this.position=e},getReadCount(n){return this.positionReadCount.get(n||this.position)||0},incrementPosition(n){if(n<0)throw new ma({offset:n});const e=this.position+n;this.assertPosition(e),this.position=e},inspectByte(n){const e=n??this.position;return this.assertPosition(e),this.bytes[e]},inspectBytes(n,e){const t=e??this.position;return this.assertPosition(t+n-1),this.bytes.subarray(t,t+n)},inspectUint8(n){const e=n??this.position;return this.assertPosition(e),this.bytes[e]},inspectUint16(n){const e=n??this.position;return this.assertPosition(e+1),this.dataView.getUint16(e)},inspectUint24(n){const e=n??this.position;return this.assertPosition(e+2),(this.dataView.getUint16(e)<<8)+this.dataView.getUint8(e+2)},inspectUint32(n){const e=n??this.position;return this.assertPosition(e+3),this.dataView.getUint32(e)},pushByte(n){this.assertPosition(this.position),this.bytes[this.position]=n,this.position++},pushBytes(n){this.assertPosition(this.position+n.length-1),this.bytes.set(n,this.position),this.position+=n.length},pushUint8(n){this.assertPosition(this.position),this.bytes[this.position]=n,this.position++},pushUint16(n){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,n),this.position+=2},pushUint24(n){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,n>>8),this.dataView.setUint8(this.position+2,255&n),this.position+=3},pushUint32(n){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,n),this.position+=4},readByte(){this.assertReadLimit(),this._touch();const n=this.inspectByte();return this.position++,n},readBytes(n,e){this.assertReadLimit(),this._touch();const t=this.inspectBytes(n);return this.position+=e??n,t},readUint8(){this.assertReadLimit(),this._touch();const n=this.inspectUint8();return this.position+=1,n},readUint16(){this.assertReadLimit(),this._touch();const n=this.inspectUint16();return this.position+=2,n},readUint24(){this.assertReadLimit(),this._touch();const n=this.inspectUint24();return this.position+=3,n},readUint32(){this.assertReadLimit(),this._touch();const n=this.inspectUint32();return this.position+=4,n},get remaining(){return this.bytes.length-this.position},setPosition(n){const e=this.position;return this.assertPosition(n),this.position=n,()=>this.position=e},_touch(){if(this.recursiveReadLimit===Number.POSITIVE_INFINITY)return;const n=this.getReadCount();this.positionReadCount.set(this.position,n+1),n>0&&this.recursiveReadCount++}};function wa(n,{recursiveReadLimit:e=8192}={}){const t=Object.create(va);return t.bytes=n,t.dataView=new DataView(n.buffer??n,n.byteOffset,n.byteLength),t.positionReadCount=new Map,t.recursiveReadLimit=e,t}function ka(n,e="hex"){const t=Aa(n),r=wa(new Uint8Array(t.length));return t.encode(r),"hex"===e?yr(r.bytes):r.bytes}function Aa(n){return Array.isArray(n)?function(n){const e=n.reduce((n,e)=>n+e.length,0),t=Ea(e);return{length:e<=55?1+e:1+t+e,encode(r){e<=55?r.pushByte(192+e):(r.pushByte(247+t),1===t?r.pushUint8(e):2===t?r.pushUint16(e):3===t?r.pushUint24(e):r.pushUint32(e));for(const{encode:e}of n)e(r)}}}(n.map(n=>Aa(n))):function(n){const e="string"==typeof n?Pr(n):n,t=Ea(e.length),r=1===e.length&&e[0]<128?1:e.length<=55?1+e.length:1+t+e.length;return{length:r,encode(n){1===e.length&&e[0]<128?n.pushBytes(e):e.length<=55?(n.pushByte(128+e.length),n.pushBytes(e)):(n.pushByte(183+t),1===t?n.pushUint8(e.length):2===t?n.pushUint16(e.length):3===t?n.pushUint24(e.length):n.pushUint32(e.length),n.pushBytes(e))}}}(n)}function Ea(n){if(n<256)return 1;if(n<65536)return 2;if(n<2**24)return 3;if(n<2**32)return 4;throw new ar("Length is too large.")}function xa(n){const{chainId:e,nonce:t,to:r}=n,a=n.contractAddress??n.address,o=aa(ga(["0x05",ka([e?vr(e):"0x",a,t?vr(t):"0x"])]));return"bytes"===r?Pr(o):o}async function Ia(n){const{chainId:e,nonce:t,privateKey:r,to:a="object"}=n,o=n.contractAddress??n.address,i=await pa({hash:xa({address:o,chainId:e,nonce:t}),privateKey:r,to:a});return"object"===a?{address:o,chainId:e,nonce:t,...i}:i}function Pa(n,e){return aa(function(n){const e="string"==typeof n?kr(n):"string"==typeof n.raw?n.raw:yr(n.raw);return fa([kr(`Ethereum Signed Message:\n${lr(e)}`),e])}(n),e)}async function Na({message:n,privateKey:e}){return await pa({hash:Pa(n),privateKey:e,to:"hex"})}const za={ether:-9,wei:9};function Ra(n,e="wei"){return function(n,e){let t=n.toString();const r=t.startsWith("-");r&&(t=t.slice(1)),t=t.padStart(e,"0");let[a,o]=[t.slice(0,t.length-e),t.slice(t.length-e)];return o=o.replace(/(0+)$/,""),`${r?"-":""}${a||"0"}${o?`.${o}`:""}`}(n,za[e])}function Ta(n){const e=Object.entries(n).map(([n,e])=>void 0===e||!1===e?null:[n,e]).filter(Boolean),t=e.reduce((n,[e])=>Math.max(n,e.length),0);return e.map(([n,e])=>` ${`${n}:`.padEnd(t+1)} ${e}`).join("\n")}class Sa extends ar{constructor({v:n}){super(`Invalid \`v\` value "${n}". Expected 27 or 28.`,{name:"InvalidLegacyVError"})}}class Ba extends ar{constructor({transaction:n}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",Ta(n),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:"InvalidSerializableTransactionError"})}}class Ca extends ar{constructor({storageKey:n}){super(`Size for storage key "${n}" is invalid. Expected 32 bytes. Got ${Math.floor((n.length-2)/2)} bytes.`,{name:"InvalidStorageKeySizeError"})}}function Oa(n){const{kzg:e}=n,t=n.to??("string"==typeof n.blobs[0]?"hex":"bytes"),r="string"==typeof n.blobs[0]?n.blobs.map(n=>Pr(n)):n.blobs,a=[];for(const n of r)a.push(Uint8Array.from(e.blobToKzgCommitment(n)));return"bytes"===t?a:a.map(n=>yr(n))}function Ua(n){const{kzg:e}=n,t=n.to??("string"==typeof n.blobs[0]?"hex":"bytes"),r="string"==typeof n.blobs[0]?n.blobs.map(n=>Pr(n)):n.blobs,a="string"==typeof n.commitments[0]?n.commitments.map(n=>Pr(n)):n.commitments,o=[];for(let n=0;n<r.length;n++){const t=r[n],i=a[n];o.push(Uint8Array.from(e.computeBlobKzgProof(t,i)))}return"bytes"===t?o:o.map(n=>yr(n))}const Fa=we;function La(n){const{commitment:e,version:t=1}=n,r=n.to??("string"==typeof e?"hex":"bytes"),a=function(n,e){const t=e||"hex",r=Fa(cr(n,{strict:!1})?Er(n):n);return"bytes"===t?r:mr(r)}(e,"bytes");return a.set([t],0),"bytes"===r?a:yr(a)}const ja=4096,Da=131072,Ma=761855;class Ga extends ar{constructor({maxSize:n,size:e}){super("Blob size is too large.",{metaMessages:[`Max: ${n} bytes`,`Given: ${e} bytes`],name:"BlobSizeTooLargeError"})}}class qa extends ar{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}class Ha extends ar{constructor({hash:n,size:e}){super(`Versioned hash "${n}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${e}`],name:"InvalidVersionedHashSizeError"})}}class Ka extends ar{constructor({hash:n,version:e}){super(`Versioned hash "${n}" version is invalid.`,{metaMessages:["Expected: 1",`Received: ${e}`],name:"InvalidVersionedHashVersionError"})}}function Va(n){const{data:e,kzg:t,to:r}=n,a=n.blobs??function(n){const e=n.to??("string"==typeof n.data?"hex":"bytes"),t="string"==typeof n.data?Pr(n.data):n.data,r=lr(t);if(!r)throw new qa;if(r>Ma)throw new Ga({maxSize:Ma,size:r});const a=[];let o=!0,i=0;for(;o;){const n=wa(new Uint8Array(Da));let e=0;for(;e<ja;){const r=t.slice(i,i+31);if(n.pushByte(0),n.pushBytes(r),r.length<31){n.pushByte(128),o=!1;break}e++,i+=31}a.push(n)}return"bytes"===e?a.map(n=>n.bytes):a.map(n=>yr(n.bytes))}({data:e,to:r}),o=n.commitments??Oa({blobs:a,kzg:t,to:r}),i=n.proofs??Ua({blobs:a,commitments:o,kzg:t,to:r}),s=[];for(let n=0;n<a.length;n++)s.push({blob:a[n],commitment:o[n],proof:i[n]});return s}const _a=2n**256n-1n;class Qa extends ar{constructor({chainId:n}){super("number"==typeof n?`Chain ID "${n}" is invalid.`:"Chain ID is invalid.",{name:"InvalidChainIdError"})}}class Ja extends ar{constructor({cause:n,maxFeePerGas:e}={}){super(`The fee cap (\`maxFeePerGas\`${e?` = ${Ra(e)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:n,name:"FeeCapTooHighError"})}}Object.defineProperty(Ja,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/});class $a extends ar{constructor({cause:n,maxPriorityFeePerGas:e,maxFeePerGas:t}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${e?` = ${Ra(e)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${t?` = ${Ra(t)} gwei`:""}).`].join("\n"),{cause:n,name:"TipAboveFeeCapError"})}}function Wa(n,e,t,{strict:r}={}){return cr(n,{strict:!1})?function(n,e,t,{strict:r}={}){Za(n,e);const a=`0x${n.replace("0x","").slice(2*(e??0),2*(t??n.length))}`;r&&Ya(a,e,t);return a}(n,e,t,{strict:r}):function(n,e,t,{strict:r}={}){Za(n,e);const a=n.slice(e,t);r&&Ya(a,e,t);return a}(n,e,t,{strict:r})}function Za(n,e){if("number"==typeof e&&e>0&&e>lr(n)-1)throw new dr({offset:e,position:"start",size:lr(n)})}function Ya(n,e,t){if("number"==typeof e&&"number"==typeof t&&lr(n)!==t-e)throw new dr({offset:t,position:"end",size:lr(n)})}function Xa(n){const{chainId:e,maxPriorityFeePerGas:t,maxFeePerGas:r,to:a}=n;if(e<=0)throw new Qa({chainId:e});if(a&&!la(a))throw new Gr({address:a});if(r&&r>_a)throw new Ja({maxFeePerGas:r});if(t&&r&&t>r)throw new $a({maxFeePerGas:r,maxPriorityFeePerGas:t})}function no(n){if(!n||0===n.length)return[];const e=[];for(let t=0;t<n.length;t++){const{address:r,storageKeys:a}=n[t];for(let n=0;n<a.length;n++)if(a[n].length-2!=64)throw new Ca({storageKey:a[n]});if(!la(r,{strict:!1}))throw new Gr({address:r});e.push([r,a])}return e}function eo(n,e){const t=function(n){if(n.type)return n.type;if(void 0!==n.authorizationList)return"eip7702";if(void 0!==n.blobs||void 0!==n.blobVersionedHashes||void 0!==n.maxFeePerBlobGas||void 0!==n.sidecars)return"eip4844";if(void 0!==n.maxFeePerGas||void 0!==n.maxPriorityFeePerGas)return"eip1559";if(void 0!==n.gasPrice)return void 0!==n.accessList?"eip2930":"legacy";throw new Ba({transaction:n})}(n);return"eip1559"===t?function(n,e){const{chainId:t,gas:r,nonce:a,to:o,value:i,maxFeePerGas:s,maxPriorityFeePerGas:c,accessList:l,data:u}=n;Xa(n);const d=no(l),h=[vr(t),a?vr(a):"0x",c?vr(c):"0x",s?vr(s):"0x",r?vr(r):"0x",o??"0x",i?vr(i):"0x",u??"0x",d,...to(n,e)];return ga(["0x02",ka(h)])}(n,e):"eip2930"===t?function(n,e){const{chainId:t,gas:r,data:a,nonce:o,to:i,value:s,accessList:c,gasPrice:l}=n;!function(n){const{chainId:e,maxPriorityFeePerGas:t,gasPrice:r,maxFeePerGas:a,to:o}=n;if(e<=0)throw new Qa({chainId:e});if(o&&!la(o))throw new Gr({address:o});if(t||a)throw new ar("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(r&&r>_a)throw new Ja({maxFeePerGas:r})}(n);const u=no(c),d=[vr(t),o?vr(o):"0x",l?vr(l):"0x",r?vr(r):"0x",i??"0x",s?vr(s):"0x",a??"0x",u,...to(n,e)];return ga(["0x01",ka(d)])}(n,e):"eip4844"===t?function(n,e){const{chainId:t,gas:r,nonce:a,to:o,value:i,maxFeePerBlobGas:s,maxFeePerGas:c,maxPriorityFeePerGas:l,accessList:u,data:d}=n;!function(n){const{blobVersionedHashes:e}=n;if(e){if(0===e.length)throw new qa;for(const n of e){const e=lr(n),t=Tr(Wa(n,0,1));if(32!==e)throw new Ha({hash:n,size:e});if(1!==t)throw new Ka({hash:n,version:t})}}Xa(n)}(n);let h=n.blobVersionedHashes,p=n.sidecars;if(n.blobs&&(void 0===h||void 0===p)){const e="string"==typeof n.blobs[0]?n.blobs:n.blobs.map(n=>yr(n)),t=n.kzg,r=Oa({blobs:e,kzg:t});if(void 0===h&&(h=function(n){const{commitments:e,version:t}=n,r=n.to??("string"==typeof e[0]?"hex":"bytes"),a=[];for(const n of e)a.push(La({commitment:n,to:r,version:t}));return a}({commitments:r})),void 0===p){p=Va({blobs:e,commitments:r,proofs:Ua({blobs:e,commitments:r,kzg:t})})}}const f=no(u),g=[vr(t),a?vr(a):"0x",l?vr(l):"0x",c?vr(c):"0x",r?vr(r):"0x",o??"0x",i?vr(i):"0x",d??"0x",f,s?vr(s):"0x",h??[],...to(n,e)],m=[],b=[],y=[];if(p)for(let n=0;n<p.length;n++){const{blob:e,commitment:t,proof:r}=p[n];m.push(e),b.push(t),y.push(r)}return ga(["0x03",ka(p?[g,m,b,y]:g)])}(n,e):"eip7702"===t?function(n,e){const{authorizationList:t,chainId:r,gas:a,nonce:o,to:i,value:s,maxFeePerGas:c,maxPriorityFeePerGas:l,accessList:u,data:d}=n;!function(n){const{authorizationList:e}=n;if(e)for(const n of e){const{chainId:e}=n,t=n.address;if(!la(t))throw new Gr({address:t});if(e<0)throw new Qa({chainId:e})}Xa(n)}(n);const h=no(u),p=function(n){if(!n||0===n.length)return[];const e=[];for(const t of n){const{chainId:n,nonce:r,...a}=t,o=t.address;e.push([n?mr(n):"0x",o,r?mr(r):"0x",...to({},a)])}return e}(t);return ga(["0x04",ka([vr(r),o?vr(o):"0x",l?vr(l):"0x",c?vr(c):"0x",a?vr(a):"0x",i??"0x",s?vr(s):"0x",d??"0x",h,p,...to(n,e)])])}(n,e):function(n,e){const{chainId:t=0,gas:r,data:a,nonce:o,to:i,value:s,gasPrice:c}=n;!function(n){const{chainId:e,maxPriorityFeePerGas:t,gasPrice:r,maxFeePerGas:a,to:o}=n;if(o&&!la(o))throw new Gr({address:o});if(void 0!==e&&e<=0)throw new Qa({chainId:e});if(t||a)throw new ar("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(r&&r>_a)throw new Ja({maxFeePerGas:r})}(n);let l=[o?vr(o):"0x",c?vr(c):"0x",r?vr(r):"0x",i??"0x",s?vr(s):"0x",a??"0x"];if(e){const n=(()=>{if(e.v>=35n){return(e.v-35n)/2n>0?e.v:27n+(35n===e.v?0n:1n)}if(t>0)return BigInt(2*t)+BigInt(35n+e.v-27n);const n=27n+(27n===e.v?0n:1n);if(e.v!==n)throw new Sa({v:e.v});return n})(),r=ur(e.r),a=ur(e.s);l=[...l,vr(n),"0x00"===r?"0x":r,"0x00"===a?"0x":a]}else t>0&&(l=[...l,vr(t),"0x","0x"]);return ka(l)}(n,e)}function to(n,e){const t=e??n,{v:r,yParity:a}=t;if(void 0===t.r)return[];if(void 0===t.s)return[];if(void 0===r&&void 0===a)return[];const o=ur(t.r),i=ur(t.s);return["number"==typeof a?a?vr(1):"0x":0n===r?"0x":1n===r?vr(1):27n===r?"0x":vr(1),"0x00"===o?"0x":o,"0x00"===i?"0x":i]}async function ro(n){const{privateKey:e,transaction:t,serializer:r=eo}=n,a="eip4844"===t.type?{...t,sidecars:!1}:t,o=await pa({hash:aa(await r(a)),privateKey:e});return await r(t,o)}Object.defineProperty($a,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});class ao extends ar{constructor({expectedLength:n,givenLength:e,type:t}){super([`ABI encoding array length mismatch for type ${t}.`,`Expected length: ${n}`,`Given length: ${e}`].join("\n"),{name:"AbiEncodingArrayLengthMismatchError"})}}class oo extends ar{constructor({expectedSize:n,value:e}){super(`Size of bytes "${e}" (bytes${lr(e)}) does not match expected size (bytes${n}).`,{name:"AbiEncodingBytesSizeMismatchError"})}}class io extends ar{constructor({expectedLength:n,givenLength:e}){super(["ABI encoding params/values length mismatch.",`Expected length (params): ${n}`,`Given length (values): ${e}`].join("\n"),{name:"AbiEncodingLengthMismatchError"})}}class so extends ar{constructor({expectedSize:n,givenSize:e}){super(`Expected bytes${n}, got bytes${e}.`,{name:"BytesSizeMismatchError"})}}class co extends ar{constructor(n,{docsPath:e}){super([`Type "${n}" is not a valid encoding type.`,"Please provide a valid ABI type."].join("\n"),{docsPath:e,name:"InvalidAbiEncodingType"})}}class lo extends ar{constructor(n){super([`Value "${n}" is not a valid array.`].join("\n"),{name:"InvalidArrayError"})}}const uo=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,ho=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;function po(n,e){if(n.length!==e.length)throw new io({expectedLength:n.length,givenLength:e.length});const t=function({params:n,values:e}){const t=[];for(let r=0;r<n.length;r++)t.push(fo({param:n[r],value:e[r]}));return t}({params:n,values:e}),r=go(t);return 0===r.length?"0x":r}function fo({param:n,value:e}){const t=function(n){const e=n.match(/^(.*)\[(\d+)?\]$/);return e?[e[2]?Number(e[2]):null,e[1]]:void 0}(n.type);if(t){const[r,a]=t;return function(n,{length:e,param:t}){const r=null===e;if(!Array.isArray(n))throw new lo(n);if(!r&&n.length!==e)throw new ao({expectedLength:e,givenLength:n.length,type:`${t.type}[${e}]`});let a=!1;const o=[];for(let e=0;e<n.length;e++){const r=fo({param:t,value:n[e]});r.dynamic&&(a=!0),o.push(r)}if(r||a){const n=go(o);if(r){const e=vr(o.length,{size:32});return{dynamic:!0,encoded:o.length>0?fa([e,n]):e}}if(a)return{dynamic:!0,encoded:n}}return{dynamic:!1,encoded:fa(o.map(({encoded:n})=>n))}}(e,{length:r,param:{...n,type:a}})}if("tuple"===n.type)return function(n,{param:e}){let t=!1;const r=[];for(let a=0;a<e.components.length;a++){const o=e.components[a],i=fo({param:o,value:n[Array.isArray(n)?a:o.name]});r.push(i),i.dynamic&&(t=!0)}return{dynamic:t,encoded:t?go(r):fa(r.map(({encoded:n})=>n))}}(e,{param:n});if("address"===n.type)return function(n){if(!la(n))throw new Gr({address:n});return{dynamic:!1,encoded:fr(n.toLowerCase())}}(e);if("bool"===n.type)return function(n){if("boolean"!=typeof n)throw new ar(`Invalid boolean value: "${n}" (type: ${typeof n}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:fr(br(n))}}(e);if(n.type.startsWith("uint")||n.type.startsWith("int")){const t=n.type.startsWith("int"),[,,r="256"]=ho.exec(n.type)??[];return function(n,{signed:e,size:t=256}){if("number"==typeof t){const r=2n**(BigInt(t)-(e?1n:0n))-1n,a=e?-r-1n:0n;if(n>r||n<a)throw new ir({max:r.toString(),min:a.toString(),signed:e,size:t/8,value:n.toString()})}return{dynamic:!1,encoded:vr(n,{size:32,signed:e})}}(e,{signed:t,size:Number(r)})}if(n.type.startsWith("bytes"))return function(n,{param:e}){const[,t]=e.type.split("bytes"),r=lr(n);if(!t){let e=n;return r%32!=0&&(e=fr(e,{dir:"right",size:32*Math.ceil((n.length-2)/2/32)})),{dynamic:!0,encoded:fa([fr(vr(r,{size:32})),e])}}if(r!==Number.parseInt(t,10))throw new oo({expectedSize:Number.parseInt(t,10),value:n});return{dynamic:!1,encoded:fr(n,{dir:"right"})}}(e,{param:n});if("string"===n.type)return function(n){const e=kr(n),t=Math.ceil(lr(e)/32),r=[];for(let n=0;n<t;n++)r.push(fr(Wa(e,32*n,32*(n+1)),{dir:"right"}));return{dynamic:!0,encoded:fa([fr(vr(lr(e),{size:32})),...r])}}(e);throw new co(n.type,{docsPath:"/docs/contract/encodeAbiParameters"})}function go(n){let e=0;for(let t=0;t<n.length;t++){const{dynamic:r,encoded:a}=n[t];e+=r?32:lr(a)}const t=[],r=[];let a=0;for(let o=0;o<n.length;o++){const{dynamic:i,encoded:s}=n[o];i?(t.push(vr(e+a,{size:32})),r.push(s),a+=lr(s)):t.push(s)}return fa([...t,...r])}class mo extends ar{constructor({domain:n}){var e,t,r;super(`Invalid domain "${e=n,JSON.stringify(e,(n,e)=>{const r="bigint"==typeof e?e.toString():e;return"function"==typeof t?t(n,r):r},r)}".`,{metaMessages:["Must be a valid EIP-712 domain."]})}}class bo extends ar{constructor({primaryType:n,types:e}){super(`Invalid primary type \`${n}\` must be one of \`${JSON.stringify(Object.keys(e))}\`.`,{docsPath:"/api/glossary/Errors#typeddatainvalidprimarytypeerror",metaMessages:["Check that the primary type is a key in `types`."]})}}class yo extends ar{constructor({type:n}){super(`Struct type "${n}" is invalid.`,{metaMessages:["Struct type must not be a Solidity type."],name:"InvalidStructTypeError"})}}function vo({domain:n}){return["string"==typeof n?.name&&{name:"name",type:"string"},n?.version&&{name:"version",type:"string"},("number"==typeof n?.chainId||"bigint"==typeof n?.chainId)&&{name:"chainId",type:"uint256"},n?.verifyingContract&&{name:"verifyingContract",type:"address"},n?.salt&&{name:"salt",type:"bytes32"}].filter(Boolean)}function wo(n){if("address"===n||"bool"===n||"string"===n||n.startsWith("bytes")||n.startsWith("uint")||n.startsWith("int"))throw new yo({type:n})}function ko(n){const{domain:e={},message:t,primaryType:r}=n,a={EIP712Domain:vo({domain:e}),...n.types};!function(n){const{domain:e,message:t,primaryType:r,types:a}=n,o=(n,e)=>{for(const t of n){const{name:n,type:r}=t,i=e[n],s=r.match(ho);if(s&&("number"==typeof i||"bigint"==typeof i)){const[n,e,t]=s;vr(i,{signed:"int"===e,size:Number.parseInt(t,10)/8})}if("address"===r&&"string"==typeof i&&!la(i))throw new Gr({address:i});const c=r.match(uo);if(c){const[n,e]=c;if(e&&lr(i)!==Number.parseInt(e,10))throw new so({expectedSize:Number.parseInt(e,10),givenSize:lr(i)})}const l=a[r];l&&(wo(r),o(l,i))}};if(a.EIP712Domain&&e){if("object"!=typeof e)throw new mo({domain:e});o(a.EIP712Domain,e)}if("EIP712Domain"!==r){if(!a[r])throw new bo({primaryType:r,types:a});o(a[r],t)}}({domain:e,message:t,primaryType:r,types:a});const o=["0x1901"];return e&&o.push(function({domain:n,types:e}){return Ao({data:n,primaryType:"EIP712Domain",types:e})}({domain:e,types:a})),"EIP712Domain"!==r&&o.push(Ao({data:t,primaryType:r,types:a})),aa(fa(o))}function Ao({data:n,primaryType:e,types:t}){return aa(Eo({data:n,primaryType:e,types:t}))}function Eo({data:n,primaryType:e,types:t}){const r=[{type:"bytes32"}],a=[xo({primaryType:e,types:t})];for(const o of t[e]){const[e,i]=Po({types:t,name:o.name,type:o.type,value:n[o.name]});r.push(e),a.push(i)}return po(r,a)}function xo({primaryType:n,types:e}){const t=mr(function({primaryType:n,types:e}){let t="";const r=Io({primaryType:n,types:e});r.delete(n);const a=[n,...Array.from(r).sort()];for(const n of a)t+=`${n}(${e[n].map(({name:n,type:e})=>`${e} ${n}`).join(",")})`;return t}({primaryType:n,types:e}));return aa(t)}function Io({primaryType:n,types:e},t=new Set){const r=n.match(/^\w*/u),a=r?.[0];if(t.has(a)||void 0===e[a])return t;t.add(a);for(const n of e[a])Io({primaryType:n.type,types:e},t);return t}function Po({types:n,name:e,type:t,value:r}){if(void 0!==n[t])return[{type:"bytes32"},aa(Eo({data:r,primaryType:t,types:n}))];if("bytes"===t)return[{type:"bytes32"},aa(r)];if("string"===t)return[{type:"bytes32"},aa(mr(r))];if(t.lastIndexOf("]")===t.length-1){const a=t.slice(0,t.lastIndexOf("[")),o=r.map(t=>Po({name:e,type:a,types:n,value:t}));return[{type:"bytes32"},aa(po(o.map(([n])=>n),o.map(([,n])=>n)))]}return[{type:t},r]}async function No(n){const{privateKey:e,...t}=n;return await pa({hash:ko(t),privateKey:e,to:"hex"})}function zo(n,e={}){const{nonceManager:t}=e,r=mr(Xe.getPublicKey(n.slice(2),!1)),a=ua({address:da(r),nonceManager:t,sign:async({hash:e})=>pa({hash:e,privateKey:n,to:"hex"}),signAuthorization:async e=>Ia({...e,privateKey:n}),signMessage:async({message:e})=>Na({message:e,privateKey:n}),signTransaction:async(e,{serializer:t}={})=>ro({privateKey:n,transaction:e,serializer:t}),signTypedData:async e=>No({...e,privateKey:n})});return{...a,publicKey:r,source:"privateKey"}}function Ro(n,{accountIndex:e=0,addressIndex:t=0,changeIndex:r=0,path:a,...o}={}){const i=n.derive(a||`m/44'/60'/${e}'/${r}/${t}`);return{...zo(mr(i.privateKey),o),getHdKey:()=>i,source:"hd"}}const To="abdikace\nabeceda\nadresa\nagrese\nakce\naktovka\nalej\nalkohol\namputace\nananas\nandulka\nanekdota\nanketa\nantika\nanulovat\narcha\narogance\nasfalt\nasistent\naspirace\nastma\nastronom\natlas\natletika\natol\nautobus\nazyl\nbabka\nbachor\nbacil\nbaculka\nbadatel\nbageta\nbagr\nbahno\nbakterie\nbalada\nbaletka\nbalkon\nbalonek\nbalvan\nbalza\nbambus\nbankomat\nbarbar\nbaret\nbarman\nbaroko\nbarva\nbaterka\nbatoh\nbavlna\nbazalka\nbazilika\nbazuka\nbedna\nberan\nbeseda\nbestie\nbeton\nbezinka\nbezmoc\nbeztak\nbicykl\nbidlo\nbiftek\nbikiny\nbilance\nbiograf\nbiolog\nbitva\nbizon\nblahobyt\nblatouch\nblecha\nbledule\nblesk\nblikat\nblizna\nblokovat\nbloudit\nblud\nbobek\nbobr\nbodlina\nbodnout\nbohatost\nbojkot\nbojovat\nbokorys\nbolest\nborec\nborovice\nbota\nboubel\nbouchat\nbouda\nboule\nbourat\nboxer\nbradavka\nbrambora\nbranka\nbratr\nbrepta\nbriketa\nbrko\nbrloh\nbronz\nbroskev\nbrunetka\nbrusinka\nbrzda\nbrzy\nbublina\nbubnovat\nbuchta\nbuditel\nbudka\nbudova\nbufet\nbujarost\nbukvice\nbuldok\nbulva\nbunda\nbunkr\nburza\nbutik\nbuvol\nbuzola\nbydlet\nbylina\nbytovka\nbzukot\ncapart\ncarevna\ncedr\ncedule\ncejch\ncejn\ncela\nceler\ncelkem\ncelnice\ncenina\ncennost\ncenovka\ncentrum\ncenzor\ncestopis\ncetka\nchalupa\nchapadlo\ncharita\nchata\nchechtat\nchemie\nchichot\nchirurg\nchlad\nchleba\nchlubit\nchmel\nchmura\nchobot\nchochol\nchodba\ncholera\nchomout\nchopit\nchoroba\nchov\nchrapot\nchrlit\nchrt\nchrup\nchtivost\nchudina\nchutnat\nchvat\nchvilka\nchvost\nchyba\nchystat\nchytit\ncibule\ncigareta\ncihelna\ncihla\ncinkot\ncirkus\ncisterna\ncitace\ncitrus\ncizinec\ncizost\nclona\ncokoliv\ncouvat\nctitel\nctnost\ncudnost\ncuketa\ncukr\ncupot\ncvaknout\ncval\ncvik\ncvrkot\ncyklista\ndaleko\ndareba\ndatel\ndatum\ndcera\ndebata\ndechovka\ndecibel\ndeficit\ndeflace\ndekl\ndekret\ndemokrat\ndeprese\nderby\ndeska\ndetektiv\ndikobraz\ndiktovat\ndioda\ndiplom\ndisk\ndisplej\ndivadlo\ndivoch\ndlaha\ndlouho\ndluhopis\ndnes\ndobro\ndobytek\ndocent\ndochutit\ndodnes\ndohled\ndohoda\ndohra\ndojem\ndojnice\ndoklad\ndokola\ndoktor\ndokument\ndolar\ndoleva\ndolina\ndoma\ndominant\ndomluvit\ndomov\ndonutit\ndopad\ndopis\ndoplnit\ndoposud\ndoprovod\ndopustit\ndorazit\ndorost\ndort\ndosah\ndoslov\ndostatek\ndosud\ndosyta\ndotaz\ndotek\ndotknout\ndoufat\ndoutnat\ndovozce\ndozadu\ndoznat\ndozorce\ndrahota\ndrak\ndramatik\ndravec\ndraze\ndrdol\ndrobnost\ndrogerie\ndrozd\ndrsnost\ndrtit\ndrzost\nduben\nduchovno\ndudek\nduha\nduhovka\ndusit\ndusno\ndutost\ndvojice\ndvorec\ndynamit\nekolog\nekonomie\nelektron\nelipsa\nemail\nemise\nemoce\nempatie\nepizoda\nepocha\nepopej\nepos\nesej\nesence\neskorta\neskymo\netiketa\neuforie\nevoluce\nexekuce\nexkurze\nexpedice\nexploze\nexport\nextrakt\nfacka\nfajfka\nfakulta\nfanatik\nfantazie\nfarmacie\nfavorit\nfazole\nfederace\nfejeton\nfenka\nfialka\nfigurant\nfilozof\nfiltr\nfinance\nfinta\nfixace\nfjord\nflanel\nflirt\nflotila\nfond\nfosfor\nfotbal\nfotka\nfoton\nfrakce\nfreska\nfronta\nfukar\nfunkce\nfyzika\ngaleje\ngarant\ngenetika\ngeolog\ngilotina\nglazura\nglejt\ngolem\ngolfista\ngotika\ngraf\ngramofon\ngranule\ngrep\ngril\ngrog\ngroteska\nguma\nhadice\nhadr\nhala\nhalenka\nhanba\nhanopis\nharfa\nharpuna\nhavran\nhebkost\nhejkal\nhejno\nhejtman\nhektar\nhelma\nhematom\nherec\nherna\nheslo\nhezky\nhistorik\nhladovka\nhlasivky\nhlava\nhledat\nhlen\nhlodavec\nhloh\nhloupost\nhltat\nhlubina\nhluchota\nhmat\nhmota\nhmyz\nhnis\nhnojivo\nhnout\nhoblina\nhoboj\nhoch\nhodiny\nhodlat\nhodnota\nhodovat\nhojnost\nhokej\nholinka\nholka\nholub\nhomole\nhonitba\nhonorace\nhoral\nhorda\nhorizont\nhorko\nhorlivec\nhormon\nhornina\nhoroskop\nhorstvo\nhospoda\nhostina\nhotovost\nhouba\nhouf\nhoupat\nhouska\nhovor\nhradba\nhranice\nhravost\nhrazda\nhrbolek\nhrdina\nhrdlo\nhrdost\nhrnek\nhrobka\nhromada\nhrot\nhrouda\nhrozen\nhrstka\nhrubost\nhryzat\nhubenost\nhubnout\nhudba\nhukot\nhumr\nhusita\nhustota\nhvozd\nhybnost\nhydrant\nhygiena\nhymna\nhysterik\nidylka\nihned\nikona\niluze\nimunita\ninfekce\ninflace\ninkaso\ninovace\ninspekce\ninternet\ninvalida\ninvestor\ninzerce\nironie\njablko\njachta\njahoda\njakmile\njakost\njalovec\njantar\njarmark\njaro\njasan\njasno\njatka\njavor\njazyk\njedinec\njedle\njednatel\njehlan\njekot\njelen\njelito\njemnost\njenom\njepice\njeseter\njevit\njezdec\njezero\njinak\njindy\njinoch\njiskra\njistota\njitrnice\njizva\njmenovat\njogurt\njurta\nkabaret\nkabel\nkabinet\nkachna\nkadet\nkadidlo\nkahan\nkajak\nkajuta\nkakao\nkaktus\nkalamita\nkalhoty\nkalibr\nkalnost\nkamera\nkamkoliv\nkamna\nkanibal\nkanoe\nkantor\nkapalina\nkapela\nkapitola\nkapka\nkaple\nkapota\nkapr\nkapusta\nkapybara\nkaramel\nkarotka\nkarton\nkasa\nkatalog\nkatedra\nkauce\nkauza\nkavalec\nkazajka\nkazeta\nkazivost\nkdekoliv\nkdesi\nkedluben\nkemp\nkeramika\nkino\nklacek\nkladivo\nklam\nklapot\nklasika\nklaun\nklec\nklenba\nklepat\nklesnout\nklid\nklima\nklisna\nklobouk\nklokan\nklopa\nkloub\nklubovna\nklusat\nkluzkost\nkmen\nkmitat\nkmotr\nkniha\nknot\nkoalice\nkoberec\nkobka\nkobliha\nkobyla\nkocour\nkohout\nkojenec\nkokos\nkoktejl\nkolaps\nkoleda\nkolize\nkolo\nkomando\nkometa\nkomik\nkomnata\nkomora\nkompas\nkomunita\nkonat\nkoncept\nkondice\nkonec\nkonfese\nkongres\nkonina\nkonkurs\nkontakt\nkonzerva\nkopanec\nkopie\nkopnout\nkoprovka\nkorbel\nkorektor\nkormidlo\nkoroptev\nkorpus\nkoruna\nkoryto\nkorzet\nkosatec\nkostka\nkotel\nkotleta\nkotoul\nkoukat\nkoupelna\nkousek\nkouzlo\nkovboj\nkoza\nkozoroh\nkrabice\nkrach\nkrajina\nkralovat\nkrasopis\nkravata\nkredit\nkrejcar\nkresba\nkreveta\nkriket\nkritik\nkrize\nkrkavec\nkrmelec\nkrmivo\nkrocan\nkrok\nkronika\nkropit\nkroupa\nkrovka\nkrtek\nkruhadlo\nkrupice\nkrutost\nkrvinka\nkrychle\nkrypta\nkrystal\nkryt\nkudlanka\nkufr\nkujnost\nkukla\nkulajda\nkulich\nkulka\nkulomet\nkultura\nkuna\nkupodivu\nkurt\nkurzor\nkutil\nkvalita\nkvasinka\nkvestor\nkynolog\nkyselina\nkytara\nkytice\nkytka\nkytovec\nkyvadlo\nlabrador\nlachtan\nladnost\nlaik\nlakomec\nlamela\nlampa\nlanovka\nlasice\nlaso\nlastura\nlatinka\nlavina\nlebka\nleckdy\nleden\nlednice\nledovka\nledvina\nlegenda\nlegie\nlegrace\nlehce\nlehkost\nlehnout\nlektvar\nlenochod\nlentilka\nlepenka\nlepidlo\nletadlo\nletec\nletmo\nletokruh\nlevhart\nlevitace\nlevobok\nlibra\nlichotka\nlidojed\nlidskost\nlihovina\nlijavec\nlilek\nlimetka\nlinie\nlinka\nlinoleum\nlistopad\nlitina\nlitovat\nlobista\nlodivod\nlogika\nlogoped\nlokalita\nloket\nlomcovat\nlopata\nlopuch\nlord\nlosos\nlotr\nloudal\nlouh\nlouka\nlouskat\nlovec\nlstivost\nlucerna\nlucifer\nlump\nlusk\nlustrace\nlvice\nlyra\nlyrika\nlysina\nmadam\nmadlo\nmagistr\nmahagon\nmajetek\nmajitel\nmajorita\nmakak\nmakovice\nmakrela\nmalba\nmalina\nmalovat\nmalvice\nmaminka\nmandle\nmanko\nmarnost\nmasakr\nmaskot\nmasopust\nmatice\nmatrika\nmaturita\nmazanec\nmazivo\nmazlit\nmazurka\nmdloba\nmechanik\nmeditace\nmedovina\nmelasa\nmeloun\nmentolka\nmetla\nmetoda\nmetr\nmezera\nmigrace\nmihnout\nmihule\nmikina\nmikrofon\nmilenec\nmilimetr\nmilost\nmimika\nmincovna\nminibar\nminomet\nminulost\nmiska\nmistr\nmixovat\nmladost\nmlha\nmlhovina\nmlok\nmlsat\nmluvit\nmnich\nmnohem\nmobil\nmocnost\nmodelka\nmodlitba\nmohyla\nmokro\nmolekula\nmomentka\nmonarcha\nmonokl\nmonstrum\nmontovat\nmonzun\nmosaz\nmoskyt\nmost\nmotivace\nmotorka\nmotyka\nmoucha\nmoudrost\nmozaika\nmozek\nmozol\nmramor\nmravenec\nmrkev\nmrtvola\nmrzet\nmrzutost\nmstitel\nmudrc\nmuflon\nmulat\nmumie\nmunice\nmuset\nmutace\nmuzeum\nmuzikant\nmyslivec\nmzda\nnabourat\nnachytat\nnadace\nnadbytek\nnadhoz\nnadobro\nnadpis\nnahlas\nnahnat\nnahodile\nnahradit\nnaivita\nnajednou\nnajisto\nnajmout\nnaklonit\nnakonec\nnakrmit\nnalevo\nnamazat\nnamluvit\nnanometr\nnaoko\nnaopak\nnaostro\nnapadat\nnapevno\nnaplnit\nnapnout\nnaposled\nnaprosto\nnarodit\nnaruby\nnarychlo\nnasadit\nnasekat\nnaslepo\nnastat\nnatolik\nnavenek\nnavrch\nnavzdory\nnazvat\nnebe\nnechat\nnecky\nnedaleko\nnedbat\nneduh\nnegace\nnehet\nnehoda\nnejen\nnejprve\nneklid\nnelibost\nnemilost\nnemoc\nneochota\nneonka\nnepokoj\nnerost\nnerv\nnesmysl\nnesoulad\nnetvor\nneuron\nnevina\nnezvykle\nnicota\nnijak\nnikam\nnikdy\nnikl\nnikterak\nnitro\nnocleh\nnohavice\nnominace\nnora\nnorek\nnositel\nnosnost\nnouze\nnoviny\nnovota\nnozdra\nnuda\nnudle\nnuget\nnutit\nnutnost\nnutrie\nnymfa\nobal\nobarvit\nobava\nobdiv\nobec\nobehnat\nobejmout\nobezita\nobhajoba\nobilnice\nobjasnit\nobjekt\nobklopit\noblast\noblek\nobliba\nobloha\nobluda\nobnos\nobohatit\nobojek\nobout\nobrazec\nobrna\nobruba\nobrys\nobsah\nobsluha\nobstarat\nobuv\nobvaz\nobvinit\nobvod\nobvykle\nobyvatel\nobzor\nocas\nocel\nocenit\nochladit\nochota\nochrana\nocitnout\nodboj\nodbyt\nodchod\nodcizit\nodebrat\nodeslat\nodevzdat\nodezva\nodhadce\nodhodit\nodjet\nodjinud\nodkaz\nodkoupit\nodliv\nodluka\nodmlka\nodolnost\nodpad\nodpis\nodplout\nodpor\nodpustit\nodpykat\nodrazka\nodsoudit\nodstup\nodsun\nodtok\nodtud\nodvaha\nodveta\nodvolat\nodvracet\nodznak\nofina\nofsajd\nohlas\nohnisko\nohrada\nohrozit\nohryzek\nokap\nokenice\noklika\nokno\nokouzlit\nokovy\nokrasa\nokres\nokrsek\nokruh\nokupant\nokurka\nokusit\nolejnina\nolizovat\nomak\nomeleta\nomezit\nomladina\nomlouvat\nomluva\nomyl\nonehdy\nopakovat\nopasek\noperace\nopice\nopilost\nopisovat\nopora\nopozice\nopravdu\noproti\norbital\norchestr\norgie\norlice\norloj\nortel\nosada\noschnout\nosika\nosivo\noslava\noslepit\noslnit\noslovit\nosnova\nosoba\nosolit\nospalec\nosten\nostraha\nostuda\nostych\nosvojit\noteplit\notisk\notop\notrhat\notrlost\notrok\notruby\notvor\novanout\novar\noves\novlivnit\novoce\noxid\nozdoba\npachatel\npacient\npadouch\npahorek\npakt\npalanda\npalec\npalivo\npaluba\npamflet\npamlsek\npanenka\npanika\npanna\npanovat\npanstvo\npantofle\npaprika\nparketa\nparodie\nparta\nparuka\nparyba\npaseka\npasivita\npastelka\npatent\npatrona\npavouk\npazneht\npazourek\npecka\npedagog\npejsek\npeklo\npeloton\npenalta\npendrek\npenze\nperiskop\npero\npestrost\npetarda\npetice\npetrolej\npevnina\npexeso\npianista\npiha\npijavice\npikle\npiknik\npilina\npilnost\npilulka\npinzeta\npipeta\npisatel\npistole\npitevna\npivnice\npivovar\nplacenta\nplakat\nplamen\nplaneta\nplastika\nplatit\nplavidlo\nplaz\nplech\nplemeno\nplenta\nples\npletivo\nplevel\nplivat\nplnit\nplno\nplocha\nplodina\nplomba\nplout\npluk\nplyn\npobavit\npobyt\npochod\npocit\npoctivec\npodat\npodcenit\npodepsat\npodhled\npodivit\npodklad\npodmanit\npodnik\npodoba\npodpora\npodraz\npodstata\npodvod\npodzim\npoezie\npohanka\npohnutka\npohovor\npohroma\npohyb\npointa\npojistka\npojmout\npokazit\npokles\npokoj\npokrok\npokuta\npokyn\npoledne\npolibek\npolknout\npoloha\npolynom\npomalu\npominout\npomlka\npomoc\npomsta\npomyslet\nponechat\nponorka\nponurost\npopadat\npopel\npopisek\npoplach\npoprosit\npopsat\npopud\nporadce\nporce\nporod\nporucha\nporyv\nposadit\nposed\nposila\nposkok\nposlanec\nposoudit\npospolu\npostava\nposudek\nposyp\npotah\npotkan\npotlesk\npotomek\npotrava\npotupa\npotvora\npoukaz\npouto\npouzdro\npovaha\npovidla\npovlak\npovoz\npovrch\npovstat\npovyk\npovzdech\npozdrav\npozemek\npoznatek\npozor\npozvat\npracovat\nprahory\npraktika\nprales\npraotec\npraporek\nprase\npravda\nprincip\nprkno\nprobudit\nprocento\nprodej\nprofese\nprohra\nprojekt\nprolomit\npromile\npronikat\npropad\nprorok\nprosba\nproton\nproutek\nprovaz\nprskavka\nprsten\nprudkost\nprut\nprvek\nprvohory\npsanec\npsovod\npstruh\nptactvo\npuberta\npuch\npudl\npukavec\npuklina\npukrle\npult\npumpa\npunc\npupen\npusa\npusinka\npustina\nputovat\nputyka\npyramida\npysk\npytel\nracek\nrachot\nradiace\nradnice\nradon\nraft\nragby\nraketa\nrakovina\nrameno\nrampouch\nrande\nrarach\nrarita\nrasovna\nrastr\nratolest\nrazance\nrazidlo\nreagovat\nreakce\nrecept\nredaktor\nreferent\nreflex\nrejnok\nreklama\nrekord\nrekrut\nrektor\nreputace\nrevize\nrevma\nrevolver\nrezerva\nriskovat\nriziko\nrobotika\nrodokmen\nrohovka\nrokle\nrokoko\nromaneto\nropovod\nropucha\nrorejs\nrosol\nrostlina\nrotmistr\nrotoped\nrotunda\nroubenka\nroucho\nroup\nroura\nrovina\nrovnice\nrozbor\nrozchod\nrozdat\nrozeznat\nrozhodce\nrozinka\nrozjezd\nrozkaz\nrozloha\nrozmar\nrozpad\nrozruch\nrozsah\nroztok\nrozum\nrozvod\nrubrika\nruchadlo\nrukavice\nrukopis\nryba\nrybolov\nrychlost\nrydlo\nrypadlo\nrytina\nryzost\nsadista\nsahat\nsako\nsamec\nsamizdat\nsamota\nsanitka\nsardinka\nsasanka\nsatelit\nsazba\nsazenice\nsbor\nschovat\nsebranka\nsecese\nsedadlo\nsediment\nsedlo\nsehnat\nsejmout\nsekera\nsekta\nsekunda\nsekvoje\nsemeno\nseno\nservis\nsesadit\nseshora\nseskok\nseslat\nsestra\nsesuv\nsesypat\nsetba\nsetina\nsetkat\nsetnout\nsetrvat\nsever\nseznam\nshoda\nshrnout\nsifon\nsilnice\nsirka\nsirotek\nsirup\nsituace\nskafandr\nskalisko\nskanzen\nskaut\nskeptik\nskica\nskladba\nsklenice\nsklo\nskluz\nskoba\nskokan\nskoro\nskripta\nskrz\nskupina\nskvost\nskvrna\nslabika\nsladidlo\nslanina\nslast\nslavnost\nsledovat\nslepec\nsleva\nslezina\nslib\nslina\nsliznice\nslon\nsloupek\nslovo\nsluch\nsluha\nslunce\nslupka\nslza\nsmaragd\nsmetana\nsmilstvo\nsmlouva\nsmog\nsmrad\nsmrk\nsmrtka\nsmutek\nsmysl\nsnad\nsnaha\nsnob\nsobota\nsocha\nsodovka\nsokol\nsopka\nsotva\nsouboj\nsoucit\nsoudce\nsouhlas\nsoulad\nsoumrak\nsouprava\nsoused\nsoutok\nsouviset\nspalovna\nspasitel\nspis\nsplav\nspodek\nspojenec\nspolu\nsponzor\nspornost\nspousta\nsprcha\nspustit\nsranda\nsraz\nsrdce\nsrna\nsrnec\nsrovnat\nsrpen\nsrst\nsrub\nstanice\nstarosta\nstatika\nstavba\nstehno\nstezka\nstodola\nstolek\nstopa\nstorno\nstoupat\nstrach\nstres\nstrhnout\nstrom\nstruna\nstudna\nstupnice\nstvol\nstyk\nsubjekt\nsubtropy\nsuchar\nsudost\nsukno\nsundat\nsunout\nsurikata\nsurovina\nsvah\nsvalstvo\nsvetr\nsvatba\nsvazek\nsvisle\nsvitek\nsvoboda\nsvodidlo\nsvorka\nsvrab\nsykavka\nsykot\nsynek\nsynovec\nsypat\nsypkost\nsyrovost\nsysel\nsytost\ntabletka\ntabule\ntahoun\ntajemno\ntajfun\ntajga\ntajit\ntajnost\ntaktika\ntamhle\ntampon\ntancovat\ntanec\ntanker\ntapeta\ntavenina\ntazatel\ntechnika\ntehdy\ntekutina\ntelefon\ntemnota\ntendence\ntenista\ntenor\nteplota\ntepna\nteprve\nterapie\ntermoska\ntextil\nticho\ntiskopis\ntitulek\ntkadlec\ntkanina\ntlapka\ntleskat\ntlukot\ntlupa\ntmel\ntoaleta\ntopinka\ntopol\ntorzo\ntouha\ntoulec\ntradice\ntraktor\ntramp\ntrasa\ntraverza\ntrefit\ntrest\ntrezor\ntrhavina\ntrhlina\ntrochu\ntrojice\ntroska\ntrouba\ntrpce\ntrpitel\ntrpkost\ntrubec\ntruchlit\ntruhlice\ntrus\ntrvat\ntudy\ntuhnout\ntuhost\ntundra\nturista\nturnaj\ntuzemsko\ntvaroh\ntvorba\ntvrdost\ntvrz\ntygr\ntykev\nubohost\nuboze\nubrat\nubrousek\nubrus\nubytovna\nucho\nuctivost\nudivit\nuhradit\nujednat\nujistit\nujmout\nukazatel\nuklidnit\nuklonit\nukotvit\nukrojit\nulice\nulita\nulovit\numyvadlo\nunavit\nuniforma\nuniknout\nupadnout\nuplatnit\nuplynout\nupoutat\nupravit\nuran\nurazit\nusednout\nusilovat\nusmrtit\nusnadnit\nusnout\nusoudit\nustlat\nustrnout\nutahovat\nutkat\nutlumit\nutonout\nutopenec\nutrousit\nuvalit\nuvolnit\nuvozovka\nuzdravit\nuzel\nuzenina\nuzlina\nuznat\nvagon\nvalcha\nvaloun\nvana\nvandal\nvanilka\nvaran\nvarhany\nvarovat\nvcelku\nvchod\nvdova\nvedro\nvegetace\nvejce\nvelbloud\nveletrh\nvelitel\nvelmoc\nvelryba\nvenkov\nveranda\nverze\nveselka\nveskrze\nvesnice\nvespodu\nvesta\nveterina\nveverka\nvibrace\nvichr\nvideohra\nvidina\nvidle\nvila\nvinice\nviset\nvitalita\nvize\nvizitka\nvjezd\nvklad\nvkus\nvlajka\nvlak\nvlasec\nvlevo\nvlhkost\nvliv\nvlnovka\nvloupat\nvnucovat\nvnuk\nvoda\nvodivost\nvodoznak\nvodstvo\nvojensky\nvojna\nvojsko\nvolant\nvolba\nvolit\nvolno\nvoskovka\nvozidlo\nvozovna\nvpravo\nvrabec\nvracet\nvrah\nvrata\nvrba\nvrcholek\nvrhat\nvrstva\nvrtule\nvsadit\nvstoupit\nvstup\nvtip\nvybavit\nvybrat\nvychovat\nvydat\nvydra\nvyfotit\nvyhledat\nvyhnout\nvyhodit\nvyhradit\nvyhubit\nvyjasnit\nvyjet\nvyjmout\nvyklopit\nvykonat\nvylekat\nvymazat\nvymezit\nvymizet\nvymyslet\nvynechat\nvynikat\nvynutit\nvypadat\nvyplatit\nvypravit\nvypustit\nvyrazit\nvyrovnat\nvyrvat\nvyslovit\nvysoko\nvystavit\nvysunout\nvysypat\nvytasit\nvytesat\nvytratit\nvyvinout\nvyvolat\nvyvrhel\nvyzdobit\nvyznat\nvzadu\nvzbudit\nvzchopit\nvzdor\nvzduch\nvzdychat\nvzestup\nvzhledem\nvzkaz\nvzlykat\nvznik\nvzorek\nvzpoura\nvztah\nvztek\nxylofon\nzabrat\nzabydlet\nzachovat\nzadarmo\nzadusit\nzafoukat\nzahltit\nzahodit\nzahrada\nzahynout\nzajatec\nzajet\nzajistit\nzaklepat\nzakoupit\nzalepit\nzamezit\nzamotat\nzamyslet\nzanechat\nzanikat\nzaplatit\nzapojit\nzapsat\nzarazit\nzastavit\nzasunout\nzatajit\nzatemnit\nzatknout\nzaujmout\nzavalit\nzavelet\nzavinit\nzavolat\nzavrtat\nzazvonit\nzbavit\nzbrusu\nzbudovat\nzbytek\nzdaleka\nzdarma\nzdatnost\nzdivo\nzdobit\nzdroj\nzdvih\nzdymadlo\nzelenina\nzeman\nzemina\nzeptat\nzezadu\nzezdola\nzhatit\nzhltnout\nzhluboka\nzhotovit\nzhruba\nzima\nzimnice\nzjemnit\nzklamat\nzkoumat\nzkratka\nzkumavka\nzlato\nzlehka\nzloba\nzlom\nzlost\nzlozvyk\nzmapovat\nzmar\nzmatek\nzmije\nzmizet\nzmocnit\nzmodrat\nzmrzlina\nzmutovat\nznak\nznalost\nznamenat\nznovu\nzobrazit\nzotavit\nzoubek\nzoufale\nzplodit\nzpomalit\nzprava\nzprostit\nzprudka\nzprvu\nzrada\nzranit\nzrcadlo\nzrnitost\nzrno\nzrovna\nzrychlit\nzrzavost\nzticha\nztratit\nzubovina\nzubr\nzvednout\nzvenku\nzvesela\nzvon\nzvrat\nzvukovod\nzvyk".split("\n"),So="abandon\nability\nable\nabout\nabove\nabsent\nabsorb\nabstract\nabsurd\nabuse\naccess\naccident\naccount\naccuse\nachieve\nacid\nacoustic\nacquire\nacross\nact\naction\nactor\nactress\nactual\nadapt\nadd\naddict\naddress\nadjust\nadmit\nadult\nadvance\nadvice\naerobic\naffair\nafford\nafraid\nagain\nage\nagent\nagree\nahead\naim\nair\nairport\naisle\nalarm\nalbum\nalcohol\nalert\nalien\nall\nalley\nallow\nalmost\nalone\nalpha\nalready\nalso\nalter\nalways\namateur\namazing\namong\namount\namused\nanalyst\nanchor\nancient\nanger\nangle\nangry\nanimal\nankle\nannounce\nannual\nanother\nanswer\nantenna\nantique\nanxiety\nany\napart\napology\nappear\napple\napprove\napril\narch\narctic\narea\narena\nargue\narm\narmed\narmor\narmy\naround\narrange\narrest\narrive\narrow\nart\nartefact\nartist\nartwork\nask\naspect\nassault\nasset\nassist\nassume\nasthma\nathlete\natom\nattack\nattend\nattitude\nattract\nauction\naudit\naugust\naunt\nauthor\nauto\nautumn\naverage\navocado\navoid\nawake\naware\naway\nawesome\nawful\nawkward\naxis\nbaby\nbachelor\nbacon\nbadge\nbag\nbalance\nbalcony\nball\nbamboo\nbanana\nbanner\nbar\nbarely\nbargain\nbarrel\nbase\nbasic\nbasket\nbattle\nbeach\nbean\nbeauty\nbecause\nbecome\nbeef\nbefore\nbegin\nbehave\nbehind\nbelieve\nbelow\nbelt\nbench\nbenefit\nbest\nbetray\nbetter\nbetween\nbeyond\nbicycle\nbid\nbike\nbind\nbiology\nbird\nbirth\nbitter\nblack\nblade\nblame\nblanket\nblast\nbleak\nbless\nblind\nblood\nblossom\nblouse\nblue\nblur\nblush\nboard\nboat\nbody\nboil\nbomb\nbone\nbonus\nbook\nboost\nborder\nboring\nborrow\nboss\nbottom\nbounce\nbox\nboy\nbracket\nbrain\nbrand\nbrass\nbrave\nbread\nbreeze\nbrick\nbridge\nbrief\nbright\nbring\nbrisk\nbroccoli\nbroken\nbronze\nbroom\nbrother\nbrown\nbrush\nbubble\nbuddy\nbudget\nbuffalo\nbuild\nbulb\nbulk\nbullet\nbundle\nbunker\nburden\nburger\nburst\nbus\nbusiness\nbusy\nbutter\nbuyer\nbuzz\ncabbage\ncabin\ncable\ncactus\ncage\ncake\ncall\ncalm\ncamera\ncamp\ncan\ncanal\ncancel\ncandy\ncannon\ncanoe\ncanvas\ncanyon\ncapable\ncapital\ncaptain\ncar\ncarbon\ncard\ncargo\ncarpet\ncarry\ncart\ncase\ncash\ncasino\ncastle\ncasual\ncat\ncatalog\ncatch\ncategory\ncattle\ncaught\ncause\ncaution\ncave\nceiling\ncelery\ncement\ncensus\ncentury\ncereal\ncertain\nchair\nchalk\nchampion\nchange\nchaos\nchapter\ncharge\nchase\nchat\ncheap\ncheck\ncheese\nchef\ncherry\nchest\nchicken\nchief\nchild\nchimney\nchoice\nchoose\nchronic\nchuckle\nchunk\nchurn\ncigar\ncinnamon\ncircle\ncitizen\ncity\ncivil\nclaim\nclap\nclarify\nclaw\nclay\nclean\nclerk\nclever\nclick\nclient\ncliff\nclimb\nclinic\nclip\nclock\nclog\nclose\ncloth\ncloud\nclown\nclub\nclump\ncluster\nclutch\ncoach\ncoast\ncoconut\ncode\ncoffee\ncoil\ncoin\ncollect\ncolor\ncolumn\ncombine\ncome\ncomfort\ncomic\ncommon\ncompany\nconcert\nconduct\nconfirm\ncongress\nconnect\nconsider\ncontrol\nconvince\ncook\ncool\ncopper\ncopy\ncoral\ncore\ncorn\ncorrect\ncost\ncotton\ncouch\ncountry\ncouple\ncourse\ncousin\ncover\ncoyote\ncrack\ncradle\ncraft\ncram\ncrane\ncrash\ncrater\ncrawl\ncrazy\ncream\ncredit\ncreek\ncrew\ncricket\ncrime\ncrisp\ncritic\ncrop\ncross\ncrouch\ncrowd\ncrucial\ncruel\ncruise\ncrumble\ncrunch\ncrush\ncry\ncrystal\ncube\nculture\ncup\ncupboard\ncurious\ncurrent\ncurtain\ncurve\ncushion\ncustom\ncute\ncycle\ndad\ndamage\ndamp\ndance\ndanger\ndaring\ndash\ndaughter\ndawn\nday\ndeal\ndebate\ndebris\ndecade\ndecember\ndecide\ndecline\ndecorate\ndecrease\ndeer\ndefense\ndefine\ndefy\ndegree\ndelay\ndeliver\ndemand\ndemise\ndenial\ndentist\ndeny\ndepart\ndepend\ndeposit\ndepth\ndeputy\nderive\ndescribe\ndesert\ndesign\ndesk\ndespair\ndestroy\ndetail\ndetect\ndevelop\ndevice\ndevote\ndiagram\ndial\ndiamond\ndiary\ndice\ndiesel\ndiet\ndiffer\ndigital\ndignity\ndilemma\ndinner\ndinosaur\ndirect\ndirt\ndisagree\ndiscover\ndisease\ndish\ndismiss\ndisorder\ndisplay\ndistance\ndivert\ndivide\ndivorce\ndizzy\ndoctor\ndocument\ndog\ndoll\ndolphin\ndomain\ndonate\ndonkey\ndonor\ndoor\ndose\ndouble\ndove\ndraft\ndragon\ndrama\ndrastic\ndraw\ndream\ndress\ndrift\ndrill\ndrink\ndrip\ndrive\ndrop\ndrum\ndry\nduck\ndumb\ndune\nduring\ndust\ndutch\nduty\ndwarf\ndynamic\neager\neagle\nearly\nearn\nearth\neasily\neast\neasy\necho\necology\neconomy\nedge\nedit\neducate\neffort\negg\neight\neither\nelbow\nelder\nelectric\nelegant\nelement\nelephant\nelevator\nelite\nelse\nembark\nembody\nembrace\nemerge\nemotion\nemploy\nempower\nempty\nenable\nenact\nend\nendless\nendorse\nenemy\nenergy\nenforce\nengage\nengine\nenhance\nenjoy\nenlist\nenough\nenrich\nenroll\nensure\nenter\nentire\nentry\nenvelope\nepisode\nequal\nequip\nera\nerase\nerode\nerosion\nerror\nerupt\nescape\nessay\nessence\nestate\neternal\nethics\nevidence\nevil\nevoke\nevolve\nexact\nexample\nexcess\nexchange\nexcite\nexclude\nexcuse\nexecute\nexercise\nexhaust\nexhibit\nexile\nexist\nexit\nexotic\nexpand\nexpect\nexpire\nexplain\nexpose\nexpress\nextend\nextra\neye\neyebrow\nfabric\nface\nfaculty\nfade\nfaint\nfaith\nfall\nfalse\nfame\nfamily\nfamous\nfan\nfancy\nfantasy\nfarm\nfashion\nfat\nfatal\nfather\nfatigue\nfault\nfavorite\nfeature\nfebruary\nfederal\nfee\nfeed\nfeel\nfemale\nfence\nfestival\nfetch\nfever\nfew\nfiber\nfiction\nfield\nfigure\nfile\nfilm\nfilter\nfinal\nfind\nfine\nfinger\nfinish\nfire\nfirm\nfirst\nfiscal\nfish\nfit\nfitness\nfix\nflag\nflame\nflash\nflat\nflavor\nflee\nflight\nflip\nfloat\nflock\nfloor\nflower\nfluid\nflush\nfly\nfoam\nfocus\nfog\nfoil\nfold\nfollow\nfood\nfoot\nforce\nforest\nforget\nfork\nfortune\nforum\nforward\nfossil\nfoster\nfound\nfox\nfragile\nframe\nfrequent\nfresh\nfriend\nfringe\nfrog\nfront\nfrost\nfrown\nfrozen\nfruit\nfuel\nfun\nfunny\nfurnace\nfury\nfuture\ngadget\ngain\ngalaxy\ngallery\ngame\ngap\ngarage\ngarbage\ngarden\ngarlic\ngarment\ngas\ngasp\ngate\ngather\ngauge\ngaze\ngeneral\ngenius\ngenre\ngentle\ngenuine\ngesture\nghost\ngiant\ngift\ngiggle\nginger\ngiraffe\ngirl\ngive\nglad\nglance\nglare\nglass\nglide\nglimpse\nglobe\ngloom\nglory\nglove\nglow\nglue\ngoat\ngoddess\ngold\ngood\ngoose\ngorilla\ngospel\ngossip\ngovern\ngown\ngrab\ngrace\ngrain\ngrant\ngrape\ngrass\ngravity\ngreat\ngreen\ngrid\ngrief\ngrit\ngrocery\ngroup\ngrow\ngrunt\nguard\nguess\nguide\nguilt\nguitar\ngun\ngym\nhabit\nhair\nhalf\nhammer\nhamster\nhand\nhappy\nharbor\nhard\nharsh\nharvest\nhat\nhave\nhawk\nhazard\nhead\nhealth\nheart\nheavy\nhedgehog\nheight\nhello\nhelmet\nhelp\nhen\nhero\nhidden\nhigh\nhill\nhint\nhip\nhire\nhistory\nhobby\nhockey\nhold\nhole\nholiday\nhollow\nhome\nhoney\nhood\nhope\nhorn\nhorror\nhorse\nhospital\nhost\nhotel\nhour\nhover\nhub\nhuge\nhuman\nhumble\nhumor\nhundred\nhungry\nhunt\nhurdle\nhurry\nhurt\nhusband\nhybrid\nice\nicon\nidea\nidentify\nidle\nignore\nill\nillegal\nillness\nimage\nimitate\nimmense\nimmune\nimpact\nimpose\nimprove\nimpulse\ninch\ninclude\nincome\nincrease\nindex\nindicate\nindoor\nindustry\ninfant\ninflict\ninform\ninhale\ninherit\ninitial\ninject\ninjury\ninmate\ninner\ninnocent\ninput\ninquiry\ninsane\ninsect\ninside\ninspire\ninstall\nintact\ninterest\ninto\ninvest\ninvite\ninvolve\niron\nisland\nisolate\nissue\nitem\nivory\njacket\njaguar\njar\njazz\njealous\njeans\njelly\njewel\njob\njoin\njoke\njourney\njoy\njudge\njuice\njump\njungle\njunior\njunk\njust\nkangaroo\nkeen\nkeep\nketchup\nkey\nkick\nkid\nkidney\nkind\nkingdom\nkiss\nkit\nkitchen\nkite\nkitten\nkiwi\nknee\nknife\nknock\nknow\nlab\nlabel\nlabor\nladder\nlady\nlake\nlamp\nlanguage\nlaptop\nlarge\nlater\nlatin\nlaugh\nlaundry\nlava\nlaw\nlawn\nlawsuit\nlayer\nlazy\nleader\nleaf\nlearn\nleave\nlecture\nleft\nleg\nlegal\nlegend\nleisure\nlemon\nlend\nlength\nlens\nleopard\nlesson\nletter\nlevel\nliar\nliberty\nlibrary\nlicense\nlife\nlift\nlight\nlike\nlimb\nlimit\nlink\nlion\nliquid\nlist\nlittle\nlive\nlizard\nload\nloan\nlobster\nlocal\nlock\nlogic\nlonely\nlong\nloop\nlottery\nloud\nlounge\nlove\nloyal\nlucky\nluggage\nlumber\nlunar\nlunch\nluxury\nlyrics\nmachine\nmad\nmagic\nmagnet\nmaid\nmail\nmain\nmajor\nmake\nmammal\nman\nmanage\nmandate\nmango\nmansion\nmanual\nmaple\nmarble\nmarch\nmargin\nmarine\nmarket\nmarriage\nmask\nmass\nmaster\nmatch\nmaterial\nmath\nmatrix\nmatter\nmaximum\nmaze\nmeadow\nmean\nmeasure\nmeat\nmechanic\nmedal\nmedia\nmelody\nmelt\nmember\nmemory\nmention\nmenu\nmercy\nmerge\nmerit\nmerry\nmesh\nmessage\nmetal\nmethod\nmiddle\nmidnight\nmilk\nmillion\nmimic\nmind\nminimum\nminor\nminute\nmiracle\nmirror\nmisery\nmiss\nmistake\nmix\nmixed\nmixture\nmobile\nmodel\nmodify\nmom\nmoment\nmonitor\nmonkey\nmonster\nmonth\nmoon\nmoral\nmore\nmorning\nmosquito\nmother\nmotion\nmotor\nmountain\nmouse\nmove\nmovie\nmuch\nmuffin\nmule\nmultiply\nmuscle\nmuseum\nmushroom\nmusic\nmust\nmutual\nmyself\nmystery\nmyth\nnaive\nname\nnapkin\nnarrow\nnasty\nnation\nnature\nnear\nneck\nneed\nnegative\nneglect\nneither\nnephew\nnerve\nnest\nnet\nnetwork\nneutral\nnever\nnews\nnext\nnice\nnight\nnoble\nnoise\nnominee\nnoodle\nnormal\nnorth\nnose\nnotable\nnote\nnothing\nnotice\nnovel\nnow\nnuclear\nnumber\nnurse\nnut\noak\nobey\nobject\noblige\nobscure\nobserve\nobtain\nobvious\noccur\nocean\noctober\nodor\noff\noffer\noffice\noften\noil\nokay\nold\nolive\nolympic\nomit\nonce\none\nonion\nonline\nonly\nopen\nopera\nopinion\noppose\noption\norange\norbit\norchard\norder\nordinary\norgan\norient\noriginal\norphan\nostrich\nother\noutdoor\nouter\noutput\noutside\noval\noven\nover\nown\nowner\noxygen\noyster\nozone\npact\npaddle\npage\npair\npalace\npalm\npanda\npanel\npanic\npanther\npaper\nparade\nparent\npark\nparrot\nparty\npass\npatch\npath\npatient\npatrol\npattern\npause\npave\npayment\npeace\npeanut\npear\npeasant\npelican\npen\npenalty\npencil\npeople\npepper\nperfect\npermit\nperson\npet\nphone\nphoto\nphrase\nphysical\npiano\npicnic\npicture\npiece\npig\npigeon\npill\npilot\npink\npioneer\npipe\npistol\npitch\npizza\nplace\nplanet\nplastic\nplate\nplay\nplease\npledge\npluck\nplug\nplunge\npoem\npoet\npoint\npolar\npole\npolice\npond\npony\npool\npopular\nportion\nposition\npossible\npost\npotato\npottery\npoverty\npowder\npower\npractice\npraise\npredict\nprefer\nprepare\npresent\npretty\nprevent\nprice\npride\nprimary\nprint\npriority\nprison\nprivate\nprize\nproblem\nprocess\nproduce\nprofit\nprogram\nproject\npromote\nproof\nproperty\nprosper\nprotect\nproud\nprovide\npublic\npudding\npull\npulp\npulse\npumpkin\npunch\npupil\npuppy\npurchase\npurity\npurpose\npurse\npush\nput\npuzzle\npyramid\nquality\nquantum\nquarter\nquestion\nquick\nquit\nquiz\nquote\nrabbit\nraccoon\nrace\nrack\nradar\nradio\nrail\nrain\nraise\nrally\nramp\nranch\nrandom\nrange\nrapid\nrare\nrate\nrather\nraven\nraw\nrazor\nready\nreal\nreason\nrebel\nrebuild\nrecall\nreceive\nrecipe\nrecord\nrecycle\nreduce\nreflect\nreform\nrefuse\nregion\nregret\nregular\nreject\nrelax\nrelease\nrelief\nrely\nremain\nremember\nremind\nremove\nrender\nrenew\nrent\nreopen\nrepair\nrepeat\nreplace\nreport\nrequire\nrescue\nresemble\nresist\nresource\nresponse\nresult\nretire\nretreat\nreturn\nreunion\nreveal\nreview\nreward\nrhythm\nrib\nribbon\nrice\nrich\nride\nridge\nrifle\nright\nrigid\nring\nriot\nripple\nrisk\nritual\nrival\nriver\nroad\nroast\nrobot\nrobust\nrocket\nromance\nroof\nrookie\nroom\nrose\nrotate\nrough\nround\nroute\nroyal\nrubber\nrude\nrug\nrule\nrun\nrunway\nrural\nsad\nsaddle\nsadness\nsafe\nsail\nsalad\nsalmon\nsalon\nsalt\nsalute\nsame\nsample\nsand\nsatisfy\nsatoshi\nsauce\nsausage\nsave\nsay\nscale\nscan\nscare\nscatter\nscene\nscheme\nschool\nscience\nscissors\nscorpion\nscout\nscrap\nscreen\nscript\nscrub\nsea\nsearch\nseason\nseat\nsecond\nsecret\nsection\nsecurity\nseed\nseek\nsegment\nselect\nsell\nseminar\nsenior\nsense\nsentence\nseries\nservice\nsession\nsettle\nsetup\nseven\nshadow\nshaft\nshallow\nshare\nshed\nshell\nsheriff\nshield\nshift\nshine\nship\nshiver\nshock\nshoe\nshoot\nshop\nshort\nshoulder\nshove\nshrimp\nshrug\nshuffle\nshy\nsibling\nsick\nside\nsiege\nsight\nsign\nsilent\nsilk\nsilly\nsilver\nsimilar\nsimple\nsince\nsing\nsiren\nsister\nsituate\nsix\nsize\nskate\nsketch\nski\nskill\nskin\nskirt\nskull\nslab\nslam\nsleep\nslender\nslice\nslide\nslight\nslim\nslogan\nslot\nslow\nslush\nsmall\nsmart\nsmile\nsmoke\nsmooth\nsnack\nsnake\nsnap\nsniff\nsnow\nsoap\nsoccer\nsocial\nsock\nsoda\nsoft\nsolar\nsoldier\nsolid\nsolution\nsolve\nsomeone\nsong\nsoon\nsorry\nsort\nsoul\nsound\nsoup\nsource\nsouth\nspace\nspare\nspatial\nspawn\nspeak\nspecial\nspeed\nspell\nspend\nsphere\nspice\nspider\nspike\nspin\nspirit\nsplit\nspoil\nsponsor\nspoon\nsport\nspot\nspray\nspread\nspring\nspy\nsquare\nsqueeze\nsquirrel\nstable\nstadium\nstaff\nstage\nstairs\nstamp\nstand\nstart\nstate\nstay\nsteak\nsteel\nstem\nstep\nstereo\nstick\nstill\nsting\nstock\nstomach\nstone\nstool\nstory\nstove\nstrategy\nstreet\nstrike\nstrong\nstruggle\nstudent\nstuff\nstumble\nstyle\nsubject\nsubmit\nsubway\nsuccess\nsuch\nsudden\nsuffer\nsugar\nsuggest\nsuit\nsummer\nsun\nsunny\nsunset\nsuper\nsupply\nsupreme\nsure\nsurface\nsurge\nsurprise\nsurround\nsurvey\nsuspect\nsustain\nswallow\nswamp\nswap\nswarm\nswear\nsweet\nswift\nswim\nswing\nswitch\nsword\nsymbol\nsymptom\nsyrup\nsystem\ntable\ntackle\ntag\ntail\ntalent\ntalk\ntank\ntape\ntarget\ntask\ntaste\ntattoo\ntaxi\nteach\nteam\ntell\nten\ntenant\ntennis\ntent\nterm\ntest\ntext\nthank\nthat\ntheme\nthen\ntheory\nthere\nthey\nthing\nthis\nthought\nthree\nthrive\nthrow\nthumb\nthunder\nticket\ntide\ntiger\ntilt\ntimber\ntime\ntiny\ntip\ntired\ntissue\ntitle\ntoast\ntobacco\ntoday\ntoddler\ntoe\ntogether\ntoilet\ntoken\ntomato\ntomorrow\ntone\ntongue\ntonight\ntool\ntooth\ntop\ntopic\ntopple\ntorch\ntornado\ntortoise\ntoss\ntotal\ntourist\ntoward\ntower\ntown\ntoy\ntrack\ntrade\ntraffic\ntragic\ntrain\ntransfer\ntrap\ntrash\ntravel\ntray\ntreat\ntree\ntrend\ntrial\ntribe\ntrick\ntrigger\ntrim\ntrip\ntrophy\ntrouble\ntruck\ntrue\ntruly\ntrumpet\ntrust\ntruth\ntry\ntube\ntuition\ntumble\ntuna\ntunnel\nturkey\nturn\nturtle\ntwelve\ntwenty\ntwice\ntwin\ntwist\ntwo\ntype\ntypical\nugly\numbrella\nunable\nunaware\nuncle\nuncover\nunder\nundo\nunfair\nunfold\nunhappy\nuniform\nunique\nunit\nuniverse\nunknown\nunlock\nuntil\nunusual\nunveil\nupdate\nupgrade\nuphold\nupon\nupper\nupset\nurban\nurge\nusage\nuse\nused\nuseful\nuseless\nusual\nutility\nvacant\nvacuum\nvague\nvalid\nvalley\nvalve\nvan\nvanish\nvapor\nvarious\nvast\nvault\nvehicle\nvelvet\nvendor\nventure\nvenue\nverb\nverify\nversion\nvery\nvessel\nveteran\nviable\nvibrant\nvicious\nvictory\nvideo\nview\nvillage\nvintage\nviolin\nvirtual\nvirus\nvisa\nvisit\nvisual\nvital\nvivid\nvocal\nvoice\nvoid\nvolcano\nvolume\nvote\nvoyage\nwage\nwagon\nwait\nwalk\nwall\nwalnut\nwant\nwarfare\nwarm\nwarrior\nwash\nwasp\nwaste\nwater\nwave\nway\nwealth\nweapon\nwear\nweasel\nweather\nweb\nwedding\nweekend\nweird\nwelcome\nwest\nwet\nwhale\nwhat\nwheat\nwheel\nwhen\nwhere\nwhip\nwhisper\nwide\nwidth\nwife\nwild\nwill\nwin\nwindow\nwine\nwing\nwink\nwinner\nwinter\nwire\nwisdom\nwise\nwish\nwitness\nwolf\nwoman\nwonder\nwood\nwool\nword\nwork\nworld\nworry\nworth\nwrap\nwreck\nwrestle\nwrist\nwrite\nwrong\nyard\nyear\nyellow\nyou\nyoung\nyouth\nzebra\nzero\nzone\nzoo".split("\n"),Bo="abaisser\nabandon\nabdiquer\nabeille\nabolir\naborder\naboutir\naboyer\nabrasif\nabreuver\nabriter\nabroger\nabrupt\nabsence\nabsolu\nabsurde\nabusif\nabyssal\nacadémie\nacajou\nacarien\naccabler\naccepter\nacclamer\naccolade\naccroche\naccuser\nacerbe\nachat\nacheter\naciduler\nacier\nacompte\nacquérir\nacronyme\nacteur\nactif\nactuel\nadepte\nadéquat\nadhésif\nadjectif\nadjuger\nadmettre\nadmirer\nadopter\nadorer\nadoucir\nadresse\nadroit\nadulte\nadverbe\naérer\naéronef\naffaire\naffecter\naffiche\naffreux\naffubler\nagacer\nagencer\nagile\nagiter\nagrafer\nagréable\nagrume\naider\naiguille\nailier\naimable\naisance\najouter\najuster\nalarmer\nalchimie\nalerte\nalgèbre\nalgue\naliéner\naliment\nalléger\nalliage\nallouer\nallumer\nalourdir\nalpaga\naltesse\nalvéole\namateur\nambigu\nambre\naménager\namertume\namidon\namiral\namorcer\namour\namovible\namphibie\nampleur\namusant\nanalyse\nanaphore\nanarchie\nanatomie\nancien\nanéantir\nangle\nangoisse\nanguleux\nanimal\nannexer\nannonce\nannuel\nanodin\nanomalie\nanonyme\nanormal\nantenne\nantidote\nanxieux\napaiser\napéritif\naplanir\napologie\nappareil\nappeler\napporter\nappuyer\naquarium\naqueduc\narbitre\narbuste\nardeur\nardoise\nargent\narlequin\narmature\narmement\narmoire\narmure\narpenter\narracher\narriver\narroser\narsenic\nartériel\narticle\naspect\nasphalte\naspirer\nassaut\nasservir\nassiette\nassocier\nassurer\nasticot\nastre\nastuce\natelier\natome\natrium\natroce\nattaque\nattentif\nattirer\nattraper\naubaine\nauberge\naudace\naudible\naugurer\naurore\nautomne\nautruche\navaler\navancer\navarice\navenir\naverse\naveugle\naviateur\navide\navion\naviser\navoine\navouer\navril\naxial\naxiome\nbadge\nbafouer\nbagage\nbaguette\nbaignade\nbalancer\nbalcon\nbaleine\nbalisage\nbambin\nbancaire\nbandage\nbanlieue\nbannière\nbanquier\nbarbier\nbaril\nbaron\nbarque\nbarrage\nbassin\nbastion\nbataille\nbateau\nbatterie\nbaudrier\nbavarder\nbelette\nbélier\nbelote\nbénéfice\nberceau\nberger\nberline\nbermuda\nbesace\nbesogne\nbétail\nbeurre\nbiberon\nbicycle\nbidule\nbijou\nbilan\nbilingue\nbillard\nbinaire\nbiologie\nbiopsie\nbiotype\nbiscuit\nbison\nbistouri\nbitume\nbizarre\nblafard\nblague\nblanchir\nblessant\nblinder\nblond\nbloquer\nblouson\nbobard\nbobine\nboire\nboiser\nbolide\nbonbon\nbondir\nbonheur\nbonifier\nbonus\nbordure\nborne\nbotte\nboucle\nboueux\nbougie\nboulon\nbouquin\nbourse\nboussole\nboutique\nboxeur\nbranche\nbrasier\nbrave\nbrebis\nbrèche\nbreuvage\nbricoler\nbrigade\nbrillant\nbrioche\nbrique\nbrochure\nbroder\nbronzer\nbrousse\nbroyeur\nbrume\nbrusque\nbrutal\nbruyant\nbuffle\nbuisson\nbulletin\nbureau\nburin\nbustier\nbutiner\nbutoir\nbuvable\nbuvette\ncabanon\ncabine\ncachette\ncadeau\ncadre\ncaféine\ncaillou\ncaisson\ncalculer\ncalepin\ncalibre\ncalmer\ncalomnie\ncalvaire\ncamarade\ncaméra\ncamion\ncampagne\ncanal\ncaneton\ncanon\ncantine\ncanular\ncapable\ncaporal\ncaprice\ncapsule\ncapter\ncapuche\ncarabine\ncarbone\ncaresser\ncaribou\ncarnage\ncarotte\ncarreau\ncarton\ncascade\ncasier\ncasque\ncassure\ncauser\ncaution\ncavalier\ncaverne\ncaviar\ncédille\nceinture\ncéleste\ncellule\ncendrier\ncensurer\ncentral\ncercle\ncérébral\ncerise\ncerner\ncerveau\ncesser\nchagrin\nchaise\nchaleur\nchambre\nchance\nchapitre\ncharbon\nchasseur\nchaton\nchausson\nchavirer\nchemise\nchenille\nchéquier\nchercher\ncheval\nchien\nchiffre\nchignon\nchimère\nchiot\nchlorure\nchocolat\nchoisir\nchose\nchouette\nchrome\nchute\ncigare\ncigogne\ncimenter\ncinéma\ncintrer\ncirculer\ncirer\ncirque\nciterne\ncitoyen\ncitron\ncivil\nclairon\nclameur\nclaquer\nclasse\nclavier\nclient\ncligner\nclimat\nclivage\ncloche\nclonage\ncloporte\ncobalt\ncobra\ncocasse\ncocotier\ncoder\ncodifier\ncoffre\ncogner\ncohésion\ncoiffer\ncoincer\ncolère\ncolibri\ncolline\ncolmater\ncolonel\ncombat\ncomédie\ncommande\ncompact\nconcert\nconduire\nconfier\ncongeler\nconnoter\nconsonne\ncontact\nconvexe\ncopain\ncopie\ncorail\ncorbeau\ncordage\ncorniche\ncorpus\ncorrect\ncortège\ncosmique\ncostume\ncoton\ncoude\ncoupure\ncourage\ncouteau\ncouvrir\ncoyote\ncrabe\ncrainte\ncravate\ncrayon\ncréature\ncréditer\ncrémeux\ncreuser\ncrevette\ncribler\ncrier\ncristal\ncritère\ncroire\ncroquer\ncrotale\ncrucial\ncruel\ncrypter\ncubique\ncueillir\ncuillère\ncuisine\ncuivre\nculminer\ncultiver\ncumuler\ncupide\ncuratif\ncurseur\ncyanure\ncycle\ncylindre\ncynique\ndaigner\ndamier\ndanger\ndanseur\ndauphin\ndébattre\ndébiter\ndéborder\ndébrider\ndébutant\ndécaler\ndécembre\ndéchirer\ndécider\ndéclarer\ndécorer\ndécrire\ndécupler\ndédale\ndéductif\ndéesse\ndéfensif\ndéfiler\ndéfrayer\ndégager\ndégivrer\ndéglutir\ndégrafer\ndéjeuner\ndélice\ndéloger\ndemander\ndemeurer\ndémolir\ndénicher\ndénouer\ndentelle\ndénuder\ndépart\ndépenser\ndéphaser\ndéplacer\ndéposer\ndéranger\ndérober\ndésastre\ndescente\ndésert\ndésigner\ndésobéir\ndessiner\ndestrier\ndétacher\ndétester\ndétourer\ndétresse\ndevancer\ndevenir\ndeviner\ndevoir\ndiable\ndialogue\ndiamant\ndicter\ndifférer\ndigérer\ndigital\ndigne\ndiluer\ndimanche\ndiminuer\ndioxyde\ndirectif\ndiriger\ndiscuter\ndisposer\ndissiper\ndistance\ndivertir\ndiviser\ndocile\ndocteur\ndogme\ndoigt\ndomaine\ndomicile\ndompter\ndonateur\ndonjon\ndonner\ndopamine\ndortoir\ndorure\ndosage\ndoseur\ndossier\ndotation\ndouanier\ndouble\ndouceur\ndouter\ndoyen\ndragon\ndraper\ndresser\ndribbler\ndroiture\nduperie\nduplexe\ndurable\ndurcir\ndynastie\néblouir\nécarter\nécharpe\néchelle\néclairer\néclipse\néclore\nécluse\nécole\néconomie\nécorce\nécouter\nécraser\nécrémer\nécrivain\nécrou\nécume\nécureuil\nédifier\néduquer\neffacer\neffectif\neffigie\neffort\neffrayer\neffusion\négaliser\négarer\néjecter\nélaborer\nélargir\nélectron\nélégant\néléphant\nélève\néligible\nélitisme\néloge\nélucider\néluder\nemballer\nembellir\nembryon\némeraude\némission\nemmener\némotion\némouvoir\nempereur\nemployer\nemporter\nemprise\némulsion\nencadrer\nenchère\nenclave\nencoche\nendiguer\nendosser\nendroit\nenduire\nénergie\nenfance\nenfermer\nenfouir\nengager\nengin\nenglober\nénigme\nenjamber\nenjeu\nenlever\nennemi\nennuyeux\nenrichir\nenrobage\nenseigne\nentasser\nentendre\nentier\nentourer\nentraver\nénumérer\nenvahir\nenviable\nenvoyer\nenzyme\néolien\népaissir\népargne\népatant\népaule\népicerie\népidémie\népier\népilogue\népine\népisode\népitaphe\népoque\népreuve\néprouver\népuisant\néquerre\néquipe\nériger\nérosion\nerreur\néruption\nescalier\nespadon\nespèce\nespiègle\nespoir\nesprit\nesquiver\nessayer\nessence\nessieu\nessorer\nestime\nestomac\nestrade\nétagère\nétaler\nétanche\nétatique\néteindre\nétendoir\néternel\néthanol\néthique\nethnie\nétirer\nétoffer\nétoile\nétonnant\nétourdir\nétrange\nétroit\nétude\neuphorie\névaluer\névasion\néventail\névidence\néviter\névolutif\névoquer\nexact\nexagérer\nexaucer\nexceller\nexcitant\nexclusif\nexcuse\nexécuter\nexemple\nexercer\nexhaler\nexhorter\nexigence\nexiler\nexister\nexotique\nexpédier\nexplorer\nexposer\nexprimer\nexquis\nextensif\nextraire\nexulter\nfable\nfabuleux\nfacette\nfacile\nfacture\nfaiblir\nfalaise\nfameux\nfamille\nfarceur\nfarfelu\nfarine\nfarouche\nfasciner\nfatal\nfatigue\nfaucon\nfautif\nfaveur\nfavori\nfébrile\nféconder\nfédérer\nfélin\nfemme\nfémur\nfendoir\nféodal\nfermer\nféroce\nferveur\nfestival\nfeuille\nfeutre\nfévrier\nfiasco\nficeler\nfictif\nfidèle\nfigure\nfilature\nfiletage\nfilière\nfilleul\nfilmer\nfilou\nfiltrer\nfinancer\nfinir\nfiole\nfirme\nfissure\nfixer\nflairer\nflamme\nflasque\nflatteur\nfléau\nflèche\nfleur\nflexion\nflocon\nflore\nfluctuer\nfluide\nfluvial\nfolie\nfonderie\nfongible\nfontaine\nforcer\nforgeron\nformuler\nfortune\nfossile\nfoudre\nfougère\nfouiller\nfoulure\nfourmi\nfragile\nfraise\nfranchir\nfrapper\nfrayeur\nfrégate\nfreiner\nfrelon\nfrémir\nfrénésie\nfrère\nfriable\nfriction\nfrisson\nfrivole\nfroid\nfromage\nfrontal\nfrotter\nfruit\nfugitif\nfuite\nfureur\nfurieux\nfurtif\nfusion\nfutur\ngagner\ngalaxie\ngalerie\ngambader\ngarantir\ngardien\ngarnir\ngarrigue\ngazelle\ngazon\ngéant\ngélatine\ngélule\ngendarme\ngénéral\ngénie\ngenou\ngentil\ngéologie\ngéomètre\ngéranium\ngerme\ngestuel\ngeyser\ngibier\ngicler\ngirafe\ngivre\nglace\nglaive\nglisser\nglobe\ngloire\nglorieux\ngolfeur\ngomme\ngonfler\ngorge\ngorille\ngoudron\ngouffre\ngoulot\ngoupille\ngourmand\ngoutte\ngraduel\ngraffiti\ngraine\ngrand\ngrappin\ngratuit\ngravir\ngrenat\ngriffure\ngriller\ngrimper\ngrogner\ngronder\ngrotte\ngroupe\ngruger\ngrutier\ngruyère\nguépard\nguerrier\nguide\nguimauve\nguitare\ngustatif\ngymnaste\ngyrostat\nhabitude\nhachoir\nhalte\nhameau\nhangar\nhanneton\nharicot\nharmonie\nharpon\nhasard\nhélium\nhématome\nherbe\nhérisson\nhermine\nhéron\nhésiter\nheureux\nhiberner\nhibou\nhilarant\nhistoire\nhiver\nhomard\nhommage\nhomogène\nhonneur\nhonorer\nhonteux\nhorde\nhorizon\nhorloge\nhormone\nhorrible\nhouleux\nhousse\nhublot\nhuileux\nhumain\nhumble\nhumide\nhumour\nhurler\nhydromel\nhygiène\nhymne\nhypnose\nidylle\nignorer\niguane\nillicite\nillusion\nimage\nimbiber\nimiter\nimmense\nimmobile\nimmuable\nimpact\nimpérial\nimplorer\nimposer\nimprimer\nimputer\nincarner\nincendie\nincident\nincliner\nincolore\nindexer\nindice\ninductif\ninédit\nineptie\ninexact\ninfini\ninfliger\ninformer\ninfusion\ningérer\ninhaler\ninhiber\ninjecter\ninjure\ninnocent\ninoculer\ninonder\ninscrire\ninsecte\ninsigne\ninsolite\ninspirer\ninstinct\ninsulter\nintact\nintense\nintime\nintrigue\nintuitif\ninutile\ninvasion\ninventer\ninviter\ninvoquer\nironique\nirradier\nirréel\nirriter\nisoler\nivoire\nivresse\njaguar\njaillir\njambe\njanvier\njardin\njauger\njaune\njavelot\njetable\njeton\njeudi\njeunesse\njoindre\njoncher\njongler\njoueur\njouissif\njournal\njovial\njoyau\njoyeux\njubiler\njugement\njunior\njupon\njuriste\njustice\njuteux\njuvénile\nkayak\nkimono\nkiosque\nlabel\nlabial\nlabourer\nlacérer\nlactose\nlagune\nlaine\nlaisser\nlaitier\nlambeau\nlamelle\nlampe\nlanceur\nlangage\nlanterne\nlapin\nlargeur\nlarme\nlaurier\nlavabo\nlavoir\nlecture\nlégal\nléger\nlégume\nlessive\nlettre\nlevier\nlexique\nlézard\nliasse\nlibérer\nlibre\nlicence\nlicorne\nliège\nlièvre\nligature\nligoter\nligue\nlimer\nlimite\nlimonade\nlimpide\nlinéaire\nlingot\nlionceau\nliquide\nlisière\nlister\nlithium\nlitige\nlittoral\nlivreur\nlogique\nlointain\nloisir\nlombric\nloterie\nlouer\nlourd\nloutre\nlouve\nloyal\nlubie\nlucide\nlucratif\nlueur\nlugubre\nluisant\nlumière\nlunaire\nlundi\nluron\nlutter\nluxueux\nmachine\nmagasin\nmagenta\nmagique\nmaigre\nmaillon\nmaintien\nmairie\nmaison\nmajorer\nmalaxer\nmaléfice\nmalheur\nmalice\nmallette\nmammouth\nmandater\nmaniable\nmanquant\nmanteau\nmanuel\nmarathon\nmarbre\nmarchand\nmardi\nmaritime\nmarqueur\nmarron\nmarteler\nmascotte\nmassif\nmatériel\nmatière\nmatraque\nmaudire\nmaussade\nmauve\nmaximal\nméchant\nméconnu\nmédaille\nmédecin\nméditer\nméduse\nmeilleur\nmélange\nmélodie\nmembre\nmémoire\nmenacer\nmener\nmenhir\nmensonge\nmentor\nmercredi\nmérite\nmerle\nmessager\nmesure\nmétal\nmétéore\nméthode\nmétier\nmeuble\nmiauler\nmicrobe\nmiette\nmignon\nmigrer\nmilieu\nmillion\nmimique\nmince\nminéral\nminimal\nminorer\nminute\nmiracle\nmiroiter\nmissile\nmixte\nmobile\nmoderne\nmoelleux\nmondial\nmoniteur\nmonnaie\nmonotone\nmonstre\nmontagne\nmonument\nmoqueur\nmorceau\nmorsure\nmortier\nmoteur\nmotif\nmouche\nmoufle\nmoulin\nmousson\nmouton\nmouvant\nmultiple\nmunition\nmuraille\nmurène\nmurmure\nmuscle\nmuséum\nmusicien\nmutation\nmuter\nmutuel\nmyriade\nmyrtille\nmystère\nmythique\nnageur\nnappe\nnarquois\nnarrer\nnatation\nnation\nnature\nnaufrage\nnautique\nnavire\nnébuleux\nnectar\nnéfaste\nnégation\nnégliger\nnégocier\nneige\nnerveux\nnettoyer\nneurone\nneutron\nneveu\nniche\nnickel\nnitrate\nniveau\nnoble\nnocif\nnocturne\nnoirceur\nnoisette\nnomade\nnombreux\nnommer\nnormatif\nnotable\nnotifier\nnotoire\nnourrir\nnouveau\nnovateur\nnovembre\nnovice\nnuage\nnuancer\nnuire\nnuisible\nnuméro\nnuptial\nnuque\nnutritif\nobéir\nobjectif\nobliger\nobscur\nobserver\nobstacle\nobtenir\nobturer\noccasion\noccuper\nocéan\noctobre\noctroyer\noctupler\noculaire\nodeur\nodorant\noffenser\nofficier\noffrir\nogive\noiseau\noisillon\nolfactif\nolivier\nombrage\nomettre\nonctueux\nonduler\nonéreux\nonirique\nopale\nopaque\nopérer\nopinion\nopportun\nopprimer\nopter\noptique\norageux\norange\norbite\nordonner\noreille\norgane\norgueil\norifice\nornement\norque\nortie\nosciller\nosmose\nossature\notarie\nouragan\nourson\noutil\noutrager\nouvrage\novation\noxyde\noxygène\nozone\npaisible\npalace\npalmarès\npalourde\npalper\npanache\npanda\npangolin\npaniquer\npanneau\npanorama\npantalon\npapaye\npapier\npapoter\npapyrus\nparadoxe\nparcelle\nparesse\nparfumer\nparler\nparole\nparrain\nparsemer\npartager\nparure\nparvenir\npassion\npastèque\npaternel\npatience\npatron\npavillon\npavoiser\npayer\npaysage\npeigne\npeintre\npelage\npélican\npelle\npelouse\npeluche\npendule\npénétrer\npénible\npensif\npénurie\npépite\npéplum\nperdrix\nperforer\npériode\npermuter\nperplexe\npersil\nperte\npeser\npétale\npetit\npétrir\npeuple\npharaon\nphobie\nphoque\nphoton\nphrase\nphysique\npiano\npictural\npièce\npierre\npieuvre\npilote\npinceau\npipette\npiquer\npirogue\npiscine\npiston\npivoter\npixel\npizza\nplacard\nplafond\nplaisir\nplaner\nplaque\nplastron\nplateau\npleurer\nplexus\npliage\nplomb\nplonger\npluie\nplumage\npochette\npoésie\npoète\npointe\npoirier\npoisson\npoivre\npolaire\npolicier\npollen\npolygone\npommade\npompier\nponctuel\npondérer\nponey\nportique\nposition\nposséder\nposture\npotager\npoteau\npotion\npouce\npoulain\npoumon\npourpre\npoussin\npouvoir\nprairie\npratique\nprécieux\nprédire\npréfixe\nprélude\nprénom\nprésence\nprétexte\nprévoir\nprimitif\nprince\nprison\npriver\nproblème\nprocéder\nprodige\nprofond\nprogrès\nproie\nprojeter\nprologue\npromener\npropre\nprospère\nprotéger\nprouesse\nproverbe\nprudence\npruneau\npsychose\npublic\npuceron\npuiser\npulpe\npulsar\npunaise\npunitif\npupitre\npurifier\npuzzle\npyramide\nquasar\nquerelle\nquestion\nquiétude\nquitter\nquotient\nracine\nraconter\nradieux\nragondin\nraideur\nraisin\nralentir\nrallonge\nramasser\nrapide\nrasage\nratisser\nravager\nravin\nrayonner\nréactif\nréagir\nréaliser\nréanimer\nrecevoir\nréciter\nréclamer\nrécolter\nrecruter\nreculer\nrecycler\nrédiger\nredouter\nrefaire\nréflexe\nréformer\nrefrain\nrefuge\nrégalien\nrégion\nréglage\nrégulier\nréitérer\nrejeter\nrejouer\nrelatif\nrelever\nrelief\nremarque\nremède\nremise\nremonter\nremplir\nremuer\nrenard\nrenfort\nrenifler\nrenoncer\nrentrer\nrenvoi\nreplier\nreporter\nreprise\nreptile\nrequin\nréserve\nrésineux\nrésoudre\nrespect\nrester\nrésultat\nrétablir\nretenir\nréticule\nretomber\nretracer\nréunion\nréussir\nrevanche\nrevivre\nrévolte\nrévulsif\nrichesse\nrideau\nrieur\nrigide\nrigoler\nrincer\nriposter\nrisible\nrisque\nrituel\nrival\nrivière\nrocheux\nromance\nrompre\nronce\nrondin\nroseau\nrosier\nrotatif\nrotor\nrotule\nrouge\nrouille\nrouleau\nroutine\nroyaume\nruban\nrubis\nruche\nruelle\nrugueux\nruiner\nruisseau\nruser\nrustique\nrythme\nsabler\nsaboter\nsabre\nsacoche\nsafari\nsagesse\nsaisir\nsalade\nsalive\nsalon\nsaluer\nsamedi\nsanction\nsanglier\nsarcasme\nsardine\nsaturer\nsaugrenu\nsaumon\nsauter\nsauvage\nsavant\nsavonner\nscalpel\nscandale\nscélérat\nscénario\nsceptre\nschéma\nscience\nscinder\nscore\nscrutin\nsculpter\nséance\nsécable\nsécher\nsecouer\nsécréter\nsédatif\nséduire\nseigneur\nséjour\nsélectif\nsemaine\nsembler\nsemence\nséminal\nsénateur\nsensible\nsentence\nséparer\nséquence\nserein\nsergent\nsérieux\nserrure\nsérum\nservice\nsésame\nsévir\nsevrage\nsextuple\nsidéral\nsiècle\nsiéger\nsiffler\nsigle\nsignal\nsilence\nsilicium\nsimple\nsincère\nsinistre\nsiphon\nsirop\nsismique\nsituer\nskier\nsocial\nsocle\nsodium\nsoigneux\nsoldat\nsoleil\nsolitude\nsoluble\nsombre\nsommeil\nsomnoler\nsonde\nsongeur\nsonnette\nsonore\nsorcier\nsortir\nsosie\nsottise\nsoucieux\nsoudure\nsouffle\nsoulever\nsoupape\nsource\nsoutirer\nsouvenir\nspacieux\nspatial\nspécial\nsphère\nspiral\nstable\nstation\nsternum\nstimulus\nstipuler\nstrict\nstudieux\nstupeur\nstyliste\nsublime\nsubstrat\nsubtil\nsubvenir\nsuccès\nsucre\nsuffixe\nsuggérer\nsuiveur\nsulfate\nsuperbe\nsupplier\nsurface\nsuricate\nsurmener\nsurprise\nsursaut\nsurvie\nsuspect\nsyllabe\nsymbole\nsymétrie\nsynapse\nsyntaxe\nsystème\ntabac\ntablier\ntactile\ntailler\ntalent\ntalisman\ntalonner\ntambour\ntamiser\ntangible\ntapis\ntaquiner\ntarder\ntarif\ntartine\ntasse\ntatami\ntatouage\ntaupe\ntaureau\ntaxer\ntémoin\ntemporel\ntenaille\ntendre\nteneur\ntenir\ntension\nterminer\nterne\nterrible\ntétine\ntexte\nthème\nthéorie\nthérapie\nthorax\ntibia\ntiède\ntimide\ntirelire\ntiroir\ntissu\ntitane\ntitre\ntituber\ntoboggan\ntolérant\ntomate\ntonique\ntonneau\ntoponyme\ntorche\ntordre\ntornade\ntorpille\ntorrent\ntorse\ntortue\ntotem\ntoucher\ntournage\ntousser\ntoxine\ntraction\ntrafic\ntragique\ntrahir\ntrain\ntrancher\ntravail\ntrèfle\ntremper\ntrésor\ntreuil\ntriage\ntribunal\ntricoter\ntrilogie\ntriomphe\ntripler\ntriturer\ntrivial\ntrombone\ntronc\ntropical\ntroupeau\ntuile\ntulipe\ntumulte\ntunnel\nturbine\ntuteur\ntutoyer\ntuyau\ntympan\ntyphon\ntypique\ntyran\nubuesque\nultime\nultrason\nunanime\nunifier\nunion\nunique\nunitaire\nunivers\nuranium\nurbain\nurticant\nusage\nusine\nusuel\nusure\nutile\nutopie\nvacarme\nvaccin\nvagabond\nvague\nvaillant\nvaincre\nvaisseau\nvalable\nvalise\nvallon\nvalve\nvampire\nvanille\nvapeur\nvarier\nvaseux\nvassal\nvaste\nvecteur\nvedette\nvégétal\nvéhicule\nveinard\nvéloce\nvendredi\nvénérer\nvenger\nvenimeux\nventouse\nverdure\nvérin\nvernir\nverrou\nverser\nvertu\nveston\nvétéran\nvétuste\nvexant\nvexer\nviaduc\nviande\nvictoire\nvidange\nvidéo\nvignette\nvigueur\nvilain\nvillage\nvinaigre\nviolon\nvipère\nvirement\nvirtuose\nvirus\nvisage\nviseur\nvision\nvisqueux\nvisuel\nvital\nvitesse\nviticole\nvitrine\nvivace\nvivipare\nvocation\nvoguer\nvoile\nvoisin\nvoiture\nvolaille\nvolcan\nvoltiger\nvolume\nvorace\nvortex\nvoter\nvouloir\nvoyage\nvoyelle\nwagon\nxénon\nyacht\nzèbre\nzénith\nzeste\nzoologie".split("\n"),Co="abaco\nabbaglio\nabbinato\nabete\nabisso\nabolire\nabrasivo\nabrogato\naccadere\naccenno\naccusato\nacetone\nachille\nacido\nacqua\nacre\nacrilico\nacrobata\nacuto\nadagio\naddebito\naddome\nadeguato\naderire\nadipe\nadottare\nadulare\naffabile\naffetto\naffisso\naffranto\naforisma\nafoso\nafricano\nagave\nagente\nagevole\naggancio\nagire\nagitare\nagonismo\nagricolo\nagrumeto\naguzzo\nalabarda\nalato\nalbatro\nalberato\nalbo\nalbume\nalce\nalcolico\nalettone\nalfa\nalgebra\naliante\nalibi\nalimento\nallagato\nallegro\nallievo\nallodola\nallusivo\nalmeno\nalogeno\nalpaca\nalpestre\naltalena\nalterno\nalticcio\naltrove\nalunno\nalveolo\nalzare\namalgama\namanita\namarena\nambito\nambrato\nameba\namerica\nametista\namico\nammasso\nammenda\nammirare\nammonito\namore\nampio\nampliare\namuleto\nanacardo\nanagrafe\nanalista\nanarchia\nanatra\nanca\nancella\nancora\nandare\nandrea\nanello\nangelo\nangolare\nangusto\nanima\nannegare\nannidato\nanno\nannuncio\nanonimo\nanticipo\nanzi\napatico\napertura\napode\napparire\nappetito\nappoggio\napprodo\nappunto\naprile\narabica\narachide\naragosta\naraldica\narancio\naratura\narazzo\narbitro\narchivio\nardito\narenile\nargento\nargine\narguto\naria\narmonia\narnese\narredato\narringa\narrosto\narsenico\narso\nartefice\narzillo\nasciutto\nascolto\nasepsi\nasettico\nasfalto\nasino\nasola\naspirato\naspro\nassaggio\nasse\nassoluto\nassurdo\nasta\nastenuto\nastice\nastratto\natavico\nateismo\natomico\natono\nattesa\nattivare\nattorno\nattrito\nattuale\nausilio\naustria\nautista\nautonomo\nautunno\navanzato\navere\navvenire\navviso\navvolgere\nazione\nazoto\nazzimo\nazzurro\nbabele\nbaccano\nbacino\nbaco\nbadessa\nbadilata\nbagnato\nbaita\nbalcone\nbaldo\nbalena\nballata\nbalzano\nbambino\nbandire\nbaraonda\nbarbaro\nbarca\nbaritono\nbarlume\nbarocco\nbasilico\nbasso\nbatosta\nbattuto\nbaule\nbava\nbavosa\nbecco\nbeffa\nbelgio\nbelva\nbenda\nbenevole\nbenigno\nbenzina\nbere\nberlina\nbeta\nbibita\nbici\nbidone\nbifido\nbiga\nbilancia\nbimbo\nbinocolo\nbiologo\nbipede\nbipolare\nbirbante\nbirra\nbiscotto\nbisesto\nbisnonno\nbisonte\nbisturi\nbizzarro\nblando\nblatta\nbollito\nbonifico\nbordo\nbosco\nbotanico\nbottino\nbozzolo\nbraccio\nbradipo\nbrama\nbranca\nbravura\nbretella\nbrevetto\nbrezza\nbriglia\nbrillante\nbrindare\nbroccolo\nbrodo\nbronzina\nbrullo\nbruno\nbubbone\nbuca\nbudino\nbuffone\nbuio\nbulbo\nbuono\nburlone\nburrasca\nbussola\nbusta\ncadetto\ncaduco\ncalamaro\ncalcolo\ncalesse\ncalibro\ncalmo\ncaloria\ncambusa\ncamerata\ncamicia\ncammino\ncamola\ncampale\ncanapa\ncandela\ncane\ncanino\ncanotto\ncantina\ncapace\ncapello\ncapitolo\ncapogiro\ncappero\ncapra\ncapsula\ncarapace\ncarcassa\ncardo\ncarisma\ncarovana\ncarretto\ncartolina\ncasaccio\ncascata\ncaserma\ncaso\ncassone\ncastello\ncasuale\ncatasta\ncatena\ncatrame\ncauto\ncavillo\ncedibile\ncedrata\ncefalo\ncelebre\ncellulare\ncena\ncenone\ncentesimo\nceramica\ncercare\ncerto\ncerume\ncervello\ncesoia\ncespo\nceto\nchela\nchiaro\nchicca\nchiedere\nchimera\nchina\nchirurgo\nchitarra\nciao\nciclismo\ncifrare\ncigno\ncilindro\nciottolo\ncirca\ncirrosi\ncitrico\ncittadino\nciuffo\ncivetta\ncivile\nclassico\nclinica\ncloro\ncocco\ncodardo\ncodice\ncoerente\ncognome\ncollare\ncolmato\ncolore\ncolposo\ncoltivato\ncolza\ncoma\ncometa\ncommando\ncomodo\ncomputer\ncomune\nconciso\ncondurre\nconferma\ncongelare\nconiuge\nconnesso\nconoscere\nconsumo\ncontinuo\nconvegno\ncoperto\ncopione\ncoppia\ncopricapo\ncorazza\ncordata\ncoricato\ncornice\ncorolla\ncorpo\ncorredo\ncorsia\ncortese\ncosmico\ncostante\ncottura\ncovato\ncratere\ncravatta\ncreato\ncredere\ncremoso\ncrescita\ncreta\ncriceto\ncrinale\ncrisi\ncritico\ncroce\ncronaca\ncrostata\ncruciale\ncrusca\ncucire\ncuculo\ncugino\ncullato\ncupola\ncuratore\ncursore\ncurvo\ncuscino\ncustode\ndado\ndaino\ndalmata\ndamerino\ndaniela\ndannoso\ndanzare\ndatato\ndavanti\ndavvero\ndebutto\ndecennio\ndeciso\ndeclino\ndecollo\ndecreto\ndedicato\ndefinito\ndeforme\ndegno\ndelegare\ndelfino\ndelirio\ndelta\ndemenza\ndenotato\ndentro\ndeposito\nderapata\nderivare\nderoga\ndescritto\ndeserto\ndesiderio\ndesumere\ndetersivo\ndevoto\ndiametro\ndicembre\ndiedro\ndifeso\ndiffuso\ndigerire\ndigitale\ndiluvio\ndinamico\ndinnanzi\ndipinto\ndiploma\ndipolo\ndiradare\ndire\ndirotto\ndirupo\ndisagio\ndiscreto\ndisfare\ndisgelo\ndisposto\ndistanza\ndisumano\ndito\ndivano\ndivelto\ndividere\ndivorato\ndoblone\ndocente\ndoganale\ndogma\ndolce\ndomato\ndomenica\ndominare\ndondolo\ndono\ndormire\ndote\ndottore\ndovuto\ndozzina\ndrago\ndruido\ndubbio\ndubitare\nducale\nduna\nduomo\nduplice\nduraturo\nebano\neccesso\necco\neclissi\neconomia\nedera\nedicola\nedile\neditoria\neducare\negemonia\negli\negoismo\negregio\nelaborato\nelargire\nelegante\nelencato\neletto\nelevare\nelfico\nelica\nelmo\nelsa\neluso\nemanato\nemblema\nemesso\nemiro\nemotivo\nemozione\nempirico\nemulo\nendemico\nenduro\nenergia\nenfasi\nenoteca\nentrare\nenzima\nepatite\nepilogo\nepisodio\nepocale\neppure\nequatore\nerario\nerba\nerboso\nerede\neremita\nerigere\nermetico\neroe\nerosivo\nerrante\nesagono\nesame\nesanime\nesaudire\nesca\nesempio\nesercito\nesibito\nesigente\nesistere\nesito\nesofago\nesortato\nesoso\nespanso\nespresso\nessenza\nesso\nesteso\nestimare\nestonia\nestroso\nesultare\netilico\netnico\netrusco\netto\neuclideo\neuropa\nevaso\nevidenza\nevitato\nevoluto\nevviva\nfabbrica\nfaccenda\nfachiro\nfalco\nfamiglia\nfanale\nfanfara\nfango\nfantasma\nfare\nfarfalla\nfarinoso\nfarmaco\nfascia\nfastoso\nfasullo\nfaticare\nfato\nfavoloso\nfebbre\nfecola\nfede\nfegato\nfelpa\nfeltro\nfemmina\nfendere\nfenomeno\nfermento\nferro\nfertile\nfessura\nfestivo\nfetta\nfeudo\nfiaba\nfiducia\nfifa\nfigurato\nfilo\nfinanza\nfinestra\nfinire\nfiore\nfiscale\nfisico\nfiume\nflacone\nflamenco\nflebo\nflemma\nflorido\nfluente\nfluoro\nfobico\nfocaccia\nfocoso\nfoderato\nfoglio\nfolata\nfolclore\nfolgore\nfondente\nfonetico\nfonia\nfontana\nforbito\nforchetta\nforesta\nformica\nfornaio\nforo\nfortezza\nforzare\nfosfato\nfosso\nfracasso\nfrana\nfrassino\nfratello\nfreccetta\nfrenata\nfresco\nfrigo\nfrollino\nfronde\nfrugale\nfrutta\nfucilata\nfucsia\nfuggente\nfulmine\nfulvo\nfumante\nfumetto\nfumoso\nfune\nfunzione\nfuoco\nfurbo\nfurgone\nfurore\nfuso\nfutile\ngabbiano\ngaffe\ngalateo\ngallina\ngaloppo\ngambero\ngamma\ngaranzia\ngarbo\ngarofano\ngarzone\ngasdotto\ngasolio\ngastrico\ngatto\ngaudio\ngazebo\ngazzella\ngeco\ngelatina\ngelso\ngemello\ngemmato\ngene\ngenitore\ngennaio\ngenotipo\ngergo\nghepardo\nghiaccio\nghisa\ngiallo\ngilda\nginepro\ngiocare\ngioiello\ngiorno\ngiove\ngirato\ngirone\ngittata\ngiudizio\ngiurato\ngiusto\nglobulo\nglutine\ngnomo\ngobba\ngolf\ngomito\ngommone\ngonfio\ngonna\ngoverno\ngracile\ngrado\ngrafico\ngrammo\ngrande\ngrattare\ngravoso\ngrazia\ngreca\ngregge\ngrifone\ngrigio\ngrinza\ngrotta\ngruppo\nguadagno\nguaio\nguanto\nguardare\ngufo\nguidare\nibernato\nicona\nidentico\nidillio\nidolo\nidra\nidrico\nidrogeno\nigiene\nignaro\nignorato\nilare\nilleso\nillogico\nilludere\nimballo\nimbevuto\nimbocco\nimbuto\nimmane\nimmerso\nimmolato\nimpacco\nimpeto\nimpiego\nimporto\nimpronta\ninalare\ninarcare\ninattivo\nincanto\nincendio\ninchino\nincisivo\nincluso\nincontro\nincrocio\nincubo\nindagine\nindia\nindole\ninedito\ninfatti\ninfilare\ninflitto\ningaggio\ningegno\ninglese\ningordo\ningrosso\ninnesco\ninodore\ninoltrare\ninondato\ninsano\ninsetto\ninsieme\ninsonnia\ninsulina\nintasato\nintero\nintonaco\nintuito\ninumidire\ninvalido\ninvece\ninvito\niperbole\nipnotico\nipotesi\nippica\niride\nirlanda\nironico\nirrigato\nirrorare\nisolato\nisotopo\nisterico\nistituto\nistrice\nitalia\niterare\nlabbro\nlabirinto\nlacca\nlacerato\nlacrima\nlacuna\nladdove\nlago\nlampo\nlancetta\nlanterna\nlardoso\nlarga\nlaringe\nlastra\nlatenza\nlatino\nlattuga\nlavagna\nlavoro\nlegale\nleggero\nlembo\nlentezza\nlenza\nleone\nlepre\nlesivo\nlessato\nlesto\nletterale\nleva\nlevigato\nlibero\nlido\nlievito\nlilla\nlimatura\nlimitare\nlimpido\nlineare\nlingua\nliquido\nlira\nlirica\nlisca\nlite\nlitigio\nlivrea\nlocanda\nlode\nlogica\nlombare\nlondra\nlongevo\nloquace\nlorenzo\nloto\nlotteria\nluce\nlucidato\nlumaca\nluminoso\nlungo\nlupo\nluppolo\nlusinga\nlusso\nlutto\nmacabro\nmacchina\nmacero\nmacinato\nmadama\nmagico\nmaglia\nmagnete\nmagro\nmaiolica\nmalafede\nmalgrado\nmalinteso\nmalsano\nmalto\nmalumore\nmana\nmancia\nmandorla\nmangiare\nmanifesto\nmannaro\nmanovra\nmansarda\nmantide\nmanubrio\nmappa\nmaratona\nmarcire\nmaretta\nmarmo\nmarsupio\nmaschera\nmassaia\nmastino\nmaterasso\nmatricola\nmattone\nmaturo\nmazurca\nmeandro\nmeccanico\nmecenate\nmedesimo\nmeditare\nmega\nmelassa\nmelis\nmelodia\nmeninge\nmeno\nmensola\nmercurio\nmerenda\nmerlo\nmeschino\nmese\nmessere\nmestolo\nmetallo\nmetodo\nmettere\nmiagolare\nmica\nmicelio\nmichele\nmicrobo\nmidollo\nmiele\nmigliore\nmilano\nmilite\nmimosa\nminerale\nmini\nminore\nmirino\nmirtillo\nmiscela\nmissiva\nmisto\nmisurare\nmitezza\nmitigare\nmitra\nmittente\nmnemonico\nmodello\nmodifica\nmodulo\nmogano\nmogio\nmole\nmolosso\nmonastero\nmonco\nmondina\nmonetario\nmonile\nmonotono\nmonsone\nmontato\nmonviso\nmora\nmordere\nmorsicato\nmostro\nmotivato\nmotosega\nmotto\nmovenza\nmovimento\nmozzo\nmucca\nmucosa\nmuffa\nmughetto\nmugnaio\nmulatto\nmulinello\nmultiplo\nmummia\nmunto\nmuovere\nmurale\nmusa\nmuscolo\nmusica\nmutevole\nmuto\nnababbo\nnafta\nnanometro\nnarciso\nnarice\nnarrato\nnascere\nnastrare\nnaturale\nnautica\nnaviglio\nnebulosa\nnecrosi\nnegativo\nnegozio\nnemmeno\nneofita\nneretto\nnervo\nnessuno\nnettuno\nneutrale\nneve\nnevrotico\nnicchia\nninfa\nnitido\nnobile\nnocivo\nnodo\nnome\nnomina\nnordico\nnormale\nnorvegese\nnostrano\nnotare\nnotizia\nnotturno\nnovella\nnucleo\nnulla\nnumero\nnuovo\nnutrire\nnuvola\nnuziale\noasi\nobbedire\nobbligo\nobelisco\noblio\nobolo\nobsoleto\noccasione\nocchio\noccidente\noccorrere\noccultare\nocra\noculato\nodierno\nodorare\nofferta\noffrire\noffuscato\noggetto\noggi\nognuno\nolandese\nolfatto\noliato\noliva\nologramma\noltre\nomaggio\nombelico\nombra\nomega\nomissione\nondoso\nonere\nonice\nonnivoro\nonorevole\nonta\noperato\nopinione\nopposto\noracolo\norafo\nordine\norecchino\norefice\norfano\norganico\norigine\norizzonte\norma\normeggio\nornativo\norologio\norrendo\norribile\nortensia\nortica\norzata\norzo\nosare\noscurare\nosmosi\nospedale\nospite\nossa\nossidare\nostacolo\noste\notite\notre\nottagono\nottimo\nottobre\novale\novest\novino\noviparo\novocito\novunque\novviare\nozio\npacchetto\npace\npacifico\npadella\npadrone\npaese\npaga\npagina\npalazzina\npalesare\npallido\npalo\npalude\npandoro\npannello\npaolo\npaonazzo\npaprica\nparabola\nparcella\nparere\npargolo\npari\nparlato\nparola\npartire\nparvenza\nparziale\npassivo\npasticca\npatacca\npatologia\npattume\npavone\npeccato\npedalare\npedonale\npeggio\npeloso\npenare\npendice\npenisola\npennuto\npenombra\npensare\npentola\npepe\npepita\nperbene\npercorso\nperdonato\nperforare\npergamena\nperiodo\npermesso\nperno\nperplesso\npersuaso\npertugio\npervaso\npesatore\npesista\npeso\npestifero\npetalo\npettine\npetulante\npezzo\npiacere\npianta\npiattino\npiccino\npicozza\npiega\npietra\npiffero\npigiama\npigolio\npigro\npila\npilifero\npillola\npilota\npimpante\npineta\npinna\npinolo\npioggia\npiombo\npiramide\npiretico\npirite\npirolisi\npitone\npizzico\nplacebo\nplanare\nplasma\nplatano\nplenario\npochezza\npoderoso\npodismo\npoesia\npoggiare\npolenta\npoligono\npollice\npolmonite\npolpetta\npolso\npoltrona\npolvere\npomice\npomodoro\nponte\npopoloso\nporfido\nporoso\nporpora\nporre\nportata\nposa\npositivo\npossesso\npostulato\npotassio\npotere\npranzo\nprassi\npratica\nprecluso\npredica\nprefisso\npregiato\nprelievo\npremere\nprenotare\npreparato\npresenza\npretesto\nprevalso\nprima\nprincipe\nprivato\nproblema\nprocura\nprodurre\nprofumo\nprogetto\nprolunga\npromessa\npronome\nproposta\nproroga\nproteso\nprova\nprudente\nprugna\nprurito\npsiche\npubblico\npudica\npugilato\npugno\npulce\npulito\npulsante\npuntare\npupazzo\npupilla\npuro\nquadro\nqualcosa\nquasi\nquerela\nquota\nraccolto\nraddoppio\nradicale\nradunato\nraffica\nragazzo\nragione\nragno\nramarro\nramingo\nramo\nrandagio\nrantolare\nrapato\nrapina\nrappreso\nrasatura\nraschiato\nrasente\nrassegna\nrastrello\nrata\nravveduto\nreale\nrecepire\nrecinto\nrecluta\nrecondito\nrecupero\nreddito\nredimere\nregalato\nregistro\nregola\nregresso\nrelazione\nremare\nremoto\nrenna\nreplica\nreprimere\nreputare\nresa\nresidente\nresponso\nrestauro\nrete\nretina\nretorica\nrettifica\nrevocato\nriassunto\nribadire\nribelle\nribrezzo\nricarica\nricco\nricevere\nriciclato\nricordo\nricreduto\nridicolo\nridurre\nrifasare\nriflesso\nriforma\nrifugio\nrigare\nrigettato\nrighello\nrilassato\nrilevato\nrimanere\nrimbalzo\nrimedio\nrimorchio\nrinascita\nrincaro\nrinforzo\nrinnovo\nrinomato\nrinsavito\nrintocco\nrinuncia\nrinvenire\nriparato\nripetuto\nripieno\nriportare\nripresa\nripulire\nrisata\nrischio\nriserva\nrisibile\nriso\nrispetto\nristoro\nrisultato\nrisvolto\nritardo\nritegno\nritmico\nritrovo\nriunione\nriva\nriverso\nrivincita\nrivolto\nrizoma\nroba\nrobotico\nrobusto\nroccia\nroco\nrodaggio\nrodere\nroditore\nrogito\nrollio\nromantico\nrompere\nronzio\nrosolare\nrospo\nrotante\nrotondo\nrotula\nrovescio\nrubizzo\nrubrica\nruga\nrullino\nrumine\nrumoroso\nruolo\nrupe\nrussare\nrustico\nsabato\nsabbiare\nsabotato\nsagoma\nsalasso\nsaldatura\nsalgemma\nsalivare\nsalmone\nsalone\nsaltare\nsaluto\nsalvo\nsapere\nsapido\nsaporito\nsaraceno\nsarcasmo\nsarto\nsassoso\nsatellite\nsatira\nsatollo\nsaturno\nsavana\nsavio\nsaziato\nsbadiglio\nsbalzo\nsbancato\nsbarra\nsbattere\nsbavare\nsbendare\nsbirciare\nsbloccato\nsbocciato\nsbrinare\nsbruffone\nsbuffare\nscabroso\nscadenza\nscala\nscambiare\nscandalo\nscapola\nscarso\nscatenare\nscavato\nscelto\nscenico\nscettro\nscheda\nschiena\nsciarpa\nscienza\nscindere\nscippo\nsciroppo\nscivolo\nsclerare\nscodella\nscolpito\nscomparto\nsconforto\nscoprire\nscorta\nscossone\nscozzese\nscriba\nscrollare\nscrutinio\nscuderia\nscultore\nscuola\nscuro\nscusare\nsdebitare\nsdoganare\nseccatura\nsecondo\nsedano\nseggiola\nsegnalato\nsegregato\nseguito\nselciato\nselettivo\nsella\nselvaggio\nsemaforo\nsembrare\nseme\nseminato\nsempre\nsenso\nsentire\nsepolto\nsequenza\nserata\nserbato\nsereno\nserio\nserpente\nserraglio\nservire\nsestina\nsetola\nsettimana\nsfacelo\nsfaldare\nsfamato\nsfarzoso\nsfaticato\nsfera\nsfida\nsfilato\nsfinge\nsfocato\nsfoderare\nsfogo\nsfoltire\nsforzato\nsfratto\nsfruttato\nsfuggito\nsfumare\nsfuso\nsgabello\nsgarbato\nsgonfiare\nsgorbio\nsgrassato\nsguardo\nsibilo\nsiccome\nsierra\nsigla\nsignore\nsilenzio\nsillaba\nsimbolo\nsimpatico\nsimulato\nsinfonia\nsingolo\nsinistro\nsino\nsintesi\nsinusoide\nsipario\nsisma\nsistole\nsituato\nslitta\nslogatura\nsloveno\nsmarrito\nsmemorato\nsmentito\nsmeraldo\nsmilzo\nsmontare\nsmottato\nsmussato\nsnellire\nsnervato\nsnodo\nsobbalzo\nsobrio\nsoccorso\nsociale\nsodale\nsoffitto\nsogno\nsoldato\nsolenne\nsolido\nsollazzo\nsolo\nsolubile\nsolvente\nsomatico\nsomma\nsonda\nsonetto\nsonnifero\nsopire\nsoppeso\nsopra\nsorgere\nsorpasso\nsorriso\nsorso\nsorteggio\nsorvolato\nsospiro\nsosta\nsottile\nspada\nspalla\nspargere\nspatola\nspavento\nspazzola\nspecie\nspedire\nspegnere\nspelatura\nsperanza\nspessore\nspettrale\nspezzato\nspia\nspigoloso\nspillato\nspinoso\nspirale\nsplendido\nsportivo\nsposo\nspranga\nsprecare\nspronato\nspruzzo\nspuntino\nsquillo\nsradicare\nsrotolato\nstabile\nstacco\nstaffa\nstagnare\nstampato\nstantio\nstarnuto\nstasera\nstatuto\nstelo\nsteppa\nsterzo\nstiletto\nstima\nstirpe\nstivale\nstizzoso\nstonato\nstorico\nstrappo\nstregato\nstridulo\nstrozzare\nstrutto\nstuccare\nstufo\nstupendo\nsubentro\nsuccoso\nsudore\nsuggerito\nsugo\nsultano\nsuonare\nsuperbo\nsupporto\nsurgelato\nsurrogato\nsussurro\nsutura\nsvagare\nsvedese\nsveglio\nsvelare\nsvenuto\nsvezia\nsviluppo\nsvista\nsvizzera\nsvolta\nsvuotare\ntabacco\ntabulato\ntacciare\ntaciturno\ntale\ntalismano\ntampone\ntannino\ntara\ntardivo\ntargato\ntariffa\ntarpare\ntartaruga\ntasto\ntattico\ntaverna\ntavolata\ntazza\nteca\ntecnico\ntelefono\ntemerario\ntempo\ntemuto\ntendone\ntenero\ntensione\ntentacolo\nteorema\nterme\nterrazzo\nterzetto\ntesi\ntesserato\ntestato\ntetro\ntettoia\ntifare\ntigella\ntimbro\ntinto\ntipico\ntipografo\ntiraggio\ntiro\ntitanio\ntitolo\ntitubante\ntizio\ntizzone\ntoccare\ntollerare\ntolto\ntombola\ntomo\ntonfo\ntonsilla\ntopazio\ntopologia\ntoppa\ntorba\ntornare\ntorrone\ntortora\ntoscano\ntossire\ntostatura\ntotano\ntrabocco\ntrachea\ntrafila\ntragedia\ntralcio\ntramonto\ntransito\ntrapano\ntrarre\ntrasloco\ntrattato\ntrave\ntreccia\ntremolio\ntrespolo\ntributo\ntricheco\ntrifoglio\ntrillo\ntrincea\ntrio\ntristezza\ntriturato\ntrivella\ntromba\ntrono\ntroppo\ntrottola\ntrovare\ntruccato\ntubatura\ntuffato\ntulipano\ntumulto\ntunisia\nturbare\nturchino\ntuta\ntutela\nubicato\nuccello\nuccisore\nudire\nuditivo\nuffa\nufficio\nuguale\nulisse\nultimato\numano\numile\numorismo\nuncinetto\nungere\nungherese\nunicorno\nunificato\nunisono\nunitario\nunte\nuovo\nupupa\nuragano\nurgenza\nurlo\nusanza\nusato\nuscito\nusignolo\nusuraio\nutensile\nutilizzo\nutopia\nvacante\nvaccinato\nvagabondo\nvagliato\nvalanga\nvalgo\nvalico\nvalletta\nvaloroso\nvalutare\nvalvola\nvampata\nvangare\nvanitoso\nvano\nvantaggio\nvanvera\nvapore\nvarano\nvarcato\nvariante\nvasca\nvedetta\nvedova\nveduto\nvegetale\nveicolo\nvelcro\nvelina\nvelluto\nveloce\nvenato\nvendemmia\nvento\nverace\nverbale\nvergogna\nverifica\nvero\nverruca\nverticale\nvescica\nvessillo\nvestale\nveterano\nvetrina\nvetusto\nviandante\nvibrante\nvicenda\nvichingo\nvicinanza\nvidimare\nvigilia\nvigneto\nvigore\nvile\nvillano\nvimini\nvincitore\nviola\nvipera\nvirgola\nvirologo\nvirulento\nviscoso\nvisione\nvispo\nvissuto\nvisura\nvita\nvitello\nvittima\nvivanda\nvivido\nviziare\nvoce\nvoga\nvolatile\nvolere\nvolpe\nvoragine\nvulcano\nzampogna\nzanna\nzappato\nzattera\nzavorra\nzefiro\nzelante\nzelo\nzenzero\nzerbino\nzibetto\nzinco\nzircone\nzitto\nzolla\nzotico\nzucchero\nzufolo\nzulu\nzuppa".split("\n"),Oo="あいこくしん\nあいさつ\nあいだ\nあおぞら\nあかちゃん\nあきる\nあけがた\nあける\nあこがれる\nあさい\nあさひ\nあしあと\nあじわう\nあずかる\nあずき\nあそぶ\nあたえる\nあたためる\nあたりまえ\nあたる\nあつい\nあつかう\nあっしゅく\nあつまり\nあつめる\nあてな\nあてはまる\nあひる\nあぶら\nあぶる\nあふれる\nあまい\nあまど\nあまやかす\nあまり\nあみもの\nあめりか\nあやまる\nあゆむ\nあらいぐま\nあらし\nあらすじ\nあらためる\nあらゆる\nあらわす\nありがとう\nあわせる\nあわてる\nあんい\nあんがい\nあんこ\nあんぜん\nあんてい\nあんない\nあんまり\nいいだす\nいおん\nいがい\nいがく\nいきおい\nいきなり\nいきもの\nいきる\nいくじ\nいくぶん\nいけばな\nいけん\nいこう\nいこく\nいこつ\nいさましい\nいさん\nいしき\nいじゅう\nいじょう\nいじわる\nいずみ\nいずれ\nいせい\nいせえび\nいせかい\nいせき\nいぜん\nいそうろう\nいそがしい\nいだい\nいだく\nいたずら\nいたみ\nいたりあ\nいちおう\nいちじ\nいちど\nいちば\nいちぶ\nいちりゅう\nいつか\nいっしゅん\nいっせい\nいっそう\nいったん\nいっち\nいってい\nいっぽう\nいてざ\nいてん\nいどう\nいとこ\nいない\nいなか\nいねむり\nいのち\nいのる\nいはつ\nいばる\nいはん\nいびき\nいひん\nいふく\nいへん\nいほう\nいみん\nいもうと\nいもたれ\nいもり\nいやがる\nいやす\nいよかん\nいよく\nいらい\nいらすと\nいりぐち\nいりょう\nいれい\nいれもの\nいれる\nいろえんぴつ\nいわい\nいわう\nいわかん\nいわば\nいわゆる\nいんげんまめ\nいんさつ\nいんしょう\nいんよう\nうえき\nうえる\nうおざ\nうがい\nうかぶ\nうかべる\nうきわ\nうくらいな\nうくれれ\nうけたまわる\nうけつけ\nうけとる\nうけもつ\nうける\nうごかす\nうごく\nうこん\nうさぎ\nうしなう\nうしろがみ\nうすい\nうすぎ\nうすぐらい\nうすめる\nうせつ\nうちあわせ\nうちがわ\nうちき\nうちゅう\nうっかり\nうつくしい\nうったえる\nうつる\nうどん\nうなぎ\nうなじ\nうなずく\nうなる\nうねる\nうのう\nうぶげ\nうぶごえ\nうまれる\nうめる\nうもう\nうやまう\nうよく\nうらがえす\nうらぐち\nうらない\nうりあげ\nうりきれ\nうるさい\nうれしい\nうれゆき\nうれる\nうろこ\nうわき\nうわさ\nうんこう\nうんちん\nうんてん\nうんどう\nえいえん\nえいが\nえいきょう\nえいご\nえいせい\nえいぶん\nえいよう\nえいわ\nえおり\nえがお\nえがく\nえきたい\nえくせる\nえしゃく\nえすて\nえつらん\nえのぐ\nえほうまき\nえほん\nえまき\nえもじ\nえもの\nえらい\nえらぶ\nえりあ\nえんえん\nえんかい\nえんぎ\nえんげき\nえんしゅう\nえんぜつ\nえんそく\nえんちょう\nえんとつ\nおいかける\nおいこす\nおいしい\nおいつく\nおうえん\nおうさま\nおうじ\nおうせつ\nおうたい\nおうふく\nおうべい\nおうよう\nおえる\nおおい\nおおう\nおおどおり\nおおや\nおおよそ\nおかえり\nおかず\nおがむ\nおかわり\nおぎなう\nおきる\nおくさま\nおくじょう\nおくりがな\nおくる\nおくれる\nおこす\nおこなう\nおこる\nおさえる\nおさない\nおさめる\nおしいれ\nおしえる\nおじぎ\nおじさん\nおしゃれ\nおそらく\nおそわる\nおたがい\nおたく\nおだやか\nおちつく\nおっと\nおつり\nおでかけ\nおとしもの\nおとなしい\nおどり\nおどろかす\nおばさん\nおまいり\nおめでとう\nおもいで\nおもう\nおもたい\nおもちゃ\nおやつ\nおやゆび\nおよぼす\nおらんだ\nおろす\nおんがく\nおんけい\nおんしゃ\nおんせん\nおんだん\nおんちゅう\nおんどけい\nかあつ\nかいが\nがいき\nがいけん\nがいこう\nかいさつ\nかいしゃ\nかいすいよく\nかいぜん\nかいぞうど\nかいつう\nかいてん\nかいとう\nかいふく\nがいへき\nかいほう\nかいよう\nがいらい\nかいわ\nかえる\nかおり\nかかえる\nかがく\nかがし\nかがみ\nかくご\nかくとく\nかざる\nがぞう\nかたい\nかたち\nがちょう\nがっきゅう\nがっこう\nがっさん\nがっしょう\nかなざわし\nかのう\nがはく\nかぶか\nかほう\nかほご\nかまう\nかまぼこ\nかめれおん\nかゆい\nかようび\nからい\nかるい\nかろう\nかわく\nかわら\nがんか\nかんけい\nかんこう\nかんしゃ\nかんそう\nかんたん\nかんち\nがんばる\nきあい\nきあつ\nきいろ\nぎいん\nきうい\nきうん\nきえる\nきおう\nきおく\nきおち\nきおん\nきかい\nきかく\nきかんしゃ\nききて\nきくばり\nきくらげ\nきけんせい\nきこう\nきこえる\nきこく\nきさい\nきさく\nきさま\nきさらぎ\nぎじかがく\nぎしき\nぎじたいけん\nぎじにってい\nぎじゅつしゃ\nきすう\nきせい\nきせき\nきせつ\nきそう\nきぞく\nきぞん\nきたえる\nきちょう\nきつえん\nぎっちり\nきつつき\nきつね\nきてい\nきどう\nきどく\nきない\nきなが\nきなこ\nきぬごし\nきねん\nきのう\nきのした\nきはく\nきびしい\nきひん\nきふく\nきぶん\nきぼう\nきほん\nきまる\nきみつ\nきむずかしい\nきめる\nきもだめし\nきもち\nきもの\nきゃく\nきやく\nぎゅうにく\nきよう\nきょうりゅう\nきらい\nきらく\nきりん\nきれい\nきれつ\nきろく\nぎろん\nきわめる\nぎんいろ\nきんかくじ\nきんじょ\nきんようび\nぐあい\nくいず\nくうかん\nくうき\nくうぐん\nくうこう\nぐうせい\nくうそう\nぐうたら\nくうふく\nくうぼ\nくかん\nくきょう\nくげん\nぐこう\nくさい\nくさき\nくさばな\nくさる\nくしゃみ\nくしょう\nくすのき\nくすりゆび\nくせげ\nくせん\nぐたいてき\nくださる\nくたびれる\nくちこみ\nくちさき\nくつした\nぐっすり\nくつろぐ\nくとうてん\nくどく\nくなん\nくねくね\nくのう\nくふう\nくみあわせ\nくみたてる\nくめる\nくやくしょ\nくらす\nくらべる\nくるま\nくれる\nくろう\nくわしい\nぐんかん\nぐんしょく\nぐんたい\nぐんて\nけあな\nけいかく\nけいけん\nけいこ\nけいさつ\nげいじゅつ\nけいたい\nげいのうじん\nけいれき\nけいろ\nけおとす\nけおりもの\nげきか\nげきげん\nげきだん\nげきちん\nげきとつ\nげきは\nげきやく\nげこう\nげこくじょう\nげざい\nけさき\nげざん\nけしき\nけしごむ\nけしょう\nげすと\nけたば\nけちゃっぷ\nけちらす\nけつあつ\nけつい\nけつえき\nけっこん\nけつじょ\nけっせき\nけってい\nけつまつ\nげつようび\nげつれい\nけつろん\nげどく\nけとばす\nけとる\nけなげ\nけなす\nけなみ\nけぬき\nげねつ\nけねん\nけはい\nげひん\nけぶかい\nげぼく\nけまり\nけみかる\nけむし\nけむり\nけもの\nけらい\nけろけろ\nけわしい\nけんい\nけんえつ\nけんお\nけんか\nげんき\nけんげん\nけんこう\nけんさく\nけんしゅう\nけんすう\nげんそう\nけんちく\nけんてい\nけんとう\nけんない\nけんにん\nげんぶつ\nけんま\nけんみん\nけんめい\nけんらん\nけんり\nこあくま\nこいぬ\nこいびと\nごうい\nこうえん\nこうおん\nこうかん\nごうきゅう\nごうけい\nこうこう\nこうさい\nこうじ\nこうすい\nごうせい\nこうそく\nこうたい\nこうちゃ\nこうつう\nこうてい\nこうどう\nこうない\nこうはい\nごうほう\nごうまん\nこうもく\nこうりつ\nこえる\nこおり\nごかい\nごがつ\nごかん\nこくご\nこくさい\nこくとう\nこくない\nこくはく\nこぐま\nこけい\nこける\nここのか\nこころ\nこさめ\nこしつ\nこすう\nこせい\nこせき\nこぜん\nこそだて\nこたい\nこたえる\nこたつ\nこちょう\nこっか\nこつこつ\nこつばん\nこつぶ\nこてい\nこてん\nことがら\nことし\nことば\nことり\nこなごな\nこねこね\nこのまま\nこのみ\nこのよ\nごはん\nこひつじ\nこふう\nこふん\nこぼれる\nごまあぶら\nこまかい\nごますり\nこまつな\nこまる\nこむぎこ\nこもじ\nこもち\nこもの\nこもん\nこやく\nこやま\nこゆう\nこゆび\nこよい\nこよう\nこりる\nこれくしょん\nころっけ\nこわもて\nこわれる\nこんいん\nこんかい\nこんき\nこんしゅう\nこんすい\nこんだて\nこんとん\nこんなん\nこんびに\nこんぽん\nこんまけ\nこんや\nこんれい\nこんわく\nざいえき\nさいかい\nさいきん\nざいげん\nざいこ\nさいしょ\nさいせい\nざいたく\nざいちゅう\nさいてき\nざいりょう\nさうな\nさかいし\nさがす\nさかな\nさかみち\nさがる\nさぎょう\nさくし\nさくひん\nさくら\nさこく\nさこつ\nさずかる\nざせき\nさたん\nさつえい\nざつおん\nざっか\nざつがく\nさっきょく\nざっし\nさつじん\nざっそう\nさつたば\nさつまいも\nさてい\nさといも\nさとう\nさとおや\nさとし\nさとる\nさのう\nさばく\nさびしい\nさべつ\nさほう\nさほど\nさます\nさみしい\nさみだれ\nさむけ\nさめる\nさやえんどう\nさゆう\nさよう\nさよく\nさらだ\nざるそば\nさわやか\nさわる\nさんいん\nさんか\nさんきゃく\nさんこう\nさんさい\nざんしょ\nさんすう\nさんせい\nさんそ\nさんち\nさんま\nさんみ\nさんらん\nしあい\nしあげ\nしあさって\nしあわせ\nしいく\nしいん\nしうち\nしえい\nしおけ\nしかい\nしかく\nじかん\nしごと\nしすう\nじだい\nしたうけ\nしたぎ\nしたて\nしたみ\nしちょう\nしちりん\nしっかり\nしつじ\nしつもん\nしてい\nしてき\nしてつ\nじてん\nじどう\nしなぎれ\nしなもの\nしなん\nしねま\nしねん\nしのぐ\nしのぶ\nしはい\nしばかり\nしはつ\nしはらい\nしはん\nしひょう\nしふく\nじぶん\nしへい\nしほう\nしほん\nしまう\nしまる\nしみん\nしむける\nじむしょ\nしめい\nしめる\nしもん\nしゃいん\nしゃうん\nしゃおん\nじゃがいも\nしやくしょ\nしゃくほう\nしゃけん\nしゃこ\nしゃざい\nしゃしん\nしゃせん\nしゃそう\nしゃたい\nしゃちょう\nしゃっきん\nじゃま\nしゃりん\nしゃれい\nじゆう\nじゅうしょ\nしゅくはく\nじゅしん\nしゅっせき\nしゅみ\nしゅらば\nじゅんばん\nしょうかい\nしょくたく\nしょっけん\nしょどう\nしょもつ\nしらせる\nしらべる\nしんか\nしんこう\nじんじゃ\nしんせいじ\nしんちく\nしんりん\nすあげ\nすあし\nすあな\nずあん\nすいえい\nすいか\nすいとう\nずいぶん\nすいようび\nすうがく\nすうじつ\nすうせん\nすおどり\nすきま\nすくう\nすくない\nすける\nすごい\nすこし\nずさん\nすずしい\nすすむ\nすすめる\nすっかり\nずっしり\nずっと\nすてき\nすてる\nすねる\nすのこ\nすはだ\nすばらしい\nずひょう\nずぶぬれ\nすぶり\nすふれ\nすべて\nすべる\nずほう\nすぼん\nすまい\nすめし\nすもう\nすやき\nすらすら\nするめ\nすれちがう\nすろっと\nすわる\nすんぜん\nすんぽう\nせあぶら\nせいかつ\nせいげん\nせいじ\nせいよう\nせおう\nせかいかん\nせきにん\nせきむ\nせきゆ\nせきらんうん\nせけん\nせこう\nせすじ\nせたい\nせたけ\nせっかく\nせっきゃく\nぜっく\nせっけん\nせっこつ\nせっさたくま\nせつぞく\nせつだん\nせつでん\nせっぱん\nせつび\nせつぶん\nせつめい\nせつりつ\nせなか\nせのび\nせはば\nせびろ\nせぼね\nせまい\nせまる\nせめる\nせもたれ\nせりふ\nぜんあく\nせんい\nせんえい\nせんか\nせんきょ\nせんく\nせんげん\nぜんご\nせんさい\nせんしゅ\nせんすい\nせんせい\nせんぞ\nせんたく\nせんちょう\nせんてい\nせんとう\nせんぬき\nせんねん\nせんぱい\nぜんぶ\nぜんぽう\nせんむ\nせんめんじょ\nせんもん\nせんやく\nせんゆう\nせんよう\nぜんら\nぜんりゃく\nせんれい\nせんろ\nそあく\nそいとげる\nそいね\nそうがんきょう\nそうき\nそうご\nそうしん\nそうだん\nそうなん\nそうび\nそうめん\nそうり\nそえもの\nそえん\nそがい\nそげき\nそこう\nそこそこ\nそざい\nそしな\nそせい\nそせん\nそそぐ\nそだてる\nそつう\nそつえん\nそっかん\nそつぎょう\nそっけつ\nそっこう\nそっせん\nそっと\nそとがわ\nそとづら\nそなえる\nそなた\nそふぼ\nそぼく\nそぼろ\nそまつ\nそまる\nそむく\nそむりえ\nそめる\nそもそも\nそよかぜ\nそらまめ\nそろう\nそんかい\nそんけい\nそんざい\nそんしつ\nそんぞく\nそんちょう\nぞんび\nぞんぶん\nそんみん\nたあい\nたいいん\nたいうん\nたいえき\nたいおう\nだいがく\nたいき\nたいぐう\nたいけん\nたいこ\nたいざい\nだいじょうぶ\nだいすき\nたいせつ\nたいそう\nだいたい\nたいちょう\nたいてい\nだいどころ\nたいない\nたいねつ\nたいのう\nたいはん\nだいひょう\nたいふう\nたいへん\nたいほ\nたいまつばな\nたいみんぐ\nたいむ\nたいめん\nたいやき\nたいよう\nたいら\nたいりょく\nたいる\nたいわん\nたうえ\nたえる\nたおす\nたおる\nたおれる\nたかい\nたかね\nたきび\nたくさん\nたこく\nたこやき\nたさい\nたしざん\nだじゃれ\nたすける\nたずさわる\nたそがれ\nたたかう\nたたく\nただしい\nたたみ\nたちばな\nだっかい\nだっきゃく\nだっこ\nだっしゅつ\nだったい\nたてる\nたとえる\nたなばた\nたにん\nたぬき\nたのしみ\nたはつ\nたぶん\nたべる\nたぼう\nたまご\nたまる\nだむる\nためいき\nためす\nためる\nたもつ\nたやすい\nたよる\nたらす\nたりきほんがん\nたりょう\nたりる\nたると\nたれる\nたれんと\nたろっと\nたわむれる\nだんあつ\nたんい\nたんおん\nたんか\nたんき\nたんけん\nたんご\nたんさん\nたんじょうび\nだんせい\nたんそく\nたんたい\nだんち\nたんてい\nたんとう\nだんな\nたんにん\nだんねつ\nたんのう\nたんぴん\nだんぼう\nたんまつ\nたんめい\nだんれつ\nだんろ\nだんわ\nちあい\nちあん\nちいき\nちいさい\nちえん\nちかい\nちから\nちきゅう\nちきん\nちけいず\nちけん\nちこく\nちさい\nちしき\nちしりょう\nちせい\nちそう\nちたい\nちたん\nちちおや\nちつじょ\nちてき\nちてん\nちぬき\nちぬり\nちのう\nちひょう\nちへいせん\nちほう\nちまた\nちみつ\nちみどろ\nちめいど\nちゃんこなべ\nちゅうい\nちゆりょく\nちょうし\nちょさくけん\nちらし\nちらみ\nちりがみ\nちりょう\nちるど\nちわわ\nちんたい\nちんもく\nついか\nついたち\nつうか\nつうじょう\nつうはん\nつうわ\nつかう\nつかれる\nつくね\nつくる\nつけね\nつける\nつごう\nつたえる\nつづく\nつつじ\nつつむ\nつとめる\nつながる\nつなみ\nつねづね\nつのる\nつぶす\nつまらない\nつまる\nつみき\nつめたい\nつもり\nつもる\nつよい\nつるぼ\nつるみく\nつわもの\nつわり\nてあし\nてあて\nてあみ\nていおん\nていか\nていき\nていけい\nていこく\nていさつ\nていし\nていせい\nていたい\nていど\nていねい\nていひょう\nていへん\nていぼう\nてうち\nておくれ\nてきとう\nてくび\nでこぼこ\nてさぎょう\nてさげ\nてすり\nてそう\nてちがい\nてちょう\nてつがく\nてつづき\nでっぱ\nてつぼう\nてつや\nでぬかえ\nてぬき\nてぬぐい\nてのひら\nてはい\nてぶくろ\nてふだ\nてほどき\nてほん\nてまえ\nてまきずし\nてみじか\nてみやげ\nてらす\nてれび\nてわけ\nてわたし\nでんあつ\nてんいん\nてんかい\nてんき\nてんぐ\nてんけん\nてんごく\nてんさい\nてんし\nてんすう\nでんち\nてんてき\nてんとう\nてんない\nてんぷら\nてんぼうだい\nてんめつ\nてんらんかい\nでんりょく\nでんわ\nどあい\nといれ\nどうかん\nとうきゅう\nどうぐ\nとうし\nとうむぎ\nとおい\nとおか\nとおく\nとおす\nとおる\nとかい\nとかす\nときおり\nときどき\nとくい\nとくしゅう\nとくてん\nとくに\nとくべつ\nとけい\nとける\nとこや\nとさか\nとしょかん\nとそう\nとたん\nとちゅう\nとっきゅう\nとっくん\nとつぜん\nとつにゅう\nとどける\nととのえる\nとない\nとなえる\nとなり\nとのさま\nとばす\nどぶがわ\nとほう\nとまる\nとめる\nともだち\nともる\nどようび\nとらえる\nとんかつ\nどんぶり\nないかく\nないこう\nないしょ\nないす\nないせん\nないそう\nなおす\nながい\nなくす\nなげる\nなこうど\nなさけ\nなたでここ\nなっとう\nなつやすみ\nななおし\nなにごと\nなにもの\nなにわ\nなのか\nなふだ\nなまいき\nなまえ\nなまみ\nなみだ\nなめらか\nなめる\nなやむ\nならう\nならび\nならぶ\nなれる\nなわとび\nなわばり\nにあう\nにいがた\nにうけ\nにおい\nにかい\nにがて\nにきび\nにくしみ\nにくまん\nにげる\nにさんかたんそ\nにしき\nにせもの\nにちじょう\nにちようび\nにっか\nにっき\nにっけい\nにっこう\nにっさん\nにっしょく\nにっすう\nにっせき\nにってい\nになう\nにほん\nにまめ\nにもつ\nにやり\nにゅういん\nにりんしゃ\nにわとり\nにんい\nにんか\nにんき\nにんげん\nにんしき\nにんずう\nにんそう\nにんたい\nにんち\nにんてい\nにんにく\nにんぷ\nにんまり\nにんむ\nにんめい\nにんよう\nぬいくぎ\nぬかす\nぬぐいとる\nぬぐう\nぬくもり\nぬすむ\nぬまえび\nぬめり\nぬらす\nぬんちゃく\nねあげ\nねいき\nねいる\nねいろ\nねぐせ\nねくたい\nねくら\nねこぜ\nねこむ\nねさげ\nねすごす\nねそべる\nねだん\nねつい\nねっしん\nねつぞう\nねったいぎょ\nねぶそく\nねふだ\nねぼう\nねほりはほり\nねまき\nねまわし\nねみみ\nねむい\nねむたい\nねもと\nねらう\nねわざ\nねんいり\nねんおし\nねんかん\nねんきん\nねんぐ\nねんざ\nねんし\nねんちゃく\nねんど\nねんぴ\nねんぶつ\nねんまつ\nねんりょう\nねんれい\nのいず\nのおづま\nのがす\nのきなみ\nのこぎり\nのこす\nのこる\nのせる\nのぞく\nのぞむ\nのたまう\nのちほど\nのっく\nのばす\nのはら\nのべる\nのぼる\nのみもの\nのやま\nのらいぬ\nのらねこ\nのりもの\nのりゆき\nのれん\nのんき\nばあい\nはあく\nばあさん\nばいか\nばいく\nはいけん\nはいご\nはいしん\nはいすい\nはいせん\nはいそう\nはいち\nばいばい\nはいれつ\nはえる\nはおる\nはかい\nばかり\nはかる\nはくしゅ\nはけん\nはこぶ\nはさみ\nはさん\nはしご\nばしょ\nはしる\nはせる\nぱそこん\nはそん\nはたん\nはちみつ\nはつおん\nはっかく\nはづき\nはっきり\nはっくつ\nはっけん\nはっこう\nはっさん\nはっしん\nはったつ\nはっちゅう\nはってん\nはっぴょう\nはっぽう\nはなす\nはなび\nはにかむ\nはぶらし\nはみがき\nはむかう\nはめつ\nはやい\nはやし\nはらう\nはろうぃん\nはわい\nはんい\nはんえい\nはんおん\nはんかく\nはんきょう\nばんぐみ\nはんこ\nはんしゃ\nはんすう\nはんだん\nぱんち\nぱんつ\nはんてい\nはんとし\nはんのう\nはんぱ\nはんぶん\nはんぺん\nはんぼうき\nはんめい\nはんらん\nはんろん\nひいき\nひうん\nひえる\nひかく\nひかり\nひかる\nひかん\nひくい\nひけつ\nひこうき\nひこく\nひさい\nひさしぶり\nひさん\nびじゅつかん\nひしょ\nひそか\nひそむ\nひたむき\nひだり\nひたる\nひつぎ\nひっこし\nひっし\nひつじゅひん\nひっす\nひつぜん\nぴったり\nぴっちり\nひつよう\nひてい\nひとごみ\nひなまつり\nひなん\nひねる\nひはん\nひびく\nひひょう\nひほう\nひまわり\nひまん\nひみつ\nひめい\nひめじし\nひやけ\nひやす\nひよう\nびょうき\nひらがな\nひらく\nひりつ\nひりょう\nひるま\nひるやすみ\nひれい\nひろい\nひろう\nひろき\nひろゆき\nひんかく\nひんけつ\nひんこん\nひんしゅ\nひんそう\nぴんち\nひんぱん\nびんぼう\nふあん\nふいうち\nふうけい\nふうせん\nぷうたろう\nふうとう\nふうふ\nふえる\nふおん\nふかい\nふきん\nふくざつ\nふくぶくろ\nふこう\nふさい\nふしぎ\nふじみ\nふすま\nふせい\nふせぐ\nふそく\nぶたにく\nふたん\nふちょう\nふつう\nふつか\nふっかつ\nふっき\nふっこく\nぶどう\nふとる\nふとん\nふのう\nふはい\nふひょう\nふへん\nふまん\nふみん\nふめつ\nふめん\nふよう\nふりこ\nふりる\nふるい\nふんいき\nぶんがく\nぶんぐ\nふんしつ\nぶんせき\nふんそう\nぶんぽう\nへいあん\nへいおん\nへいがい\nへいき\nへいげん\nへいこう\nへいさ\nへいしゃ\nへいせつ\nへいそ\nへいたく\nへいてん\nへいねつ\nへいわ\nへきが\nへこむ\nべにいろ\nべにしょうが\nへらす\nへんかん\nべんきょう\nべんごし\nへんさい\nへんたい\nべんり\nほあん\nほいく\nぼうぎょ\nほうこく\nほうそう\nほうほう\nほうもん\nほうりつ\nほえる\nほおん\nほかん\nほきょう\nぼきん\nほくろ\nほけつ\nほけん\nほこう\nほこる\nほしい\nほしつ\nほしゅ\nほしょう\nほせい\nほそい\nほそく\nほたて\nほたる\nぽちぶくろ\nほっきょく\nほっさ\nほったん\nほとんど\nほめる\nほんい\nほんき\nほんけ\nほんしつ\nほんやく\nまいにち\nまかい\nまかせる\nまがる\nまける\nまこと\nまさつ\nまじめ\nますく\nまぜる\nまつり\nまとめ\nまなぶ\nまぬけ\nまねく\nまほう\nまもる\nまゆげ\nまよう\nまろやか\nまわす\nまわり\nまわる\nまんが\nまんきつ\nまんぞく\nまんなか\nみいら\nみうち\nみえる\nみがく\nみかた\nみかん\nみけん\nみこん\nみじかい\nみすい\nみすえる\nみせる\nみっか\nみつかる\nみつける\nみてい\nみとめる\nみなと\nみなみかさい\nみねらる\nみのう\nみのがす\nみほん\nみもと\nみやげ\nみらい\nみりょく\nみわく\nみんか\nみんぞく\nむいか\nむえき\nむえん\nむかい\nむかう\nむかえ\nむかし\nむぎちゃ\nむける\nむげん\nむさぼる\nむしあつい\nむしば\nむじゅん\nむしろ\nむすう\nむすこ\nむすぶ\nむすめ\nむせる\nむせん\nむちゅう\nむなしい\nむのう\nむやみ\nむよう\nむらさき\nむりょう\nむろん\nめいあん\nめいうん\nめいえん\nめいかく\nめいきょく\nめいさい\nめいし\nめいそう\nめいぶつ\nめいれい\nめいわく\nめぐまれる\nめざす\nめした\nめずらしい\nめだつ\nめまい\nめやす\nめんきょ\nめんせき\nめんどう\nもうしあげる\nもうどうけん\nもえる\nもくし\nもくてき\nもくようび\nもちろん\nもどる\nもらう\nもんく\nもんだい\nやおや\nやける\nやさい\nやさしい\nやすい\nやすたろう\nやすみ\nやせる\nやそう\nやたい\nやちん\nやっと\nやっぱり\nやぶる\nやめる\nややこしい\nやよい\nやわらかい\nゆうき\nゆうびんきょく\nゆうべ\nゆうめい\nゆけつ\nゆしゅつ\nゆせん\nゆそう\nゆたか\nゆちゃく\nゆでる\nゆにゅう\nゆびわ\nゆらい\nゆれる\nようい\nようか\nようきゅう\nようじ\nようす\nようちえん\nよかぜ\nよかん\nよきん\nよくせい\nよくぼう\nよけい\nよごれる\nよさん\nよしゅう\nよそう\nよそく\nよっか\nよてい\nよどがわく\nよねつ\nよやく\nよゆう\nよろこぶ\nよろしい\nらいう\nらくがき\nらくご\nらくさつ\nらくだ\nらしんばん\nらせん\nらぞく\nらたい\nらっか\nられつ\nりえき\nりかい\nりきさく\nりきせつ\nりくぐん\nりくつ\nりけん\nりこう\nりせい\nりそう\nりそく\nりてん\nりねん\nりゆう\nりゅうがく\nりよう\nりょうり\nりょかん\nりょくちゃ\nりょこう\nりりく\nりれき\nりろん\nりんご\nるいけい\nるいさい\nるいじ\nるいせき\nるすばん\nるりがわら\nれいかん\nれいぎ\nれいせい\nれいぞうこ\nれいとう\nれいぼう\nれきし\nれきだい\nれんあい\nれんけい\nれんこん\nれんさい\nれんしゅう\nれんぞく\nれんらく\nろうか\nろうご\nろうじん\nろうそく\nろくが\nろこつ\nろじうら\nろしゅつ\nろせん\nろてん\nろめん\nろれつ\nろんぎ\nろんぱ\nろんぶん\nろんり\nわかす\nわかめ\nわかやま\nわかれる\nわしつ\nわじまし\nわすれもの\nわらう\nわれる".split("\n"),Uo="가격\n가끔\n가난\n가능\n가득\n가르침\n가뭄\n가방\n가상\n가슴\n가운데\n가을\n가이드\n가입\n가장\n가정\n가족\n가죽\n각오\n각자\n간격\n간부\n간섭\n간장\n간접\n간판\n갈등\n갈비\n갈색\n갈증\n감각\n감기\n감소\n감수성\n감자\n감정\n갑자기\n강남\n강당\n강도\n강력히\n강변\n강북\n강사\n강수량\n강아지\n강원도\n강의\n강제\n강조\n같이\n개구리\n개나리\n개방\n개별\n개선\n개성\n개인\n객관적\n거실\n거액\n거울\n거짓\n거품\n걱정\n건강\n건물\n건설\n건조\n건축\n걸음\n검사\n검토\n게시판\n게임\n겨울\n견해\n결과\n결국\n결론\n결석\n결승\n결심\n결정\n결혼\n경계\n경고\n경기\n경력\n경복궁\n경비\n경상도\n경영\n경우\n경쟁\n경제\n경주\n경찰\n경치\n경향\n경험\n계곡\n계단\n계란\n계산\n계속\n계약\n계절\n계층\n계획\n고객\n고구려\n고궁\n고급\n고등학생\n고무신\n고민\n고양이\n고장\n고전\n고집\n고춧가루\n고통\n고향\n곡식\n골목\n골짜기\n골프\n공간\n공개\n공격\n공군\n공급\n공기\n공동\n공무원\n공부\n공사\n공식\n공업\n공연\n공원\n공장\n공짜\n공책\n공통\n공포\n공항\n공휴일\n과목\n과일\n과장\n과정\n과학\n관객\n관계\n관광\n관념\n관람\n관련\n관리\n관습\n관심\n관점\n관찰\n광경\n광고\n광장\n광주\n괴로움\n굉장히\n교과서\n교문\n교복\n교실\n교양\n교육\n교장\n교직\n교통\n교환\n교훈\n구경\n구름\n구멍\n구별\n구분\n구석\n구성\n구속\n구역\n구입\n구청\n구체적\n국가\n국기\n국내\n국립\n국물\n국민\n국수\n국어\n국왕\n국적\n국제\n국회\n군대\n군사\n군인\n궁극적\n권리\n권위\n권투\n귀국\n귀신\n규정\n규칙\n균형\n그날\n그냥\n그늘\n그러나\n그룹\n그릇\n그림\n그제서야\n그토록\n극복\n극히\n근거\n근교\n근래\n근로\n근무\n근본\n근원\n근육\n근처\n글씨\n글자\n금강산\n금고\n금년\n금메달\n금액\n금연\n금요일\n금지\n긍정적\n기간\n기관\n기념\n기능\n기독교\n기둥\n기록\n기름\n기법\n기본\n기분\n기쁨\n기숙사\n기술\n기억\n기업\n기온\n기운\n기원\n기적\n기준\n기침\n기혼\n기획\n긴급\n긴장\n길이\n김밥\n김치\n김포공항\n깍두기\n깜빡\n깨달음\n깨소금\n껍질\n꼭대기\n꽃잎\n나들이\n나란히\n나머지\n나물\n나침반\n나흘\n낙엽\n난방\n날개\n날씨\n날짜\n남녀\n남대문\n남매\n남산\n남자\n남편\n남학생\n낭비\n낱말\n내년\n내용\n내일\n냄비\n냄새\n냇물\n냉동\n냉면\n냉방\n냉장고\n넥타이\n넷째\n노동\n노란색\n노력\n노인\n녹음\n녹차\n녹화\n논리\n논문\n논쟁\n놀이\n농구\n농담\n농민\n농부\n농업\n농장\n농촌\n높이\n눈동자\n눈물\n눈썹\n뉴욕\n느낌\n늑대\n능동적\n능력\n다방\n다양성\n다음\n다이어트\n다행\n단계\n단골\n단독\n단맛\n단순\n단어\n단위\n단점\n단체\n단추\n단편\n단풍\n달걀\n달러\n달력\n달리\n닭고기\n담당\n담배\n담요\n담임\n답변\n답장\n당근\n당분간\n당연히\n당장\n대규모\n대낮\n대단히\n대답\n대도시\n대략\n대량\n대륙\n대문\n대부분\n대신\n대응\n대장\n대전\n대접\n대중\n대책\n대출\n대충\n대통령\n대학\n대한민국\n대합실\n대형\n덩어리\n데이트\n도대체\n도덕\n도둑\n도망\n도서관\n도심\n도움\n도입\n도자기\n도저히\n도전\n도중\n도착\n독감\n독립\n독서\n독일\n독창적\n동화책\n뒷모습\n뒷산\n딸아이\n마누라\n마늘\n마당\n마라톤\n마련\n마무리\n마사지\n마약\n마요네즈\n마을\n마음\n마이크\n마중\n마지막\n마찬가지\n마찰\n마흔\n막걸리\n막내\n막상\n만남\n만두\n만세\n만약\n만일\n만점\n만족\n만화\n많이\n말기\n말씀\n말투\n맘대로\n망원경\n매년\n매달\n매력\n매번\n매스컴\n매일\n매장\n맥주\n먹이\n먼저\n먼지\n멀리\n메일\n며느리\n며칠\n면담\n멸치\n명단\n명령\n명예\n명의\n명절\n명칭\n명함\n모금\n모니터\n모델\n모든\n모범\n모습\n모양\n모임\n모조리\n모집\n모퉁이\n목걸이\n목록\n목사\n목소리\n목숨\n목적\n목표\n몰래\n몸매\n몸무게\n몸살\n몸속\n몸짓\n몸통\n몹시\n무관심\n무궁화\n무더위\n무덤\n무릎\n무슨\n무엇\n무역\n무용\n무조건\n무지개\n무척\n문구\n문득\n문법\n문서\n문제\n문학\n문화\n물가\n물건\n물결\n물고기\n물론\n물리학\n물음\n물질\n물체\n미국\n미디어\n미사일\n미술\n미역\n미용실\n미움\n미인\n미팅\n미혼\n민간\n민족\n민주\n믿음\n밀가루\n밀리미터\n밑바닥\n바가지\n바구니\n바나나\n바늘\n바닥\n바닷가\n바람\n바이러스\n바탕\n박물관\n박사\n박수\n반대\n반드시\n반말\n반발\n반성\n반응\n반장\n반죽\n반지\n반찬\n받침\n발가락\n발걸음\n발견\n발달\n발레\n발목\n발바닥\n발생\n발음\n발자국\n발전\n발톱\n발표\n밤하늘\n밥그릇\n밥맛\n밥상\n밥솥\n방금\n방면\n방문\n방바닥\n방법\n방송\n방식\n방안\n방울\n방지\n방학\n방해\n방향\n배경\n배꼽\n배달\n배드민턴\n백두산\n백색\n백성\n백인\n백제\n백화점\n버릇\n버섯\n버튼\n번개\n번역\n번지\n번호\n벌금\n벌레\n벌써\n범위\n범인\n범죄\n법률\n법원\n법적\n법칙\n베이징\n벨트\n변경\n변동\n변명\n변신\n변호사\n변화\n별도\n별명\n별일\n병실\n병아리\n병원\n보관\n보너스\n보라색\n보람\n보름\n보상\n보안\n보자기\n보장\n보전\n보존\n보통\n보편적\n보험\n복도\n복사\n복숭아\n복습\n볶음\n본격적\n본래\n본부\n본사\n본성\n본인\n본질\n볼펜\n봉사\n봉지\n봉투\n부근\n부끄러움\n부담\n부동산\n부문\n부분\n부산\n부상\n부엌\n부인\n부작용\n부장\n부정\n부족\n부지런히\n부친\n부탁\n부품\n부회장\n북부\n북한\n분노\n분량\n분리\n분명\n분석\n분야\n분위기\n분필\n분홍색\n불고기\n불과\n불교\n불꽃\n불만\n불법\n불빛\n불안\n불이익\n불행\n브랜드\n비극\n비난\n비닐\n비둘기\n비디오\n비로소\n비만\n비명\n비밀\n비바람\n비빔밥\n비상\n비용\n비율\n비중\n비타민\n비판\n빌딩\n빗물\n빗방울\n빗줄기\n빛깔\n빨간색\n빨래\n빨리\n사건\n사계절\n사나이\n사냥\n사람\n사랑\n사립\n사모님\n사물\n사방\n사상\n사생활\n사설\n사슴\n사실\n사업\n사용\n사월\n사장\n사전\n사진\n사촌\n사춘기\n사탕\n사투리\n사흘\n산길\n산부인과\n산업\n산책\n살림\n살인\n살짝\n삼계탕\n삼국\n삼십\n삼월\n삼촌\n상관\n상금\n상대\n상류\n상반기\n상상\n상식\n상업\n상인\n상자\n상점\n상처\n상추\n상태\n상표\n상품\n상황\n새벽\n색깔\n색연필\n생각\n생명\n생물\n생방송\n생산\n생선\n생신\n생일\n생활\n서랍\n서른\n서명\n서민\n서비스\n서양\n서울\n서적\n서점\n서쪽\n서클\n석사\n석유\n선거\n선물\n선배\n선생\n선수\n선원\n선장\n선전\n선택\n선풍기\n설거지\n설날\n설렁탕\n설명\n설문\n설사\n설악산\n설치\n설탕\n섭씨\n성공\n성당\n성명\n성별\n성인\n성장\n성적\n성질\n성함\n세금\n세미나\n세상\n세월\n세종대왕\n세탁\n센터\n센티미터\n셋째\n소규모\n소극적\n소금\n소나기\n소년\n소득\n소망\n소문\n소설\n소속\n소아과\n소용\n소원\n소음\n소중히\n소지품\n소질\n소풍\n소형\n속담\n속도\n속옷\n손가락\n손길\n손녀\n손님\n손등\n손목\n손뼉\n손실\n손질\n손톱\n손해\n솔직히\n솜씨\n송아지\n송이\n송편\n쇠고기\n쇼핑\n수건\n수년\n수단\n수돗물\n수동적\n수면\n수명\n수박\n수상\n수석\n수술\n수시로\n수업\n수염\n수영\n수입\n수준\n수집\n수출\n수컷\n수필\n수학\n수험생\n수화기\n숙녀\n숙소\n숙제\n순간\n순서\n순수\n순식간\n순위\n숟가락\n술병\n술집\n숫자\n스님\n스물\n스스로\n스승\n스웨터\n스위치\n스케이트\n스튜디오\n스트레스\n스포츠\n슬쩍\n슬픔\n습관\n습기\n승객\n승리\n승부\n승용차\n승진\n시각\n시간\n시골\n시금치\n시나리오\n시댁\n시리즈\n시멘트\n시민\n시부모\n시선\n시설\n시스템\n시아버지\n시어머니\n시월\n시인\n시일\n시작\n시장\n시절\n시점\n시중\n시즌\n시집\n시청\n시합\n시험\n식구\n식기\n식당\n식량\n식료품\n식물\n식빵\n식사\n식생활\n식초\n식탁\n식품\n신고\n신규\n신념\n신문\n신발\n신비\n신사\n신세\n신용\n신제품\n신청\n신체\n신화\n실감\n실내\n실력\n실례\n실망\n실수\n실습\n실시\n실장\n실정\n실질적\n실천\n실체\n실컷\n실태\n실패\n실험\n실현\n심리\n심부름\n심사\n심장\n심정\n심판\n쌍둥이\n씨름\n씨앗\n아가씨\n아나운서\n아드님\n아들\n아쉬움\n아스팔트\n아시아\n아울러\n아저씨\n아줌마\n아직\n아침\n아파트\n아프리카\n아픔\n아홉\n아흔\n악기\n악몽\n악수\n안개\n안경\n안과\n안내\n안녕\n안동\n안방\n안부\n안주\n알루미늄\n알코올\n암시\n암컷\n압력\n앞날\n앞문\n애인\n애정\n액수\n앨범\n야간\n야단\n야옹\n약간\n약국\n약속\n약수\n약점\n약품\n약혼녀\n양념\n양력\n양말\n양배추\n양주\n양파\n어둠\n어려움\n어른\n어젯밤\n어쨌든\n어쩌다가\n어쩐지\n언니\n언덕\n언론\n언어\n얼굴\n얼른\n얼음\n얼핏\n엄마\n업무\n업종\n업체\n엉덩이\n엉망\n엉터리\n엊그제\n에너지\n에어컨\n엔진\n여건\n여고생\n여관\n여군\n여권\n여대생\n여덟\n여동생\n여든\n여론\n여름\n여섯\n여성\n여왕\n여인\n여전히\n여직원\n여학생\n여행\n역사\n역시\n역할\n연결\n연구\n연극\n연기\n연락\n연설\n연세\n연속\n연습\n연애\n연예인\n연인\n연장\n연주\n연출\n연필\n연합\n연휴\n열기\n열매\n열쇠\n열심히\n열정\n열차\n열흘\n염려\n엽서\n영국\n영남\n영상\n영양\n영역\n영웅\n영원히\n영하\n영향\n영혼\n영화\n옆구리\n옆방\n옆집\n예감\n예금\n예방\n예산\n예상\n예선\n예술\n예습\n예식장\n예약\n예전\n예절\n예정\n예컨대\n옛날\n오늘\n오락\n오랫동안\n오렌지\n오로지\n오른발\n오븐\n오십\n오염\n오월\n오전\n오직\n오징어\n오페라\n오피스텔\n오히려\n옥상\n옥수수\n온갖\n온라인\n온몸\n온종일\n온통\n올가을\n올림픽\n올해\n옷차림\n와이셔츠\n와인\n완성\n완전\n왕비\n왕자\n왜냐하면\n왠지\n외갓집\n외국\n외로움\n외삼촌\n외출\n외침\n외할머니\n왼발\n왼손\n왼쪽\n요금\n요일\n요즘\n요청\n용기\n용서\n용어\n우산\n우선\n우승\n우연히\n우정\n우체국\n우편\n운동\n운명\n운반\n운전\n운행\n울산\n울음\n움직임\n웃어른\n웃음\n워낙\n원고\n원래\n원서\n원숭이\n원인\n원장\n원피스\n월급\n월드컵\n월세\n월요일\n웨이터\n위반\n위법\n위성\n위원\n위험\n위협\n윗사람\n유난히\n유럽\n유명\n유물\n유산\n유적\n유치원\n유학\n유행\n유형\n육군\n육상\n육십\n육체\n은행\n음력\n음료\n음반\n음성\n음식\n음악\n음주\n의견\n의논\n의문\n의복\n의식\n의심\n의외로\n의욕\n의원\n의학\n이것\n이곳\n이념\n이놈\n이달\n이대로\n이동\n이렇게\n이력서\n이론적\n이름\n이민\n이발소\n이별\n이불\n이빨\n이상\n이성\n이슬\n이야기\n이용\n이웃\n이월\n이윽고\n이익\n이전\n이중\n이튿날\n이틀\n이혼\n인간\n인격\n인공\n인구\n인근\n인기\n인도\n인류\n인물\n인생\n인쇄\n인연\n인원\n인재\n인종\n인천\n인체\n인터넷\n인하\n인형\n일곱\n일기\n일단\n일대\n일등\n일반\n일본\n일부\n일상\n일생\n일손\n일요일\n일월\n일정\n일종\n일주일\n일찍\n일체\n일치\n일행\n일회용\n임금\n임무\n입대\n입력\n입맛\n입사\n입술\n입시\n입원\n입장\n입학\n자가용\n자격\n자극\n자동\n자랑\n자부심\n자식\n자신\n자연\n자원\n자율\n자전거\n자정\n자존심\n자판\n작가\n작년\n작성\n작업\n작용\n작은딸\n작품\n잔디\n잔뜩\n잔치\n잘못\n잠깐\n잠수함\n잠시\n잠옷\n잠자리\n잡지\n장관\n장군\n장기간\n장래\n장례\n장르\n장마\n장면\n장모\n장미\n장비\n장사\n장소\n장식\n장애인\n장인\n장점\n장차\n장학금\n재능\n재빨리\n재산\n재생\n재작년\n재정\n재채기\n재판\n재학\n재활용\n저것\n저고리\n저곳\n저녁\n저런\n저렇게\n저번\n저울\n저절로\n저축\n적극\n적당히\n적성\n적용\n적응\n전개\n전공\n전기\n전달\n전라도\n전망\n전문\n전반\n전부\n전세\n전시\n전용\n전자\n전쟁\n전주\n전철\n전체\n전통\n전혀\n전후\n절대\n절망\n절반\n절약\n절차\n점검\n점수\n점심\n점원\n점점\n점차\n접근\n접시\n접촉\n젓가락\n정거장\n정도\n정류장\n정리\n정말\n정면\n정문\n정반대\n정보\n정부\n정비\n정상\n정성\n정오\n정원\n정장\n정지\n정치\n정확히\n제공\n제과점\n제대로\n제목\n제발\n제법\n제삿날\n제안\n제일\n제작\n제주도\n제출\n제품\n제한\n조각\n조건\n조금\n조깅\n조명\n조미료\n조상\n조선\n조용히\n조절\n조정\n조직\n존댓말\n존재\n졸업\n졸음\n종교\n종로\n종류\n종소리\n종업원\n종종\n종합\n좌석\n죄인\n주관적\n주름\n주말\n주머니\n주먹\n주문\n주민\n주방\n주변\n주식\n주인\n주일\n주장\n주전자\n주택\n준비\n줄거리\n줄기\n줄무늬\n중간\n중계방송\n중국\n중년\n중단\n중독\n중반\n중부\n중세\n중소기업\n중순\n중앙\n중요\n중학교\n즉석\n즉시\n즐거움\n증가\n증거\n증권\n증상\n증세\n지각\n지갑\n지경\n지극히\n지금\n지급\n지능\n지름길\n지리산\n지방\n지붕\n지식\n지역\n지우개\n지원\n지적\n지점\n지진\n지출\n직선\n직업\n직원\n직장\n진급\n진동\n진로\n진료\n진리\n진짜\n진찰\n진출\n진통\n진행\n질문\n질병\n질서\n짐작\n집단\n집안\n집중\n짜증\n찌꺼기\n차남\n차라리\n차량\n차림\n차별\n차선\n차츰\n착각\n찬물\n찬성\n참가\n참기름\n참새\n참석\n참여\n참외\n참조\n찻잔\n창가\n창고\n창구\n창문\n창밖\n창작\n창조\n채널\n채점\n책가방\n책방\n책상\n책임\n챔피언\n처벌\n처음\n천국\n천둥\n천장\n천재\n천천히\n철도\n철저히\n철학\n첫날\n첫째\n청년\n청바지\n청소\n청춘\n체계\n체력\n체온\n체육\n체중\n체험\n초등학생\n초반\n초밥\n초상화\n초순\n초여름\n초원\n초저녁\n초점\n초청\n초콜릿\n촛불\n총각\n총리\n총장\n촬영\n최근\n최상\n최선\n최신\n최악\n최종\n추석\n추억\n추진\n추천\n추측\n축구\n축소\n축제\n축하\n출근\n출발\n출산\n출신\n출연\n출입\n출장\n출판\n충격\n충고\n충돌\n충분히\n충청도\n취업\n취직\n취향\n치약\n친구\n친척\n칠십\n칠월\n칠판\n침대\n침묵\n침실\n칫솔\n칭찬\n카메라\n카운터\n칼국수\n캐릭터\n캠퍼스\n캠페인\n커튼\n컨디션\n컬러\n컴퓨터\n코끼리\n코미디\n콘서트\n콜라\n콤플렉스\n콩나물\n쾌감\n쿠데타\n크림\n큰길\n큰딸\n큰소리\n큰아들\n큰어머니\n큰일\n큰절\n클래식\n클럽\n킬로\n타입\n타자기\n탁구\n탁자\n탄생\n태권도\n태양\n태풍\n택시\n탤런트\n터널\n터미널\n테니스\n테스트\n테이블\n텔레비전\n토론\n토마토\n토요일\n통계\n통과\n통로\n통신\n통역\n통일\n통장\n통제\n통증\n통합\n통화\n퇴근\n퇴원\n퇴직금\n튀김\n트럭\n특급\n특별\n특성\n특수\n특징\n특히\n튼튼히\n티셔츠\n파란색\n파일\n파출소\n판결\n판단\n판매\n판사\n팔십\n팔월\n팝송\n패션\n팩스\n팩시밀리\n팬티\n퍼센트\n페인트\n편견\n편의\n편지\n편히\n평가\n평균\n평생\n평소\n평양\n평일\n평화\n포스터\n포인트\n포장\n포함\n표면\n표정\n표준\n표현\n품목\n품질\n풍경\n풍속\n풍습\n프랑스\n프린터\n플라스틱\n피곤\n피망\n피아노\n필름\n필수\n필요\n필자\n필통\n핑계\n하느님\n하늘\n하드웨어\n하룻밤\n하반기\n하숙집\n하순\n하여튼\n하지만\n하천\n하품\n하필\n학과\n학교\n학급\n학기\n학년\n학력\n학번\n학부모\n학비\n학생\n학술\n학습\n학용품\n학원\n학위\n학자\n학점\n한계\n한글\n한꺼번에\n한낮\n한눈\n한동안\n한때\n한라산\n한마디\n한문\n한번\n한복\n한식\n한여름\n한쪽\n할머니\n할아버지\n할인\n함께\n함부로\n합격\n합리적\n항공\n항구\n항상\n항의\n해결\n해군\n해답\n해당\n해물\n해석\n해설\n해수욕장\n해안\n핵심\n핸드백\n햄버거\n햇볕\n햇살\n행동\n행복\n행사\n행운\n행위\n향기\n향상\n향수\n허락\n허용\n헬기\n현관\n현금\n현대\n현상\n현실\n현장\n현재\n현지\n혈액\n협력\n형부\n형사\n형수\n형식\n형제\n형태\n형편\n혜택\n호기심\n호남\n호랑이\n호박\n호텔\n호흡\n혹시\n홀로\n홈페이지\n홍보\n홍수\n홍차\n화면\n화분\n화살\n화요일\n화장\n화학\n확보\n확인\n확장\n확정\n환갑\n환경\n환영\n환율\n환자\n활기\n활동\n활발히\n활용\n활짝\n회견\n회관\n회복\n회색\n회원\n회장\n회전\n횟수\n횡단보도\n효율적\n후반\n후춧가루\n훈련\n훨씬\n휴식\n휴일\n흉내\n흐름\n흑백\n흑인\n흔적\n흔히\n흥미\n흥분\n희곡\n희망\n희생\n흰색\n힘껏".split("\n"),Fo="abacate\nabaixo\nabalar\nabater\nabduzir\nabelha\naberto\nabismo\nabotoar\nabranger\nabreviar\nabrigar\nabrupto\nabsinto\nabsoluto\nabsurdo\nabutre\nacabado\nacalmar\nacampar\nacanhar\nacaso\naceitar\nacelerar\nacenar\nacervo\nacessar\nacetona\nachatar\nacidez\nacima\nacionado\nacirrar\naclamar\naclive\nacolhida\nacomodar\nacoplar\nacordar\nacumular\nacusador\nadaptar\nadega\nadentro\nadepto\nadequar\naderente\nadesivo\nadeus\nadiante\naditivo\nadjetivo\nadjunto\nadmirar\nadorar\nadquirir\nadubo\nadverso\nadvogado\naeronave\nafastar\naferir\nafetivo\nafinador\nafivelar\naflito\nafluente\nafrontar\nagachar\nagarrar\nagasalho\nagenciar\nagilizar\nagiota\nagitado\nagora\nagradar\nagreste\nagrupar\naguardar\nagulha\najoelhar\najudar\najustar\nalameda\nalarme\nalastrar\nalavanca\nalbergue\nalbino\nalcatra\naldeia\nalecrim\nalegria\nalertar\nalface\nalfinete\nalgum\nalheio\naliar\nalicate\nalienar\nalinhar\naliviar\nalmofada\nalocar\nalpiste\nalterar\naltitude\nalucinar\nalugar\naluno\nalusivo\nalvo\namaciar\namador\namarelo\namassar\nambas\nambiente\nameixa\namenizar\namido\namistoso\namizade\namolador\namontoar\namoroso\namostra\namparar\nampliar\nampola\nanagrama\nanalisar\nanarquia\nanatomia\nandaime\nanel\nanexo\nangular\nanimar\nanjo\nanomalia\nanotado\nansioso\nanterior\nanuidade\nanunciar\nanzol\napagador\napalpar\napanhado\napego\napelido\napertada\napesar\napetite\napito\naplauso\naplicada\napoio\napontar\naposta\naprendiz\naprovar\naquecer\narame\naranha\narara\narcada\nardente\nareia\narejar\narenito\naresta\nargiloso\nargola\narma\narquivo\narraial\narrebate\narriscar\narroba\narrumar\narsenal\narterial\nartigo\narvoredo\nasfaltar\nasilado\naspirar\nassador\nassinar\nassoalho\nassunto\nastral\natacado\natadura\natalho\natarefar\natear\natender\naterro\nateu\natingir\natirador\nativo\natoleiro\natracar\natrevido\natriz\natual\natum\nauditor\naumentar\naura\naurora\nautismo\nautoria\nautuar\navaliar\navante\navaria\navental\navesso\naviador\navisar\navulso\naxila\nazarar\nazedo\nazeite\nazulejo\nbabar\nbabosa\nbacalhau\nbacharel\nbacia\nbagagem\nbaiano\nbailar\nbaioneta\nbairro\nbaixista\nbajular\nbaleia\nbaliza\nbalsa\nbanal\nbandeira\nbanho\nbanir\nbanquete\nbarato\nbarbado\nbaronesa\nbarraca\nbarulho\nbaseado\nbastante\nbatata\nbatedor\nbatida\nbatom\nbatucar\nbaunilha\nbeber\nbeijo\nbeirada\nbeisebol\nbeldade\nbeleza\nbelga\nbeliscar\nbendito\nbengala\nbenzer\nberimbau\nberlinda\nberro\nbesouro\nbexiga\nbezerro\nbico\nbicudo\nbienal\nbifocal\nbifurcar\nbigorna\nbilhete\nbimestre\nbimotor\nbiologia\nbiombo\nbiosfera\nbipolar\nbirrento\nbiscoito\nbisneto\nbispo\nbissexto\nbitola\nbizarro\nblindado\nbloco\nbloquear\nboato\nbobagem\nbocado\nbocejo\nbochecha\nboicotar\nbolada\nboletim\nbolha\nbolo\nbombeiro\nbonde\nboneco\nbonita\nborbulha\nborda\nboreal\nborracha\nbovino\nboxeador\nbranco\nbrasa\nbraveza\nbreu\nbriga\nbrilho\nbrincar\nbroa\nbrochura\nbronzear\nbroto\nbruxo\nbucha\nbudismo\nbufar\nbule\nburaco\nbusca\nbusto\nbuzina\ncabana\ncabelo\ncabide\ncabo\ncabrito\ncacau\ncacetada\ncachorro\ncacique\ncadastro\ncadeado\ncafezal\ncaiaque\ncaipira\ncaixote\ncajado\ncaju\ncalafrio\ncalcular\ncaldeira\ncalibrar\ncalmante\ncalota\ncamada\ncambista\ncamisa\ncamomila\ncampanha\ncamuflar\ncanavial\ncancelar\ncaneta\ncanguru\ncanhoto\ncanivete\ncanoa\ncansado\ncantar\ncanudo\ncapacho\ncapela\ncapinar\ncapotar\ncapricho\ncaptador\ncapuz\ncaracol\ncarbono\ncardeal\ncareca\ncarimbar\ncarneiro\ncarpete\ncarreira\ncartaz\ncarvalho\ncasaco\ncasca\ncasebre\ncastelo\ncasulo\ncatarata\ncativar\ncaule\ncausador\ncautelar\ncavalo\ncaverna\ncebola\ncedilha\ncegonha\ncelebrar\ncelular\ncenoura\ncenso\ncenteio\ncercar\ncerrado\ncerteiro\ncerveja\ncetim\ncevada\nchacota\nchaleira\nchamado\nchapada\ncharme\nchatice\nchave\nchefe\nchegada\ncheiro\ncheque\nchicote\nchifre\nchinelo\nchocalho\nchover\nchumbo\nchutar\nchuva\ncicatriz\nciclone\ncidade\ncidreira\nciente\ncigana\ncimento\ncinto\ncinza\nciranda\ncircuito\ncirurgia\ncitar\nclareza\nclero\nclicar\nclone\nclube\ncoado\ncoagir\ncobaia\ncobertor\ncobrar\ncocada\ncoelho\ncoentro\ncoeso\ncogumelo\ncoibir\ncoifa\ncoiote\ncolar\ncoleira\ncolher\ncolidir\ncolmeia\ncolono\ncoluna\ncomando\ncombinar\ncomentar\ncomitiva\ncomover\ncomplexo\ncomum\nconcha\ncondor\nconectar\nconfuso\ncongelar\nconhecer\nconjugar\nconsumir\ncontrato\nconvite\ncooperar\ncopeiro\ncopiador\ncopo\ncoquetel\ncoragem\ncordial\ncorneta\ncoronha\ncorporal\ncorreio\ncortejo\ncoruja\ncorvo\ncosseno\ncostela\ncotonete\ncouro\ncouve\ncovil\ncozinha\ncratera\ncravo\ncreche\ncredor\ncreme\ncrer\ncrespo\ncriada\ncriminal\ncrioulo\ncrise\ncriticar\ncrosta\ncrua\ncruzeiro\ncubano\ncueca\ncuidado\ncujo\nculatra\nculminar\nculpar\ncultura\ncumprir\ncunhado\ncupido\ncurativo\ncurral\ncursar\ncurto\ncuspir\ncustear\ncutelo\ndamasco\ndatar\ndebater\ndebitar\ndeboche\ndebulhar\ndecalque\ndecimal\ndeclive\ndecote\ndecretar\ndedal\ndedicado\ndeduzir\ndefesa\ndefumar\ndegelo\ndegrau\ndegustar\ndeitado\ndeixar\ndelator\ndelegado\ndelinear\ndelonga\ndemanda\ndemitir\ndemolido\ndentista\ndepenado\ndepilar\ndepois\ndepressa\ndepurar\nderiva\nderramar\ndesafio\ndesbotar\ndescanso\ndesenho\ndesfiado\ndesgaste\ndesigual\ndeslize\ndesmamar\ndesova\ndespesa\ndestaque\ndesviar\ndetalhar\ndetentor\ndetonar\ndetrito\ndeusa\ndever\ndevido\ndevotado\ndezena\ndiagrama\ndialeto\ndidata\ndifuso\ndigitar\ndilatado\ndiluente\ndiminuir\ndinastia\ndinheiro\ndiocese\ndireto\ndiscreta\ndisfarce\ndisparo\ndisquete\ndissipar\ndistante\nditador\ndiurno\ndiverso\ndivisor\ndivulgar\ndizer\ndobrador\ndolorido\ndomador\ndominado\ndonativo\ndonzela\ndormente\ndorsal\ndosagem\ndourado\ndoutor\ndrenagem\ndrible\ndrogaria\nduelar\nduende\ndueto\nduplo\nduquesa\ndurante\nduvidoso\neclodir\necoar\necologia\nedificar\nedital\neducado\nefeito\nefetivar\nejetar\nelaborar\neleger\neleitor\nelenco\nelevador\neliminar\nelogiar\nembargo\nembolado\nembrulho\nembutido\nemenda\nemergir\nemissor\nempatia\nempenho\nempinado\nempolgar\nemprego\nempurrar\nemulador\nencaixe\nencenado\nenchente\nencontro\nendeusar\nendossar\nenfaixar\nenfeite\nenfim\nengajado\nengenho\nenglobar\nengomado\nengraxar\nenguia\nenjoar\nenlatar\nenquanto\nenraizar\nenrolado\nenrugar\nensaio\nenseada\nensino\nensopado\nentanto\nenteado\nentidade\nentortar\nentrada\nentulho\nenvergar\nenviado\nenvolver\nenxame\nenxerto\nenxofre\nenxuto\nepiderme\nequipar\nereto\nerguido\nerrata\nerva\nervilha\nesbanjar\nesbelto\nescama\nescola\nescrita\nescuta\nesfinge\nesfolar\nesfregar\nesfumado\nesgrima\nesmalte\nespanto\nespelho\nespiga\nesponja\nespreita\nespumar\nesquerda\nestaca\nesteira\nesticar\nestofado\nestrela\nestudo\nesvaziar\netanol\netiqueta\neuforia\neuropeu\nevacuar\nevaporar\nevasivo\neventual\nevidente\nevoluir\nexagero\nexalar\nexaminar\nexato\nexausto\nexcesso\nexcitar\nexclamar\nexecutar\nexemplo\nexibir\nexigente\nexonerar\nexpandir\nexpelir\nexpirar\nexplanar\nexposto\nexpresso\nexpulsar\nexterno\nextinto\nextrato\nfabricar\nfabuloso\nfaceta\nfacial\nfada\nfadiga\nfaixa\nfalar\nfalta\nfamiliar\nfandango\nfanfarra\nfantoche\nfardado\nfarelo\nfarinha\nfarofa\nfarpa\nfartura\nfatia\nfator\nfavorita\nfaxina\nfazenda\nfechado\nfeijoada\nfeirante\nfelino\nfeminino\nfenda\nfeno\nfera\nferiado\nferrugem\nferver\nfestejar\nfetal\nfeudal\nfiapo\nfibrose\nficar\nficheiro\nfigurado\nfileira\nfilho\nfilme\nfiltrar\nfirmeza\nfisgada\nfissura\nfita\nfivela\nfixador\nfixo\nflacidez\nflamingo\nflanela\nflechada\nflora\nflutuar\nfluxo\nfocal\nfocinho\nfofocar\nfogo\nfoguete\nfoice\nfolgado\nfolheto\nforjar\nformiga\nforno\nforte\nfosco\nfossa\nfragata\nfralda\nfrango\nfrasco\nfraterno\nfreira\nfrente\nfretar\nfrieza\nfriso\nfritura\nfronha\nfrustrar\nfruteira\nfugir\nfulano\nfuligem\nfundar\nfungo\nfunil\nfurador\nfurioso\nfutebol\ngabarito\ngabinete\ngado\ngaiato\ngaiola\ngaivota\ngalega\ngalho\ngalinha\ngalocha\nganhar\ngaragem\ngarfo\ngargalo\ngarimpo\ngaroupa\ngarrafa\ngasoduto\ngasto\ngata\ngatilho\ngaveta\ngazela\ngelado\ngeleia\ngelo\ngemada\ngemer\ngemido\ngeneroso\ngengiva\ngenial\ngenoma\ngenro\ngeologia\ngerador\ngerminar\ngesso\ngestor\nginasta\ngincana\ngingado\ngirafa\ngirino\nglacial\nglicose\nglobal\nglorioso\ngoela\ngoiaba\ngolfe\ngolpear\ngordura\ngorjeta\ngorro\ngostoso\ngoteira\ngovernar\ngracejo\ngradual\ngrafite\ngralha\ngrampo\ngranada\ngratuito\ngraveto\ngraxa\ngrego\ngrelhar\ngreve\ngrilo\ngrisalho\ngritaria\ngrosso\ngrotesco\ngrudado\ngrunhido\ngruta\nguache\nguarani\nguaxinim\nguerrear\nguiar\nguincho\nguisado\ngula\nguloso\nguru\nhabitar\nharmonia\nhaste\nhaver\nhectare\nherdar\nheresia\nhesitar\nhiato\nhibernar\nhidratar\nhiena\nhino\nhipismo\nhipnose\nhipoteca\nhoje\nholofote\nhomem\nhonesto\nhonrado\nhormonal\nhospedar\nhumorado\niate\nideia\nidoso\nignorado\nigreja\niguana\nileso\nilha\niludido\niluminar\nilustrar\nimagem\nimediato\nimenso\nimersivo\niminente\nimitador\nimortal\nimpacto\nimpedir\nimplante\nimpor\nimprensa\nimpune\nimunizar\ninalador\ninapto\ninativo\nincenso\ninchar\nincidir\nincluir\nincolor\nindeciso\nindireto\nindutor\nineficaz\ninerente\ninfantil\ninfestar\ninfinito\ninflamar\ninformal\ninfrator\ningerir\ninibido\ninicial\ninimigo\ninjetar\ninocente\ninodoro\ninovador\ninox\ninquieto\ninscrito\ninseto\ninsistir\ninspetor\ninstalar\ninsulto\nintacto\nintegral\nintimar\nintocado\nintriga\ninvasor\ninverno\ninvicto\ninvocar\niogurte\niraniano\nironizar\nirreal\nirritado\nisca\nisento\nisolado\nisqueiro\nitaliano\njaneiro\njangada\njanta\njararaca\njardim\njarro\njasmim\njato\njavali\njazida\njejum\njoaninha\njoelhada\njogador\njoia\njornal\njorrar\njovem\njuba\njudeu\njudoca\njuiz\njulgador\njulho\njurado\njurista\njuro\njusta\nlabareda\nlaboral\nlacre\nlactante\nladrilho\nlagarta\nlagoa\nlaje\nlamber\nlamentar\nlaminar\nlampejo\nlanche\nlapidar\nlapso\nlaranja\nlareira\nlargura\nlasanha\nlastro\nlateral\nlatido\nlavanda\nlavoura\nlavrador\nlaxante\nlazer\nlealdade\nlebre\nlegado\nlegendar\nlegista\nleigo\nleiloar\nleitura\nlembrete\nleme\nlenhador\nlentilha\nleoa\nlesma\nleste\nletivo\nletreiro\nlevar\nleveza\nlevitar\nliberal\nlibido\nliderar\nligar\nligeiro\nlimitar\nlimoeiro\nlimpador\nlinda\nlinear\nlinhagem\nliquidez\nlistagem\nlisura\nlitoral\nlivro\nlixa\nlixeira\nlocador\nlocutor\nlojista\nlombo\nlona\nlonge\nlontra\nlorde\nlotado\nloteria\nloucura\nlousa\nlouvar\nluar\nlucidez\nlucro\nluneta\nlustre\nlutador\nluva\nmacaco\nmacete\nmachado\nmacio\nmadeira\nmadrinha\nmagnata\nmagreza\nmaior\nmais\nmalandro\nmalha\nmalote\nmaluco\nmamilo\nmamoeiro\nmamute\nmanada\nmancha\nmandato\nmanequim\nmanhoso\nmanivela\nmanobrar\nmansa\nmanter\nmanusear\nmapeado\nmaquinar\nmarcador\nmaresia\nmarfim\nmargem\nmarinho\nmarmita\nmaroto\nmarquise\nmarreco\nmartelo\nmarujo\nmascote\nmasmorra\nmassagem\nmastigar\nmatagal\nmaterno\nmatinal\nmatutar\nmaxilar\nmedalha\nmedida\nmedusa\nmegafone\nmeiga\nmelancia\nmelhor\nmembro\nmemorial\nmenino\nmenos\nmensagem\nmental\nmerecer\nmergulho\nmesada\nmesclar\nmesmo\nmesquita\nmestre\nmetade\nmeteoro\nmetragem\nmexer\nmexicano\nmicro\nmigalha\nmigrar\nmilagre\nmilenar\nmilhar\nmimado\nminerar\nminhoca\nministro\nminoria\nmiolo\nmirante\nmirtilo\nmisturar\nmocidade\nmoderno\nmodular\nmoeda\nmoer\nmoinho\nmoita\nmoldura\nmoleza\nmolho\nmolinete\nmolusco\nmontanha\nmoqueca\nmorango\nmorcego\nmordomo\nmorena\nmosaico\nmosquete\nmostarda\nmotel\nmotim\nmoto\nmotriz\nmuda\nmuito\nmulata\nmulher\nmultar\nmundial\nmunido\nmuralha\nmurcho\nmuscular\nmuseu\nmusical\nnacional\nnadador\nnaja\nnamoro\nnarina\nnarrado\nnascer\nnativa\nnatureza\nnavalha\nnavegar\nnavio\nneblina\nnebuloso\nnegativa\nnegociar\nnegrito\nnervoso\nneta\nneural\nnevasca\nnevoeiro\nninar\nninho\nnitidez\nnivelar\nnobreza\nnoite\nnoiva\nnomear\nnominal\nnordeste\nnortear\nnotar\nnoticiar\nnoturno\nnovelo\nnovilho\nnovo\nnublado\nnudez\nnumeral\nnupcial\nnutrir\nnuvem\nobcecado\nobedecer\nobjetivo\nobrigado\nobscuro\nobstetra\nobter\nobturar\nocidente\nocioso\nocorrer\noculista\nocupado\nofegante\nofensiva\noferenda\noficina\nofuscado\nogiva\nolaria\noleoso\nolhar\noliveira\nombro\nomelete\nomisso\nomitir\nondulado\noneroso\nontem\nopcional\noperador\noponente\noportuno\noposto\norar\norbitar\nordem\nordinal\norfanato\norgasmo\norgulho\noriental\norigem\noriundo\norla\nortodoxo\norvalho\noscilar\nossada\nosso\nostentar\notimismo\nousadia\noutono\noutubro\nouvido\novelha\novular\noxidar\noxigenar\npacato\npaciente\npacote\npactuar\npadaria\npadrinho\npagar\npagode\npainel\npairar\npaisagem\npalavra\npalestra\npalheta\npalito\npalmada\npalpitar\npancada\npanela\npanfleto\npanqueca\npantanal\npapagaio\npapelada\npapiro\nparafina\nparcial\npardal\nparede\npartida\npasmo\npassado\npastel\npatamar\npatente\npatinar\npatrono\npaulada\npausar\npeculiar\npedalar\npedestre\npediatra\npedra\npegada\npeitoral\npeixe\npele\npelicano\npenca\npendurar\npeneira\npenhasco\npensador\npente\nperceber\nperfeito\npergunta\nperito\npermitir\nperna\nperplexo\npersiana\npertence\nperuca\npescado\npesquisa\npessoa\npetiscar\npiada\npicado\npiedade\npigmento\npilastra\npilhado\npilotar\npimenta\npincel\npinguim\npinha\npinote\npintar\npioneiro\npipoca\npiquete\npiranha\npires\npirueta\npiscar\npistola\npitanga\npivete\nplanta\nplaqueta\nplatina\nplebeu\nplumagem\npluvial\npneu\npoda\npoeira\npoetisa\npolegada\npoliciar\npoluente\npolvilho\npomar\npomba\nponderar\npontaria\npopuloso\nporta\npossuir\npostal\npote\npoupar\npouso\npovoar\npraia\nprancha\nprato\npraxe\nprece\npredador\nprefeito\npremiar\nprensar\npreparar\npresilha\npretexto\nprevenir\nprezar\nprimata\nprincesa\nprisma\nprivado\nprocesso\nproduto\nprofeta\nproibido\nprojeto\nprometer\npropagar\nprosa\nprotetor\nprovador\npublicar\npudim\npular\npulmonar\npulseira\npunhal\npunir\npupilo\npureza\npuxador\nquadra\nquantia\nquarto\nquase\nquebrar\nqueda\nqueijo\nquente\nquerido\nquimono\nquina\nquiosque\nrabanada\nrabisco\nrachar\nracionar\nradial\nraiar\nrainha\nraio\nraiva\nrajada\nralado\nramal\nranger\nranhura\nrapadura\nrapel\nrapidez\nraposa\nraquete\nraridade\nrasante\nrascunho\nrasgar\nraspador\nrasteira\nrasurar\nratazana\nratoeira\nrealeza\nreanimar\nreaver\nrebaixar\nrebelde\nrebolar\nrecado\nrecente\nrecheio\nrecibo\nrecordar\nrecrutar\nrecuar\nrede\nredimir\nredonda\nreduzida\nreenvio\nrefinar\nrefletir\nrefogar\nrefresco\nrefugiar\nregalia\nregime\nregra\nreinado\nreitor\nrejeitar\nrelativo\nremador\nremendo\nremorso\nrenovado\nreparo\nrepelir\nrepleto\nrepolho\nrepresa\nrepudiar\nrequerer\nresenha\nresfriar\nresgatar\nresidir\nresolver\nrespeito\nressaca\nrestante\nresumir\nretalho\nreter\nretirar\nretomada\nretratar\nrevelar\nrevisor\nrevolta\nriacho\nrica\nrigidez\nrigoroso\nrimar\nringue\nrisada\nrisco\nrisonho\nrobalo\nrochedo\nrodada\nrodeio\nrodovia\nroedor\nroleta\nromano\nroncar\nrosado\nroseira\nrosto\nrota\nroteiro\nrotina\nrotular\nrouco\nroupa\nroxo\nrubro\nrugido\nrugoso\nruivo\nrumo\nrupestre\nrusso\nsabor\nsaciar\nsacola\nsacudir\nsadio\nsafira\nsaga\nsagrada\nsaibro\nsalada\nsaleiro\nsalgado\nsaliva\nsalpicar\nsalsicha\nsaltar\nsalvador\nsambar\nsamurai\nsanar\nsanfona\nsangue\nsanidade\nsapato\nsarda\nsargento\nsarjeta\nsaturar\nsaudade\nsaxofone\nsazonal\nsecar\nsecular\nseda\nsedento\nsediado\nsedoso\nsedutor\nsegmento\nsegredo\nsegundo\nseiva\nseleto\nselvagem\nsemanal\nsemente\nsenador\nsenhor\nsensual\nsentado\nseparado\nsereia\nseringa\nserra\nservo\nsetembro\nsetor\nsigilo\nsilhueta\nsilicone\nsimetria\nsimpatia\nsimular\nsinal\nsincero\nsingular\nsinopse\nsintonia\nsirene\nsiri\nsituado\nsoberano\nsobra\nsocorro\nsogro\nsoja\nsolda\nsoletrar\nsolteiro\nsombrio\nsonata\nsondar\nsonegar\nsonhador\nsono\nsoprano\nsoquete\nsorrir\nsorteio\nsossego\nsotaque\nsoterrar\nsovado\nsozinho\nsuavizar\nsubida\nsubmerso\nsubsolo\nsubtrair\nsucata\nsucesso\nsuco\nsudeste\nsufixo\nsugador\nsugerir\nsujeito\nsulfato\nsumir\nsuor\nsuperior\nsuplicar\nsuposto\nsuprimir\nsurdina\nsurfista\nsurpresa\nsurreal\nsurtir\nsuspiro\nsustento\ntabela\ntablete\ntabuada\ntacho\ntagarela\ntalher\ntalo\ntalvez\ntamanho\ntamborim\ntampa\ntangente\ntanto\ntapar\ntapioca\ntardio\ntarefa\ntarja\ntarraxa\ntatuagem\ntaurino\ntaxativo\ntaxista\nteatral\ntecer\ntecido\nteclado\ntedioso\nteia\nteimar\ntelefone\ntelhado\ntempero\ntenente\ntensor\ntentar\ntermal\nterno\nterreno\ntese\ntesoura\ntestado\nteto\ntextura\ntexugo\ntiara\ntigela\ntijolo\ntimbrar\ntimidez\ntingido\ntinteiro\ntiragem\ntitular\ntoalha\ntocha\ntolerar\ntolice\ntomada\ntomilho\ntonel\ntontura\ntopete\ntora\ntorcido\ntorneio\ntorque\ntorrada\ntorto\ntostar\ntouca\ntoupeira\ntoxina\ntrabalho\ntracejar\ntradutor\ntrafegar\ntrajeto\ntrama\ntrancar\ntrapo\ntraseiro\ntratador\ntravar\ntreino\ntremer\ntrepidar\ntrevo\ntriagem\ntribo\ntriciclo\ntridente\ntrilogia\ntrindade\ntriplo\ntriturar\ntriunfal\ntrocar\ntrombeta\ntrova\ntrunfo\ntruque\ntubular\ntucano\ntudo\ntulipa\ntupi\nturbo\nturma\nturquesa\ntutelar\ntutorial\nuivar\numbigo\nunha\nunidade\nuniforme\nurologia\nurso\nurtiga\nurubu\nusado\nusina\nusufruir\nvacina\nvadiar\nvagaroso\nvaidoso\nvala\nvalente\nvalidade\nvalores\nvantagem\nvaqueiro\nvaranda\nvareta\nvarrer\nvascular\nvasilha\nvassoura\nvazar\nvazio\nveado\nvedar\nvegetar\nveicular\nveleiro\nvelhice\nveludo\nvencedor\nvendaval\nvenerar\nventre\nverbal\nverdade\nvereador\nvergonha\nvermelho\nverniz\nversar\nvertente\nvespa\nvestido\nvetorial\nviaduto\nviagem\nviajar\nviatura\nvibrador\nvideira\nvidraria\nviela\nviga\nvigente\nvigiar\nvigorar\nvilarejo\nvinco\nvinheta\nvinil\nvioleta\nvirada\nvirtude\nvisitar\nvisto\nvitral\nviveiro\nvizinho\nvoador\nvoar\nvogal\nvolante\nvoleibol\nvoltagem\nvolumoso\nvontade\nvulto\nvuvuzela\nxadrez\nxarope\nxeque\nxeretar\nxerife\nxingar\nzangado\nzarpar\nzebu\nzelador\nzombar\nzoologia\nzumbido".split("\n"),Lo="的\n一\n是\n在\n不\n了\n有\n和\n人\n这\n中\n大\n为\n上\n个\n国\n我\n以\n要\n他\n时\n来\n用\n们\n生\n到\n作\n地\n于\n出\n就\n分\n对\n成\n会\n可\n主\n发\n年\n动\n同\n工\n也\n能\n下\n过\n子\n说\n产\n种\n面\n而\n方\n后\n多\n定\n行\n学\n法\n所\n民\n得\n经\n十\n三\n之\n进\n着\n等\n部\n度\n家\n电\n力\n里\n如\n水\n化\n高\n自\n二\n理\n起\n小\n物\n现\n实\n加\n量\n都\n两\n体\n制\n机\n当\n使\n点\n从\n业\n本\n去\n把\n性\n好\n应\n开\n它\n合\n还\n因\n由\n其\n些\n然\n前\n外\n天\n政\n四\n日\n那\n社\n义\n事\n平\n形\n相\n全\n表\n间\n样\n与\n关\n各\n重\n新\n线\n内\n数\n正\n心\n反\n你\n明\n看\n原\n又\n么\n利\n比\n或\n但\n质\n气\n第\n向\n道\n命\n此\n变\n条\n只\n没\n结\n解\n问\n意\n建\n月\n公\n无\n系\n军\n很\n情\n者\n最\n立\n代\n想\n已\n通\n并\n提\n直\n题\n党\n程\n展\n五\n果\n料\n象\n员\n革\n位\n入\n常\n文\n总\n次\n品\n式\n活\n设\n及\n管\n特\n件\n长\n求\n老\n头\n基\n资\n边\n流\n路\n级\n少\n图\n山\n统\n接\n知\n较\n将\n组\n见\n计\n别\n她\n手\n角\n期\n根\n论\n运\n农\n指\n几\n九\n区\n强\n放\n决\n西\n被\n干\n做\n必\n战\n先\n回\n则\n任\n取\n据\n处\n队\n南\n给\n色\n光\n门\n即\n保\n治\n北\n造\n百\n规\n热\n领\n七\n海\n口\n东\n导\n器\n压\n志\n世\n金\n增\n争\n济\n阶\n油\n思\n术\n极\n交\n受\n联\n什\n认\n六\n共\n权\n收\n证\n改\n清\n美\n再\n采\n转\n更\n单\n风\n切\n打\n白\n教\n速\n花\n带\n安\n场\n身\n车\n例\n真\n务\n具\n万\n每\n目\n至\n达\n走\n积\n示\n议\n声\n报\n斗\n完\n类\n八\n离\n华\n名\n确\n才\n科\n张\n信\n马\n节\n话\n米\n整\n空\n元\n况\n今\n集\n温\n传\n土\n许\n步\n群\n广\n石\n记\n需\n段\n研\n界\n拉\n林\n律\n叫\n且\n究\n观\n越\n织\n装\n影\n算\n低\n持\n音\n众\n书\n布\n复\n容\n儿\n须\n际\n商\n非\n验\n连\n断\n深\n难\n近\n矿\n千\n周\n委\n素\n技\n备\n半\n办\n青\n省\n列\n习\n响\n约\n支\n般\n史\n感\n劳\n便\n团\n往\n酸\n历\n市\n克\n何\n除\n消\n构\n府\n称\n太\n准\n精\n值\n号\n率\n族\n维\n划\n选\n标\n写\n存\n候\n毛\n亲\n快\n效\n斯\n院\n查\n江\n型\n眼\n王\n按\n格\n养\n易\n置\n派\n层\n片\n始\n却\n专\n状\n育\n厂\n京\n识\n适\n属\n圆\n包\n火\n住\n调\n满\n县\n局\n照\n参\n红\n细\n引\n听\n该\n铁\n价\n严\n首\n底\n液\n官\n德\n随\n病\n苏\n失\n尔\n死\n讲\n配\n女\n黄\n推\n显\n谈\n罪\n神\n艺\n呢\n席\n含\n企\n望\n密\n批\n营\n项\n防\n举\n球\n英\n氧\n势\n告\n李\n台\n落\n木\n帮\n轮\n破\n亚\n师\n围\n注\n远\n字\n材\n排\n供\n河\n态\n封\n另\n施\n减\n树\n溶\n怎\n止\n案\n言\n士\n均\n武\n固\n叶\n鱼\n波\n视\n仅\n费\n紧\n爱\n左\n章\n早\n朝\n害\n续\n轻\n服\n试\n食\n充\n兵\n源\n判\n护\n司\n足\n某\n练\n差\n致\n板\n田\n降\n黑\n犯\n负\n击\n范\n继\n兴\n似\n余\n坚\n曲\n输\n修\n故\n城\n夫\n够\n送\n笔\n船\n占\n右\n财\n吃\n富\n春\n职\n觉\n汉\n画\n功\n巴\n跟\n虽\n杂\n飞\n检\n吸\n助\n升\n阳\n互\n初\n创\n抗\n考\n投\n坏\n策\n古\n径\n换\n未\n跑\n留\n钢\n曾\n端\n责\n站\n简\n述\n钱\n副\n尽\n帝\n射\n草\n冲\n承\n独\n令\n限\n阿\n宣\n环\n双\n请\n超\n微\n让\n控\n州\n良\n轴\n找\n否\n纪\n益\n依\n优\n顶\n础\n载\n倒\n房\n突\n坐\n粉\n敌\n略\n客\n袁\n冷\n胜\n绝\n析\n块\n剂\n测\n丝\n协\n诉\n念\n陈\n仍\n罗\n盐\n友\n洋\n错\n苦\n夜\n刑\n移\n频\n逐\n靠\n混\n母\n短\n皮\n终\n聚\n汽\n村\n云\n哪\n既\n距\n卫\n停\n烈\n央\n察\n烧\n迅\n境\n若\n印\n洲\n刻\n括\n激\n孔\n搞\n甚\n室\n待\n核\n校\n散\n侵\n吧\n甲\n游\n久\n菜\n味\n旧\n模\n湖\n货\n损\n预\n阻\n毫\n普\n稳\n乙\n妈\n植\n息\n扩\n银\n语\n挥\n酒\n守\n拿\n序\n纸\n医\n缺\n雨\n吗\n针\n刘\n啊\n急\n唱\n误\n训\n愿\n审\n附\n获\n茶\n鲜\n粮\n斤\n孩\n脱\n硫\n肥\n善\n龙\n演\n父\n渐\n血\n欢\n械\n掌\n歌\n沙\n刚\n攻\n谓\n盾\n讨\n晚\n粒\n乱\n燃\n矛\n乎\n杀\n药\n宁\n鲁\n贵\n钟\n煤\n读\n班\n伯\n香\n介\n迫\n句\n丰\n培\n握\n兰\n担\n弦\n蛋\n沉\n假\n穿\n执\n答\n乐\n谁\n顺\n烟\n缩\n征\n脸\n喜\n松\n脚\n困\n异\n免\n背\n星\n福\n买\n染\n井\n概\n慢\n怕\n磁\n倍\n祖\n皇\n促\n静\n补\n评\n翻\n肉\n践\n尼\n衣\n宽\n扬\n棉\n希\n伤\n操\n垂\n秋\n宜\n氢\n套\n督\n振\n架\n亮\n末\n宪\n庆\n编\n牛\n触\n映\n雷\n销\n诗\n座\n居\n抓\n裂\n胞\n呼\n娘\n景\n威\n绿\n晶\n厚\n盟\n衡\n鸡\n孙\n延\n危\n胶\n屋\n乡\n临\n陆\n顾\n掉\n呀\n灯\n岁\n措\n束\n耐\n剧\n玉\n赵\n跳\n哥\n季\n课\n凯\n胡\n额\n款\n绍\n卷\n齐\n伟\n蒸\n殖\n永\n宗\n苗\n川\n炉\n岩\n弱\n零\n杨\n奏\n沿\n露\n杆\n探\n滑\n镇\n饭\n浓\n航\n怀\n赶\n库\n夺\n伊\n灵\n税\n途\n灭\n赛\n归\n召\n鼓\n播\n盘\n裁\n险\n康\n唯\n录\n菌\n纯\n借\n糖\n盖\n横\n符\n私\n努\n堂\n域\n枪\n润\n幅\n哈\n竟\n熟\n虫\n泽\n脑\n壤\n碳\n欧\n遍\n侧\n寨\n敢\n彻\n虑\n斜\n薄\n庭\n纳\n弹\n饲\n伸\n折\n麦\n湿\n暗\n荷\n瓦\n塞\n床\n筑\n恶\n户\n访\n塔\n奇\n透\n梁\n刀\n旋\n迹\n卡\n氯\n遇\n份\n毒\n泥\n退\n洗\n摆\n灰\n彩\n卖\n耗\n夏\n择\n忙\n铜\n献\n硬\n予\n繁\n圈\n雪\n函\n亦\n抽\n篇\n阵\n阴\n丁\n尺\n追\n堆\n雄\n迎\n泛\n爸\n楼\n避\n谋\n吨\n野\n猪\n旗\n累\n偏\n典\n馆\n索\n秦\n脂\n潮\n爷\n豆\n忽\n托\n惊\n塑\n遗\n愈\n朱\n替\n纤\n粗\n倾\n尚\n痛\n楚\n谢\n奋\n购\n磨\n君\n池\n旁\n碎\n骨\n监\n捕\n弟\n暴\n割\n贯\n殊\n释\n词\n亡\n壁\n顿\n宝\n午\n尘\n闻\n揭\n炮\n残\n冬\n桥\n妇\n警\n综\n招\n吴\n付\n浮\n遭\n徐\n您\n摇\n谷\n赞\n箱\n隔\n订\n男\n吹\n园\n纷\n唐\n败\n宋\n玻\n巨\n耕\n坦\n荣\n闭\n湾\n键\n凡\n驻\n锅\n救\n恩\n剥\n凝\n碱\n齿\n截\n炼\n麻\n纺\n禁\n废\n盛\n版\n缓\n净\n睛\n昌\n婚\n涉\n筒\n嘴\n插\n岸\n朗\n庄\n街\n藏\n姑\n贸\n腐\n奴\n啦\n惯\n乘\n伙\n恢\n匀\n纱\n扎\n辩\n耳\n彪\n臣\n亿\n璃\n抵\n脉\n秀\n萨\n俄\n网\n舞\n店\n喷\n纵\n寸\n汗\n挂\n洪\n贺\n闪\n柬\n爆\n烯\n津\n稻\n墙\n软\n勇\n像\n滚\n厘\n蒙\n芳\n肯\n坡\n柱\n荡\n腿\n仪\n旅\n尾\n轧\n冰\n贡\n登\n黎\n削\n钻\n勒\n逃\n障\n氨\n郭\n峰\n币\n港\n伏\n轨\n亩\n毕\n擦\n莫\n刺\n浪\n秘\n援\n株\n健\n售\n股\n岛\n甘\n泡\n睡\n童\n铸\n汤\n阀\n休\n汇\n舍\n牧\n绕\n炸\n哲\n磷\n绩\n朋\n淡\n尖\n启\n陷\n柴\n呈\n徒\n颜\n泪\n稍\n忘\n泵\n蓝\n拖\n洞\n授\n镜\n辛\n壮\n锋\n贫\n虚\n弯\n摩\n泰\n幼\n廷\n尊\n窗\n纲\n弄\n隶\n疑\n氏\n宫\n姐\n震\n瑞\n怪\n尤\n琴\n循\n描\n膜\n违\n夹\n腰\n缘\n珠\n穷\n森\n枝\n竹\n沟\n催\n绳\n忆\n邦\n剩\n幸\n浆\n栏\n拥\n牙\n贮\n礼\n滤\n钠\n纹\n罢\n拍\n咱\n喊\n袖\n埃\n勤\n罚\n焦\n潜\n伍\n墨\n欲\n缝\n姓\n刊\n饱\n仿\n奖\n铝\n鬼\n丽\n跨\n默\n挖\n链\n扫\n喝\n袋\n炭\n污\n幕\n诸\n弧\n励\n梅\n奶\n洁\n灾\n舟\n鉴\n苯\n讼\n抱\n毁\n懂\n寒\n智\n埔\n寄\n届\n跃\n渡\n挑\n丹\n艰\n贝\n碰\n拔\n爹\n戴\n码\n梦\n芽\n熔\n赤\n渔\n哭\n敬\n颗\n奔\n铅\n仲\n虎\n稀\n妹\n乏\n珍\n申\n桌\n遵\n允\n隆\n螺\n仓\n魏\n锐\n晓\n氮\n兼\n隐\n碍\n赫\n拨\n忠\n肃\n缸\n牵\n抢\n博\n巧\n壳\n兄\n杜\n讯\n诚\n碧\n祥\n柯\n页\n巡\n矩\n悲\n灌\n龄\n伦\n票\n寻\n桂\n铺\n圣\n恐\n恰\n郑\n趣\n抬\n荒\n腾\n贴\n柔\n滴\n猛\n阔\n辆\n妻\n填\n撤\n储\n签\n闹\n扰\n紫\n砂\n递\n戏\n吊\n陶\n伐\n喂\n疗\n瓶\n婆\n抚\n臂\n摸\n忍\n虾\n蜡\n邻\n胸\n巩\n挤\n偶\n弃\n槽\n劲\n乳\n邓\n吉\n仁\n烂\n砖\n租\n乌\n舰\n伴\n瓜\n浅\n丙\n暂\n燥\n橡\n柳\n迷\n暖\n牌\n秧\n胆\n详\n簧\n踏\n瓷\n谱\n呆\n宾\n糊\n洛\n辉\n愤\n竞\n隙\n怒\n粘\n乃\n绪\n肩\n籍\n敏\n涂\n熙\n皆\n侦\n悬\n掘\n享\n纠\n醒\n狂\n锁\n淀\n恨\n牲\n霸\n爬\n赏\n逆\n玩\n陵\n祝\n秒\n浙\n貌\n役\n彼\n悉\n鸭\n趋\n凤\n晨\n畜\n辈\n秩\n卵\n署\n梯\n炎\n滩\n棋\n驱\n筛\n峡\n冒\n啥\n寿\n译\n浸\n泉\n帽\n迟\n硅\n疆\n贷\n漏\n稿\n冠\n嫩\n胁\n芯\n牢\n叛\n蚀\n奥\n鸣\n岭\n羊\n凭\n串\n塘\n绘\n酵\n融\n盆\n锡\n庙\n筹\n冻\n辅\n摄\n袭\n筋\n拒\n僚\n旱\n钾\n鸟\n漆\n沈\n眉\n疏\n添\n棒\n穗\n硝\n韩\n逼\n扭\n侨\n凉\n挺\n碗\n栽\n炒\n杯\n患\n馏\n劝\n豪\n辽\n勃\n鸿\n旦\n吏\n拜\n狗\n埋\n辊\n掩\n饮\n搬\n骂\n辞\n勾\n扣\n估\n蒋\n绒\n雾\n丈\n朵\n姆\n拟\n宇\n辑\n陕\n雕\n偿\n蓄\n崇\n剪\n倡\n厅\n咬\n驶\n薯\n刷\n斥\n番\n赋\n奉\n佛\n浇\n漫\n曼\n扇\n钙\n桃\n扶\n仔\n返\n俗\n亏\n腔\n鞋\n棱\n覆\n框\n悄\n叔\n撞\n骗\n勘\n旺\n沸\n孤\n吐\n孟\n渠\n屈\n疾\n妙\n惜\n仰\n狠\n胀\n谐\n抛\n霉\n桑\n岗\n嘛\n衰\n盗\n渗\n脏\n赖\n涌\n甜\n曹\n阅\n肌\n哩\n厉\n烃\n纬\n毅\n昨\n伪\n症\n煮\n叹\n钉\n搭\n茎\n笼\n酷\n偷\n弓\n锥\n恒\n杰\n坑\n鼻\n翼\n纶\n叙\n狱\n逮\n罐\n络\n棚\n抑\n膨\n蔬\n寺\n骤\n穆\n冶\n枯\n册\n尸\n凸\n绅\n坯\n牺\n焰\n轰\n欣\n晋\n瘦\n御\n锭\n锦\n丧\n旬\n锻\n垄\n搜\n扑\n邀\n亭\n酯\n迈\n舒\n脆\n酶\n闲\n忧\n酚\n顽\n羽\n涨\n卸\n仗\n陪\n辟\n惩\n杭\n姚\n肚\n捉\n飘\n漂\n昆\n欺\n吾\n郎\n烷\n汁\n呵\n饰\n萧\n雅\n邮\n迁\n燕\n撒\n姻\n赴\n宴\n烦\n债\n帐\n斑\n铃\n旨\n醇\n董\n饼\n雏\n姿\n拌\n傅\n腹\n妥\n揉\n贤\n拆\n歪\n葡\n胺\n丢\n浩\n徽\n昂\n垫\n挡\n览\n贪\n慰\n缴\n汪\n慌\n冯\n诺\n姜\n谊\n凶\n劣\n诬\n耀\n昏\n躺\n盈\n骑\n乔\n溪\n丛\n卢\n抹\n闷\n咨\n刮\n驾\n缆\n悟\n摘\n铒\n掷\n颇\n幻\n柄\n惠\n惨\n佳\n仇\n腊\n窝\n涤\n剑\n瞧\n堡\n泼\n葱\n罩\n霍\n捞\n胎\n苍\n滨\n俩\n捅\n湘\n砍\n霞\n邵\n萄\n疯\n淮\n遂\n熊\n粪\n烘\n宿\n档\n戈\n驳\n嫂\n裕\n徙\n箭\n捐\n肠\n撑\n晒\n辨\n殿\n莲\n摊\n搅\n酱\n屏\n疫\n哀\n蔡\n堵\n沫\n皱\n畅\n叠\n阁\n莱\n敲\n辖\n钩\n痕\n坝\n巷\n饿\n祸\n丘\n玄\n溜\n曰\n逻\n彭\n尝\n卿\n妨\n艇\n吞\n韦\n怨\n矮\n歇".split("\n"),jo="ábaco\nabdomen\nabeja\nabierto\nabogado\nabono\naborto\nabrazo\nabrir\nabuelo\nabuso\nacabar\nacademia\nacceso\nacción\naceite\nacelga\nacento\naceptar\nácido\naclarar\nacné\nacoger\nacoso\nactivo\nacto\nactriz\nactuar\nacudir\nacuerdo\nacusar\nadicto\nadmitir\nadoptar\nadorno\naduana\nadulto\naéreo\nafectar\nafición\nafinar\nafirmar\nágil\nagitar\nagonía\nagosto\nagotar\nagregar\nagrio\nagua\nagudo\náguila\naguja\nahogo\nahorro\naire\naislar\najedrez\najeno\najuste\nalacrán\nalambre\nalarma\nalba\nálbum\nalcalde\naldea\nalegre\nalejar\nalerta\naleta\nalfiler\nalga\nalgodón\naliado\naliento\nalivio\nalma\nalmeja\nalmíbar\naltar\nalteza\naltivo\nalto\naltura\nalumno\nalzar\namable\namante\namapola\namargo\namasar\námbar\námbito\nameno\namigo\namistad\namor\namparo\namplio\nancho\nanciano\nancla\nandar\nandén\nanemia\nángulo\nanillo\nánimo\nanís\nanotar\nantena\nantiguo\nantojo\nanual\nanular\nanuncio\nañadir\nañejo\naño\napagar\naparato\napetito\napio\naplicar\napodo\naporte\napoyo\naprender\naprobar\napuesta\napuro\narado\naraña\narar\nárbitro\nárbol\narbusto\narchivo\narco\narder\nardilla\narduo\nárea\nárido\naries\narmonía\narnés\naroma\narpa\narpón\narreglo\narroz\narruga\narte\nartista\nasa\nasado\nasalto\nascenso\nasegurar\naseo\nasesor\nasiento\nasilo\nasistir\nasno\nasombro\náspero\nastilla\nastro\nastuto\nasumir\nasunto\natajo\nataque\natar\natento\nateo\nático\natleta\nátomo\natraer\natroz\natún\naudaz\naudio\nauge\naula\naumento\nausente\nautor\naval\navance\navaro\nave\navellana\navena\navestruz\navión\naviso\nayer\nayuda\nayuno\nazafrán\nazar\nazote\nazúcar\nazufre\nazul\nbaba\nbabor\nbache\nbahía\nbaile\nbajar\nbalanza\nbalcón\nbalde\nbambú\nbanco\nbanda\nbaño\nbarba\nbarco\nbarniz\nbarro\nbáscula\nbastón\nbasura\nbatalla\nbatería\nbatir\nbatuta\nbaúl\nbazar\nbebé\nbebida\nbello\nbesar\nbeso\nbestia\nbicho\nbien\nbingo\nblanco\nbloque\nblusa\nboa\nbobina\nbobo\nboca\nbocina\nboda\nbodega\nboina\nbola\nbolero\nbolsa\nbomba\nbondad\nbonito\nbono\nbonsái\nborde\nborrar\nbosque\nbote\nbotín\nbóveda\nbozal\nbravo\nbrazo\nbrecha\nbreve\nbrillo\nbrinco\nbrisa\nbroca\nbroma\nbronce\nbrote\nbruja\nbrusco\nbruto\nbuceo\nbucle\nbueno\nbuey\nbufanda\nbufón\nbúho\nbuitre\nbulto\nburbuja\nburla\nburro\nbuscar\nbutaca\nbuzón\ncaballo\ncabeza\ncabina\ncabra\ncacao\ncadáver\ncadena\ncaer\ncafé\ncaída\ncaimán\ncaja\ncajón\ncal\ncalamar\ncalcio\ncaldo\ncalidad\ncalle\ncalma\ncalor\ncalvo\ncama\ncambio\ncamello\ncamino\ncampo\ncáncer\ncandil\ncanela\ncanguro\ncanica\ncanto\ncaña\ncañón\ncaoba\ncaos\ncapaz\ncapitán\ncapote\ncaptar\ncapucha\ncara\ncarbón\ncárcel\ncareta\ncarga\ncariño\ncarne\ncarpeta\ncarro\ncarta\ncasa\ncasco\ncasero\ncaspa\ncastor\ncatorce\ncatre\ncaudal\ncausa\ncazo\ncebolla\nceder\ncedro\ncelda\ncélebre\nceloso\ncélula\ncemento\nceniza\ncentro\ncerca\ncerdo\ncereza\ncero\ncerrar\ncerteza\ncésped\ncetro\nchacal\nchaleco\nchampú\nchancla\nchapa\ncharla\nchico\nchiste\nchivo\nchoque\nchoza\nchuleta\nchupar\nciclón\nciego\ncielo\ncien\ncierto\ncifra\ncigarro\ncima\ncinco\ncine\ncinta\nciprés\ncirco\nciruela\ncisne\ncita\nciudad\nclamor\nclan\nclaro\nclase\nclave\ncliente\nclima\nclínica\ncobre\ncocción\ncochino\ncocina\ncoco\ncódigo\ncodo\ncofre\ncoger\ncohete\ncojín\ncojo\ncola\ncolcha\ncolegio\ncolgar\ncolina\ncollar\ncolmo\ncolumna\ncombate\ncomer\ncomida\ncómodo\ncompra\nconde\nconejo\nconga\nconocer\nconsejo\ncontar\ncopa\ncopia\ncorazón\ncorbata\ncorcho\ncordón\ncorona\ncorrer\ncoser\ncosmos\ncosta\ncráneo\ncráter\ncrear\ncrecer\ncreído\ncrema\ncría\ncrimen\ncripta\ncrisis\ncromo\ncrónica\ncroqueta\ncrudo\ncruz\ncuadro\ncuarto\ncuatro\ncubo\ncubrir\ncuchara\ncuello\ncuento\ncuerda\ncuesta\ncueva\ncuidar\nculebra\nculpa\nculto\ncumbre\ncumplir\ncuna\ncuneta\ncuota\ncupón\ncúpula\ncurar\ncurioso\ncurso\ncurva\ncutis\ndama\ndanza\ndar\ndardo\ndátil\ndeber\ndébil\ndécada\ndecir\ndedo\ndefensa\ndefinir\ndejar\ndelfín\ndelgado\ndelito\ndemora\ndenso\ndental\ndeporte\nderecho\nderrota\ndesayuno\ndeseo\ndesfile\ndesnudo\ndestino\ndesvío\ndetalle\ndetener\ndeuda\ndía\ndiablo\ndiadema\ndiamante\ndiana\ndiario\ndibujo\ndictar\ndiente\ndieta\ndiez\ndifícil\ndigno\ndilema\ndiluir\ndinero\ndirecto\ndirigir\ndisco\ndiseño\ndisfraz\ndiva\ndivino\ndoble\ndoce\ndolor\ndomingo\ndon\ndonar\ndorado\ndormir\ndorso\ndos\ndosis\ndragón\ndroga\nducha\nduda\nduelo\ndueño\ndulce\ndúo\nduque\ndurar\ndureza\nduro\nébano\nebrio\nechar\neco\necuador\nedad\nedición\nedificio\neditor\neducar\nefecto\neficaz\neje\nejemplo\nelefante\nelegir\nelemento\nelevar\nelipse\nélite\nelixir\nelogio\neludir\nembudo\nemitir\nemoción\nempate\nempeño\nempleo\nempresa\nenano\nencargo\nenchufe\nencía\nenemigo\nenero\nenfado\nenfermo\nengaño\nenigma\nenlace\nenorme\nenredo\nensayo\nenseñar\nentero\nentrar\nenvase\nenvío\népoca\nequipo\nerizo\nescala\nescena\nescolar\nescribir\nescudo\nesencia\nesfera\nesfuerzo\nespada\nespejo\nespía\nesposa\nespuma\nesquí\nestar\neste\nestilo\nestufa\netapa\neterno\nética\netnia\nevadir\nevaluar\nevento\nevitar\nexacto\nexamen\nexceso\nexcusa\nexento\nexigir\nexilio\nexistir\néxito\nexperto\nexplicar\nexponer\nextremo\nfábrica\nfábula\nfachada\nfácil\nfactor\nfaena\nfaja\nfalda\nfallo\nfalso\nfaltar\nfama\nfamilia\nfamoso\nfaraón\nfarmacia\nfarol\nfarsa\nfase\nfatiga\nfauna\nfavor\nfax\nfebrero\nfecha\nfeliz\nfeo\nferia\nferoz\nfértil\nfervor\nfestín\nfiable\nfianza\nfiar\nfibra\nficción\nficha\nfideo\nfiebre\nfiel\nfiera\nfiesta\nfigura\nfijar\nfijo\nfila\nfilete\nfilial\nfiltro\nfin\nfinca\nfingir\nfinito\nfirma\nflaco\nflauta\nflecha\nflor\nflota\nfluir\nflujo\nflúor\nfobia\nfoca\nfogata\nfogón\nfolio\nfolleto\nfondo\nforma\nforro\nfortuna\nforzar\nfosa\nfoto\nfracaso\nfrágil\nfranja\nfrase\nfraude\nfreír\nfreno\nfresa\nfrío\nfrito\nfruta\nfuego\nfuente\nfuerza\nfuga\nfumar\nfunción\nfunda\nfurgón\nfuria\nfusil\nfútbol\nfuturo\ngacela\ngafas\ngaita\ngajo\ngala\ngalería\ngallo\ngamba\nganar\ngancho\nganga\nganso\ngaraje\ngarza\ngasolina\ngastar\ngato\ngavilán\ngemelo\ngemir\ngen\ngénero\ngenio\ngente\ngeranio\ngerente\ngermen\ngesto\ngigante\ngimnasio\ngirar\ngiro\nglaciar\nglobo\ngloria\ngol\ngolfo\ngoloso\ngolpe\ngoma\ngordo\ngorila\ngorra\ngota\ngoteo\ngozar\ngrada\ngráfico\ngrano\ngrasa\ngratis\ngrave\ngrieta\ngrillo\ngripe\ngris\ngrito\ngrosor\ngrúa\ngrueso\ngrumo\ngrupo\nguante\nguapo\nguardia\nguerra\nguía\nguiño\nguion\nguiso\nguitarra\ngusano\ngustar\nhaber\nhábil\nhablar\nhacer\nhacha\nhada\nhallar\nhamaca\nharina\nhaz\nhazaña\nhebilla\nhebra\nhecho\nhelado\nhelio\nhembra\nherir\nhermano\nhéroe\nhervir\nhielo\nhierro\nhígado\nhigiene\nhijo\nhimno\nhistoria\nhocico\nhogar\nhoguera\nhoja\nhombre\nhongo\nhonor\nhonra\nhora\nhormiga\nhorno\nhostil\nhoyo\nhueco\nhuelga\nhuerta\nhueso\nhuevo\nhuida\nhuir\nhumano\nhúmedo\nhumilde\nhumo\nhundir\nhuracán\nhurto\nicono\nideal\nidioma\nídolo\niglesia\niglú\nigual\nilegal\nilusión\nimagen\nimán\nimitar\nimpar\nimperio\nimponer\nimpulso\nincapaz\níndice\ninerte\ninfiel\ninforme\ningenio\ninicio\ninmenso\ninmune\ninnato\ninsecto\ninstante\ninterés\níntimo\nintuir\ninútil\ninvierno\nira\niris\nironía\nisla\nislote\njabalí\njabón\njamón\njarabe\njardín\njarra\njaula\njazmín\njefe\njeringa\njinete\njornada\njoroba\njoven\njoya\njuerga\njueves\njuez\njugador\njugo\njuguete\njuicio\njunco\njungla\njunio\njuntar\njúpiter\njurar\njusto\njuvenil\njuzgar\nkilo\nkoala\nlabio\nlacio\nlacra\nlado\nladrón\nlagarto\nlágrima\nlaguna\nlaico\nlamer\nlámina\nlámpara\nlana\nlancha\nlangosta\nlanza\nlápiz\nlargo\nlarva\nlástima\nlata\nlátex\nlatir\nlaurel\nlavar\nlazo\nleal\nlección\nleche\nlector\nleer\nlegión\nlegumbre\nlejano\nlengua\nlento\nleña\nleón\nleopardo\nlesión\nletal\nletra\nleve\nleyenda\nlibertad\nlibro\nlicor\nlíder\nlidiar\nlienzo\nliga\nligero\nlima\nlímite\nlimón\nlimpio\nlince\nlindo\nlínea\nlingote\nlino\nlinterna\nlíquido\nliso\nlista\nlitera\nlitio\nlitro\nllaga\nllama\nllanto\nllave\nllegar\nllenar\nllevar\nllorar\nllover\nlluvia\nlobo\nloción\nloco\nlocura\nlógica\nlogro\nlombriz\nlomo\nlonja\nlote\nlucha\nlucir\nlugar\nlujo\nluna\nlunes\nlupa\nlustro\nluto\nluz\nmaceta\nmacho\nmadera\nmadre\nmaduro\nmaestro\nmafia\nmagia\nmago\nmaíz\nmaldad\nmaleta\nmalla\nmalo\nmamá\nmambo\nmamut\nmanco\nmando\nmanejar\nmanga\nmaniquí\nmanjar\nmano\nmanso\nmanta\nmañana\nmapa\nmáquina\nmar\nmarco\nmarea\nmarfil\nmargen\nmarido\nmármol\nmarrón\nmartes\nmarzo\nmasa\nmáscara\nmasivo\nmatar\nmateria\nmatiz\nmatriz\nmáximo\nmayor\nmazorca\nmecha\nmedalla\nmedio\nmédula\nmejilla\nmejor\nmelena\nmelón\nmemoria\nmenor\nmensaje\nmente\nmenú\nmercado\nmerengue\nmérito\nmes\nmesón\nmeta\nmeter\nmétodo\nmetro\nmezcla\nmiedo\nmiel\nmiembro\nmiga\nmil\nmilagro\nmilitar\nmillón\nmimo\nmina\nminero\nmínimo\nminuto\nmiope\nmirar\nmisa\nmiseria\nmisil\nmismo\nmitad\nmito\nmochila\nmoción\nmoda\nmodelo\nmoho\nmojar\nmolde\nmoler\nmolino\nmomento\nmomia\nmonarca\nmoneda\nmonja\nmonto\nmoño\nmorada\nmorder\nmoreno\nmorir\nmorro\nmorsa\nmortal\nmosca\nmostrar\nmotivo\nmover\nmóvil\nmozo\nmucho\nmudar\nmueble\nmuela\nmuerte\nmuestra\nmugre\nmujer\nmula\nmuleta\nmulta\nmundo\nmuñeca\nmural\nmuro\nmúsculo\nmuseo\nmusgo\nmúsica\nmuslo\nnácar\nnación\nnadar\nnaipe\nnaranja\nnariz\nnarrar\nnasal\nnatal\nnativo\nnatural\nnáusea\nnaval\nnave\nnavidad\nnecio\nnéctar\nnegar\nnegocio\nnegro\nneón\nnervio\nneto\nneutro\nnevar\nnevera\nnicho\nnido\nniebla\nnieto\nniñez\nniño\nnítido\nnivel\nnobleza\nnoche\nnómina\nnoria\nnorma\nnorte\nnota\nnoticia\nnovato\nnovela\nnovio\nnube\nnuca\nnúcleo\nnudillo\nnudo\nnuera\nnueve\nnuez\nnulo\nnúmero\nnutria\noasis\nobeso\nobispo\nobjeto\nobra\nobrero\nobservar\nobtener\nobvio\noca\nocaso\nocéano\nochenta\nocho\nocio\nocre\noctavo\noctubre\noculto\nocupar\nocurrir\nodiar\nodio\nodisea\noeste\nofensa\noferta\noficio\nofrecer\nogro\noído\noír\nojo\nola\noleada\nolfato\nolivo\nolla\nolmo\nolor\nolvido\nombligo\nonda\nonza\nopaco\nopción\nópera\nopinar\noponer\noptar\nóptica\nopuesto\noración\norador\noral\nórbita\norca\norden\noreja\nórgano\norgía\norgullo\noriente\norigen\norilla\noro\norquesta\noruga\nosadía\noscuro\nosezno\noso\nostra\notoño\notro\noveja\nóvulo\nóxido\noxígeno\noyente\nozono\npacto\npadre\npaella\npágina\npago\npaís\npájaro\npalabra\npalco\npaleta\npálido\npalma\npaloma\npalpar\npan\npanal\npánico\npantera\npañuelo\npapá\npapel\npapilla\npaquete\nparar\nparcela\npared\nparir\nparo\npárpado\nparque\npárrafo\nparte\npasar\npaseo\npasión\npaso\npasta\npata\npatio\npatria\npausa\npauta\npavo\npayaso\npeatón\npecado\npecera\npecho\npedal\npedir\npegar\npeine\npelar\npeldaño\npelea\npeligro\npellejo\npelo\npeluca\npena\npensar\npeñón\npeón\npeor\npepino\npequeño\npera\npercha\nperder\npereza\nperfil\nperico\nperla\npermiso\nperro\npersona\npesa\npesca\npésimo\npestaña\npétalo\npetróleo\npez\npezuña\npicar\npichón\npie\npiedra\npierna\npieza\npijama\npilar\npiloto\npimienta\npino\npintor\npinza\npiña\npiojo\npipa\npirata\npisar\npiscina\npiso\npista\npitón\npizca\nplaca\nplan\nplata\nplaya\nplaza\npleito\npleno\nplomo\npluma\nplural\npobre\npoco\npoder\npodio\npoema\npoesía\npoeta\npolen\npolicía\npollo\npolvo\npomada\npomelo\npomo\npompa\nponer\nporción\nportal\nposada\nposeer\nposible\nposte\npotencia\npotro\npozo\nprado\nprecoz\npregunta\npremio\nprensa\npreso\nprevio\nprimo\npríncipe\nprisión\nprivar\nproa\nprobar\nproceso\nproducto\nproeza\nprofesor\nprograma\nprole\npromesa\npronto\npropio\npróximo\nprueba\npúblico\npuchero\npudor\npueblo\npuerta\npuesto\npulga\npulir\npulmón\npulpo\npulso\npuma\npunto\npuñal\npuño\npupa\npupila\npuré\nquedar\nqueja\nquemar\nquerer\nqueso\nquieto\nquímica\nquince\nquitar\nrábano\nrabia\nrabo\nración\nradical\nraíz\nrama\nrampa\nrancho\nrango\nrapaz\nrápido\nrapto\nrasgo\nraspa\nrato\nrayo\nraza\nrazón\nreacción\nrealidad\nrebaño\nrebote\nrecaer\nreceta\nrechazo\nrecoger\nrecreo\nrecto\nrecurso\nred\nredondo\nreducir\nreflejo\nreforma\nrefrán\nrefugio\nregalo\nregir\nregla\nregreso\nrehén\nreino\nreír\nreja\nrelato\nrelevo\nrelieve\nrelleno\nreloj\nremar\nremedio\nremo\nrencor\nrendir\nrenta\nreparto\nrepetir\nreposo\nreptil\nres\nrescate\nresina\nrespeto\nresto\nresumen\nretiro\nretorno\nretrato\nreunir\nrevés\nrevista\nrey\nrezar\nrico\nriego\nrienda\nriesgo\nrifa\nrígido\nrigor\nrincón\nriñón\nrío\nriqueza\nrisa\nritmo\nrito\nrizo\nroble\nroce\nrociar\nrodar\nrodeo\nrodilla\nroer\nrojizo\nrojo\nromero\nromper\nron\nronco\nronda\nropa\nropero\nrosa\nrosca\nrostro\nrotar\nrubí\nrubor\nrudo\nrueda\nrugir\nruido\nruina\nruleta\nrulo\nrumbo\nrumor\nruptura\nruta\nrutina\nsábado\nsaber\nsabio\nsable\nsacar\nsagaz\nsagrado\nsala\nsaldo\nsalero\nsalir\nsalmón\nsalón\nsalsa\nsalto\nsalud\nsalvar\nsamba\nsanción\nsandía\nsanear\nsangre\nsanidad\nsano\nsanto\nsapo\nsaque\nsardina\nsartén\nsastre\nsatán\nsauna\nsaxofón\nsección\nseco\nsecreto\nsecta\nsed\nseguir\nseis\nsello\nselva\nsemana\nsemilla\nsenda\nsensor\nseñal\nseñor\nseparar\nsepia\nsequía\nser\nserie\nsermón\nservir\nsesenta\nsesión\nseta\nsetenta\nsevero\nsexo\nsexto\nsidra\nsiesta\nsiete\nsiglo\nsigno\nsílaba\nsilbar\nsilencio\nsilla\nsímbolo\nsimio\nsirena\nsistema\nsitio\nsituar\nsobre\nsocio\nsodio\nsol\nsolapa\nsoldado\nsoledad\nsólido\nsoltar\nsolución\nsombra\nsondeo\nsonido\nsonoro\nsonrisa\nsopa\nsoplar\nsoporte\nsordo\nsorpresa\nsorteo\nsostén\nsótano\nsuave\nsubir\nsuceso\nsudor\nsuegra\nsuelo\nsueño\nsuerte\nsufrir\nsujeto\nsultán\nsumar\nsuperar\nsuplir\nsuponer\nsupremo\nsur\nsurco\nsureño\nsurgir\nsusto\nsutil\ntabaco\ntabique\ntabla\ntabú\ntaco\ntacto\ntajo\ntalar\ntalco\ntalento\ntalla\ntalón\ntamaño\ntambor\ntango\ntanque\ntapa\ntapete\ntapia\ntapón\ntaquilla\ntarde\ntarea\ntarifa\ntarjeta\ntarot\ntarro\ntarta\ntatuaje\ntauro\ntaza\ntazón\nteatro\ntecho\ntecla\ntécnica\ntejado\ntejer\ntejido\ntela\nteléfono\ntema\ntemor\ntemplo\ntenaz\ntender\ntener\ntenis\ntenso\nteoría\nterapia\nterco\ntérmino\nternura\nterror\ntesis\ntesoro\ntestigo\ntetera\ntexto\ntez\ntibio\ntiburón\ntiempo\ntienda\ntierra\ntieso\ntigre\ntijera\ntilde\ntimbre\ntímido\ntimo\ntinta\ntío\ntípico\ntipo\ntira\ntirón\ntitán\ntítere\ntítulo\ntiza\ntoalla\ntobillo\ntocar\ntocino\ntodo\ntoga\ntoldo\ntomar\ntono\ntonto\ntopar\ntope\ntoque\ntórax\ntorero\ntormenta\ntorneo\ntoro\ntorpedo\ntorre\ntorso\ntortuga\ntos\ntosco\ntoser\ntóxico\ntrabajo\ntractor\ntraer\ntráfico\ntrago\ntraje\ntramo\ntrance\ntrato\ntrauma\ntrazar\ntrébol\ntregua\ntreinta\ntren\ntrepar\ntres\ntribu\ntrigo\ntripa\ntriste\ntriunfo\ntrofeo\ntrompa\ntronco\ntropa\ntrote\ntrozo\ntruco\ntrueno\ntrufa\ntubería\ntubo\ntuerto\ntumba\ntumor\ntúnel\ntúnica\nturbina\nturismo\nturno\ntutor\nubicar\núlcera\numbral\nunidad\nunir\nuniverso\nuno\nuntar\nuña\nurbano\nurbe\nurgente\nurna\nusar\nusuario\nútil\nutopía\nuva\nvaca\nvacío\nvacuna\nvagar\nvago\nvaina\nvajilla\nvale\nválido\nvalle\nvalor\nválvula\nvampiro\nvara\nvariar\nvarón\nvaso\nvecino\nvector\nvehículo\nveinte\nvejez\nvela\nvelero\nveloz\nvena\nvencer\nvenda\nveneno\nvengar\nvenir\nventa\nvenus\nver\nverano\nverbo\nverde\nvereda\nverja\nverso\nverter\nvía\nviaje\nvibrar\nvicio\nvíctima\nvida\nvídeo\nvidrio\nviejo\nviernes\nvigor\nvil\nvilla\nvinagre\nvino\nviñedo\nviolín\nviral\nvirgo\nvirtud\nvisor\nvíspera\nvista\nvitamina\nviudo\nvivaz\nvivero\nvivir\nvivo\nvolcán\nvolumen\nvolver\nvoraz\nvotar\nvoto\nvoz\nvuelo\nvulgar\nyacer\nyate\nyegua\nyema\nyerno\nyeso\nyodo\nyoga\nyogur\nzafiro\nzanja\nzapato\nzarza\nzona\nzorro\nzumo\nzurdo".split("\n"),Do="的\n一\n是\n在\n不\n了\n有\n和\n人\n這\n中\n大\n為\n上\n個\n國\n我\n以\n要\n他\n時\n來\n用\n們\n生\n到\n作\n地\n於\n出\n就\n分\n對\n成\n會\n可\n主\n發\n年\n動\n同\n工\n也\n能\n下\n過\n子\n說\n產\n種\n面\n而\n方\n後\n多\n定\n行\n學\n法\n所\n民\n得\n經\n十\n三\n之\n進\n著\n等\n部\n度\n家\n電\n力\n裡\n如\n水\n化\n高\n自\n二\n理\n起\n小\n物\n現\n實\n加\n量\n都\n兩\n體\n制\n機\n當\n使\n點\n從\n業\n本\n去\n把\n性\n好\n應\n開\n它\n合\n還\n因\n由\n其\n些\n然\n前\n外\n天\n政\n四\n日\n那\n社\n義\n事\n平\n形\n相\n全\n表\n間\n樣\n與\n關\n各\n重\n新\n線\n內\n數\n正\n心\n反\n你\n明\n看\n原\n又\n麼\n利\n比\n或\n但\n質\n氣\n第\n向\n道\n命\n此\n變\n條\n只\n沒\n結\n解\n問\n意\n建\n月\n公\n無\n系\n軍\n很\n情\n者\n最\n立\n代\n想\n已\n通\n並\n提\n直\n題\n黨\n程\n展\n五\n果\n料\n象\n員\n革\n位\n入\n常\n文\n總\n次\n品\n式\n活\n設\n及\n管\n特\n件\n長\n求\n老\n頭\n基\n資\n邊\n流\n路\n級\n少\n圖\n山\n統\n接\n知\n較\n將\n組\n見\n計\n別\n她\n手\n角\n期\n根\n論\n運\n農\n指\n幾\n九\n區\n強\n放\n決\n西\n被\n幹\n做\n必\n戰\n先\n回\n則\n任\n取\n據\n處\n隊\n南\n給\n色\n光\n門\n即\n保\n治\n北\n造\n百\n規\n熱\n領\n七\n海\n口\n東\n導\n器\n壓\n志\n世\n金\n增\n爭\n濟\n階\n油\n思\n術\n極\n交\n受\n聯\n什\n認\n六\n共\n權\n收\n證\n改\n清\n美\n再\n採\n轉\n更\n單\n風\n切\n打\n白\n教\n速\n花\n帶\n安\n場\n身\n車\n例\n真\n務\n具\n萬\n每\n目\n至\n達\n走\n積\n示\n議\n聲\n報\n鬥\n完\n類\n八\n離\n華\n名\n確\n才\n科\n張\n信\n馬\n節\n話\n米\n整\n空\n元\n況\n今\n集\n溫\n傳\n土\n許\n步\n群\n廣\n石\n記\n需\n段\n研\n界\n拉\n林\n律\n叫\n且\n究\n觀\n越\n織\n裝\n影\n算\n低\n持\n音\n眾\n書\n布\n复\n容\n兒\n須\n際\n商\n非\n驗\n連\n斷\n深\n難\n近\n礦\n千\n週\n委\n素\n技\n備\n半\n辦\n青\n省\n列\n習\n響\n約\n支\n般\n史\n感\n勞\n便\n團\n往\n酸\n歷\n市\n克\n何\n除\n消\n構\n府\n稱\n太\n準\n精\n值\n號\n率\n族\n維\n劃\n選\n標\n寫\n存\n候\n毛\n親\n快\n效\n斯\n院\n查\n江\n型\n眼\n王\n按\n格\n養\n易\n置\n派\n層\n片\n始\n卻\n專\n狀\n育\n廠\n京\n識\n適\n屬\n圓\n包\n火\n住\n調\n滿\n縣\n局\n照\n參\n紅\n細\n引\n聽\n該\n鐵\n價\n嚴\n首\n底\n液\n官\n德\n隨\n病\n蘇\n失\n爾\n死\n講\n配\n女\n黃\n推\n顯\n談\n罪\n神\n藝\n呢\n席\n含\n企\n望\n密\n批\n營\n項\n防\n舉\n球\n英\n氧\n勢\n告\n李\n台\n落\n木\n幫\n輪\n破\n亞\n師\n圍\n注\n遠\n字\n材\n排\n供\n河\n態\n封\n另\n施\n減\n樹\n溶\n怎\n止\n案\n言\n士\n均\n武\n固\n葉\n魚\n波\n視\n僅\n費\n緊\n愛\n左\n章\n早\n朝\n害\n續\n輕\n服\n試\n食\n充\n兵\n源\n判\n護\n司\n足\n某\n練\n差\n致\n板\n田\n降\n黑\n犯\n負\n擊\n范\n繼\n興\n似\n餘\n堅\n曲\n輸\n修\n故\n城\n夫\n夠\n送\n筆\n船\n佔\n右\n財\n吃\n富\n春\n職\n覺\n漢\n畫\n功\n巴\n跟\n雖\n雜\n飛\n檢\n吸\n助\n昇\n陽\n互\n初\n創\n抗\n考\n投\n壞\n策\n古\n徑\n換\n未\n跑\n留\n鋼\n曾\n端\n責\n站\n簡\n述\n錢\n副\n盡\n帝\n射\n草\n衝\n承\n獨\n令\n限\n阿\n宣\n環\n雙\n請\n超\n微\n讓\n控\n州\n良\n軸\n找\n否\n紀\n益\n依\n優\n頂\n礎\n載\n倒\n房\n突\n坐\n粉\n敵\n略\n客\n袁\n冷\n勝\n絕\n析\n塊\n劑\n測\n絲\n協\n訴\n念\n陳\n仍\n羅\n鹽\n友\n洋\n錯\n苦\n夜\n刑\n移\n頻\n逐\n靠\n混\n母\n短\n皮\n終\n聚\n汽\n村\n雲\n哪\n既\n距\n衛\n停\n烈\n央\n察\n燒\n迅\n境\n若\n印\n洲\n刻\n括\n激\n孔\n搞\n甚\n室\n待\n核\n校\n散\n侵\n吧\n甲\n遊\n久\n菜\n味\n舊\n模\n湖\n貨\n損\n預\n阻\n毫\n普\n穩\n乙\n媽\n植\n息\n擴\n銀\n語\n揮\n酒\n守\n拿\n序\n紙\n醫\n缺\n雨\n嗎\n針\n劉\n啊\n急\n唱\n誤\n訓\n願\n審\n附\n獲\n茶\n鮮\n糧\n斤\n孩\n脫\n硫\n肥\n善\n龍\n演\n父\n漸\n血\n歡\n械\n掌\n歌\n沙\n剛\n攻\n謂\n盾\n討\n晚\n粒\n亂\n燃\n矛\n乎\n殺\n藥\n寧\n魯\n貴\n鐘\n煤\n讀\n班\n伯\n香\n介\n迫\n句\n豐\n培\n握\n蘭\n擔\n弦\n蛋\n沉\n假\n穿\n執\n答\n樂\n誰\n順\n煙\n縮\n徵\n臉\n喜\n松\n腳\n困\n異\n免\n背\n星\n福\n買\n染\n井\n概\n慢\n怕\n磁\n倍\n祖\n皇\n促\n靜\n補\n評\n翻\n肉\n踐\n尼\n衣\n寬\n揚\n棉\n希\n傷\n操\n垂\n秋\n宜\n氫\n套\n督\n振\n架\n亮\n末\n憲\n慶\n編\n牛\n觸\n映\n雷\n銷\n詩\n座\n居\n抓\n裂\n胞\n呼\n娘\n景\n威\n綠\n晶\n厚\n盟\n衡\n雞\n孫\n延\n危\n膠\n屋\n鄉\n臨\n陸\n顧\n掉\n呀\n燈\n歲\n措\n束\n耐\n劇\n玉\n趙\n跳\n哥\n季\n課\n凱\n胡\n額\n款\n紹\n卷\n齊\n偉\n蒸\n殖\n永\n宗\n苗\n川\n爐\n岩\n弱\n零\n楊\n奏\n沿\n露\n桿\n探\n滑\n鎮\n飯\n濃\n航\n懷\n趕\n庫\n奪\n伊\n靈\n稅\n途\n滅\n賽\n歸\n召\n鼓\n播\n盤\n裁\n險\n康\n唯\n錄\n菌\n純\n借\n糖\n蓋\n橫\n符\n私\n努\n堂\n域\n槍\n潤\n幅\n哈\n竟\n熟\n蟲\n澤\n腦\n壤\n碳\n歐\n遍\n側\n寨\n敢\n徹\n慮\n斜\n薄\n庭\n納\n彈\n飼\n伸\n折\n麥\n濕\n暗\n荷\n瓦\n塞\n床\n築\n惡\n戶\n訪\n塔\n奇\n透\n梁\n刀\n旋\n跡\n卡\n氯\n遇\n份\n毒\n泥\n退\n洗\n擺\n灰\n彩\n賣\n耗\n夏\n擇\n忙\n銅\n獻\n硬\n予\n繁\n圈\n雪\n函\n亦\n抽\n篇\n陣\n陰\n丁\n尺\n追\n堆\n雄\n迎\n泛\n爸\n樓\n避\n謀\n噸\n野\n豬\n旗\n累\n偏\n典\n館\n索\n秦\n脂\n潮\n爺\n豆\n忽\n托\n驚\n塑\n遺\n愈\n朱\n替\n纖\n粗\n傾\n尚\n痛\n楚\n謝\n奮\n購\n磨\n君\n池\n旁\n碎\n骨\n監\n捕\n弟\n暴\n割\n貫\n殊\n釋\n詞\n亡\n壁\n頓\n寶\n午\n塵\n聞\n揭\n炮\n殘\n冬\n橋\n婦\n警\n綜\n招\n吳\n付\n浮\n遭\n徐\n您\n搖\n谷\n贊\n箱\n隔\n訂\n男\n吹\n園\n紛\n唐\n敗\n宋\n玻\n巨\n耕\n坦\n榮\n閉\n灣\n鍵\n凡\n駐\n鍋\n救\n恩\n剝\n凝\n鹼\n齒\n截\n煉\n麻\n紡\n禁\n廢\n盛\n版\n緩\n淨\n睛\n昌\n婚\n涉\n筒\n嘴\n插\n岸\n朗\n莊\n街\n藏\n姑\n貿\n腐\n奴\n啦\n慣\n乘\n夥\n恢\n勻\n紗\n扎\n辯\n耳\n彪\n臣\n億\n璃\n抵\n脈\n秀\n薩\n俄\n網\n舞\n店\n噴\n縱\n寸\n汗\n掛\n洪\n賀\n閃\n柬\n爆\n烯\n津\n稻\n牆\n軟\n勇\n像\n滾\n厘\n蒙\n芳\n肯\n坡\n柱\n盪\n腿\n儀\n旅\n尾\n軋\n冰\n貢\n登\n黎\n削\n鑽\n勒\n逃\n障\n氨\n郭\n峰\n幣\n港\n伏\n軌\n畝\n畢\n擦\n莫\n刺\n浪\n秘\n援\n株\n健\n售\n股\n島\n甘\n泡\n睡\n童\n鑄\n湯\n閥\n休\n匯\n舍\n牧\n繞\n炸\n哲\n磷\n績\n朋\n淡\n尖\n啟\n陷\n柴\n呈\n徒\n顏\n淚\n稍\n忘\n泵\n藍\n拖\n洞\n授\n鏡\n辛\n壯\n鋒\n貧\n虛\n彎\n摩\n泰\n幼\n廷\n尊\n窗\n綱\n弄\n隸\n疑\n氏\n宮\n姐\n震\n瑞\n怪\n尤\n琴\n循\n描\n膜\n違\n夾\n腰\n緣\n珠\n窮\n森\n枝\n竹\n溝\n催\n繩\n憶\n邦\n剩\n幸\n漿\n欄\n擁\n牙\n貯\n禮\n濾\n鈉\n紋\n罷\n拍\n咱\n喊\n袖\n埃\n勤\n罰\n焦\n潛\n伍\n墨\n欲\n縫\n姓\n刊\n飽\n仿\n獎\n鋁\n鬼\n麗\n跨\n默\n挖\n鏈\n掃\n喝\n袋\n炭\n污\n幕\n諸\n弧\n勵\n梅\n奶\n潔\n災\n舟\n鑑\n苯\n訟\n抱\n毀\n懂\n寒\n智\n埔\n寄\n屆\n躍\n渡\n挑\n丹\n艱\n貝\n碰\n拔\n爹\n戴\n碼\n夢\n芽\n熔\n赤\n漁\n哭\n敬\n顆\n奔\n鉛\n仲\n虎\n稀\n妹\n乏\n珍\n申\n桌\n遵\n允\n隆\n螺\n倉\n魏\n銳\n曉\n氮\n兼\n隱\n礙\n赫\n撥\n忠\n肅\n缸\n牽\n搶\n博\n巧\n殼\n兄\n杜\n訊\n誠\n碧\n祥\n柯\n頁\n巡\n矩\n悲\n灌\n齡\n倫\n票\n尋\n桂\n鋪\n聖\n恐\n恰\n鄭\n趣\n抬\n荒\n騰\n貼\n柔\n滴\n猛\n闊\n輛\n妻\n填\n撤\n儲\n簽\n鬧\n擾\n紫\n砂\n遞\n戲\n吊\n陶\n伐\n餵\n療\n瓶\n婆\n撫\n臂\n摸\n忍\n蝦\n蠟\n鄰\n胸\n鞏\n擠\n偶\n棄\n槽\n勁\n乳\n鄧\n吉\n仁\n爛\n磚\n租\n烏\n艦\n伴\n瓜\n淺\n丙\n暫\n燥\n橡\n柳\n迷\n暖\n牌\n秧\n膽\n詳\n簧\n踏\n瓷\n譜\n呆\n賓\n糊\n洛\n輝\n憤\n競\n隙\n怒\n粘\n乃\n緒\n肩\n籍\n敏\n塗\n熙\n皆\n偵\n懸\n掘\n享\n糾\n醒\n狂\n鎖\n淀\n恨\n牲\n霸\n爬\n賞\n逆\n玩\n陵\n祝\n秒\n浙\n貌\n役\n彼\n悉\n鴨\n趨\n鳳\n晨\n畜\n輩\n秩\n卵\n署\n梯\n炎\n灘\n棋\n驅\n篩\n峽\n冒\n啥\n壽\n譯\n浸\n泉\n帽\n遲\n矽\n疆\n貸\n漏\n稿\n冠\n嫩\n脅\n芯\n牢\n叛\n蝕\n奧\n鳴\n嶺\n羊\n憑\n串\n塘\n繪\n酵\n融\n盆\n錫\n廟\n籌\n凍\n輔\n攝\n襲\n筋\n拒\n僚\n旱\n鉀\n鳥\n漆\n沈\n眉\n疏\n添\n棒\n穗\n硝\n韓\n逼\n扭\n僑\n涼\n挺\n碗\n栽\n炒\n杯\n患\n餾\n勸\n豪\n遼\n勃\n鴻\n旦\n吏\n拜\n狗\n埋\n輥\n掩\n飲\n搬\n罵\n辭\n勾\n扣\n估\n蔣\n絨\n霧\n丈\n朵\n姆\n擬\n宇\n輯\n陝\n雕\n償\n蓄\n崇\n剪\n倡\n廳\n咬\n駛\n薯\n刷\n斥\n番\n賦\n奉\n佛\n澆\n漫\n曼\n扇\n鈣\n桃\n扶\n仔\n返\n俗\n虧\n腔\n鞋\n棱\n覆\n框\n悄\n叔\n撞\n騙\n勘\n旺\n沸\n孤\n吐\n孟\n渠\n屈\n疾\n妙\n惜\n仰\n狠\n脹\n諧\n拋\n黴\n桑\n崗\n嘛\n衰\n盜\n滲\n臟\n賴\n湧\n甜\n曹\n閱\n肌\n哩\n厲\n烴\n緯\n毅\n昨\n偽\n症\n煮\n嘆\n釘\n搭\n莖\n籠\n酷\n偷\n弓\n錐\n恆\n傑\n坑\n鼻\n翼\n綸\n敘\n獄\n逮\n罐\n絡\n棚\n抑\n膨\n蔬\n寺\n驟\n穆\n冶\n枯\n冊\n屍\n凸\n紳\n坯\n犧\n焰\n轟\n欣\n晉\n瘦\n禦\n錠\n錦\n喪\n旬\n鍛\n壟\n搜\n撲\n邀\n亭\n酯\n邁\n舒\n脆\n酶\n閒\n憂\n酚\n頑\n羽\n漲\n卸\n仗\n陪\n闢\n懲\n杭\n姚\n肚\n捉\n飄\n漂\n昆\n欺\n吾\n郎\n烷\n汁\n呵\n飾\n蕭\n雅\n郵\n遷\n燕\n撒\n姻\n赴\n宴\n煩\n債\n帳\n斑\n鈴\n旨\n醇\n董\n餅\n雛\n姿\n拌\n傅\n腹\n妥\n揉\n賢\n拆\n歪\n葡\n胺\n丟\n浩\n徽\n昂\n墊\n擋\n覽\n貪\n慰\n繳\n汪\n慌\n馮\n諾\n姜\n誼\n兇\n劣\n誣\n耀\n昏\n躺\n盈\n騎\n喬\n溪\n叢\n盧\n抹\n悶\n諮\n刮\n駕\n纜\n悟\n摘\n鉺\n擲\n頗\n幻\n柄\n惠\n慘\n佳\n仇\n臘\n窩\n滌\n劍\n瞧\n堡\n潑\n蔥\n罩\n霍\n撈\n胎\n蒼\n濱\n倆\n捅\n湘\n砍\n霞\n邵\n萄\n瘋\n淮\n遂\n熊\n糞\n烘\n宿\n檔\n戈\n駁\n嫂\n裕\n徙\n箭\n捐\n腸\n撐\n曬\n辨\n殿\n蓮\n攤\n攪\n醬\n屏\n疫\n哀\n蔡\n堵\n沫\n皺\n暢\n疊\n閣\n萊\n敲\n轄\n鉤\n痕\n壩\n巷\n餓\n禍\n丘\n玄\n溜\n曰\n邏\n彭\n嘗\n卿\n妨\n艇\n吞\n韋\n怨\n矮\n歇".split("\n");var Mo=Object.freeze({__proto__:null,HDKey:nr,createNonceManager:Br,nonceManager:Cr,signatureToHex:Or,serializeSignature:Or,generateMnemonic:function(n,e){return jr(n,e)},generatePrivateKey:function(){return mr(Xe.utils.randomPrivateKey())},hdKeyToAccount:Ro,mnemonicToAccount:function(n,{passphrase:e,...t}={}){const r=Mr(n,e);return Ro(nr.fromMasterSeed(r),t)},privateKeyToAccount:zo,toAccount:ua,parseAccount:function(n){return"string"==typeof n?{address:n,type:"json-rpc"}:n},privateKeyToAddress:function(n){return da(yr(Xe.getPublicKey(n.slice(2),!1)))},publicKeyToAddress:da,setSignEntropy:function(n){if(!n)throw new Error("must be a `true` or a hex value.");ha=n},sign:pa,signAuthorization:Ia,signMessage:Na,signTransaction:ro,signTypedData:No,czech:To,english:So,french:Bo,italian:Co,japanese:Oo,korean:Uo,portuguese:Fo,simplifiedChinese:Lo,spanish:jo,traditionalChinese:Do});const Go="6.16.0";function qo(n,e,t){const r=e.split("|").map(n=>n.trim());for(let t=0;t<r.length;t++)switch(e){case"any":return;case"bigint":case"boolean":case"number":case"string":if(typeof n===e)return}const a=new Error(`invalid value for type ${e}`);throw a.code="INVALID_ARGUMENT",a.argument=`value.${t}`,a.value=n,a}async function Ho(n){const e=Object.keys(n);return(await Promise.all(e.map(e=>Promise.resolve(n[e])))).reduce((n,t,r)=>(n[e[r]]=t,n),{})}function Ko(n,e,t){for(let r in e){let a=e[r];const o=t?t[r]:null;o&&qo(a,o,r),Object.defineProperty(n,r,{enumerable:!0,value:a,writable:!1})}}function Vo(n,e){if(null==n)return"null";if(null==e&&(e=new Set),"object"==typeof n){if(e.has(n))return"[Circular]";e.add(n)}if(Array.isArray(n))return"[ "+n.map(n=>Vo(n,e)).join(", ")+" ]";if(n instanceof Uint8Array){const e="0123456789abcdef";let t="0x";for(let r=0;r<n.length;r++)t+=e[n[r]>>4],t+=e[15&n[r]];return t}if("object"==typeof n&&"function"==typeof n.toJSON)return Vo(n.toJSON(),e);switch(typeof n){case"boolean":case"number":case"symbol":return n.toString();case"bigint":return BigInt(n).toString();case"string":return JSON.stringify(n);case"object":{const t=Object.keys(n);return t.sort(),"{ "+t.map(t=>`${Vo(t,e)}: ${Vo(n[t],e)}`).join(", ")+" }"}}return"[ COULD NOT SERIALIZE ]"}function _o(n,e){return n&&n.code===e}function Qo(n){return _o(n,"CALL_EXCEPTION")}function Jo(n,e,t){let r,a=n;{const r=[];if(t){if("message"in t||"code"in t||"name"in t)throw new Error(`value will overwrite populated values: ${Vo(t)}`);for(const n in t){if("shortMessage"===n)continue;const e=t[n];r.push(n+"="+Vo(e))}}r.push(`code=${e}`),r.push(`version=${Go}`),r.length&&(n+=" ("+r.join(", ")+")")}switch(e){case"INVALID_ARGUMENT":r=new TypeError(n);break;case"NUMERIC_FAULT":case"BUFFER_OVERRUN":r=new RangeError(n);break;default:r=new Error(n)}return Ko(r,{code:e}),t&&Object.assign(r,t),null==r.shortMessage&&Ko(r,{shortMessage:a}),r}function $o(n,e,t,r){if(!n)throw Jo(e,t,r)}function Wo(n,e,t,r){$o(n,e,"INVALID_ARGUMENT",{argument:t,value:r})}function Zo(n,e,t){null==t&&(t=""),t&&(t=": "+t),$o(n>=e,"missing argument"+t,"MISSING_ARGUMENT",{count:n,expectedCount:e}),$o(n<=e,"too many arguments"+t,"UNEXPECTED_ARGUMENT",{count:n,expectedCount:e})}const Yo=["NFD","NFC","NFKD","NFKC"].reduce((n,e)=>{try{if("test"!=="test".normalize(e))throw new Error("bad");if("NFD"===e){const n=String.fromCharCode(233).normalize("NFD");if(n!==String.fromCharCode(101,769))throw new Error("broken")}n.push(e)}catch(n){}return n},[]);function Xo(n){$o(Yo.indexOf(n)>=0,"platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:n}})}function ni(n,e,t){if(null==t&&(t=""),n!==e){let n=t,e="new";t&&(n+=".",e+=" "+t),$o(!1,`private constructor; use ${n}from* methods`,"UNSUPPORTED_OPERATION",{operation:e})}}function ei(n,e,t){if(n instanceof Uint8Array)return t?new Uint8Array(n):n;if("string"==typeof n&&n.length%2==0&&n.match(/^0x[0-9a-f]*$/i)){const e=new Uint8Array((n.length-2)/2);let t=2;for(let r=0;r<e.length;r++)e[r]=parseInt(n.substring(t,t+2),16),t+=2;return e}Wo(!1,"invalid BytesLike value",e||"value",n)}function ti(n,e){return ei(n,e,!1)}function ri(n,e){return ei(n,e,!0)}function ai(n,e){return!("string"!=typeof n||!n.match(/^0x[0-9A-Fa-f]*$/))&&(("number"!=typeof e||n.length===2+2*e)&&(!0!==e||n.length%2==0))}function oi(n){return ai(n,!0)||n instanceof Uint8Array}const ii="0123456789abcdef";function si(n){const e=ti(n);let t="0x";for(let n=0;n<e.length;n++){const r=e[n];t+=ii[(240&r)>>4]+ii[15&r]}return t}function ci(n){return"0x"+n.map(n=>si(n).substring(2)).join("")}function li(n){return ai(n,!0)?(n.length-2)/2:ti(n).length}function ui(n,e,t){const r=ti(n);return null!=t&&t>r.length&&$o(!1,"cannot slice beyond data bounds","BUFFER_OVERRUN",{buffer:r,length:r.length,offset:t}),si(r.slice(null==e?0:e,null==t?r.length:t))}function di(n){let e=si(n).substring(2);for(;e.startsWith("00");)e=e.substring(2);return"0x"+e}function hi(n,e,t){const r=ti(n);$o(e>=r.length,"padding exceeds data length","BUFFER_OVERRUN",{buffer:new Uint8Array(r),length:e,offset:e+1});const a=new Uint8Array(e);return a.fill(0),t?a.set(r,e-r.length):a.set(r,0),si(a)}function pi(n,e){return hi(n,e,!0)}function fi(n,e){return hi(n,e,!1)}const gi=BigInt(0),mi=BigInt(1),bi=9007199254740991;function yi(n,e){const t=Ai(n,"value"),r=BigInt(Ii(e,"width"));if($o(t>>r===gi,"overflow","NUMERIC_FAULT",{operation:"fromTwos",fault:"overflow",value:n}),t>>r-mi){return-((~t&(mi<<r)-mi)+mi)}return t}function vi(n,e){let t=ki(n,"value");const r=BigInt(Ii(e,"width")),a=mi<<r-mi;if(t<gi){t=-t,$o(t<=a,"too low","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:n});return(~t&(mi<<r)-mi)+mi}return $o(t<a,"too high","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:n}),t}function wi(n,e){const t=Ai(n,"value"),r=BigInt(Ii(e,"bits"));return t&(mi<<r)-mi}function ki(n,e){switch(typeof n){case"bigint":return n;case"number":return Wo(Number.isInteger(n),"underflow",e||"value",n),Wo(n>=-bi&&n<=bi,"overflow",e||"value",n),BigInt(n);case"string":try{if(""===n)throw new Error("empty string");return"-"===n[0]&&"-"!==n[1]?-BigInt(n.substring(1)):BigInt(n)}catch(t){Wo(!1,`invalid BigNumberish string: ${t.message}`,e||"value",n)}}Wo(!1,"invalid BigNumberish value",e||"value",n)}function Ai(n,e){const t=ki(n,e);return $o(t>=gi,"unsigned value cannot be negative","NUMERIC_FAULT",{fault:"overflow",operation:"getUint",value:n}),t}const Ei="0123456789abcdef";function xi(n){if(n instanceof Uint8Array){let e="0x0";for(const t of n)e+=Ei[t>>4],e+=Ei[15&t];return BigInt(e)}return ki(n)}function Ii(n,e){switch(typeof n){case"bigint":return Wo(n>=-bi&&n<=bi,"overflow",e||"value",n),Number(n);case"number":return Wo(Number.isInteger(n),"underflow",e||"value",n),Wo(n>=-bi&&n<=bi,"overflow",e||"value",n),n;case"string":try{if(""===n)throw new Error("empty string");return Ii(BigInt(n),e)}catch(t){Wo(!1,`invalid numeric string: ${t.message}`,e||"value",n)}}Wo(!1,"invalid numeric value",e||"value",n)}function Pi(n){return Ii(xi(n))}function Ni(n,e){const t=Ai(n,"value");let r=t.toString(16);if(null==e)r.length%2&&(r="0"+r);else{const a=Ii(e,"width");if(0===a&&t===gi)return"0x";for($o(2*a>=r.length,`value exceeds width (${a} bytes)`,"NUMERIC_FAULT",{operation:"toBeHex",fault:"overflow",value:n});r.length<2*a;)r="0"+r}return"0x"+r}function zi(n,e){const t=Ai(n,"value");if(t===gi){const n=null!=e?Ii(e,"width"):0;return new Uint8Array(n)}let r=t.toString(16);if(r.length%2&&(r="0"+r),null!=e){const t=Ii(e,"width");for(;r.length<2*t;)r="00"+r;$o(2*t===r.length,`value exceeds width (${t} bytes)`,"NUMERIC_FAULT",{operation:"toBeArray",fault:"overflow",value:n})}const a=new Uint8Array(r.length/2);for(let n=0;n<a.length;n++){const e=2*n;a[n]=parseInt(r.substring(e,e+2),16)}return a}function Ri(n){let e=si(oi(n)?n:zi(n)).substring(2);for(;e.startsWith("0");)e=e.substring(1);return""===e&&(e="0"),"0x"+e}const Ti="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";let Si=null;function Bi(n){if(null==Si){Si={};for(let n=0;n<58;n++)Si[Ti[n]]=BigInt(n)}const e=Si[n];return Wo(null!=e,"invalid base58 value","letter",n),e}const Ci=BigInt(0),Oi=BigInt(58);function Ui(n){const e=ti(n);let t=xi(e),r="";for(;t;)r=Ti[Number(t%Oi)]+r,t/=Oi;for(let n=0;n<e.length&&!e[n];n++)r=Ti[0]+r;return r}function Fi(n){let e=Ci;for(let t=0;t<n.length;t++)e*=Oi,e+=Bi(n[t]);return e}function Li(n){n=atob(n);const e=new Uint8Array(n.length);for(let t=0;t<n.length;t++)e[t]=n.charCodeAt(t);return ti(e)}function ji(n){const e=ti(n);let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}class Di{filter;emitter;#n;constructor(n,e,t){this.#n=e,Ko(this,{emitter:n,filter:t})}async removeListener(){null!=this.#n&&await this.emitter.off(this.filter,this.#n)}}function Mi(n,e,t,r,a){if("BAD_PREFIX"===n||"UNEXPECTED_CONTINUE"===n){let n=0;for(let r=e+1;r<t.length&&t[r]>>6==2;r++)n++;return n}return"OVERRUN"===n?t.length-e-1:0}const Gi=Object.freeze({error:function(n,e,t,r,a){Wo(!1,`invalid codepoint at offset ${e}; ${n}`,"bytes",t)},ignore:Mi,replace:function(n,e,t,r,a){return"OVERLONG"===n?(Wo("number"==typeof a,"invalid bad code point for replacement","badCodepoint",a),r.push(a),0):(r.push(65533),Mi(n,e,t))}});function qi(n,e){null==e&&(e=Gi.error);const t=ti(n,"bytes"),r=[];let a=0;for(;a<t.length;){const n=t[a++];if(!(n>>7)){r.push(n);continue}let o=null,i=null;if(192==(224&n))o=1,i=127;else if(224==(240&n))o=2,i=2047;else{if(240!=(248&n)){a+=e(128==(192&n)?"UNEXPECTED_CONTINUE":"BAD_PREFIX",a-1,t,r);continue}o=3,i=65535}if(a-1+o>=t.length){a+=e("OVERRUN",a-1,t,r);continue}let s=n&(1<<8-o-1)-1;for(let n=0;n<o;n++){let n=t[a];if(128!=(192&n)){a+=e("MISSING_CONTINUE",a,t,r),s=null;break}s=s<<6|63&n,a++}null!==s&&(s>1114111?a+=e("OUT_OF_RANGE",a-1-o,t,r,s):s>=55296&&s<=57343?a+=e("UTF16_SURROGATE",a-1-o,t,r,s):s<=i?a+=e("OVERLONG",a-1-o,t,r,s):r.push(s))}return r}function Hi(n,e){Wo("string"==typeof n,"invalid string value","str",n),null!=e&&(Xo(e),n=n.normalize(e));let t=[];for(let e=0;e<n.length;e++){const r=n.charCodeAt(e);if(r<128)t.push(r);else if(r<2048)t.push(r>>6|192),t.push(63&r|128);else if(55296==(64512&r)){e++;const a=n.charCodeAt(e);Wo(e<n.length&&56320==(64512&a),"invalid surrogate pair","str",n);const o=65536+((1023&r)<<10)+(1023&a);t.push(o>>18|240),t.push(o>>12&63|128),t.push(o>>6&63|128),t.push(63&o|128)}else t.push(r>>12|224),t.push(r>>6&63|128),t.push(63&r|128)}return new Uint8Array(t)}function Ki(n,e){return qi(n,e).map(n=>n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode(55296+(n>>10&1023),56320+(1023&n)))).join("")}function Vi(n,e){return qi(Hi(n,e))}function _i(n){return async function(e,t){$o(null==t||!t.cancelled,"request cancelled before sending","CANCELLED");const r=e.url.split(":")[0].toLowerCase();$o("http"===r||"https"===r,`unsupported protocol ${r}`,"UNSUPPORTED_OPERATION",{info:{protocol:r},operation:"request"}),$o("https"===r||!e.credentials||e.allowInsecureAuthentication,"insecure authorized connections unsupported","UNSUPPORTED_OPERATION",{operation:"request"});let a=null;const o=new AbortController,i=setTimeout(()=>{a=Jo("request timeout","TIMEOUT"),o.abort()},e.timeout);t&&t.addListener(()=>{a=Jo("request cancelled","CANCELLED"),o.abort()});const s=Object.assign({},n,{method:e.method,headers:new Headers(Array.from(e)),body:e.body||void 0,signal:o.signal});let c;try{c=await fetch(e.url,s)}catch(n){if(clearTimeout(i),a)throw a;throw n}clearTimeout(i);const l={};c.headers.forEach((n,e)=>{l[e.toLowerCase()]=n});const u=await c.arrayBuffer(),d=null==u?null:new Uint8Array(u);return{statusCode:c.status,statusMessage:c.statusText,headers:l,body:d}}}let Qi=_i();const Ji=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),$i=new RegExp("^ipfs://(ipfs/)?(.*)$","i");let Wi=!1;async function Zi(n,e){try{const e=n.match(Ji);if(!e)throw new Error("invalid data");return new as(200,"OK",{"content-type":e[1]||"text/plain"},e[2]?Li(e[3]):Hi(e[3].replace(/%([0-9a-f][0-9a-f])/gi,(n,e)=>String.fromCharCode(parseInt(e,16)))))}catch(e){return new as(599,"BAD REQUEST (invalid data: URI)",{},null,new rs(n))}}function Yi(n){return async function(e,t){try{const t=e.match($i);if(!t)throw new Error("invalid link");return new rs(`${n}${t[2]}`)}catch(n){return new as(599,"BAD REQUEST (invalid IPFS URI)",{},null,new rs(e))}}}const Xi={data:Zi,ipfs:Yi("https://gateway.ipfs.io/ipfs/")},ns=new WeakMap;class es{#e;#t;constructor(n){this.#e=[],this.#t=!1,ns.set(n,()=>{if(!this.#t){this.#t=!0;for(const n of this.#e)setTimeout(()=>{n()},0);this.#e=[]}})}addListener(n){$o(!this.#t,"singal already cancelled","UNSUPPORTED_OPERATION",{operation:"fetchCancelSignal.addCancelListener"}),this.#e.push(n)}get cancelled(){return this.#t}checkSignal(){$o(!this.cancelled,"cancelled","CANCELLED",{})}}function ts(n){if(null==n)throw new Error("missing signal; should not happen");return n.checkSignal(),n}class rs{#r;#a;#o;#i;#s;#c;#l;#u;#d;#h;#p;#f;#g;#m;#b;get url(){return this.#c}set url(n){this.#c=String(n)}get body(){return null==this.#l?null:new Uint8Array(this.#l)}set body(n){if(null==n)this.#l=void 0,this.#u=void 0;else if("string"==typeof n)this.#l=Hi(n),this.#u="text/plain";else if(n instanceof Uint8Array)this.#l=n,this.#u="application/octet-stream";else{if("object"!=typeof n)throw new Error("invalid body");this.#l=Hi(JSON.stringify(n)),this.#u="application/json"}}hasBody(){return null!=this.#l}get method(){return this.#i?this.#i:this.hasBody()?"POST":"GET"}set method(n){null==n&&(n=""),this.#i=String(n).toUpperCase()}get headers(){const n=Object.assign({},this.#o);return this.#d&&(n.authorization=`Basic ${ji(Hi(this.#d))}`),this.allowGzip&&(n["accept-encoding"]="gzip"),null==n["content-type"]&&this.#u&&(n["content-type"]=this.#u),this.body&&(n["content-length"]=String(this.body.length)),n}getHeader(n){return this.headers[n.toLowerCase()]}setHeader(n,e){this.#o[String(n).toLowerCase()]=String(e)}clearHeaders(){this.#o={}}[Symbol.iterator](){const n=this.headers,e=Object.keys(n);let t=0;return{next:()=>{if(t<e.length){const r=e[t++];return{value:[r,n[r]],done:!1}}return{value:void 0,done:!0}}}}get credentials(){return this.#d||null}setCredentials(n,e){Wo(!n.match(/:/),"invalid basic authentication username","username","[REDACTED]"),this.#d=`${n}:${e}`}get allowGzip(){return this.#a}set allowGzip(n){this.#a=!!n}get allowInsecureAuthentication(){return!!this.#r}set allowInsecureAuthentication(n){this.#r=!!n}get timeout(){return this.#s}set timeout(n){Wo(n>=0,"timeout must be non-zero","timeout",n),this.#s=n}get preflightFunc(){return this.#h||null}set preflightFunc(n){this.#h=n}get processFunc(){return this.#p||null}set processFunc(n){this.#p=n}get retryFunc(){return this.#f||null}set retryFunc(n){this.#f=n}get getUrlFunc(){return this.#b||Qi}set getUrlFunc(n){this.#b=n}constructor(n){this.#c=String(n),this.#r=!1,this.#a=!0,this.#o={},this.#i="",this.#s=3e5,this.#m={slotInterval:250,maxAttempts:12},this.#b=null}toString(){return`<FetchRequest method=${JSON.stringify(this.method)} url=${JSON.stringify(this.url)} headers=${JSON.stringify(this.headers)} body=${this.#l?si(this.#l):"null"}>`}setThrottleParams(n){null!=n.slotInterval&&(this.#m.slotInterval=n.slotInterval),null!=n.maxAttempts&&(this.#m.maxAttempts=n.maxAttempts)}async#y(n,e,t,r,a){if(n>=this.#m.maxAttempts)return a.makeServerError("exceeded maximum retry limit");$o(os()<=e,"timeout","TIMEOUT",{operation:"request.send",reason:"timeout",request:r}),t>0&&await function(n){return new Promise(e=>setTimeout(e,n))}(t);let o=this.clone();const i=(o.url.split(":")[0]||"").toLowerCase();if(i in Xi){const n=await Xi[i](o.url,ts(r.#g));if(n instanceof as){let e=n;if(this.processFunc){ts(r.#g);try{e=await this.processFunc(o,e)}catch(n){null!=n.throttle&&"number"==typeof n.stall||e.makeServerError("error in post-processing function",n).assertOk()}}return e}o=n}this.preflightFunc&&(o=await this.preflightFunc(o));const s=await this.getUrlFunc(o,ts(r.#g));let c=new as(s.statusCode,s.statusMessage,s.headers,s.body,r);if(301===c.statusCode||302===c.statusCode){try{const t=c.headers.location||"";return o.redirect(t).#y(n+1,e,0,r,c)}catch(n){}return c}if(429===c.statusCode&&(null==this.retryFunc||await this.retryFunc(o,c,n))){const t=c.headers["retry-after"];let a=this.#m.slotInterval*Math.trunc(Math.random()*Math.pow(2,n));return"string"==typeof t&&t.match(/^[1-9][0-9]*$/)&&(a=parseInt(t)),o.clone().#y(n+1,e,a,r,c)}if(this.processFunc){ts(r.#g);try{c=await this.processFunc(o,c)}catch(t){null!=t.throttle&&"number"==typeof t.stall||c.makeServerError("error in post-processing function",t).assertOk();let a=this.#m.slotInterval*Math.trunc(Math.random()*Math.pow(2,n));return t.stall>=0&&(a=t.stall),o.clone().#y(n+1,e,a,r,c)}}return c}send(){return $o(null==this.#g,"request already sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.send"}),this.#g=new es(this),this.#y(0,os()+this.timeout,0,this,new as(0,"",{},null,this))}cancel(){$o(null!=this.#g,"request has not been sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.cancel"});const n=ns.get(this);if(!n)throw new Error("missing signal; should not happen");n()}redirect(n){const e=this.url.split(":")[0].toLowerCase(),t=n.split(":")[0].toLowerCase();$o("GET"===this.method&&("https"!==e||"http"!==t)&&n.match(/^https?:/),"unsupported redirect","UNSUPPORTED_OPERATION",{operation:`redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(n)})`});const r=new rs(n);return r.method="GET",r.allowGzip=this.allowGzip,r.timeout=this.timeout,r.#o=Object.assign({},this.#o),this.#l&&(r.#l=new Uint8Array(this.#l)),r.#u=this.#u,r}clone(){const n=new rs(this.url);return n.#i=this.#i,this.#l&&(n.#l=this.#l),n.#u=this.#u,n.#o=Object.assign({},this.#o),n.#d=this.#d,this.allowGzip&&(n.allowGzip=!0),n.timeout=this.timeout,this.allowInsecureAuthentication&&(n.allowInsecureAuthentication=!0),n.#h=this.#h,n.#p=this.#p,n.#f=this.#f,n.#m=Object.assign({},this.#m),n.#b=this.#b,n}static lockConfig(){Wi=!0}static getGateway(n){return Xi[n.toLowerCase()]||null}static registerGateway(n,e){if("http"===(n=n.toLowerCase())||"https"===n)throw new Error(`cannot intercept ${n}; use registerGetUrl`);if(Wi)throw new Error("gateways locked");Xi[n]=e}static registerGetUrl(n){if(Wi)throw new Error("gateways locked");Qi=n}static createGetUrlFunc(n){return _i(n)}static createDataGateway(){return Zi}static createIpfsGatewayFunc(n){return Yi(n)}}class as{#v;#w;#o;#l;#k;#A;toString(){return`<FetchResponse status=${this.statusCode} body=${this.#l?si(this.#l):"null"}>`}get statusCode(){return this.#v}get statusMessage(){return this.#w}get headers(){return Object.assign({},this.#o)}get body(){return null==this.#l?null:new Uint8Array(this.#l)}get bodyText(){try{return null==this.#l?"":Ki(this.#l)}catch(n){$o(!1,"response body is not valid UTF-8 data","UNSUPPORTED_OPERATION",{operation:"bodyText",info:{response:this}})}}get bodyJson(){try{return JSON.parse(this.bodyText)}catch(n){$o(!1,"response body is not valid JSON","UNSUPPORTED_OPERATION",{operation:"bodyJson",info:{response:this}})}}[Symbol.iterator](){const n=this.headers,e=Object.keys(n);let t=0;return{next:()=>{if(t<e.length){const r=e[t++];return{value:[r,n[r]],done:!1}}return{value:void 0,done:!0}}}}constructor(n,e,t,r,a){this.#v=n,this.#w=e,this.#o=Object.keys(t).reduce((n,e)=>(n[e.toLowerCase()]=String(t[e]),n),{}),this.#l=null==r?null:new Uint8Array(r),this.#k=a||null,this.#A={message:""}}makeServerError(n,e){let t;t=n?`CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${n})`:`CLIENT ESCALATED SERVER ERROR (${n=`${this.statusCode} ${this.statusMessage}`})`;const r=new as(599,t,this.headers,this.body,this.#k||void 0);return r.#A={message:n,error:e},r}throwThrottleError(n,e){null==e?e=-1:Wo(Number.isInteger(e)&&e>=0,"invalid stall timeout","stall",e);const t=new Error(n||"throttling requests");throw Ko(t,{stall:e,throttle:!0}),t}getHeader(n){return this.headers[n.toLowerCase()]}hasBody(){return null!=this.#l}get request(){return this.#k}ok(){return""===this.#A.message&&this.statusCode>=200&&this.statusCode<300}assertOk(){if(this.ok())return;let{message:n,error:e}=this.#A;""===n&&(n=`server response ${this.statusCode} ${this.statusMessage}`);let t=null;this.request&&(t=this.request.url);let r=null;try{this.#l&&(r=Ki(this.#l))}catch(n){}$o(!1,n,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e,info:{requestUrl:t,responseBody:r,responseStatus:`${this.statusCode} ${this.statusMessage}`}})}}function os(){return(new Date).getTime()}const is=BigInt(-1),ss=BigInt(0),cs=BigInt(1),ls=BigInt(5),us={};let ds="0000";for(;ds.length<80;)ds+=ds;function hs(n){let e=ds;for(;e.length<n;)e+=e;return BigInt("1"+e.substring(0,n))}function ps(n,e,t){const r=BigInt(e.width);if(e.signed){const e=cs<<r-cs;$o(null==t||n>=-e&&n<e,"overflow","NUMERIC_FAULT",{operation:t,fault:"overflow",value:n}),n=n>ss?yi(wi(n,r),r):-yi(wi(-n,r),r)}else{const e=cs<<r;$o(null==t||n>=0&&n<e,"overflow","NUMERIC_FAULT",{operation:t,fault:"overflow",value:n}),n=(n%e+e)%e&e-cs}return n}function fs(n){"number"==typeof n&&(n=`fixed128x${n}`);let e=!0,t=128,r=18;if("string"==typeof n)if("fixed"===n);else if("ufixed"===n)e=!1;else{const a=n.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);Wo(a,"invalid fixed format","format",n),e="u"!==a[1],t=parseInt(a[2]),r=parseInt(a[3])}else if(n){const a=n,o=(n,e,t)=>null==a[n]?t:(Wo(typeof a[n]===e,"invalid fixed format ("+n+" not "+e+")","format."+n,a[n]),a[n]);e=o("signed","boolean",e),t=o("width","number",t),r=o("decimals","number",r)}Wo(t%8==0,"invalid FixedNumber width (not byte aligned)","format.width",t),Wo(r<=80,"invalid FixedNumber decimals (too large)","format.decimals",r);return{signed:e,width:t,decimals:r,name:(e?"":"u")+"fixed"+String(t)+"x"+String(r)}}class gs{format;#E;#x;#I;_value;constructor(n,e,t){ni(n,us,"FixedNumber"),this.#x=e,this.#E=t;const r=function(n,e){let t="";n<ss&&(t="-",n*=is);let r=n.toString();if(0===e)return t+r;for(;r.length<=e;)r=ds+r;const a=r.length-e;for(r=r.substring(0,a)+"."+r.substring(a);"0"===r[0]&&"."!==r[1];)r=r.substring(1);for(;"0"===r[r.length-1]&&"."!==r[r.length-2];)r=r.substring(0,r.length-1);return t+r}(e,t.decimals);Ko(this,{format:t.name,_value:r}),this.#I=hs(t.decimals)}get signed(){return this.#E.signed}get width(){return this.#E.width}get decimals(){return this.#E.decimals}get value(){return this.#x}#P(n){Wo(this.format===n.format,"incompatible format; use fixedNumber.toFormat","other",n)}#N(n,e){return n=ps(n,this.#E,e),new gs(us,n,this.#E)}#z(n,e){return this.#P(n),this.#N(this.#x+n.#x,e)}addUnsafe(n){return this.#z(n)}add(n){return this.#z(n,"add")}#R(n,e){return this.#P(n),this.#N(this.#x-n.#x,e)}subUnsafe(n){return this.#R(n)}sub(n){return this.#R(n,"sub")}#T(n,e){return this.#P(n),this.#N(this.#x*n.#x/this.#I,e)}mulUnsafe(n){return this.#T(n)}mul(n){return this.#T(n,"mul")}mulSignal(n){this.#P(n);const e=this.#x*n.#x;return $o(e%this.#I===ss,"precision lost during signalling mul","NUMERIC_FAULT",{operation:"mulSignal",fault:"underflow",value:this}),this.#N(e/this.#I,"mulSignal")}#S(n,e){return $o(n.#x!==ss,"division by zero","NUMERIC_FAULT",{operation:"div",fault:"divide-by-zero",value:this}),this.#P(n),this.#N(this.#x*this.#I/n.#x,e)}divUnsafe(n){return this.#S(n)}div(n){return this.#S(n,"div")}divSignal(n){$o(n.#x!==ss,"division by zero","NUMERIC_FAULT",{operation:"div",fault:"divide-by-zero",value:this}),this.#P(n);const e=this.#x*this.#I;return $o(e%n.#x===ss,"precision lost during signalling div","NUMERIC_FAULT",{operation:"divSignal",fault:"underflow",value:this}),this.#N(e/n.#x,"divSignal")}cmp(n){let e=this.value,t=n.value;const r=this.decimals-n.decimals;return r>0?t*=hs(r):r<0&&(e*=hs(-r)),e<t?-1:e>t?1:0}eq(n){return 0===this.cmp(n)}lt(n){return this.cmp(n)<0}lte(n){return this.cmp(n)<=0}gt(n){return this.cmp(n)>0}gte(n){return this.cmp(n)>=0}floor(){let n=this.#x;return this.#x<ss&&(n-=this.#I-cs),n=this.#x/this.#I*this.#I,this.#N(n,"floor")}ceiling(){let n=this.#x;return this.#x>ss&&(n+=this.#I-cs),n=this.#x/this.#I*this.#I,this.#N(n,"ceiling")}round(n){if(null==n&&(n=0),n>=this.decimals)return this;const e=this.decimals-n,t=ls*hs(e-1);let r=this.value+t;const a=hs(e);return r=r/a*a,ps(r,this.#E,"round"),new gs(us,r,this.#E)}isZero(){return this.#x===ss}isNegative(){return this.#x<ss}toString(){return this._value}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(n){return gs.fromString(this.toString(),n)}static fromValue(n,e,t){const r=null==e?0:Ii(e),a=fs(t);let o=ki(n,"value");const i=r-a.decimals;if(i>0){const e=hs(i);$o(o%e===ss,"value loses precision for format","NUMERIC_FAULT",{operation:"fromValue",fault:"underflow",value:n}),o/=e}else i<0&&(o*=hs(-i));return ps(o,a,"fromValue"),new gs(us,o,a)}static fromString(n,e){const t=n.match(/^(-?)([0-9]*)\.?([0-9]*)$/);Wo(t&&t[2].length+t[3].length>0,"invalid FixedNumber string value","value",n);const r=fs(e);let a=t[2]||"0",o=t[3]||"";for(;o.length<r.decimals;)o+=ds;$o(o.substring(r.decimals).match(/^0*$/),"too many decimals for format","NUMERIC_FAULT",{operation:"fromString",fault:"underflow",value:n}),o=o.substring(0,r.decimals);const i=BigInt(t[1]+a+o);return ps(i,r,"fromString"),new gs(us,i,r)}static fromBytes(n,e){let t=xi(ti(n,"value"));const r=fs(e);return r.signed&&(t=yi(t,r.width)),ps(t,r,"fromBytes"),new gs(us,t,r)}}function ms(n){let e=n.toString(16);for(;e.length<2;)e="0"+e;return"0x"+e}function bs(n,e,t){let r=0;for(let a=0;a<t;a++)r=256*r+n[e+a];return r}function ys(n,e,t,r){const a=[];for(;t<e+1+r;){const o=vs(n,t);a.push(o.result),$o((t+=o.consumed)<=e+1+r,"child data too short","BUFFER_OVERRUN",{buffer:n,length:r,offset:e})}return{consumed:1+r,result:a}}function vs(n,e){$o(0!==n.length,"data too short","BUFFER_OVERRUN",{buffer:n,length:0,offset:1});const t=e=>{$o(e<=n.length,"data short segment too short","BUFFER_OVERRUN",{buffer:n,length:n.length,offset:e})};if(n[e]>=248){const r=n[e]-247;t(e+1+r);const a=bs(n,e+1,r);return t(e+1+r+a),ys(n,e,e+1+r,r+a)}if(n[e]>=192){const r=n[e]-192;return t(e+1+r),ys(n,e,e+1,r)}if(n[e]>=184){const r=n[e]-183;t(e+1+r);const a=bs(n,e+1,r);t(e+1+r+a);return{consumed:1+r+a,result:si(n.slice(e+1+r,e+1+r+a))}}if(n[e]>=128){const r=n[e]-128;t(e+1+r);return{consumed:1+r,result:si(n.slice(e+1,e+1+r))}}return{consumed:1,result:ms(n[e])}}function ws(n){const e=ti(n,"data"),t=vs(e,0);return Wo(t.consumed===e.length,"unexpected junk after rlp payload","data",n),t.result}function ks(n){const e=[];for(;n;)e.unshift(255&n),n>>=8;return e}function As(n){if(Array.isArray(n)){let e=[];if(n.forEach(function(n){e=e.concat(As(n))}),e.length<=55)return e.unshift(192+e.length),e;const t=ks(e.length);return t.unshift(247+t.length),t.concat(e)}const e=Array.prototype.slice.call(ti(n,"object"));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const t=ks(e.length);return t.unshift(183+t.length),t.concat(e)}const Es="0123456789abcdef";function xs(n){let e="0x";for(const t of As(n))e+=Es[t>>4],e+=Es[15&t];return e}const Is=["wei","kwei","mwei","gwei","szabo","finney","ether"];function Ps(n,e){let t=18;if("string"==typeof e){const n=Is.indexOf(e);Wo(n>=0,"invalid unit","unit",e),t=3*n}else null!=e&&(t=Ii(e,"unit"));return gs.fromValue(n,t,{decimals:t,width:512}).toString()}function Ns(n,e){Wo("string"==typeof n,"value must be a string","value",n);let t=18;if("string"==typeof e){const n=Is.indexOf(e);Wo(n>=0,"invalid unit","unit",e),t=3*n}else null!=e&&(t=Ii(e,"unit"));return gs.fromString(n,{decimals:t,width:512}).value}function zs(n){return Ps(n,18)}function Rs(n){return Ns(n,18)}function Ts(n){const e=ti(n,"randomBytes");e[6]=15&e[6]|64,e[8]=63&e[8]|128;const t=si(e);return[t.substring(2,10),t.substring(10,14),t.substring(14,18),t.substring(18,22),t.substring(22,34)].join("-")}const Ss=32,Bs=new Uint8Array(Ss),Cs=["then"],Os={},Us=new WeakMap;function Fs(n){return Us.get(n)}function Ls(n,e){Us.set(n,e)}function js(n,e){const t=new Error(`deferred error during ABI decoding triggered accessing ${n}`);throw t.error=e,t}function Ds(n,e,t){return n.indexOf(null)>=0?e.map((n,e)=>n instanceof Ms?Ds(Fs(n),n,t):n):n.reduce((n,r,a)=>{let o=e.getValue(r);return r in n||(t&&o instanceof Ms&&(o=Ds(Fs(o),o,t)),n[r]=o),n},{})}class Ms extends Array{#B;constructor(...n){const e=n[0];let t=n[1],r=(n[2]||[]).slice(),a=!0;e!==Os&&(t=n,r=[],a=!1),super(t.length),t.forEach((n,e)=>{this[e]=n});const o=r.reduce((n,e)=>("string"==typeof e&&n.set(e,(n.get(e)||0)+1),n),new Map);if(Ls(this,Object.freeze(t.map((n,e)=>{const t=r[e];return null!=t&&1===o.get(t)?t:null}))),this.#B=[],null==this.#B&&this.#B,!a)return;Object.freeze(this);const i=new Proxy(this,{get:(n,e,t)=>{if("string"==typeof e){if(e.match(/^[0-9]+$/)){const t=Ii(e,"%index");if(t<0||t>=this.length)throw new RangeError("out of result range");const r=n[t];return r instanceof Error&&js(`index ${t}`,r),r}if(Cs.indexOf(e)>=0)return Reflect.get(n,e,t);const r=n[e];if(r instanceof Function)return function(...e){return r.apply(this===t?n:this,e)};if(!(e in n))return n.getValue.apply(this===t?n:this,[e])}return Reflect.get(n,e,t)}});return Ls(i,Fs(this)),i}toArray(n){const e=[];return this.forEach((t,r)=>{t instanceof Error&&js(`index ${r}`,t),n&&t instanceof Ms&&(t=t.toArray(n)),e.push(t)}),e}toObject(n){const e=Fs(this);return e.reduce((t,r,a)=>($o(null!=r,`value at index ${a} unnamed`,"UNSUPPORTED_OPERATION",{operation:"toObject()"}),Ds(e,this,n)),{})}slice(n,e){null==n&&(n=0),n<0&&(n+=this.length)<0&&(n=0),null==e&&(e=this.length),e<0&&(e+=this.length)<0&&(e=0),e>this.length&&(e=this.length);const t=Fs(this),r=[],a=[];for(let o=n;o<e;o++)r.push(this[o]),a.push(t[o]);return new Ms(Os,r,a)}filter(n,e){const t=Fs(this),r=[],a=[];for(let o=0;o<this.length;o++){const i=this[o];i instanceof Error&&js(`index ${o}`,i),n.call(e,i,o,this)&&(r.push(i),a.push(t[o]))}return new Ms(Os,r,a)}map(n,e){const t=[];for(let r=0;r<this.length;r++){const a=this[r];a instanceof Error&&js(`index ${r}`,a),t.push(n.call(e,a,r,this))}return t}getValue(n){const e=Fs(this).indexOf(n);if(-1===e)return;const t=this[e];return t instanceof Error&&js(`property ${JSON.stringify(n)}`,t.error),t}static fromItems(n,e){return new Ms(Os,n,e)}}function Gs(n){const e=[],t=function(n,r){if(Array.isArray(r))for(let a in r){const o=n.slice();o.push(a);try{t(o,r[a])}catch(n){e.push({path:o,error:n})}}};return t([],n),e}function qs(n){let e=zi(n);return $o(e.length<=Ss,"value out-of-bounds","BUFFER_OVERRUN",{buffer:e,length:Ss,offset:e.length}),e.length!==Ss&&(e=ri(ci([Bs.slice(e.length%Ss),e]))),e}class Hs{name;type;localName;dynamic;constructor(n,e,t,r){Ko(this,{name:n,type:e,localName:t,dynamic:r},{name:"string",type:"string",localName:"string",dynamic:"boolean"})}_throwError(n,e){Wo(!1,n,this.localName,e)}}class Ks{#C;#O;constructor(){this.#C=[],this.#O=0}get data(){return ci(this.#C)}get length(){return this.#O}#U(n){return this.#C.push(n),this.#O+=n.length,n.length}appendWriter(n){return this.#U(ri(n.data))}writeBytes(n){let e=ri(n);const t=e.length%Ss;return t&&(e=ri(ci([e,Bs.slice(t)]))),this.#U(e)}writeValue(n){return this.#U(qs(n))}writeUpdatableValue(){const n=this.#C.length;return this.#C.push(Bs),this.#O+=Ss,e=>{this.#C[n]=qs(e)}}}class Vs{allowLoose;#C;#F;#L;#j;#D;constructor(n,e,t){Ko(this,{allowLoose:!!e}),this.#C=ri(n),this.#L=0,this.#j=null,this.#D=null!=t?t:1024,this.#F=0}get data(){return si(this.#C)}get dataLength(){return this.#C.length}get consumed(){return this.#F}get bytes(){return new Uint8Array(this.#C)}#M(n){if(this.#j)return this.#j.#M(n);this.#L+=n,$o(this.#D<1||this.#L<=this.#D*this.dataLength,`compressed ABI data exceeds inflation ratio of ${this.#D} ( see: https://github.com/ethers-io/ethers.js/issues/4537 )`,"BUFFER_OVERRUN",{buffer:ri(this.#C),offset:this.#F,length:n,info:{bytesRead:this.#L,dataLength:this.dataLength}})}#G(n,e,t){let r=Math.ceil(e/Ss)*Ss;return this.#F+r>this.#C.length&&(this.allowLoose&&t&&this.#F+e<=this.#C.length?r=e:$o(!1,"data out-of-bounds","BUFFER_OVERRUN",{buffer:ri(this.#C),length:this.#C.length,offset:this.#F+r})),this.#C.slice(this.#F,this.#F+r)}subReader(n){const e=new Vs(this.#C.slice(this.#F+n),this.allowLoose,this.#D);return e.#j=this,e}readBytes(n,e){let t=this.#G(0,n,!!e);return this.#M(n),this.#F+=t.length,t.slice(0,n)}readValue(){return xi(this.readBytes(Ss))}readIndex(){return Pi(this.readBytes(Ss))}}function _s(n){if(!Number.isSafeInteger(n)||n<0)throw new Error(`Wrong positive integer: ${n}`)}function Qs(n,...e){if(!(n instanceof Uint8Array))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(n.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${n.length}`)}function Js(n){if("function"!=typeof n||"function"!=typeof n.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");_s(n.outputLen),_s(n.blockLen)}function $s(n,e=!0){if(n.destroyed)throw new Error("Hash instance has been destroyed");if(e&&n.finished)throw new Error("Hash#digest() has already been called")}function Ws(n,e){Qs(n);const t=e.outputLen;if(n.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}const Zs="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,Ys=n=>n instanceof Uint8Array,Xs=n=>new Uint32Array(n.buffer,n.byteOffset,Math.floor(n.byteLength/4)),nc=n=>new DataView(n.buffer,n.byteOffset,n.byteLength),ec=(n,e)=>n<<32-e|n>>>e;
|
|
4
|
+
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */if(!(68===new Uint8Array(new Uint32Array([287454020]).buffer)[0]))throw new Error("Non little-endian hardware is not supported");const tc=async()=>{};async function rc(n,e,t){let r=Date.now();for(let a=0;a<n;a++){t(a);const n=Date.now()-r;n>=0&&n<e||(await tc(),r+=n)}}function ac(n){if("string"==typeof n&&(n=function(n){if("string"!=typeof n)throw new Error("utf8ToBytes expected string, got "+typeof n);return new Uint8Array((new TextEncoder).encode(n))}(n)),!Ys(n))throw new Error("expected Uint8Array, got "+typeof n);return n}class oc{clone(){return this._cloneInto()}}const ic={}.toString;function sc(n,e){if(void 0!==e&&"[object Object]"!==ic.call(e))throw new Error("Options should be object or undefined");return Object.assign(n,e)}function cc(n){const e=e=>n().update(ac(e)).digest(),t=n();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>n(),e}function lc(n=32){if(Zs&&"function"==typeof Zs.getRandomValues)return Zs.getRandomValues(new Uint8Array(n));throw new Error("crypto.getRandomValues must be defined")}class uc extends oc{constructor(n,e){super(),this.finished=!1,this.destroyed=!1,Js(n);const t=ac(e);if(this.iHash=n.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const r=this.blockLen,a=new Uint8Array(r);a.set(t.length>r?n.create().update(t).digest():t);for(let n=0;n<a.length;n++)a[n]^=54;this.iHash.update(a),this.oHash=n.create();for(let n=0;n<a.length;n++)a[n]^=106;this.oHash.update(a),a.fill(0)}update(n){return $s(this),this.iHash.update(n),this}digestInto(n){$s(this),Qs(n,this.outputLen),this.finished=!0,this.iHash.digestInto(n),this.oHash.update(n),this.oHash.digestInto(n),this.destroy()}digest(){const n=new Uint8Array(this.oHash.outputLen);return this.digestInto(n),n}_cloneInto(n){n||(n=Object.create(Object.getPrototypeOf(this),{}));const{oHash:e,iHash:t,finished:r,destroyed:a,blockLen:o,outputLen:i}=this;return n.finished=r,n.destroyed=a,n.blockLen=o,n.outputLen=i,n.oHash=e._cloneInto(n.oHash),n.iHash=t._cloneInto(n.iHash),n}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const dc=(n,e,t)=>new uc(n,e).update(t).digest();function hc(n,e,t,r){Js(n);const a=sc({dkLen:32,asyncTick:10},r),{c:o,dkLen:i,asyncTick:s}=a;if(_s(o),_s(i),_s(s),o<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const c=ac(e),l=ac(t),u=new Uint8Array(i),d=dc.create(n,c),h=d._cloneInto().update(l);return{c:o,dkLen:i,asyncTick:s,DK:u,PRF:d,PRFSalt:h}}function pc(n,e,t,r){const{c:a,dkLen:o,DK:i,PRF:s,PRFSalt:c}=hc(n,e,t,r);let l;const u=new Uint8Array(4),d=nc(u),h=new Uint8Array(s.outputLen);for(let n=1,e=0;e<o;n++,e+=s.outputLen){const t=i.subarray(e,e+s.outputLen);d.setInt32(0,n,!1),(l=c._cloneInto(l)).update(u).digestInto(h),t.set(h.subarray(0,t.length));for(let n=1;n<a;n++){s._cloneInto(l).update(h).digestInto(h);for(let n=0;n<t.length;n++)t[n]^=h[n]}}return function(n,e,t,r,a){return n.destroy(),e.destroy(),r&&r.destroy(),a.fill(0),t}(s,c,i,l,h)}dc.create=(n,e)=>new uc(n,e);class fc extends oc{constructor(n,e,t,r){super(),this.blockLen=n,this.outputLen=e,this.padOffset=t,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(n),this.view=nc(this.buffer)}update(n){$s(this);const{view:e,buffer:t,blockLen:r}=this,a=(n=ac(n)).length;for(let o=0;o<a;){const i=Math.min(r-this.pos,a-o);if(i===r){const e=nc(n);for(;r<=a-o;o+=r)this.process(e,o);continue}t.set(n.subarray(o,o+i),this.pos),this.pos+=i,o+=i,this.pos===r&&(this.process(e,0),this.pos=0)}return this.length+=n.length,this.roundClean(),this}digestInto(n){$s(this),Ws(n,this),this.finished=!0;const{buffer:e,view:t,blockLen:r,isLE:a}=this;let{pos:o}=this;e[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>r-o&&(this.process(t,0),o=0);for(let n=o;n<r;n++)e[n]=0;!function(n,e,t,r){if("function"==typeof n.setBigUint64)return n.setBigUint64(e,t,r);const a=BigInt(32),o=BigInt(4294967295),i=Number(t>>a&o),s=Number(t&o),c=r?4:0,l=r?0:4;n.setUint32(e+c,i,r),n.setUint32(e+l,s,r)}(t,r-8,BigInt(8*this.length),a),this.process(t,0);const i=nc(n),s=this.outputLen;if(s%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const c=s/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let n=0;n<c;n++)i.setUint32(4*n,l[n],a)}digest(){const{buffer:n,outputLen:e}=this;this.digestInto(n);const t=n.slice(0,e);return this.destroy(),t}_cloneInto(n){n||(n=new this.constructor),n.set(...this.get());const{blockLen:e,buffer:t,length:r,finished:a,destroyed:o,pos:i}=this;return n.length=r,n.pos=i,n.finished=a,n.destroyed=o,r%e&&n.buffer.set(t),n}}const gc=(n,e,t)=>n&e^~n&t,mc=(n,e,t)=>n&e^n&t^e&t,bc=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]),yc=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),vc=new Uint32Array(64);class wc extends fc{constructor(){super(64,32,8,!1),this.A=0|yc[0],this.B=0|yc[1],this.C=0|yc[2],this.D=0|yc[3],this.E=0|yc[4],this.F=0|yc[5],this.G=0|yc[6],this.H=0|yc[7]}get(){const{A:n,B:e,C:t,D:r,E:a,F:o,G:i,H:s}=this;return[n,e,t,r,a,o,i,s]}set(n,e,t,r,a,o,i,s){this.A=0|n,this.B=0|e,this.C=0|t,this.D=0|r,this.E=0|a,this.F=0|o,this.G=0|i,this.H=0|s}process(n,e){for(let t=0;t<16;t++,e+=4)vc[t]=n.getUint32(e,!1);for(let n=16;n<64;n++){const e=vc[n-15],t=vc[n-2],r=ec(e,7)^ec(e,18)^e>>>3,a=ec(t,17)^ec(t,19)^t>>>10;vc[n]=a+vc[n-7]+r+vc[n-16]|0}let{A:t,B:r,C:a,D:o,E:i,F:s,G:c,H:l}=this;for(let n=0;n<64;n++){const e=l+(ec(i,6)^ec(i,11)^ec(i,25))+gc(i,s,c)+bc[n]+vc[n]|0,u=(ec(t,2)^ec(t,13)^ec(t,22))+mc(t,r,a)|0;l=c,c=s,s=i,i=o+e|0,o=a,a=r,r=t,t=e+u|0}t=t+this.A|0,r=r+this.B|0,a=a+this.C|0,o=o+this.D|0,i=i+this.E|0,s=s+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(t,r,a,o,i,s,c,l)}roundClean(){vc.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const kc=cc(()=>new wc),Ac=BigInt(2**32-1),Ec=BigInt(32);function xc(n,e=!1){return e?{h:Number(n&Ac),l:Number(n>>Ec&Ac)}:{h:0|Number(n>>Ec&Ac),l:0|Number(n&Ac)}}function Ic(n,e=!1){let t=new Uint32Array(n.length),r=new Uint32Array(n.length);for(let a=0;a<n.length;a++){const{h:o,l:i}=xc(n[a],e);[t[a],r[a]]=[o,i]}return[t,r]}const Pc=(n,e,t)=>n<<t|e>>>32-t,Nc=(n,e,t)=>e<<t|n>>>32-t,zc=(n,e,t)=>e<<t-32|n>>>64-t,Rc=(n,e,t)=>n<<t-32|e>>>64-t;var Tc={fromBig:xc,split:Ic,toBig:(n,e)=>BigInt(n>>>0)<<Ec|BigInt(e>>>0),shrSH:(n,e,t)=>n>>>t,shrSL:(n,e,t)=>n<<32-t|e>>>t,rotrSH:(n,e,t)=>n>>>t|e<<32-t,rotrSL:(n,e,t)=>n<<32-t|e>>>t,rotrBH:(n,e,t)=>n<<64-t|e>>>t-32,rotrBL:(n,e,t)=>n>>>t-32|e<<64-t,rotr32H:(n,e)=>e,rotr32L:(n,e)=>n,rotlSH:Pc,rotlSL:Nc,rotlBH:zc,rotlBL:Rc,add:function(n,e,t,r){const a=(e>>>0)+(r>>>0);return{h:n+t+(a/2**32|0)|0,l:0|a}},add3L:(n,e,t)=>(n>>>0)+(e>>>0)+(t>>>0),add3H:(n,e,t,r)=>e+t+r+(n/2**32|0)|0,add4L:(n,e,t,r)=>(n>>>0)+(e>>>0)+(t>>>0)+(r>>>0),add4H:(n,e,t,r,a)=>e+t+r+a+(n/2**32|0)|0,add5H:(n,e,t,r,a,o)=>e+t+r+a+o+(n/2**32|0)|0,add5L:(n,e,t,r,a)=>(n>>>0)+(e>>>0)+(t>>>0)+(r>>>0)+(a>>>0)};const[Sc,Bc]=(()=>Tc.split(["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(n=>BigInt(n))))(),Cc=new Uint32Array(80),Oc=new Uint32Array(80);class Uc extends fc{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:n,Al:e,Bh:t,Bl:r,Ch:a,Cl:o,Dh:i,Dl:s,Eh:c,El:l,Fh:u,Fl:d,Gh:h,Gl:p,Hh:f,Hl:g}=this;return[n,e,t,r,a,o,i,s,c,l,u,d,h,p,f,g]}set(n,e,t,r,a,o,i,s,c,l,u,d,h,p,f,g){this.Ah=0|n,this.Al=0|e,this.Bh=0|t,this.Bl=0|r,this.Ch=0|a,this.Cl=0|o,this.Dh=0|i,this.Dl=0|s,this.Eh=0|c,this.El=0|l,this.Fh=0|u,this.Fl=0|d,this.Gh=0|h,this.Gl=0|p,this.Hh=0|f,this.Hl=0|g}process(n,e){for(let t=0;t<16;t++,e+=4)Cc[t]=n.getUint32(e),Oc[t]=n.getUint32(e+=4);for(let n=16;n<80;n++){const e=0|Cc[n-15],t=0|Oc[n-15],r=Tc.rotrSH(e,t,1)^Tc.rotrSH(e,t,8)^Tc.shrSH(e,t,7),a=Tc.rotrSL(e,t,1)^Tc.rotrSL(e,t,8)^Tc.shrSL(e,t,7),o=0|Cc[n-2],i=0|Oc[n-2],s=Tc.rotrSH(o,i,19)^Tc.rotrBH(o,i,61)^Tc.shrSH(o,i,6),c=Tc.rotrSL(o,i,19)^Tc.rotrBL(o,i,61)^Tc.shrSL(o,i,6),l=Tc.add4L(a,c,Oc[n-7],Oc[n-16]),u=Tc.add4H(l,r,s,Cc[n-7],Cc[n-16]);Cc[n]=0|u,Oc[n]=0|l}let{Ah:t,Al:r,Bh:a,Bl:o,Ch:i,Cl:s,Dh:c,Dl:l,Eh:u,El:d,Fh:h,Fl:p,Gh:f,Gl:g,Hh:m,Hl:b}=this;for(let n=0;n<80;n++){const e=Tc.rotrSH(u,d,14)^Tc.rotrSH(u,d,18)^Tc.rotrBH(u,d,41),y=Tc.rotrSL(u,d,14)^Tc.rotrSL(u,d,18)^Tc.rotrBL(u,d,41),v=u&h^~u&f,w=d&p^~d&g,k=Tc.add5L(b,y,w,Bc[n],Oc[n]),A=Tc.add5H(k,m,e,v,Sc[n],Cc[n]),E=0|k,x=Tc.rotrSH(t,r,28)^Tc.rotrBH(t,r,34)^Tc.rotrBH(t,r,39),I=Tc.rotrSL(t,r,28)^Tc.rotrBL(t,r,34)^Tc.rotrBL(t,r,39),P=t&a^t&i^a&i,N=r&o^r&s^o&s;m=0|f,b=0|g,f=0|h,g=0|p,h=0|u,p=0|d,({h:u,l:d}=Tc.add(0|c,0|l,0|A,0|E)),c=0|i,l=0|s,i=0|a,s=0|o,a=0|t,o=0|r;const z=Tc.add3L(E,I,N);t=Tc.add3H(z,A,x,P),r=0|z}({h:t,l:r}=Tc.add(0|this.Ah,0|this.Al,0|t,0|r)),({h:a,l:o}=Tc.add(0|this.Bh,0|this.Bl,0|a,0|o)),({h:i,l:s}=Tc.add(0|this.Ch,0|this.Cl,0|i,0|s)),({h:c,l:l}=Tc.add(0|this.Dh,0|this.Dl,0|c,0|l)),({h:u,l:d}=Tc.add(0|this.Eh,0|this.El,0|u,0|d)),({h:h,l:p}=Tc.add(0|this.Fh,0|this.Fl,0|h,0|p)),({h:f,l:g}=Tc.add(0|this.Gh,0|this.Gl,0|f,0|g)),({h:m,l:b}=Tc.add(0|this.Hh,0|this.Hl,0|m,0|b)),this.set(t,r,a,o,i,s,c,l,u,d,h,p,f,g,m,b)}roundClean(){Cc.fill(0),Oc.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)}}const Fc=cc(()=>new Uc);const Lc=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")}(),jc=Lc.crypto||Lc.msCrypto;function Dc(n){switch(n){case"sha256":return kc.create();case"sha512":return Fc.create()}Wo(!1,"invalid hashing algorithm name","algorithm",n)}let Mc=!1;const Gc=function(n,e,t){return function(n,e){const t={sha256:kc,sha512:Fc}[n];return Wo(null!=t,"invalid hmac algorithm","algorithm",n),dc.create(t,e)}(n,e).update(t).digest()};let qc=Gc;function Hc(n,e,t){const r=ti(e,"key"),a=ti(t,"data");return si(qc(n,r,a))}Hc._=Gc,Hc.lock=function(){Mc=!0},Hc.register=function(n){if(Mc)throw new Error("computeHmac is locked");qc=n},Object.freeze(Hc);const[Kc,Vc,_c]=[[],[],[]],Qc=BigInt(0),Jc=BigInt(1),$c=BigInt(2),Wc=BigInt(7),Zc=BigInt(256),Yc=BigInt(113);for(let n=0,e=Jc,t=1,r=0;n<24;n++){[t,r]=[r,(2*t+3*r)%5],Kc.push(2*(5*r+t)),Vc.push((n+1)*(n+2)/2%64);let a=Qc;for(let n=0;n<7;n++)e=(e<<Jc^(e>>Wc)*Yc)%Zc,e&$c&&(a^=Jc<<(Jc<<BigInt(n))-Jc);_c.push(a)}const[Xc,nl]=Ic(_c,!0),el=(n,e,t)=>t>32?zc(n,e,t):Pc(n,e,t),tl=(n,e,t)=>t>32?Rc(n,e,t):Nc(n,e,t);class rl extends oc{constructor(n,e,t,r=!1,a=24){if(super(),this.blockLen=n,this.suffix=e,this.outputLen=t,this.enableXOF=r,this.rounds=a,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,_s(t),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=Xs(this.state)}keccak(){!function(n,e=24){const t=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let e=0;e<10;e++)t[e]=n[e]^n[e+10]^n[e+20]^n[e+30]^n[e+40];for(let e=0;e<10;e+=2){const r=(e+8)%10,a=(e+2)%10,o=t[a],i=t[a+1],s=el(o,i,1)^t[r],c=tl(o,i,1)^t[r+1];for(let t=0;t<50;t+=10)n[e+t]^=s,n[e+t+1]^=c}let e=n[2],a=n[3];for(let t=0;t<24;t++){const r=Vc[t],o=el(e,a,r),i=tl(e,a,r),s=Kc[t];e=n[s],a=n[s+1],n[s]=o,n[s+1]=i}for(let e=0;e<50;e+=10){for(let r=0;r<10;r++)t[r]=n[e+r];for(let r=0;r<10;r++)n[e+r]^=~t[(r+2)%10]&t[(r+4)%10]}n[0]^=Xc[r],n[1]^=nl[r]}t.fill(0)}(this.state32,this.rounds),this.posOut=0,this.pos=0}update(n){$s(this);const{blockLen:e,state:t}=this,r=(n=ac(n)).length;for(let a=0;a<r;){const o=Math.min(e-this.pos,r-a);for(let e=0;e<o;e++)t[this.pos++]^=n[a++];this.pos===e&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:n,suffix:e,pos:t,blockLen:r}=this;n[t]^=e,128&e&&t===r-1&&this.keccak(),n[r-1]^=128,this.keccak()}writeInto(n){$s(this,!1),Qs(n),this.finish();const e=this.state,{blockLen:t}=this;for(let r=0,a=n.length;r<a;){this.posOut>=t&&this.keccak();const o=Math.min(t-this.posOut,a-r);n.set(e.subarray(this.posOut,this.posOut+o),r),this.posOut+=o,r+=o}return n}xofInto(n){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(n)}xof(n){return _s(n),this.xofInto(new Uint8Array(n))}digestInto(n){if(Ws(n,this),this.finished)throw new Error("digest() was already called");return this.writeInto(n),this.destroy(),n}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(n){const{blockLen:e,suffix:t,outputLen:r,rounds:a,enableXOF:o}=this;return n||(n=new rl(e,t,r,o,a)),n.state32.set(this.state32),n.pos=this.pos,n.posOut=this.posOut,n.finished=this.finished,n.rounds=a,n.suffix=t,n.outputLen=r,n.enableXOF=o,n.destroyed=this.destroyed,n}}const al=((n,e,t)=>cc(()=>new rl(e,n,t)))(1,136,32);let ol=!1;const il=function(n){return al(n)};let sl=il;function cl(n){const e=ti(n,"data");return si(sl(e))}cl._=il,cl.lock=function(){ol=!0},cl.register=function(n){if(ol)throw new TypeError("keccak256 is locked");sl=n},Object.freeze(cl);const ll=new Uint8Array([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),ul=Uint8Array.from({length:16},(n,e)=>e);let dl=[ul],hl=[ul.map(n=>(9*n+5)%16)];for(let n=0;n<4;n++)for(let e of[dl,hl])e.push(e[n].map(n=>ll[n]));const pl=[[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(n=>new Uint8Array(n)),fl=dl.map((n,e)=>n.map(n=>pl[e][n])),gl=hl.map((n,e)=>n.map(n=>pl[e][n])),ml=new Uint32Array([0,1518500249,1859775393,2400959708,2840853838]),bl=new Uint32Array([1352829926,1548603684,1836072691,2053994217,0]),yl=(n,e)=>n<<e|n>>>32-e;function vl(n,e,t,r){return 0===n?e^t^r:1===n?e&t|~e&r:2===n?(e|~t)^r:3===n?e&r|t&~r:e^(t|~r)}const wl=new Uint32Array(16);class kl extends fc{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){const{h0:n,h1:e,h2:t,h3:r,h4:a}=this;return[n,e,t,r,a]}set(n,e,t,r,a){this.h0=0|n,this.h1=0|e,this.h2=0|t,this.h3=0|r,this.h4=0|a}process(n,e){for(let t=0;t<16;t++,e+=4)wl[t]=n.getUint32(e,!0);let t=0|this.h0,r=t,a=0|this.h1,o=a,i=0|this.h2,s=i,c=0|this.h3,l=c,u=0|this.h4,d=u;for(let n=0;n<5;n++){const e=4-n,h=ml[n],p=bl[n],f=dl[n],g=hl[n],m=fl[n],b=gl[n];for(let e=0;e<16;e++){const r=yl(t+vl(n,a,i,c)+wl[f[e]]+h,m[e])+u|0;t=u,u=c,c=0|yl(i,10),i=a,a=r}for(let n=0;n<16;n++){const t=yl(r+vl(e,o,s,l)+wl[g[n]]+p,b[n])+d|0;r=d,d=l,l=0|yl(s,10),s=o,o=t}}this.set(this.h1+i+l|0,this.h2+c+d|0,this.h3+u+r|0,this.h4+t+o|0,this.h0+a+s|0)}roundClean(){wl.fill(0)}destroy(){this.destroyed=!0,this.buffer.fill(0),this.set(0,0,0,0,0)}}const Al=cc(()=>new kl);let El=!1;const xl=function(n){return Al(n)};let Il=xl;function Pl(n){const e=ti(n,"data");return si(Il(e))}Pl._=xl,Pl.lock=function(){El=!0},Pl.register=function(n){if(El)throw new TypeError("ripemd160 is locked");Il=n},Object.freeze(Pl);let Nl=!1;const zl=function(n,e,t,r,a){return function(n,e,t,r,a){const o={sha256:kc,sha512:Fc}[a];return Wo(null!=o,"invalid pbkdf2 algorithm","algorithm",a),pc(o,n,e,{c:t,dkLen:r})}(n,e,t,r,a)};let Rl=zl;function Tl(n,e,t,r,a){const o=ti(n,"password"),i=ti(e,"salt");return si(Rl(o,i,t,r,a))}Tl._=zl,Tl.lock=function(){Nl=!0},Tl.register=function(n){if(Nl)throw new Error("pbkdf2 is locked");Rl=n},Object.freeze(Tl);let Sl=!1;const Bl=function(n){return new Uint8Array(function(n){$o(null!=jc,"platform does not support secure random numbers","UNSUPPORTED_OPERATION",{operation:"randomBytes"}),Wo(Number.isInteger(n)&&n>0&&n<=1024,"invalid length","length",n);const e=new Uint8Array(n);return jc.getRandomValues(e),e}(n))};let Cl=Bl;function Ol(n){return Cl(n)}Ol._=Bl,Ol.lock=function(){Sl=!0},Ol.register=function(n){if(Sl)throw new Error("randomBytes is locked");Cl=n},Object.freeze(Ol);const Ul=(n,e)=>n<<e|n>>>32-e;function Fl(n,e,t,r,a,o){let i=n[e++]^t[r++],s=n[e++]^t[r++],c=n[e++]^t[r++],l=n[e++]^t[r++],u=n[e++]^t[r++],d=n[e++]^t[r++],h=n[e++]^t[r++],p=n[e++]^t[r++],f=n[e++]^t[r++],g=n[e++]^t[r++],m=n[e++]^t[r++],b=n[e++]^t[r++],y=n[e++]^t[r++],v=n[e++]^t[r++],w=n[e++]^t[r++],k=n[e++]^t[r++],A=i,E=s,x=c,I=l,P=u,N=d,z=h,R=p,T=f,S=g,B=m,C=b,O=y,U=v,F=w,L=k;for(let n=0;n<8;n+=2)P^=Ul(A+O|0,7),T^=Ul(P+A|0,9),O^=Ul(T+P|0,13),A^=Ul(O+T|0,18),S^=Ul(N+E|0,7),U^=Ul(S+N|0,9),E^=Ul(U+S|0,13),N^=Ul(E+U|0,18),F^=Ul(B+z|0,7),x^=Ul(F+B|0,9),z^=Ul(x+F|0,13),B^=Ul(z+x|0,18),I^=Ul(L+C|0,7),R^=Ul(I+L|0,9),C^=Ul(R+I|0,13),L^=Ul(C+R|0,18),E^=Ul(A+I|0,7),x^=Ul(E+A|0,9),I^=Ul(x+E|0,13),A^=Ul(I+x|0,18),z^=Ul(N+P|0,7),R^=Ul(z+N|0,9),P^=Ul(R+z|0,13),N^=Ul(P+R|0,18),C^=Ul(B+S|0,7),T^=Ul(C+B|0,9),S^=Ul(T+C|0,13),B^=Ul(S+T|0,18),O^=Ul(L+F|0,7),U^=Ul(O+L|0,9),F^=Ul(U+O|0,13),L^=Ul(F+U|0,18);a[o++]=i+A|0,a[o++]=s+E|0,a[o++]=c+x|0,a[o++]=l+I|0,a[o++]=u+P|0,a[o++]=d+N|0,a[o++]=h+z|0,a[o++]=p+R|0,a[o++]=f+T|0,a[o++]=g+S|0,a[o++]=m+B|0,a[o++]=b+C|0,a[o++]=y+O|0,a[o++]=v+U|0,a[o++]=w+F|0,a[o++]=k+L|0}function Ll(n,e,t,r,a){let o=r+0,i=r+16*a;for(let r=0;r<16;r++)t[i+r]=n[e+16*(2*a-1)+r];for(let r=0;r<a;r++,o+=16,e+=16)Fl(t,i,n,e,t,o),r>0&&(i+=16),Fl(t,o,n,e+=16,t,i)}function jl(n,e,t){const r=sc({dkLen:32,asyncTick:10,maxmem:1073742848},t),{N:a,r:o,p:i,dkLen:s,asyncTick:c,maxmem:l,onProgress:u}=r;if(_s(a),_s(o),_s(i),_s(s),_s(c),_s(l),void 0!==u&&"function"!=typeof u)throw new Error("progressCb should be function");const d=128*o,h=d/4;if(a<=1||a&a-1||a>=2**(d/8)||a>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(i<0||i>137438953440/d)throw new Error("Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)");if(s<0||s>137438953440)throw new Error("Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32");const p=d*(a+i);if(p>l)throw new Error(`Scrypt: parameters too large, ${p} (128 * r * (N + p)) > ${l} (maxmem)`);const f=pc(kc,n,e,{c:1,dkLen:d*i}),g=Xs(f),m=Xs(new Uint8Array(d*a)),b=Xs(new Uint8Array(d));let y=()=>{};if(u){const n=2*a*i,e=Math.max(Math.floor(n/1e4),1);let t=0;y=()=>{t++,!u||t%e&&t!==n||u(t/n)}}return{N:a,r:o,p:i,dkLen:s,blockSize32:h,V:m,B32:g,B:f,tmp:b,blockMixCb:y,asyncTick:c}}function Dl(n,e,t,r,a){const o=pc(kc,n,t,{c:1,dkLen:e});return t.fill(0),r.fill(0),a.fill(0),o}let Ml=!1,Gl=!1;const ql=async function(n,e,t,r,a,o,i){return await async function(n,e,t){const{N:r,r:a,p:o,dkLen:i,blockSize32:s,V:c,B32:l,B:u,tmp:d,blockMixCb:h,asyncTick:p}=jl(n,e,t);for(let n=0;n<o;n++){const e=s*n;for(let n=0;n<s;n++)c[n]=l[e+n];let t=0;await rc(r-1,p,()=>{Ll(c,t,c,t+=s,a),h()}),Ll(c,(r-1)*s,l,e,a),h(),await rc(r,p,()=>{const n=l[e+s-16]%r;for(let t=0;t<s;t++)d[t]=l[e+t]^c[n*s+t];Ll(d,0,l,e,a),h()})}return Dl(n,i,u,c,d)}(n,e,{N:t,r:r,p:a,dkLen:o,onProgress:i})},Hl=function(n,e,t,r,a,o){return function(n,e,t){const{N:r,r:a,p:o,dkLen:i,blockSize32:s,V:c,B32:l,B:u,tmp:d,blockMixCb:h}=jl(n,e,t);for(let n=0;n<o;n++){const e=s*n;for(let n=0;n<s;n++)c[n]=l[e+n];for(let n=0,e=0;n<r-1;n++)Ll(c,e,c,e+=s,a),h();Ll(c,(r-1)*s,l,e,a),h();for(let n=0;n<r;n++){const n=l[e+s-16]%r;for(let t=0;t<s;t++)d[t]=l[e+t]^c[n*s+t];Ll(d,0,l,e,a),h()}}return Dl(n,i,u,c,d)}(n,e,{N:t,r:r,p:a,dkLen:o})};let Kl=ql,Vl=Hl;async function _l(n,e,t,r,a,o,i){const s=ti(n,"passwd"),c=ti(e,"salt");return si(await Kl(s,c,t,r,a,o,i))}function Ql(n,e,t,r,a,o){const i=ti(n,"passwd"),s=ti(e,"salt");return si(Vl(i,s,t,r,a,o))}_l._=ql,_l.lock=function(){Gl=!0},_l.register=function(n){if(Gl)throw new Error("scrypt is locked");Kl=n},Object.freeze(_l),Ql._=Hl,Ql.lock=function(){Ml=!0},Ql.register=function(n){if(Ml)throw new Error("scryptSync is locked");Vl=n},Object.freeze(Ql);const Jl=function(n){return Dc("sha256").update(n).digest()},$l=function(n){return Dc("sha512").update(n).digest()};let Wl=Jl,Zl=$l,Yl=!1,Xl=!1;function nu(n){const e=ti(n,"data");return si(Wl(e))}function eu(n){const e=ti(n,"data");return si(Zl(e))}nu._=Jl,nu.lock=function(){Yl=!0},nu.register=function(n){if(Yl)throw new Error("sha256 is locked");Wl=n},Object.freeze(nu),eu._=$l,eu.lock=function(){Xl=!0},eu.register=function(n){if(Xl)throw new Error("sha512 is locked");Zl=n},Object.freeze(nu);
|
|
5
|
+
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
6
|
+
const tu=BigInt(0),ru=BigInt(1),au=BigInt(2),ou=n=>n instanceof Uint8Array,iu=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function su(n){if(!ou(n))throw new Error("Uint8Array expected");let e="";for(let t=0;t<n.length;t++)e+=iu[n[t]];return e}function cu(n){const e=n.toString(16);return 1&e.length?`0${e}`:e}function lu(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);return BigInt(""===n?"0":`0x${n}`)}function uu(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);const e=n.length;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);const t=new Uint8Array(e/2);for(let e=0;e<t.length;e++){const r=2*e,a=n.slice(r,r+2),o=Number.parseInt(a,16);if(Number.isNaN(o)||o<0)throw new Error("Invalid byte sequence");t[e]=o}return t}function du(n){return lu(su(n))}function hu(n){if(!ou(n))throw new Error("Uint8Array expected");return lu(su(Uint8Array.from(n).reverse()))}function pu(n,e){return uu(n.toString(16).padStart(2*e,"0"))}function fu(n,e){return pu(n,e).reverse()}function gu(n,e,t){let r;if("string"==typeof e)try{r=uu(e)}catch(t){throw new Error(`${n} must be valid hex string, got "${e}". Cause: ${t}`)}else{if(!ou(e))throw new Error(`${n} must be hex string or Uint8Array`);r=Uint8Array.from(e)}const a=r.length;if("number"==typeof t&&a!==t)throw new Error(`${n} expected ${t} bytes, got ${a}`);return r}function mu(...n){const e=new Uint8Array(n.reduce((n,e)=>n+e.length,0));let t=0;return n.forEach(n=>{if(!ou(n))throw new Error("Uint8Array expected");e.set(n,t),t+=n.length}),e}const bu=n=>(au<<BigInt(n-1))-ru,yu=n=>new Uint8Array(n),vu=n=>Uint8Array.from(n);function wu(n,e,t){if("number"!=typeof n||n<2)throw new Error("hashLen must be a number");if("number"!=typeof e||e<2)throw new Error("qByteLen must be a number");if("function"!=typeof t)throw new Error("hmacFn must be a function");let r=yu(n),a=yu(n),o=0;const i=()=>{r.fill(1),a.fill(0),o=0},s=(...n)=>t(a,r,...n),c=(n=yu())=>{a=s(vu([0]),n),r=s(),0!==n.length&&(a=s(vu([1]),n),r=s())},l=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let n=0;const t=[];for(;n<e;){r=s();const e=r.slice();t.push(e),n+=r.length}return mu(...t)};return(n,e)=>{let t;for(i(),c(n);!(t=e(l()));)c();return i(),t}}const ku={bigint:n=>"bigint"==typeof n,function:n=>"function"==typeof n,boolean:n=>"boolean"==typeof n,string:n=>"string"==typeof n,stringOrUint8Array:n=>"string"==typeof n||n instanceof Uint8Array,isSafeInteger:n=>Number.isSafeInteger(n),array:n=>Array.isArray(n),field:(n,e)=>e.Fp.isValid(n),hash:n=>"function"==typeof n&&Number.isSafeInteger(n.outputLen)};function Au(n,e,t={}){const r=(e,t,r)=>{const a=ku[t];if("function"!=typeof a)throw new Error(`Invalid validator "${t}", expected function`);const o=n[e];if(!(r&&void 0===o||a(o,n)))throw new Error(`Invalid param ${String(e)}=${o} (${typeof o}), expected ${t}`)};for(const[n,t]of Object.entries(e))r(n,t,!1);for(const[n,e]of Object.entries(t))r(n,e,!0);return n}var Eu=Object.freeze({__proto__:null,bytesToHex:su,numberToHexUnpadded:cu,hexToNumber:lu,hexToBytes:uu,bytesToNumberBE:du,bytesToNumberLE:hu,numberToBytesBE:pu,numberToBytesLE:fu,numberToVarBytesBE:function(n){return uu(cu(n))},ensureBytes:gu,concatBytes:mu,equalBytes:function(n,e){if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0},utf8ToBytes:function(n){if("string"!=typeof n)throw new Error("utf8ToBytes expected string, got "+typeof n);return new Uint8Array((new TextEncoder).encode(n))},bitLen:function(n){let e;for(e=0;n>tu;n>>=ru,e+=1);return e},bitGet:function(n,e){return n>>BigInt(e)&ru},bitSet:(n,e,t)=>n|(t?ru:tu)<<BigInt(e),bitMask:bu,createHmacDrbg:wu,validateObject:Au});
|
|
7
|
+
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const xu=BigInt(0),Iu=BigInt(1),Pu=BigInt(2),Nu=BigInt(3),zu=BigInt(4),Ru=BigInt(5),Tu=BigInt(8);function Su(n,e){const t=n%e;return t>=xu?t:e+t}function Bu(n,e,t){if(t<=xu||e<xu)throw new Error("Expected power/modulo > 0");if(t===Iu)return xu;let r=Iu;for(;e>xu;)e&Iu&&(r=r*n%t),n=n*n%t,e>>=Iu;return r}function Cu(n,e,t){let r=n;for(;e-- >xu;)r*=r,r%=t;return r}function Ou(n,e){if(n===xu||e<=xu)throw new Error(`invert: expected positive integers, got n=${n} mod=${e}`);let t=Su(n,e),r=e,a=xu,o=Iu;for(;t!==xu;){const n=r%t,e=a-o*(r/t);r=t,t=n,a=o,o=e}if(r!==Iu)throw new Error("invert: does not exist");return Su(a,e)}function Uu(n){if(n%zu===Nu){const e=(n+Iu)/zu;return function(n,t){const r=n.pow(t,e);if(!n.eql(n.sqr(r),t))throw new Error("Cannot find square root");return r}}if(n%Tu===Ru){const e=(n-Ru)/Tu;return function(n,t){const r=n.mul(t,Pu),a=n.pow(r,e),o=n.mul(t,a),i=n.mul(n.mul(o,Pu),a),s=n.mul(o,n.sub(i,n.ONE));if(!n.eql(n.sqr(s),t))throw new Error("Cannot find square root");return s}}return function(n){const e=(n-Iu)/Pu;let t,r,a;for(t=n-Iu,r=0;t%Pu===xu;t/=Pu,r++);for(a=Pu;a<n&&Bu(a,e,n)!==n-Iu;a++);if(1===r){const e=(n+Iu)/zu;return function(n,t){const r=n.pow(t,e);if(!n.eql(n.sqr(r),t))throw new Error("Cannot find square root");return r}}const o=(t+Iu)/Pu;return function(n,i){if(n.pow(i,e)===n.neg(n.ONE))throw new Error("Cannot find square root");let s=r,c=n.pow(n.mul(n.ONE,a),t),l=n.pow(i,o),u=n.pow(i,t);for(;!n.eql(u,n.ONE);){if(n.eql(u,n.ZERO))return n.ZERO;let e=1;for(let t=n.sqr(u);e<s&&!n.eql(t,n.ONE);e++)t=n.sqr(t);const t=n.pow(c,Iu<<BigInt(s-e-1));c=n.sqr(t),l=n.mul(l,t),u=n.mul(u,c),s=e}return l}}(n)}BigInt(9),BigInt(16);const Fu=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Lu(n,e){const t=void 0!==e?e:n.toString(2).length;return{nBitLength:t,nByteLength:Math.ceil(t/8)}}function ju(n){if("bigint"!=typeof n)throw new Error("field order must be bigint");const e=n.toString(2).length;return Math.ceil(e/8)}function Du(n){const e=ju(n);return e+Math.ceil(e/2)}
|
|
8
|
+
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
9
|
+
const Mu=BigInt(0),Gu=BigInt(1);function qu(n){return Au(n.Fp,Fu.reduce((n,e)=>(n[e]="function",n),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"})),Au(n,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Lu(n.n,n.nBitLength),...n,p:n.Fp.ORDER})}
|
|
10
|
+
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const{bytesToNumberBE:Hu,hexToBytes:Ku}=Eu,Vu={Err:class extends Error{constructor(n=""){super(n)}},_parseInt(n){const{Err:e}=Vu;if(n.length<2||2!==n[0])throw new e("Invalid signature integer tag");const t=n[1],r=n.subarray(2,t+2);if(!t||r.length!==t)throw new e("Invalid signature integer: wrong length");if(128&r[0])throw new e("Invalid signature integer: negative");if(0===r[0]&&!(128&r[1]))throw new e("Invalid signature integer: unnecessary leading zero");return{d:Hu(r),l:n.subarray(t+2)}},toSig(n){const{Err:e}=Vu,t="string"==typeof n?Ku(n):n;if(!(t instanceof Uint8Array))throw new Error("ui8a expected");let r=t.length;if(r<2||48!=t[0])throw new e("Invalid signature tag");if(t[1]!==r-2)throw new e("Invalid signature: incorrect length");const{d:a,l:o}=Vu._parseInt(t.subarray(2)),{d:i,l:s}=Vu._parseInt(o);if(s.length)throw new e("Invalid signature: left bytes after parsing");return{r:a,s:i}},hexFromSig(n){const e=n=>8&Number.parseInt(n[0],16)?"00"+n:n,t=n=>{const e=n.toString(16);return 1&e.length?`0${e}`:e},r=e(t(n.s)),a=e(t(n.r)),o=r.length/2,i=a.length/2,s=t(o),c=t(i);return`30${t(i+o+4)}02${c}${a}02${s}${r}`}},_u=BigInt(0),Qu=BigInt(1);BigInt(2);const Ju=BigInt(3);function $u(n){const e=function(n){const e=qu(n);Au(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});const{endo:t,Fp:r,a:a}=e;if(t){if(!r.eql(a,r.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if("object"!=typeof t||"bigint"!=typeof t.beta||"function"!=typeof t.splitScalar)throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}(n),{Fp:t}=e,r=e.toBytes||((n,e,r)=>{const a=e.toAffine();return mu(Uint8Array.from([4]),t.toBytes(a.x),t.toBytes(a.y))}),a=e.fromBytes||(n=>{const e=n.subarray(1);return{x:t.fromBytes(e.subarray(0,t.BYTES)),y:t.fromBytes(e.subarray(t.BYTES,2*t.BYTES))}});function o(n){const{a:r,b:a}=e,o=t.sqr(n),i=t.mul(o,n);return t.add(t.add(i,t.mul(n,r)),a)}if(!t.eql(t.sqr(e.Gy),o(e.Gx)))throw new Error("bad generator point: equation left != right");function i(n){return"bigint"==typeof n&&_u<n&&n<e.n}function s(n){if(!i(n))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(n){const{allowedPrivateKeyLengths:t,nByteLength:r,wrapPrivateKey:a,n:o}=e;if(t&&"bigint"!=typeof n){if(n instanceof Uint8Array&&(n=su(n)),"string"!=typeof n||!t.includes(n.length))throw new Error("Invalid key");n=n.padStart(2*r,"0")}let i;try{i="bigint"==typeof n?n:du(gu("private key",n,r))}catch(e){throw new Error(`private key must be ${r} bytes, hex or bigint, not ${typeof n}`)}return a&&(i=Su(i,o)),s(i),i}const l=new Map;function u(n){if(!(n instanceof d))throw new Error("ProjectivePoint expected")}class d{constructor(n,e,r){if(this.px=n,this.py=e,this.pz=r,null==n||!t.isValid(n))throw new Error("x required");if(null==e||!t.isValid(e))throw new Error("y required");if(null==r||!t.isValid(r))throw new Error("z required")}static fromAffine(n){const{x:e,y:r}=n||{};if(!n||!t.isValid(e)||!t.isValid(r))throw new Error("invalid affine point");if(n instanceof d)throw new Error("projective point not allowed");const a=n=>t.eql(n,t.ZERO);return a(e)&&a(r)?d.ZERO:new d(e,r,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(n){const e=t.invertBatch(n.map(n=>n.pz));return n.map((n,t)=>n.toAffine(e[t])).map(d.fromAffine)}static fromHex(n){const e=d.fromAffine(a(gu("pointHex",n)));return e.assertValidity(),e}static fromPrivateKey(n){return d.BASE.multiply(c(n))}_setWindowSize(n){this._WINDOW_SIZE=n,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}const{x:n,y:r}=this.toAffine();if(!t.isValid(n)||!t.isValid(r))throw new Error("bad point: x or y not FE");const a=t.sqr(r),i=o(n);if(!t.eql(a,i))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){const{y:n}=this.toAffine();if(t.isOdd)return!t.isOdd(n);throw new Error("Field doesn't support isOdd")}equals(n){u(n);const{px:e,py:r,pz:a}=this,{px:o,py:i,pz:s}=n,c=t.eql(t.mul(e,s),t.mul(o,a)),l=t.eql(t.mul(r,s),t.mul(i,a));return c&&l}negate(){return new d(this.px,t.neg(this.py),this.pz)}double(){const{a:n,b:r}=e,a=t.mul(r,Ju),{px:o,py:i,pz:s}=this;let c=t.ZERO,l=t.ZERO,u=t.ZERO,h=t.mul(o,o),p=t.mul(i,i),f=t.mul(s,s),g=t.mul(o,i);return g=t.add(g,g),u=t.mul(o,s),u=t.add(u,u),c=t.mul(n,u),l=t.mul(a,f),l=t.add(c,l),c=t.sub(p,l),l=t.add(p,l),l=t.mul(c,l),c=t.mul(g,c),u=t.mul(a,u),f=t.mul(n,f),g=t.sub(h,f),g=t.mul(n,g),g=t.add(g,u),u=t.add(h,h),h=t.add(u,h),h=t.add(h,f),h=t.mul(h,g),l=t.add(l,h),f=t.mul(i,s),f=t.add(f,f),h=t.mul(f,g),c=t.sub(c,h),u=t.mul(f,p),u=t.add(u,u),u=t.add(u,u),new d(c,l,u)}add(n){u(n);const{px:r,py:a,pz:o}=this,{px:i,py:s,pz:c}=n;let l=t.ZERO,h=t.ZERO,p=t.ZERO;const f=e.a,g=t.mul(e.b,Ju);let m=t.mul(r,i),b=t.mul(a,s),y=t.mul(o,c),v=t.add(r,a),w=t.add(i,s);v=t.mul(v,w),w=t.add(m,b),v=t.sub(v,w),w=t.add(r,o);let k=t.add(i,c);return w=t.mul(w,k),k=t.add(m,y),w=t.sub(w,k),k=t.add(a,o),l=t.add(s,c),k=t.mul(k,l),l=t.add(b,y),k=t.sub(k,l),p=t.mul(f,w),l=t.mul(g,y),p=t.add(l,p),l=t.sub(b,p),p=t.add(b,p),h=t.mul(l,p),b=t.add(m,m),b=t.add(b,m),y=t.mul(f,y),w=t.mul(g,w),b=t.add(b,y),y=t.sub(m,y),y=t.mul(f,y),w=t.add(w,y),m=t.mul(b,w),h=t.add(h,m),m=t.mul(k,w),l=t.mul(v,l),l=t.sub(l,m),m=t.mul(v,b),p=t.mul(k,p),p=t.add(p,m),new d(l,h,p)}subtract(n){return this.add(n.negate())}is0(){return this.equals(d.ZERO)}wNAF(n){return p.wNAFCached(this,l,n,n=>{const e=t.invertBatch(n.map(n=>n.pz));return n.map((n,t)=>n.toAffine(e[t])).map(d.fromAffine)})}multiplyUnsafe(n){const r=d.ZERO;if(n===_u)return r;if(s(n),n===Qu)return this;const{endo:a}=e;if(!a)return p.unsafeLadder(this,n);let{k1neg:o,k1:i,k2neg:c,k2:l}=a.splitScalar(n),u=r,h=r,f=this;for(;i>_u||l>_u;)i&Qu&&(u=u.add(f)),l&Qu&&(h=h.add(f)),f=f.double(),i>>=Qu,l>>=Qu;return o&&(u=u.negate()),c&&(h=h.negate()),h=new d(t.mul(h.px,a.beta),h.py,h.pz),u.add(h)}multiply(n){s(n);let r,a,o=n;const{endo:i}=e;if(i){const{k1neg:n,k1:e,k2neg:s,k2:c}=i.splitScalar(o);let{p:l,f:u}=this.wNAF(e),{p:h,f:f}=this.wNAF(c);l=p.constTimeNegate(n,l),h=p.constTimeNegate(s,h),h=new d(t.mul(h.px,i.beta),h.py,h.pz),r=l.add(h),a=u.add(f)}else{const{p:n,f:e}=this.wNAF(o);r=n,a=e}return d.normalizeZ([r,a])[0]}multiplyAndAddUnsafe(n,e,t){const r=d.BASE,a=(n,e)=>e!==_u&&e!==Qu&&n.equals(r)?n.multiply(e):n.multiplyUnsafe(e),o=a(this,e).add(a(n,t));return o.is0()?void 0:o}toAffine(n){const{px:e,py:r,pz:a}=this,o=this.is0();null==n&&(n=o?t.ONE:t.inv(a));const i=t.mul(e,n),s=t.mul(r,n),c=t.mul(a,n);if(o)return{x:t.ZERO,y:t.ZERO};if(!t.eql(c,t.ONE))throw new Error("invZ was invalid");return{x:i,y:s}}isTorsionFree(){const{h:n,isTorsionFree:t}=e;if(n===Qu)return!0;if(t)return t(d,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:n,clearCofactor:t}=e;return n===Qu?this:t?t(d,this):this.multiplyUnsafe(e.h)}toRawBytes(n=!0){return this.assertValidity(),r(d,this,n)}toHex(n=!0){return su(this.toRawBytes(n))}}d.BASE=new d(e.Gx,e.Gy,t.ONE),d.ZERO=new d(t.ZERO,t.ONE,t.ZERO);const h=e.nBitLength,p=function(n,e){const t=(n,e)=>{const t=e.negate();return n?t:e},r=n=>({windows:Math.ceil(e/n)+1,windowSize:2**(n-1)});return{constTimeNegate:t,unsafeLadder(e,t){let r=n.ZERO,a=e;for(;t>Mu;)t&Gu&&(r=r.add(a)),a=a.double(),t>>=Gu;return r},precomputeWindow(n,e){const{windows:t,windowSize:a}=r(e),o=[];let i=n,s=i;for(let n=0;n<t;n++){s=i,o.push(s);for(let n=1;n<a;n++)s=s.add(i),o.push(s);i=s.double()}return o},wNAF(e,a,o){const{windows:i,windowSize:s}=r(e);let c=n.ZERO,l=n.BASE;const u=BigInt(2**e-1),d=2**e,h=BigInt(e);for(let n=0;n<i;n++){const e=n*s;let r=Number(o&u);o>>=h,r>s&&(r-=d,o+=Gu);const i=e,p=e+Math.abs(r)-1,f=n%2!=0,g=r<0;0===r?l=l.add(t(f,a[i])):c=c.add(t(g,a[p]))}return{p:c,f:l}},wNAFCached(n,e,t,r){const a=n._WINDOW_SIZE||1;let o=e.get(n);return o||(o=this.precomputeWindow(n,a),1!==a&&e.set(n,r(o))),this.wNAF(a,o,t)}}}(d,e.endo?Math.ceil(h/2):h);return{CURVE:e,ProjectivePoint:d,normPrivateKeyToScalar:c,weierstrassEquation:o,isWithinCurveOrder:i}}function Wu(n){const e=function(n){const e=qu(n);return Au(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}(n),{Fp:t,n:r}=e,a=t.BYTES+1,o=2*t.BYTES+1;function i(n){return Su(n,r)}function s(n){return Ou(n,r)}const{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:d}=$u({...e,toBytes(n,e,r){const a=e.toAffine(),o=t.toBytes(a.x),i=mu;return r?i(Uint8Array.from([e.hasEvenY()?2:3]),o):i(Uint8Array.from([4]),o,t.toBytes(a.y))},fromBytes(n){const e=n.length,r=n[0],i=n.subarray(1);if(e!==a||2!==r&&3!==r){if(e===o&&4===r){return{x:t.fromBytes(i.subarray(0,t.BYTES)),y:t.fromBytes(i.subarray(t.BYTES,2*t.BYTES))}}throw new Error(`Point of length ${e} was invalid. Expected ${a} compressed bytes or ${o} uncompressed bytes`)}{const n=du(i);if(!(_u<(s=n)&&s<t.ORDER))throw new Error("Point is not on curve");const e=u(n);let a=t.sqrt(e);return!(1&~r)!==((a&Qu)===Qu)&&(a=t.neg(a)),{x:n,y:a}}var s}}),h=n=>su(pu(n,e.nByteLength));function p(n){return n>r>>Qu}const f=(n,e,t)=>du(n.slice(e,t));class g{constructor(n,e,t){this.r=n,this.s=e,this.recovery=t,this.assertValidity()}static fromCompact(n){const t=e.nByteLength;return n=gu("compactSignature",n,2*t),new g(f(n,0,t),f(n,t,2*t))}static fromDER(n){const{r:e,s:t}=Vu.toSig(gu("DER",n));return new g(e,t)}assertValidity(){if(!d(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!d(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(n){return new g(this.r,this.s,n)}recoverPublicKey(n){const{r:r,s:a,recovery:o}=this,l=v(gu("msgHash",n));if(null==o||![0,1,2,3].includes(o))throw new Error("recovery id invalid");const u=2===o||3===o?r+e.n:r;if(u>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");const d=1&o?"03":"02",p=c.fromHex(d+h(u)),f=s(u),g=i(-l*f),m=i(a*f),b=c.BASE.multiplyAndAddUnsafe(p,g,m);if(!b)throw new Error("point at infinify");return b.assertValidity(),b}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new g(this.r,i(-this.s),this.recovery):this}toDERRawBytes(){return uu(this.toDERHex())}toDERHex(){return Vu.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return uu(this.toCompactHex())}toCompactHex(){return h(this.r)+h(this.s)}}const m={isValidPrivateKey(n){try{return l(n),!0}catch(n){return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{const n=Du(e.n);return function(n,e,t=!1){const r=n.length,a=ju(e),o=Du(e);if(r<16||r<o||r>1024)throw new Error(`expected ${o}-1024 bytes of input, got ${r}`);const i=Su(t?du(n):hu(n),e-Iu)+Iu;return t?fu(i,a):pu(i,a)}(e.randomBytes(n),e.n)},precompute:(n=8,e=c.BASE)=>(e._setWindowSize(n),e.multiply(BigInt(3)),e)};function b(n){const e=n instanceof Uint8Array,t="string"==typeof n,r=(e||t)&&n.length;return e?r===a||r===o:t?r===2*a||r===2*o:n instanceof c}const y=e.bits2int||function(n){const t=du(n),r=8*n.length-e.nBitLength;return r>0?t>>BigInt(r):t},v=e.bits2int_modN||function(n){return i(y(n))},w=bu(e.nBitLength);function k(n){if("bigint"!=typeof n)throw new Error("bigint expected");if(!(_u<=n&&n<w))throw new Error(`bigint expected < 2^${e.nBitLength}`);return pu(n,e.nByteLength)}function A(n,r,a=E){if(["recovered","canonical"].some(n=>n in a))throw new Error("sign() legacy options not supported");const{hash:o,randomBytes:u}=e;let{lowS:h,prehash:f,extraEntropy:m}=a;null==h&&(h=!0),n=gu("msgHash",n),f&&(n=gu("prehashed msgHash",o(n)));const b=v(n),w=l(r),A=[k(w),k(b)];if(null!=m){const n=!0===m?u(t.BYTES):m;A.push(gu("extraEntropy",n))}const x=mu(...A),I=b;return{seed:x,k2sig:function(n){const e=y(n);if(!d(e))return;const t=s(e),r=c.BASE.multiply(e).toAffine(),a=i(r.x);if(a===_u)return;const o=i(t*i(I+a*w));if(o===_u)return;let l=(r.x===a?0:2)|Number(r.y&Qu),u=o;return h&&p(o)&&(u=function(n){return p(n)?i(-n):n}(o),l^=1),new g(a,u,l)}}}const E={lowS:e.lowS,prehash:!1},x={lowS:e.lowS,prehash:!1};return c.BASE._setWindowSize(8),{CURVE:e,getPublicKey:function(n,e=!0){return c.fromPrivateKey(n).toRawBytes(e)},getSharedSecret:function(n,e,t=!0){if(b(n))throw new Error("first arg must be private key");if(!b(e))throw new Error("second arg must be public key");return c.fromHex(e).multiply(l(n)).toRawBytes(t)},sign:function(n,t,r=E){const{seed:a,k2sig:o}=A(n,t,r),i=e;return wu(i.hash.outputLen,i.nByteLength,i.hmac)(a,o)},verify:function(n,t,r,a=x){const o=n;if(t=gu("msgHash",t),r=gu("publicKey",r),"strict"in a)throw new Error("options.strict was renamed to lowS");const{lowS:l,prehash:u}=a;let d,h;try{if("string"==typeof o||o instanceof Uint8Array)try{d=g.fromDER(o)}catch(n){if(!(n instanceof Vu.Err))throw n;d=g.fromCompact(o)}else{if("object"!=typeof o||"bigint"!=typeof o.r||"bigint"!=typeof o.s)throw new Error("PARSE");{const{r:n,s:e}=o;d=new g(n,e)}}h=c.fromHex(r)}catch(n){if("PARSE"===n.message)throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(l&&d.hasHighS())return!1;u&&(t=e.hash(t));const{r:p,s:f}=d,m=v(t),b=s(f),y=i(m*b),w=i(p*b),k=c.BASE.multiplyAndAddUnsafe(h,y,w)?.toAffine();return!!k&&i(k.x)===p},ProjectivePoint:c,Signature:g,utils:m}}
|
|
11
|
+
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function Zu(n){return{hash:n,hmac:(e,...t)=>dc(n,e,function(...n){const e=new Uint8Array(n.reduce((n,e)=>n+e.length,0));let t=0;return n.forEach(n=>{if(!Ys(n))throw new Error("Uint8Array expected");e.set(n,t),t+=n.length}),e}(...t)),randomBytes:lc}}BigInt(4);
|
|
12
|
+
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
13
|
+
const Yu=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Xu=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),nd=BigInt(1),ed=BigInt(2),td=(n,e)=>(n+e/ed)/e;const rd=function(n,e,t=!1,r={}){if(n<=xu)throw new Error(`Expected Field ORDER > 0, got ${n}`);const{nBitLength:a,nByteLength:o}=Lu(n,e);if(o>2048)throw new Error("Field lengths over 2048 bytes are not supported");const i=Uu(n),s=Object.freeze({ORDER:n,BITS:a,BYTES:o,MASK:bu(a),ZERO:xu,ONE:Iu,create:e=>Su(e,n),isValid:e=>{if("bigint"!=typeof e)throw new Error("Invalid field element: expected bigint, got "+typeof e);return xu<=e&&e<n},is0:n=>n===xu,isOdd:n=>(n&Iu)===Iu,neg:e=>Su(-e,n),eql:(n,e)=>n===e,sqr:e=>Su(e*e,n),add:(e,t)=>Su(e+t,n),sub:(e,t)=>Su(e-t,n),mul:(e,t)=>Su(e*t,n),pow:(n,e)=>function(n,e,t){if(t<xu)throw new Error("Expected power > 0");if(t===xu)return n.ONE;if(t===Iu)return e;let r=n.ONE,a=e;for(;t>xu;)t&Iu&&(r=n.mul(r,a)),a=n.sqr(a),t>>=Iu;return r}(s,n,e),div:(e,t)=>Su(e*Ou(t,n),n),sqrN:n=>n*n,addN:(n,e)=>n+e,subN:(n,e)=>n-e,mulN:(n,e)=>n*e,inv:e=>Ou(e,n),sqrt:r.sqrt||(n=>i(s,n)),invertBatch:n=>function(n,e){const t=new Array(e.length),r=e.reduce((e,r,a)=>n.is0(r)?e:(t[a]=e,n.mul(e,r)),n.ONE),a=n.inv(r);return e.reduceRight((e,r,a)=>n.is0(r)?e:(t[a]=n.mul(e,t[a]),n.mul(e,r)),a),t}(s,n),cmov:(n,e,t)=>t?e:n,toBytes:n=>t?fu(n,o):pu(n,o),fromBytes:n=>{if(n.length!==o)throw new Error(`Fp.fromBytes: expected ${o}, got ${n.length}`);return t?hu(n):du(n)}});return Object.freeze(s)}(Yu,void 0,void 0,{sqrt:function(n){const e=Yu,t=BigInt(3),r=BigInt(6),a=BigInt(11),o=BigInt(22),i=BigInt(23),s=BigInt(44),c=BigInt(88),l=n*n*n%e,u=l*l*n%e,d=Cu(u,t,e)*u%e,h=Cu(d,t,e)*u%e,p=Cu(h,ed,e)*l%e,f=Cu(p,a,e)*p%e,g=Cu(f,o,e)*f%e,m=Cu(g,s,e)*g%e,b=Cu(m,c,e)*m%e,y=Cu(b,s,e)*g%e,v=Cu(y,t,e)*u%e,w=Cu(v,i,e)*f%e,k=Cu(w,r,e)*l%e,A=Cu(k,ed,e);if(!rd.eql(rd.sqr(A),n))throw new Error("Cannot find square root");return A}}),ad=function(n,e){const t=e=>Wu({...n,...Zu(e)});return Object.freeze({...t(e),create:t})}({a:BigInt(0),b:BigInt(7),Fp:rd,n:Xu,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:n=>{const e=Xu,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-nd*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=t,i=BigInt("0x100000000000000000000000000000000"),s=td(o*n,e),c=td(-r*n,e);let l=Su(n-s*t-c*a,e),u=Su(-s*r-c*o,e);const d=l>i,h=u>i;if(d&&(l=e-l),h&&(u=e-u),l>i||u>i)throw new Error("splitScalar: Endomorphism failed, k="+n);return{k1neg:d,k1:l,k2neg:h,k2:u}}}},kc);BigInt(0),ad.ProjectivePoint;const od="0x0000000000000000000000000000000000000000",id="0x0000000000000000000000000000000000000000000000000000000000000000",sd=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),cd=BigInt("1000000000000000000"),ld=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),ud=BigInt("0x8000000000000000000000000000000000000000000000000000000000000000")*BigInt(-1),dd=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),hd="Ethereum Signed Message:\n",pd=BigInt(0),fd=BigInt(1),gd=BigInt(2),md=BigInt(27),bd=BigInt(28),yd=BigInt(35),vd=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),wd=vd/gd,kd=Symbol.for("nodejs.util.inspect.custom"),Ad={};function Ed(n){return pi(zi(n),32)}class xd{#q;#H;#K;#V;get r(){return this.#q}set r(n){Wo(32===li(n),"invalid r","value",n),this.#q=si(n)}get s(){return Wo(parseInt(this.#H.substring(0,3))<8,"non-canonical s; use ._s","s",this.#H),this.#H}set s(n){Wo(32===li(n),"invalid s","value",n),this.#H=si(n)}get _s(){return this.#H}isValid(){return BigInt(this.#H)<=wd}get v(){return this.#K}set v(n){const e=Ii(n,"value");Wo(27===e||28===e,"invalid v","v",n),this.#K=e}get networkV(){return this.#V}get legacyChainId(){const n=this.networkV;return null==n?null:xd.getChainId(n)}get yParity(){return 27===this.v?0:1}get yParityAndS(){const n=ti(this.s);return this.yParity&&(n[0]|=128),si(n)}get compactSerialized(){return ci([this.r,this.yParityAndS])}get serialized(){return ci([this.r,this.s,this.yParity?"0x1c":"0x1b"])}constructor(n,e,t,r){ni(n,Ad,"Signature"),this.#q=e,this.#H=t,this.#K=r,this.#V=null}getCanonical(){if(this.isValid())return this;const n=vd-BigInt(this._s),e=55-this.v,t=new xd(Ad,this.r,Ed(n),e);return this.networkV&&(t.#V=this.networkV),t}clone(){const n=new xd(Ad,this.r,this._s,this.v);return this.networkV&&(n.#V=this.networkV),n}toJSON(){const n=this.networkV;return{_type:"signature",networkV:null!=n?n.toString():null,r:this.r,s:this._s,v:this.v}}[kd](){return this.toString()}toString(){return this.isValid()?`Signature { r: ${this.r}, s: ${this._s}, v: ${this.v} }`:`Signature { r: ${this.r}, s: ${this._s}, v: ${this.v}, valid: false }`}static getChainId(n){const e=ki(n,"v");return e==md||e==bd?pd:(Wo(e>=yd,"invalid EIP-155 v","v",n),(e-yd)/gd)}static getChainIdV(n,e){return ki(n)*gd+BigInt(35+e-27)}static getNormalizedV(n){const e=ki(n);return e===pd||e===md?27:e===fd||e===bd?28:(Wo(e>=yd,"invalid v","v",n),e&fd?27:28)}static from(n){function e(e,t){Wo(e,t,"signature",n)}if(null==n)return new xd(Ad,id,id,27);if("string"==typeof n){const t=ti(n,"signature");if(64===t.length){const n=si(t.slice(0,32)),e=t.slice(32,64),r=128&e[0]?28:27;return e[0]&=127,new xd(Ad,n,si(e),r)}if(65===t.length){const n=si(t.slice(0,32)),e=si(t.slice(32,64)),r=xd.getNormalizedV(t[64]);return new xd(Ad,n,e,r)}e(!1,"invalid raw signature length")}if(n instanceof xd)return n.clone();const t=n.r;e(null!=t,"missing r");const r=Ed(t),a=function(n,t){if(null!=n)return Ed(n);if(null!=t){e(ai(t,32),"invalid yParityAndS");const n=ti(t);return n[0]&=127,si(n)}e(!1,"missing s")}(n.s,n.yParityAndS),{networkV:o,v:i}=function(n,t,r){if(null!=n){const e=ki(n);return{networkV:e>=yd?e:void 0,v:xd.getNormalizedV(e)}}if(null!=t)return e(ai(t,32),"invalid yParityAndS"),{v:128&ti(t)[0]?28:27};if(null!=r){switch(Ii(r,"sig.yParity")){case 0:return{v:27};case 1:return{v:28}}e(!1,"invalid yParity")}e(!1,"missing v")}(n.v,n.yParityAndS,n.yParity),s=new xd(Ad,r,a,i);return o&&(s.#V=o),e(null==n.yParity||Ii(n.yParity,"sig.yParity")===s.yParity,"yParity mismatch"),e(null==n.yParityAndS||n.yParityAndS===s.yParityAndS,"yParityAndS mismatch"),s}}class Id{#_;constructor(n){Wo(32===li(n),"invalid private key","privateKey","[REDACTED]"),this.#_=si(n)}get privateKey(){return this.#_}get publicKey(){return Id.computePublicKey(this.#_)}get compressedPublicKey(){return Id.computePublicKey(this.#_,!0)}sign(n){Wo(32===li(n),"invalid digest length","digest",n);const e=ad.sign(ri(n),ri(this.#_),{lowS:!0});return xd.from({r:Ni(e.r,32),s:Ni(e.s,32),v:e.recovery?28:27})}computeSharedSecret(n){const e=Id.computePublicKey(n);return si(ad.getSharedSecret(ri(this.#_),ti(e),!1))}static computePublicKey(n,e){let t=ti(n,"key");if(32===t.length){return si(ad.getPublicKey(t,!!e))}if(64===t.length){const n=new Uint8Array(65);n[0]=4,n.set(t,1),t=n}return si(ad.ProjectivePoint.fromHex(t).toRawBytes(e))}static recoverPublicKey(n,e){Wo(32===li(n),"invalid digest length","digest",n);const t=xd.from(e);let r=ad.Signature.fromCompact(ri(ci([t.r,t.s])));r=r.addRecoveryBit(t.yParity);const a=r.recoverPublicKey(ri(n));return Wo(null!=a,"invalid signature for digest","signature",e),"0x"+a.toHex(!1)}static addPoints(n,e,t){const r=ad.ProjectivePoint.fromHex(Id.computePublicKey(n).substring(2)),a=ad.ProjectivePoint.fromHex(Id.computePublicKey(e).substring(2));return"0x"+r.add(a).toHex(!!t)}}function Pd(){Hc.lock(),cl.lock(),Tl.lock(),Ol.lock(),Pl.lock(),_l.lock(),Ql.lock(),nu.lock(),eu.lock(),Ol.lock()}const Nd=BigInt(0),zd=BigInt(36);function Rd(n){const e=(n=n.toLowerCase()).substring(2).split(""),t=new Uint8Array(40);for(let n=0;n<40;n++)t[n]=e[n].charCodeAt(0);const r=ti(cl(t));for(let n=0;n<40;n+=2)r[n>>1]>>4>=8&&(e[n]=e[n].toUpperCase()),(15&r[n>>1])>=8&&(e[n+1]=e[n+1].toUpperCase());return"0x"+e.join("")}const Td={};for(let n=0;n<10;n++)Td[String(n)]=String(n);for(let n=0;n<26;n++)Td[String.fromCharCode(65+n)]=String(10+n);function Sd(n){let e=(n=(n=n.toUpperCase()).substring(4)+n.substring(0,2)+"00").split("").map(n=>Td[n]).join("");for(;e.length>=15;){let n=e.substring(0,15);e=parseInt(n,10)%97+e.substring(n.length)}let t=String(98-parseInt(e,10)%97);for(;t.length<2;)t="0"+t;return t}const Bd=function(){const n={};for(let e=0;e<36;e++){n["0123456789abcdefghijklmnopqrstuvwxyz"[e]]=BigInt(e)}return n}();function Cd(n){if(Wo("string"==typeof n,"invalid address","address",n),n.match(/^(0x)?[0-9a-fA-F]{40}$/)){n.startsWith("0x")||(n="0x"+n);const e=Rd(n);return Wo(!n.match(/([A-F].*[a-f])|([a-f].*[A-F])/)||e===n,"bad address checksum","address",n),e}if(n.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){Wo(n.substring(2,4)===Sd(n),"bad icap checksum","address",n);let e=function(n){n=n.toLowerCase();let e=Nd;for(let t=0;t<n.length;t++)e=e*zd+Bd[n[t]];return e}(n.substring(4)).toString(16);for(;e.length<40;)e="0"+e;return Rd("0x"+e)}Wo(!1,"invalid address","address",n)}function Od(n){let e=BigInt(Cd(n)).toString(36).toUpperCase();for(;e.length<30;)e="0"+e;return"XE"+Sd("XE00"+e)+e}function Ud(n){const e=Cd(n.from);let t=ki(n.nonce,"tx.nonce").toString(16);return t="0"===t?"0x":t.length%2?"0x0"+t:"0x"+t,Cd(ui(cl(xs([e,t])),12))}function Fd(n,e,t){const r=Cd(n),a=ti(e,"salt"),o=ti(t,"initCodeHash");return Wo(32===a.length,"salt must be 32 bytes","salt",e),Wo(32===o.length,"initCodeHash must be 32 bytes","initCodeHash",t),Cd(ui(cl(ci(["0xff",r,a,o])),12))}function Ld(n){return n&&"function"==typeof n.getAddress}function jd(n){try{return Cd(n),!0}catch(n){}return!1}async function Dd(n,e){const t=await e;return null!=t&&"0x0000000000000000000000000000000000000000"!==t||($o("string"!=typeof n,"unconfigured name","UNCONFIGURED_NAME",{value:n}),Wo(!1,"invalid AddressLike value; did not resolve to a value address","target",n)),Cd(t)}function Md(n,e){return"string"==typeof n?n.match(/^0x[0-9a-f]{40}$/i)?Cd(n):($o(null!=e,"ENS resolution requires a provider","UNSUPPORTED_OPERATION",{operation:"resolveName"}),Dd(n,e.resolveName(n))):Ld(n)?Dd(n,n.getAddress()):n&&"function"==typeof n.then?Dd(n,n):void Wo(!1,"unsupported addressable value","target",n)}const Gd={};function qd(n,e){let t=!1;return e<0&&(t=!0,e*=-1),new Vd(Gd,`${t?"":"u"}int${e}`,n,{signed:t,width:e})}function Hd(n,e){return new Vd(Gd,`bytes${e||""}`,n,{size:e})}const Kd=Symbol.for("_ethers_typed");class Vd{type;value;#Q;_typedSymbol;constructor(n,e,t,r){null==r&&(r=null),ni(Gd,n,"Typed"),Ko(this,{_typedSymbol:Kd,type:e,value:t}),this.#Q=r,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(n=>n.format()).join(",")})`:this.type}defaultValue(){return 0}minValue(){return 0}maxValue(){return 0}isBigInt(){return!!this.type.match(/^u?int[0-9]+$/)}isData(){return this.type.startsWith("bytes")}isString(){return"string"===this.type}get tupleName(){if("tuple"!==this.type)throw TypeError("not a tuple");return this.#Q}get arrayLength(){if("array"!==this.type)throw TypeError("not an array");return!0===this.#Q?-1:!1===this.#Q?this.value.length:null}static from(n,e){return new Vd(Gd,n,e)}static uint8(n){return qd(n,8)}static uint16(n){return qd(n,16)}static uint24(n){return qd(n,24)}static uint32(n){return qd(n,32)}static uint40(n){return qd(n,40)}static uint48(n){return qd(n,48)}static uint56(n){return qd(n,56)}static uint64(n){return qd(n,64)}static uint72(n){return qd(n,72)}static uint80(n){return qd(n,80)}static uint88(n){return qd(n,88)}static uint96(n){return qd(n,96)}static uint104(n){return qd(n,104)}static uint112(n){return qd(n,112)}static uint120(n){return qd(n,120)}static uint128(n){return qd(n,128)}static uint136(n){return qd(n,136)}static uint144(n){return qd(n,144)}static uint152(n){return qd(n,152)}static uint160(n){return qd(n,160)}static uint168(n){return qd(n,168)}static uint176(n){return qd(n,176)}static uint184(n){return qd(n,184)}static uint192(n){return qd(n,192)}static uint200(n){return qd(n,200)}static uint208(n){return qd(n,208)}static uint216(n){return qd(n,216)}static uint224(n){return qd(n,224)}static uint232(n){return qd(n,232)}static uint240(n){return qd(n,240)}static uint248(n){return qd(n,248)}static uint256(n){return qd(n,256)}static uint(n){return qd(n,256)}static int8(n){return qd(n,-8)}static int16(n){return qd(n,-16)}static int24(n){return qd(n,-24)}static int32(n){return qd(n,-32)}static int40(n){return qd(n,-40)}static int48(n){return qd(n,-48)}static int56(n){return qd(n,-56)}static int64(n){return qd(n,-64)}static int72(n){return qd(n,-72)}static int80(n){return qd(n,-80)}static int88(n){return qd(n,-88)}static int96(n){return qd(n,-96)}static int104(n){return qd(n,-104)}static int112(n){return qd(n,-112)}static int120(n){return qd(n,-120)}static int128(n){return qd(n,-128)}static int136(n){return qd(n,-136)}static int144(n){return qd(n,-144)}static int152(n){return qd(n,-152)}static int160(n){return qd(n,-160)}static int168(n){return qd(n,-168)}static int176(n){return qd(n,-176)}static int184(n){return qd(n,-184)}static int192(n){return qd(n,-192)}static int200(n){return qd(n,-200)}static int208(n){return qd(n,-208)}static int216(n){return qd(n,-216)}static int224(n){return qd(n,-224)}static int232(n){return qd(n,-232)}static int240(n){return qd(n,-240)}static int248(n){return qd(n,-248)}static int256(n){return qd(n,-256)}static int(n){return qd(n,-256)}static bytes1(n){return Hd(n,1)}static bytes2(n){return Hd(n,2)}static bytes3(n){return Hd(n,3)}static bytes4(n){return Hd(n,4)}static bytes5(n){return Hd(n,5)}static bytes6(n){return Hd(n,6)}static bytes7(n){return Hd(n,7)}static bytes8(n){return Hd(n,8)}static bytes9(n){return Hd(n,9)}static bytes10(n){return Hd(n,10)}static bytes11(n){return Hd(n,11)}static bytes12(n){return Hd(n,12)}static bytes13(n){return Hd(n,13)}static bytes14(n){return Hd(n,14)}static bytes15(n){return Hd(n,15)}static bytes16(n){return Hd(n,16)}static bytes17(n){return Hd(n,17)}static bytes18(n){return Hd(n,18)}static bytes19(n){return Hd(n,19)}static bytes20(n){return Hd(n,20)}static bytes21(n){return Hd(n,21)}static bytes22(n){return Hd(n,22)}static bytes23(n){return Hd(n,23)}static bytes24(n){return Hd(n,24)}static bytes25(n){return Hd(n,25)}static bytes26(n){return Hd(n,26)}static bytes27(n){return Hd(n,27)}static bytes28(n){return Hd(n,28)}static bytes29(n){return Hd(n,29)}static bytes30(n){return Hd(n,30)}static bytes31(n){return Hd(n,31)}static bytes32(n){return Hd(n,32)}static address(n){return new Vd(Gd,"address",n)}static bool(n){return new Vd(Gd,"bool",!!n)}static bytes(n){return new Vd(Gd,"bytes",n)}static string(n){return new Vd(Gd,"string",n)}static array(n,e){throw new Error("not implemented yet")}static tuple(n,e){throw new Error("not implemented yet")}static overrides(n){return new Vd(Gd,"overrides",Object.assign({},n))}static isTyped(n){return n&&"object"==typeof n&&"_typedSymbol"in n&&n._typedSymbol===Kd}static dereference(n,e){if(Vd.isTyped(n)){if(n.type!==e)throw new Error(`invalid type: expecetd ${e}, got ${n.type}`);return n.value}return n}}class _d extends Hs{constructor(n){super("address","address",n,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(n,e){let t=Vd.dereference(e,"string");try{t=Cd(t)}catch(n){return this._throwError(n.message,e)}return n.writeValue(t)}decode(n){return Cd(Ni(n.readValue(),20))}}class Qd extends Hs{coder;constructor(n){super(n.name,n.type,"_",n.dynamic),this.coder=n}defaultValue(){return this.coder.defaultValue()}encode(n,e){return this.coder.encode(n,e)}decode(n){return this.coder.decode(n)}}function Jd(n,e,t){let r=[];if(Array.isArray(t))r=t;else if(t&&"object"==typeof t){let n={};r=e.map(e=>{const r=e.localName;return $o(r,"cannot encode object for signature with missing names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:t}),$o(!n[r],"cannot encode object for signature with duplicate names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:t}),n[r]=!0,t[r]})}else Wo(!1,"invalid tuple value","tuple",t);Wo(e.length===r.length,"types/value length mismatch","tuple",t);let a=new Ks,o=new Ks,i=[];e.forEach((n,e)=>{let t=r[e];if(n.dynamic){let e=o.length;n.encode(o,t);let r=a.writeUpdatableValue();i.push(n=>{r(n+e)})}else n.encode(a,t)}),i.forEach(n=>{n(a.length)});let s=n.appendWriter(a);return s+=n.appendWriter(o),s}function $d(n,e){let t=[],r=[],a=n.subReader(0);return e.forEach(e=>{let o=null;if(e.dynamic){let t=n.readIndex(),r=a.subReader(t);try{o=e.decode(r)}catch(n){if(_o(n,"BUFFER_OVERRUN"))throw n;o=n,o.baseType=e.name,o.name=e.localName,o.type=e.type}}else try{o=e.decode(n)}catch(n){if(_o(n,"BUFFER_OVERRUN"))throw n;o=n,o.baseType=e.name,o.name=e.localName,o.type=e.type}if(null==o)throw new Error("investigate");t.push(o),r.push(e.localName||null)}),Ms.fromItems(t,r)}class Wd extends Hs{coder;length;constructor(n,e,t){super("array",n.type+"["+(e>=0?e:"")+"]",t,-1===e||n.dynamic),Ko(this,{coder:n,length:e})}defaultValue(){const n=this.coder.defaultValue(),e=[];for(let t=0;t<this.length;t++)e.push(n);return e}encode(n,e){const t=Vd.dereference(e,"array");Array.isArray(t)||this._throwError("expected array value",t);let r=this.length;-1===r&&(r=t.length,n.writeValue(t.length)),Zo(t.length,r,"coder array"+(this.localName?" "+this.localName:""));let a=[];for(let n=0;n<t.length;n++)a.push(this.coder);return Jd(n,a,t)}decode(n){let e=this.length;-1===e&&(e=n.readIndex(),$o(e*Ss<=n.dataLength,"insufficient data length","BUFFER_OVERRUN",{buffer:n.bytes,offset:e*Ss,length:n.dataLength}));let t=[];for(let n=0;n<e;n++)t.push(new Qd(this.coder));return $d(n,t)}}class Zd extends Hs{constructor(n){super("bool","bool",n,!1)}defaultValue(){return!1}encode(n,e){const t=Vd.dereference(e,"bool");return n.writeValue(t?1:0)}decode(n){return!!n.readValue()}}class Yd extends Hs{constructor(n,e){super(n,n,e,!0)}defaultValue(){return"0x"}encode(n,e){e=ri(e);let t=n.writeValue(e.length);return t+=n.writeBytes(e),t}decode(n){return n.readBytes(n.readIndex(),!0)}}class Xd extends Yd{constructor(n){super("bytes",n)}decode(n){return si(super.decode(n))}}class nh extends Hs{size;constructor(n,e){let t="bytes"+String(n);super(t,t,e,!1),Ko(this,{size:n},{size:"number"})}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(n,e){let t=ri(Vd.dereference(e,this.type));return t.length!==this.size&&this._throwError("incorrect data length",e),n.writeBytes(t)}decode(n){return si(n.readBytes(this.size))}}const eh=new Uint8Array([]);class th extends Hs{constructor(n){super("null","",n,!1)}defaultValue(){return null}encode(n,e){return null!=e&&this._throwError("not null",e),n.writeBytes(eh)}decode(n){return n.readBytes(0),null}}const rh=BigInt(0),ah=BigInt(1),oh=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");class ih extends Hs{size;signed;constructor(n,e,t){const r=(e?"int":"uint")+8*n;super(r,r,t,!1),Ko(this,{size:n,signed:e},{size:"number",signed:"boolean"})}defaultValue(){return 0}encode(n,e){let t=ki(Vd.dereference(e,this.type)),r=wi(oh,256);if(this.signed){let n=wi(r,8*this.size-1);(t>n||t<-(n+ah))&&this._throwError("value out-of-bounds",e),t=vi(t,256)}else(t<rh||t>wi(r,8*this.size))&&this._throwError("value out-of-bounds",e);return n.writeValue(t)}decode(n){let e=wi(n.readValue(),8*this.size);return this.signed&&(e=yi(e,8*this.size)),e}}class sh extends Yd{constructor(n){super("string",n)}defaultValue(){return""}encode(n,e){return super.encode(n,Hi(Vd.dereference(e,"string")))}decode(n){return Ki(super.decode(n))}}class ch extends Hs{coders;constructor(n,e){let t=!1;const r=[];n.forEach(n=>{n.dynamic&&(t=!0),r.push(n.type)});super("tuple","tuple("+r.join(",")+")",e,t),Ko(this,{coders:Object.freeze(n.slice())})}defaultValue(){const n=[];this.coders.forEach(e=>{n.push(e.defaultValue())});const e=this.coders.reduce((n,e)=>{const t=e.localName;return t&&(n[t]||(n[t]=0),n[t]++),n},{});return this.coders.forEach((t,r)=>{let a=t.localName;a&&1===e[a]&&("length"===a&&(a="_length"),null==n[a]&&(n[a]=n[r]))}),Object.freeze(n)}encode(n,e){const t=Vd.dereference(e,"tuple");return Jd(n,this.coders,t)}decode(n){return $d(n,this.coders)}}function lh(n,e){return{address:Cd(n),storageKeys:e.map((n,e)=>(Wo(ai(n,32),"invalid slot",`storageKeys[${e}]`,n),n.toLowerCase()))}}function uh(n){if(Array.isArray(n))return n.map((e,t)=>Array.isArray(e)?(Wo(2===e.length,"invalid slot set",`value[${t}]`,e),lh(e[0],e[1])):(Wo(null!=e&&"object"==typeof e,"invalid address-slot set","value",n),lh(e.address,e.storageKeys)));Wo(null!=n&&"object"==typeof n,"invalid access list","value",n);const e=Object.keys(n).map(e=>{const t=n[e].reduce((n,e)=>(n[e]=!0,n),{});return lh(e,Object.keys(t).sort())});return e.sort((n,e)=>n.address.localeCompare(e.address)),e}function dh(n){return{address:Cd(n.address),nonce:ki(null!=n.nonce?n.nonce:0),chainId:ki(null!=n.chainId?n.chainId:0),signature:xd.from(n.signature)}}function hh(n){let e;return e="string"==typeof n?Id.computePublicKey(n,!1):n.publicKey,Cd(cl("0x"+e.substring(4)).substring(26))}function ph(n,e){return hh(Id.recoverPublicKey(n,e))}const fh=BigInt(0),gh=BigInt(2),mh=BigInt(27),bh=BigInt(28),yh=BigInt(35),vh=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),wh=Symbol.for("nodejs.util.inspect.custom"),kh=131072,Ah=128;function Eh(n,e){let t=n.toString(16);for(;t.length<2;)t="0"+t;return t+=nu(e).substring(4),"0x"+t}function xh(n){return"0x"===n?null:Cd(n)}function Ih(n,e){try{return uh(n)}catch(t){Wo(!1,t.message,e,n)}}function Ph(n,e){try{if(!Array.isArray(n))throw new Error("authorizationList: invalid array");const e=[];for(let t=0;t<n.length;t++){const r=n[t];if(!Array.isArray(r))throw new Error(`authorization[${t}]: invalid array`);if(6!==r.length)throw new Error(`authorization[${t}]: wrong length`);if(!r[1])throw new Error(`authorization[${t}]: null address`);e.push({address:xh(r[1]),nonce:zh(r[2],"nonce"),chainId:zh(r[0],"chainId"),signature:xd.from({yParity:Nh(r[3],"yParity"),r:pi(r[4],32),s:pi(r[5],32)})})}return e}catch(t){Wo(!1,t.message,e,n)}}function Nh(n,e){return"0x"===n?0:Ii(n,e)}function zh(n,e){if("0x"===n)return fh;const t=ki(n,e);return Wo(t<=vh,"value exceeds uint size",e,t),t}function Rh(n,e){const t=ki(n,"value"),r=zi(t);return Wo(r.length<=32,"value too large",`tx.${e}`,t),r}function Th(n){return uh(n).map(n=>[n.address,n.storageKeys])}function Sh(n,e){Wo(Array.isArray(n),`invalid ${e}`,"value",n);for(let e=0;e<n.length;e++)Wo(ai(n[e],32),"invalid ${ param } hash",`value[${e}]`,n[e]);return n}function Bh(n,e){let t;try{if(t=Nh(e[0],"yParity"),0!==t&&1!==t)throw new Error("bad yParity")}catch(n){Wo(!1,"invalid yParity","yParity",e[0])}const r=pi(e[1],32),a=pi(e[2],32),o=xd.from({r:r,s:a,yParity:t});n.signature=o}class Ch{#J;#$;#C;#W;#Z;#Y;#X;#nn;#en;#tn;#rn;#an;#on;#in;#sn;#cn;#ln;#un;get type(){return this.#J}set type(n){switch(n){case null:this.#J=null;break;case 0:case"legacy":this.#J=0;break;case 1:case"berlin":case"eip-2930":this.#J=1;break;case 2:case"london":case"eip-1559":this.#J=2;break;case 3:case"cancun":case"eip-4844":this.#J=3;break;case 4:case"pectra":case"eip-7702":this.#J=4;break;default:Wo(!1,"unsupported transaction type","type",n)}}get typeName(){switch(this.type){case 0:return"legacy";case 1:return"eip-2930";case 2:return"eip-1559";case 3:return"eip-4844";case 4:return"eip-7702"}return null}get to(){const n=this.#$;return null==n&&3===this.type?od:n}set to(n){this.#$=null==n?null:Cd(n)}get nonce(){return this.#W}set nonce(n){this.#W=Ii(n,"value")}get gasLimit(){return this.#Z}set gasLimit(n){this.#Z=ki(n)}get gasPrice(){const n=this.#Y;return null!=n||0!==this.type&&1!==this.type?n:fh}set gasPrice(n){this.#Y=null==n?null:ki(n,"gasPrice")}get maxPriorityFeePerGas(){const n=this.#X;return null==n?2===this.type||3===this.type?fh:null:n}set maxPriorityFeePerGas(n){this.#X=null==n?null:ki(n,"maxPriorityFeePerGas")}get maxFeePerGas(){const n=this.#nn;return null==n?2===this.type||3===this.type?fh:null:n}set maxFeePerGas(n){this.#nn=null==n?null:ki(n,"maxFeePerGas")}get data(){return this.#C}set data(n){this.#C=si(n)}get value(){return this.#en}set value(n){this.#en=ki(n,"value")}get chainId(){return this.#tn}set chainId(n){this.#tn=ki(n)}get signature(){return this.#rn||null}set signature(n){this.#rn=null==n?null:xd.from(n)}isValid(){const n=this.signature;if(n&&!n.isValid())return!1;const e=this.authorizationList;if(e)for(const n of e)if(!n.signature.isValid())return!1;return!0}get accessList(){const n=this.#an||null;return null==n?1===this.type||2===this.type||3===this.type?[]:null:n}set accessList(n){this.#an=null==n?null:uh(n)}get authorizationList(){const n=this.#ln||null;return null==n&&4===this.type?[]:n}set authorizationList(n){this.#ln=null==n?null:n.map(n=>dh(n))}get maxFeePerBlobGas(){const n=this.#on;return null==n&&3===this.type?fh:n}set maxFeePerBlobGas(n){this.#on=null==n?null:ki(n,"maxFeePerBlobGas")}get blobVersionedHashes(){let n=this.#in;return null==n&&3===this.type?[]:n}set blobVersionedHashes(n){if(null!=n){Wo(Array.isArray(n),"blobVersionedHashes must be an Array","value",n),n=n.slice();for(let e=0;e<n.length;e++)Wo(ai(n[e],32),"invalid blobVersionedHash",`value[${e}]`,n[e])}this.#in=n}get blobs(){return null==this.#cn?null:this.#cn.map(n=>Object.assign({},n))}set blobs(n){if(null==n)return void(this.#cn=null);const e=[],t=[];for(let r=0;r<n.length;r++){const a=n[r];if(oi(a)){$o(this.#sn,"adding a raw blob requires a KZG library","UNSUPPORTED_OPERATION",{operation:"set blobs()"});let n=ti(a);if(Wo(n.length<=kh,"blob is too large",`blobs[${r}]`,a),n.length!==kh){const e=new Uint8Array(kh);e.set(n),n=e}const o=this.#sn.blobToKzgCommitment(n),i=si(this.#sn.computeBlobKzgProof(n,o));e.push({data:si(n),commitment:si(o),proof:i}),t.push(Eh(1,o))}else{const n=si(a.data),r=si(a.commitment),o=si(a.proof);e.push({data:n,commitment:r,proof:o}),t.push(Eh(1,r))}}this.#cn=e,this.#in=t}get kzg(){return this.#sn}set kzg(n){this.#sn=null==n?null:function(n){return{blobToKzgCommitment:e=>{if("computeBlobProof"in n){if("blobToKzgCommitment"in n&&"function"==typeof n.blobToKzgCommitment)return ti(n.blobToKzgCommitment(si(e)))}else if("blobToKzgCommitment"in n&&"function"==typeof n.blobToKzgCommitment)return ti(n.blobToKzgCommitment(e));if("blobToKZGCommitment"in n&&"function"==typeof n.blobToKZGCommitment)return ti(n.blobToKZGCommitment(si(e)));Wo(!1,"unsupported KZG library","kzg",n)},computeBlobKzgProof:(e,t)=>"computeBlobProof"in n&&"function"==typeof n.computeBlobProof?ti(n.computeBlobProof(si(e),si(t))):"computeBlobKzgProof"in n&&"function"==typeof n.computeBlobKzgProof?n.computeBlobKzgProof(e,t):"computeBlobKZGProof"in n&&"function"==typeof n.computeBlobKZGProof?ti(n.computeBlobKZGProof(si(e),si(t))):void Wo(!1,"unsupported KZG library","kzg",n)}}(n)}get blobWrapperVersion(){return this.#un}set blobWrapperVersion(n){this.#un=n}constructor(){this.#J=null,this.#$=null,this.#W=0,this.#Z=fh,this.#Y=null,this.#X=null,this.#nn=null,this.#C="0x",this.#en=fh,this.#tn=fh,this.#rn=null,this.#an=null,this.#on=null,this.#in=null,this.#sn=null,this.#cn=null,this.#ln=null,this.#un=null}get hash(){return null==this.signature?null:cl(this.#dn(!0,!1))}get unsignedHash(){return cl(this.unsignedSerialized)}get from(){return null==this.signature?null:ph(this.unsignedHash,this.signature.getCanonical())}get fromPublicKey(){return null==this.signature?null:Id.recoverPublicKey(this.unsignedHash,this.signature.getCanonical())}isSigned(){return null!=this.signature}#dn(n,e){$o(!n||null!=this.signature,"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized","UNSUPPORTED_OPERATION",{operation:".serialized"});const t=n?this.signature:null;switch(this.inferType()){case 0:return function(n,e){const t=[Rh(n.nonce,"nonce"),Rh(n.gasPrice||0,"gasPrice"),Rh(n.gasLimit,"gasLimit"),n.to||"0x",Rh(n.value,"value"),n.data];let r=fh;if(n.chainId!=fh)r=ki(n.chainId,"tx.chainId"),Wo(!e||null==e.networkV||e.legacyChainId===r,"tx.chainId/sig.v mismatch","sig",e);else if(n.signature){const e=n.signature.legacyChainId;null!=e&&(r=e)}if(!e)return r!==fh&&(t.push(zi(r)),t.push("0x"),t.push("0x")),xs(t);let a=BigInt(27+e.yParity);return r!==fh?a=xd.getChainIdV(r,e.v):BigInt(e.v)!==a&&Wo(!1,"tx.chainId/sig.v mismatch","sig",e),t.push(zi(a)),t.push(zi(e.r)),t.push(zi(e._s)),xs(t)}(this,t);case 1:return function(n,e){const t=[Rh(n.chainId,"chainId"),Rh(n.nonce,"nonce"),Rh(n.gasPrice||0,"gasPrice"),Rh(n.gasLimit,"gasLimit"),n.to||"0x",Rh(n.value,"value"),n.data,Th(n.accessList||[])];return e&&(t.push(Rh(e.yParity,"recoveryParam")),t.push(zi(e.r)),t.push(zi(e.s))),ci(["0x01",xs(t)])}(this,t);case 2:return function(n,e){const t=[Rh(n.chainId,"chainId"),Rh(n.nonce,"nonce"),Rh(n.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Rh(n.maxFeePerGas||0,"maxFeePerGas"),Rh(n.gasLimit,"gasLimit"),n.to||"0x",Rh(n.value,"value"),n.data,Th(n.accessList||[])];return e&&(t.push(Rh(e.yParity,"yParity")),t.push(zi(e.r)),t.push(zi(e.s))),ci(["0x02",xs(t)])}(this,t);case 3:return function(n,e,t){const r=[Rh(n.chainId,"chainId"),Rh(n.nonce,"nonce"),Rh(n.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Rh(n.maxFeePerGas||0,"maxFeePerGas"),Rh(n.gasLimit,"gasLimit"),n.to||od,Rh(n.value,"value"),n.data,Th(n.accessList||[]),Rh(n.maxFeePerBlobGas||0,"maxFeePerBlobGas"),Sh(n.blobVersionedHashes||[],"blobVersionedHashes")];if(e&&(r.push(Rh(e.yParity,"yParity")),r.push(zi(e.r)),r.push(zi(e.s)),t)){if(null!=n.blobWrapperVersion){const e=zi(n.blobWrapperVersion),a=[];for(const{proof:n}of t){const e=ti(n),t=e.length/Ah;for(let n=0;n<e.length;n+=t)a.push(e.subarray(n,n+t))}return ci(["0x03",xs([r,e,t.map(n=>n.data),t.map(n=>n.commitment),a])])}return ci(["0x03",xs([r,t.map(n=>n.data),t.map(n=>n.commitment),t.map(n=>n.proof)])])}return ci(["0x03",xs(r)])}(this,t,e?this.blobs:null);case 4:return function(n,e){const t=[Rh(n.chainId,"chainId"),Rh(n.nonce,"nonce"),Rh(n.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Rh(n.maxFeePerGas||0,"maxFeePerGas"),Rh(n.gasLimit,"gasLimit"),n.to||"0x",Rh(n.value,"value"),n.data,Th(n.accessList||[]),(r=n.authorizationList||[],r.map(n=>[Rh(n.chainId,"chainId"),n.address,Rh(n.nonce,"nonce"),Rh(n.signature.yParity,"yParity"),zi(n.signature.r),zi(n.signature._s)]))];var r;return e&&(t.push(Rh(e.yParity,"yParity")),t.push(zi(e.r)),t.push(zi(e.s))),ci(["0x04",xs(t)])}(this,t)}$o(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:".serialized"})}get serialized(){return this.#dn(!0,!0)}get unsignedSerialized(){return this.#dn(!1,!1)}inferType(){const n=this.inferTypes();return n.indexOf(2)>=0?2:n.pop()}inferTypes(){const n=null!=this.gasPrice,e=null!=this.maxFeePerGas||null!=this.maxPriorityFeePerGas,t=null!=this.accessList,r=null!=this.#on||this.#in;null!=this.maxFeePerGas&&null!=this.maxPriorityFeePerGas&&$o(this.maxFeePerGas>=this.maxPriorityFeePerGas,"priorityFee cannot be more than maxFee","BAD_DATA",{value:this}),$o(!e||0!==this.type&&1!==this.type,"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas","BAD_DATA",{value:this}),$o(0!==this.type||!t,"legacy transaction cannot have accessList","BAD_DATA",{value:this});const a=[];return null!=this.type?a.push(this.type):this.authorizationList&&this.authorizationList.length?a.push(4):e?a.push(2):n?(a.push(1),t||a.push(0)):t?(a.push(1),a.push(2)):(r&&this.to||(a.push(0),a.push(1),a.push(2)),a.push(3)),a.sort(),a}isLegacy(){return 0===this.type}isBerlin(){return 1===this.type}isLondon(){return 2===this.type}isCancun(){return 3===this.type}clone(){return Ch.from(this)}toJSON(){const n=n=>null==n?null:n.toString();return{type:this.type,to:this.to,data:this.data,nonce:this.nonce,gasLimit:n(this.gasLimit),gasPrice:n(this.gasPrice),maxPriorityFeePerGas:n(this.maxPriorityFeePerGas),maxFeePerGas:n(this.maxFeePerGas),value:n(this.value),chainId:n(this.chainId),sig:this.signature?this.signature.toJSON():null,accessList:this.accessList}}[wh](){return this.toString()}toString(){const n=[],e=e=>{let t=this[e];"string"==typeof t&&(t=JSON.stringify(t)),n.push(`${e}: ${t}`)};this.type&&e("type"),e("to"),e("data"),e("nonce"),e("gasLimit"),e("value"),null!=this.chainId&&e("chainId"),this.signature&&(e("from"),n.push(`signature: ${this.signature.toString()}`));const t=this.authorizationList;if(t){const e=[];for(const n of t){const t=[];t.push(`address: ${JSON.stringify(n.address)}`),null!=n.nonce&&t.push(`nonce: ${n.nonce}`),null!=n.chainId&&t.push(`chainId: ${n.chainId}`),n.signature&&t.push(`signature: ${n.signature.toString()}`),e.push(`Authorization { ${t.join(", ")} }`)}n.push(`authorizations: [ ${e.join(", ")} ]`)}return`Transaction { ${n.join(", ")} }`}static from(n){if(null==n)return new Ch;if("string"==typeof n){const e=ti(n);if(e[0]>=127)return Ch.from(function(n){const e=ws(n);Wo(Array.isArray(e)&&(9===e.length||6===e.length),"invalid field count for legacy transaction","data",n);const t={type:0,nonce:Nh(e[0],"nonce"),gasPrice:zh(e[1],"gasPrice"),gasLimit:zh(e[2],"gasLimit"),to:xh(e[3]),value:zh(e[4],"value"),data:si(e[5]),chainId:fh};if(6===e.length)return t;const r=zh(e[6],"v"),a=zh(e[7],"r"),o=zh(e[8],"s");if(a===fh&&o===fh)t.chainId=r;else{let n=(r-yh)/gh;n<fh&&(n=fh),t.chainId=n,Wo(n!==fh||r===mh||r===bh,"non-canonical legacy v","v",e[6]),t.signature=xd.from({r:pi(e[7],32),s:pi(e[8],32),v:r})}return t}(e));switch(e[0]){case 1:return Ch.from(function(n){const e=ws(ti(n).slice(1));Wo(Array.isArray(e)&&(8===e.length||11===e.length),"invalid field count for transaction type: 1","data",si(n));const t={type:1,chainId:zh(e[0],"chainId"),nonce:Nh(e[1],"nonce"),gasPrice:zh(e[2],"gasPrice"),gasLimit:zh(e[3],"gasLimit"),to:xh(e[4]),value:zh(e[5],"value"),data:si(e[6]),accessList:Ih(e[7],"accessList")};return 8===e.length||Bh(t,e.slice(8)),t}(e));case 2:return Ch.from(function(n){const e=ws(ti(n).slice(1));Wo(Array.isArray(e)&&(9===e.length||12===e.length),"invalid field count for transaction type: 2","data",si(n));const t={type:2,chainId:zh(e[0],"chainId"),nonce:Nh(e[1],"nonce"),maxPriorityFeePerGas:zh(e[2],"maxPriorityFeePerGas"),maxFeePerGas:zh(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:zh(e[4],"gasLimit"),to:xh(e[5]),value:zh(e[6],"value"),data:si(e[7]),accessList:Ih(e[8],"accessList")};return 9===e.length||Bh(t,e.slice(9)),t}(e));case 3:return Ch.from(function(n){let e=ws(ti(n).slice(1)),t="3",r=null,a=null;if(4===e.length&&Array.isArray(e[0])){t="3 (network format)";const n=e[1],r=e[2],o=e[3];Wo(Array.isArray(n),"invalid network format: blobs not an array","fields[1]",n),Wo(Array.isArray(r),"invalid network format: commitments not an array","fields[2]",r),Wo(Array.isArray(o),"invalid network format: proofs not an array","fields[3]",o),Wo(n.length===r.length,"invalid network format: blobs/commitments length mismatch","fields",e),Wo(n.length===o.length,"invalid network format: blobs/proofs length mismatch","fields",e),a=[];for(let t=0;t<e[1].length;t++)a.push({data:n[t],commitment:r[t],proof:o[t]});e=e[0]}else if(5===e.length&&Array.isArray(e[0])){t="3 (EIP-7594 network format)",r=Ii(e[1]);const n=e[2],o=e[3],i=e[4];Wo(1===r,`unsupported EIP-7594 network format version: ${r}`,"fields[1]",r),Wo(Array.isArray(n),"invalid EIP-7594 network format: blobs not an array","fields[2]",n),Wo(Array.isArray(o),"invalid EIP-7594 network format: commitments not an array","fields[3]",o),Wo(Array.isArray(i),"invalid EIP-7594 network format: proofs not an array","fields[4]",i),Wo(n.length===o.length,"invalid network format: blobs/commitments length mismatch","fields",e),Wo(n.length*Ah===i.length,"invalid network format: blobs/proofs length mismatch","fields",e),a=[];for(let e=0;e<n.length;e++){const t=[];for(let n=0;n<Ah;n++)t.push(i[e*Ah+n]);a.push({data:n[e],commitment:o[e],proof:ci(t)})}e=e[0]}Wo(Array.isArray(e)&&(11===e.length||14===e.length),`invalid field count for transaction type: ${t}`,"data",si(n));const o={type:3,chainId:zh(e[0],"chainId"),nonce:Nh(e[1],"nonce"),maxPriorityFeePerGas:zh(e[2],"maxPriorityFeePerGas"),maxFeePerGas:zh(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:zh(e[4],"gasLimit"),to:xh(e[5]),value:zh(e[6],"value"),data:si(e[7]),accessList:Ih(e[8],"accessList"),maxFeePerBlobGas:zh(e[9],"maxFeePerBlobGas"),blobVersionedHashes:e[10],blobWrapperVersion:r};a&&(o.blobs=a),Wo(null!=o.to,`invalid address for transaction type: ${t}`,"data",n),Wo(Array.isArray(o.blobVersionedHashes),"invalid blobVersionedHashes: must be an array","data",n);for(let e=0;e<o.blobVersionedHashes.length;e++)Wo(ai(o.blobVersionedHashes[e],32),`invalid blobVersionedHash at index ${e}: must be length 32`,"data",n);return 11===e.length||Bh(o,e.slice(11)),o}(e));case 4:return Ch.from(function(n){const e=ws(ti(n).slice(1));Wo(Array.isArray(e)&&(10===e.length||13===e.length),"invalid field count for transaction type: 4","data",si(n));const t={type:4,chainId:zh(e[0],"chainId"),nonce:Nh(e[1],"nonce"),maxPriorityFeePerGas:zh(e[2],"maxPriorityFeePerGas"),maxFeePerGas:zh(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:zh(e[4],"gasLimit"),to:xh(e[5]),value:zh(e[6],"value"),data:si(e[7]),accessList:Ih(e[8],"accessList"),authorizationList:Ph(e[9],"authorizationList")};return 10===e.length||Bh(t,e.slice(10)),t}(e))}$o(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:"from"})}const e=new Ch;return null!=n.type&&(e.type=n.type),null!=n.to&&(e.to=n.to),null!=n.nonce&&(e.nonce=n.nonce),null!=n.gasLimit&&(e.gasLimit=n.gasLimit),null!=n.gasPrice&&(e.gasPrice=n.gasPrice),null!=n.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=n.maxPriorityFeePerGas),null!=n.maxFeePerGas&&(e.maxFeePerGas=n.maxFeePerGas),null!=n.maxFeePerBlobGas&&(e.maxFeePerBlobGas=n.maxFeePerBlobGas),null!=n.data&&(e.data=n.data),null!=n.value&&(e.value=n.value),null!=n.chainId&&(e.chainId=n.chainId),null!=n.signature&&(e.signature=xd.from(n.signature)),null!=n.accessList&&(e.accessList=n.accessList),null!=n.authorizationList&&(e.authorizationList=n.authorizationList),null!=n.blobVersionedHashes&&(e.blobVersionedHashes=n.blobVersionedHashes),null!=n.kzg&&(e.kzg=n.kzg),null!=n.blobWrapperVersion&&(e.blobWrapperVersion=n.blobWrapperVersion),null!=n.blobs&&(e.blobs=n.blobs),null!=n.hash&&(Wo(e.isSigned(),"unsigned transaction cannot define '.hash'","tx",n),Wo(e.hash===n.hash,"hash mismatch","tx",n)),null!=n.from&&(Wo(e.isSigned(),"unsigned transaction cannot define '.from'","tx",n),Wo(e.from.toLowerCase()===(n.from||"").toLowerCase(),"from mismatch","tx",n)),e}}function Oh(n){return Wo("string"==typeof n.address,"invalid address for hashAuthorization","auth.address",n),cl(ci(["0x05",xs([null!=n.chainId?zi(n.chainId):"0x",Cd(n.address),null!=n.nonce?zi(n.nonce):"0x"])]))}function Uh(n,e){return ph(Oh(n),e)}function Fh(n){return cl(Hi(n))}const Lh=new Map([[8217,"apostrophe"],[8260,"fraction slash"],[12539,"middle dot"]]);function jh(n){return function(n){let e=0;return()=>n[e++]}(function(n){let e=0;function t(){return n[e++]<<8|n[e++]}let r=t(),a=1,o=[0,1];for(let n=1;n<r;n++)o.push(a+=t());let i=t(),s=e;e+=i;let c=0,l=0;function u(){return 0==c&&(l=l<<8|n[e++],c=8),l>>--c&1}const d=2**31,h=d>>>1,p=h>>1,f=d-1;let g=0;for(let n=0;n<31;n++)g=g<<1|u();let m=[],b=0,y=d;for(;;){let n=Math.floor(((g-b+1)*a-1)/y),e=0,t=r;for(;t-e>1;){let r=e+t>>>1;n<o[r]?t=r:e=r}if(0==e)break;m.push(e);let i=b+Math.floor(y*o[e]/a),s=b+Math.floor(y*o[e+1]/a)-1;for(;0==((i^s)&h);)g=g<<1&f|u(),i=i<<1&f,s=s<<1&f|1;for(;i&~s&p;)g=g&h|g<<1&f>>>1|u(),i=i<<1^h,s=(s^h)<<1|h|1;b=i,y=1+s-i}let v=r-4;return m.map(e=>{switch(e-v){case 3:return v+65792+(n[s++]<<16|n[s++]<<8|n[s++]);case 2:return v+256+(n[s++]<<8|n[s++]);case 1:return v+n[s++];default:return e-1}})}(function(n){let e=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach((n,t)=>e[n.charCodeAt(0)]=t);let t=n.length,r=new Uint8Array(6*t>>3);for(let a=0,o=0,i=0,s=0;a<t;a++)s=s<<6|e[n.charCodeAt(a)],i+=6,i>=8&&(r[o++]=s>>(i-=8));return r}(n)))}function Dh(n){return 1&n?~n>>1:n>>1}function Mh(n,e){let t=Array(n);for(let r=0,a=0;r<n;r++)t[r]=a+=Dh(e());return t}function Gh(n,e=0){let t=[];for(;;){let r=n(),a=n();if(!a)break;e+=r;for(let n=0;n<a;n++)t.push(e+n);e+=a+1}return t}function qh(n){return Kh(()=>{let e=Gh(n);if(e.length)return e})}function Hh(n){let e=[];for(;;){let t=n();if(0==t)break;e.push(_h(t,n))}for(;;){let t=n()-1;if(t<0)break;e.push(Qh(t,n))}return e.flat()}function Kh(n){let e=[];for(;;){let t=n(e.length);if(!t)break;e.push(t)}return e}function Vh(n,e,t){let r=Array(n).fill().map(()=>[]);for(let a=0;a<e;a++)Mh(n,t).forEach((n,e)=>r[e].push(n));return r}function _h(n,e){let t=1+e(),r=e(),a=Kh(e);return Vh(a.length,1+n,e).flatMap((n,e)=>{let[o,...i]=n;return Array(a[e]).fill().map((n,e)=>{let a=e*r;return[o+e*t,i.map(n=>n+a)]})})}function Qh(n,e){return Vh(1+e(),1+n,e).map(n=>[n[0],n.slice(1)])}function Jh(n){return`{${function(n){return n.toString(16).toUpperCase().padStart(2,"0")}(n)}}`}function $h(n){let e=n.length;if(e<4096)return String.fromCodePoint(...n);let t=[];for(let r=0;r<e;)t.push(String.fromCodePoint(...n.slice(r,r+=4096)));return t.join("")}function Wh(n,e){let t=n.length,r=t-e.length;for(let a=0;0==r&&a<t;a++)r=n[a]-e[a];return r}const Zh=44032,Yh=4352,Xh=4449,np=4519,ep=28,tp=588;function rp(n){return n>>24&255}function ap(n){return 16777215&n}let op,ip,sp,cp;function lp(n){return n>=Zh&&n<55204}function up(n,e){if(n>=Yh&&n<4371&&e>=Xh&&e<4470)return Zh+(n-Yh)*tp+(e-Xh)*ep;if(lp(n)&&e>np&&e<4547&&(n-Zh)%ep==0)return n+(e-np);{let t=cp.get(n);return t&&(t=t.get(e),t)?t:-1}}function dp(n){op||function(){let n=jh("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");op=new Map(qh(n).flatMap((n,e)=>n.map(n=>[n,e+1<<24]))),ip=new Set(Gh(n)),sp=new Map,cp=new Map;for(let[e,t]of Hh(n)){if(!ip.has(e)&&2==t.length){let[n,r]=t,a=cp.get(n);a||(a=new Map,cp.set(n,a)),a.set(r,e)}sp.set(e,t.reverse())}}();let e=[],t=[],r=!1;function a(n){let t=op.get(n);t&&(r=!0,n|=t),e.push(n)}for(let r of n)for(;;){if(r<128)e.push(r);else if(lp(r)){let n=r-Zh,e=n%tp/ep|0,t=n%ep;a(Yh+(n/tp|0)),a(Xh+e),t>0&&a(np+t)}else{let n=sp.get(r);n?t.push(...n):a(r)}if(!t.length)break;r=t.pop()}if(r&&e.length>1){let n=rp(e[0]);for(let t=1;t<e.length;t++){let r=rp(e[t]);if(0==r||n<=r){n=r;continue}let a=t-1;for(;;){let t=e[a+1];if(e[a+1]=e[a],e[a]=t,!a)break;if(n=rp(e[--a]),n<=r)break}n=rp(e[t])}}return e}function hp(n){return dp(n).map(ap)}function pp(n){return function(n){let e=[],t=[],r=-1,a=0;for(let o of n){let n=rp(o),i=ap(o);if(-1==r)0==n?r=i:e.push(i);else if(a>0&&a>=n)0==n?(e.push(r,...t),t.length=0,r=i):t.push(i),a=n;else{let o=up(r,i);o>=0?r=o:0==a&&0==n?(e.push(r),r=i):(t.push(i),a=n)}}return r>=0&&e.push(r,...t),e}(dp(n))}const fp=".",gp=n=>Array.from(n);function mp(n,e){return n.P.has(e)||n.Q.has(e)}class bp extends Array{get is_emoji(){return!0}}let yp,vp,wp,kp,Ap,Ep,xp,Ip,Pp,Np,zp;function Rp(){if(yp)return;let n=jh("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");const e=()=>Gh(n),t=()=>new Set(e()),r=(n,e)=>e.forEach(e=>n.add(e));yp=new Map(Hh(n)),vp=t(),wp=e(),kp=new Set(e().map(n=>wp[n])),wp=new Set(wp),Ap=t(),t();let a=qh(n),o=n();const i=()=>{let n=new Set;return e().forEach(e=>r(n,a[e])),r(n,e()),n};Ep=Kh(e=>{let t=Kh(n).map(n=>n+96);if(t.length){let r=e>=o;return t[0]-=32,t=$h(t),r&&(t=`Restricted[${t}]`),{N:t,P:i(),Q:i(),M:!n(),R:r}}}),xp=t(),Ip=new Map;let s=e().concat(gp(xp)).sort((n,e)=>n-e);s.forEach((e,t)=>{let r=n(),a=s[t]=r?s[t-r]:{V:[],M:new Map};a.V.push(e),xp.has(e)||Ip.set(e,a)});for(let{V:n,M:e}of new Set(Ip.values())){let t=[];for(let e of n){let n=Ep.filter(n=>mp(n,e)),a=t.find(({G:e})=>n.some(n=>e.has(n)));a||(a={G:new Set,V:[]},t.push(a)),a.V.push(e),r(a.G,n)}let a=t.flatMap(n=>gp(n.G));for(let{G:n,V:r}of t){let t=new Set(a.filter(e=>!n.has(e)));for(let n of r)e.set(n,t)}}Pp=new Set;let c=new Set;const l=n=>Pp.has(n)?c.add(n):Pp.add(n);for(let n of Ep){for(let e of n.P)l(e);for(let e of n.Q)l(e)}for(let n of Pp)Ip.has(n)||c.has(n)||Ip.set(n,1);r(Pp,hp(Pp)),Np=function(n){let e=[],t=Gh(n);return function n({S:t,B:r},a,o){if(!(4&t&&o===a[a.length-1])){2&t&&(o=a[a.length-1]),1&t&&e.push(a);for(let e of r)for(let t of e.Q)n(e,[...a,t],o)}}(function e(r){return{S:n(),B:Kh(()=>{let r=Gh(n).map(n=>t[n]);if(r.length)return e(r)}),Q:r}}([]),[]),e}(n).map(n=>bp.from(n)).sort(Wh),zp=new Map;for(let n of Np){let e=[zp];for(let t of n){let n=e.map(n=>{let e=n.get(t);return e||(e=new Map,n.set(t,e)),e});65039===t?e.push(...n):e=n}for(let t of e)t.V=n}}function Tp(n){return(Cp(n)?"":`${Sp(Bp([n]))} `)+Jh(n)}function Sp(n){return`"${n}"`}function Bp(n,e=1/0,t=Jh){let r=[];var a;a=n[0],Rp(),wp.has(a)&&r.push("◌"),n.length>e&&(e>>=1,n=[...n.slice(0,e),8230,...n.slice(-e)]);let o=0,i=n.length;for(let e=0;e<i;e++){let a=n[e];Cp(a)&&(r.push($h(n.slice(o,e))),r.push(t(a)),o=e+1)}return r.push($h(n.slice(o,i))),r.join("")}function Cp(n){return Rp(),Ap.has(n)}function Op(n){return function(n){return n.map(({input:e,error:t,output:r})=>{if(t){let r=t.message;throw new Error(1==n.length?r:`Invalid label ${Sp(Bp(e,63))}: ${r}`)}return $h(r)}).join(fp)}(function(n,e,t){if(!n)return[];Rp();let r=0;return n.split(fp).map(n=>{let a=function(n){let e=[];for(let t=0,r=n.length;t<r;){let r=n.codePointAt(t);t+=r<65536?1:2,e.push(r)}return e}(n),o={input:a,offset:r};r+=a.length+1;try{let n,r=o.tokens=function(n,e,t){let r=[],a=[];n=n.slice().reverse();for(;n.length;){let o=Dp(n);if(o)a.length&&(r.push(e(a)),a=[]),r.push(t(o));else{let e=n.pop();if(Pp.has(e))a.push(e);else{let n=yp.get(e);if(n)a.push(...n);else if(!vp.has(e))throw Up(e)}}}a.length&&r.push(e(a));return r}(a,e,t),i=r.length;if(!i)throw new Error("empty label");let s=o.output=r.flat();if(function(n){for(let e=n.lastIndexOf(95);e>0;)if(95!==n[--e])throw new Error("underscore allowed only at start")}(s),!(o.emoji=i>1||r[0].is_emoji)&&s.every(n=>n<128))!function(n){if(n.length>=4&&45==n[2]&&45==n[3])throw new Error(`invalid label extension: "${$h(n.slice(0,4))}"`)}(s),n="ASCII";else{let e=r.flatMap(n=>n.is_emoji?[]:n);if(e.length){if(wp.has(s[0]))throw Lp("leading combining mark");for(let n=1;n<i;n++){let e=r[n];if(!e.is_emoji&&wp.has(e[0]))throw Lp(`emoji + combining mark: "${$h(r[n-1])} + ${Bp([e[0]])}"`)}!function(n){let e=n[0],t=Lh.get(e);if(t)throw Lp(`leading ${t}`);let r=n.length,a=-1;for(let o=1;o<r;o++){e=n[o];let r=Lh.get(e);if(r){if(a==o)throw Lp(`${t} + ${r}`);a=o+1,t=r}}if(a==r)throw Lp(`trailing ${t}`)}(s);let t=gp(new Set(e)),[a]=function(n){let e=Ep;for(let t of n){let n=e.filter(n=>mp(n,t));if(!n.length)throw Ep.some(n=>mp(n,t))?Fp(e[0],t):Up(t);if(e=n,1==n.length)break}return e}(t);!function(n,e){for(let t of e)if(!mp(n,t))throw Fp(n,t);if(n.M){let n=hp(e);for(let e=1,t=n.length;e<t;e++)if(kp.has(n[e])){let r=e+1;for(let a;r<t&&kp.has(a=n[r]);r++)for(let t=e;t<r;t++)if(n[t]==a)throw new Error(`duplicate non-spacing marks: ${Tp(a)}`);if(r-e>4)throw new Error(`excessive non-spacing marks: ${Sp(Bp(n.slice(e-1,r)))} (${r-e}/4)`);e=r}}}(a,e),function(n,e){let t,r=[];for(let n of e){let e=Ip.get(n);if(1===e)return;if(e){let r=e.M.get(n);if(t=t?t.filter(n=>r.has(n)):gp(r),!t.length)return}else r.push(n)}if(t)for(let e of t)if(r.every(n=>mp(e,n)))throw new Error(`whole-script confusable: ${n.N}/${e.N}`)}(a,t),n=a.N}else n="Emoji"}o.type=n}catch(n){o.error=n}return o})}(n,pp,jp))}function Up(n){return new Error(`disallowed character: ${Tp(n)}`)}function Fp(n,e){let t=Tp(e),r=Ep.find(n=>n.P.has(e));return r&&(t=`${r.N} ${t}`),new Error(`illegal mixture: ${n.N} + ${t}`)}function Lp(n){return new Error(`illegal placement: ${n}`)}function jp(n){return n.filter(n=>65039!=n)}function Dp(n,e){let t,r=zp,a=n.length;for(;a&&(r=r.get(n[--a]),r);){let{V:o}=r;o&&(t=o,e&&e.push(...n.slice(a).reverse()),n.length=a)}return t}const Mp=new Uint8Array(32);function Gp(n){return Wo(0!==n.length,"invalid ENS name; empty component","comp",n),n}function qp(n){const e=Hi(Hp(n)),t=[];if(0===n.length)return t;let r=0;for(let n=0;n<e.length;n++){46===e[n]&&(t.push(Gp(e.slice(r,n))),r=n+1)}return Wo(r<e.length,"invalid ENS name; empty component","name",n),t.push(Gp(e.slice(r))),t}function Hp(n){try{if(0===n.length)throw new Error("empty label");return Op(n)}catch(e){Wo(!1,`invalid ENS name (${e.message})`,"name",n)}}function Kp(n){try{return 0!==qp(n).length}catch(n){}return!1}function Vp(n){Wo("string"==typeof n,"invalid ENS name; not a string","name",n),Wo(n.length,"invalid ENS name (empty label)","name",n);let e=Mp;const t=qp(n);for(;t.length;)e=cl(ci([e,cl(t.pop())]));return si(e)}function _p(n,e){const t=null!=e?e:63;return Wo(t<=255,"DNS encoded label cannot exceed 255","length",t),si(ci(qp(n).map(e=>{Wo(e.length<=t,`label ${JSON.stringify(n)} exceeds ${t} bytes`,"name",n);const r=new Uint8Array(e.length+1);return r.set(e,1),r[0]=r.length-1,r})))+"00"}function Qp(n){return"string"==typeof n&&(n=Hi(n)),cl(ci([Hi(hd),Hi(String(n.length)),n]))}function Jp(n,e){return ph(Qp(n),e)}Mp.fill(0);const $p=new RegExp("^bytes([0-9]+)$"),Wp=new RegExp("^(u?int)([0-9]*)$"),Zp=new RegExp("^(.*)\\[([0-9]*)\\]$");function Yp(n,e,t){switch(n){case"address":return ti(t?pi(e,32):Cd(e));case"string":return Hi(e);case"bytes":return ti(e);case"bool":return e=e?"0x01":"0x00",ti(t?pi(e,32):e)}let r=n.match(Wp);if(r){let a="int"===r[1],o=parseInt(r[2]||"256");return Wo((!r[2]||r[2]===String(o))&&o%8==0&&0!==o&&o<=256,"invalid number type","type",n),t&&(o=256),a&&(e=vi(e,o)),ti(pi(zi(e),o/8))}if(r=n.match($p),r){const a=parseInt(r[1]);return Wo(String(a)===r[1]&&0!==a&&a<=32,"invalid bytes type","type",n),Wo(li(e)===a,`invalid value for ${n}`,"value",e),t?ti(fi(e,32)):e}if(r=n.match(Zp),r&&Array.isArray(e)){const t=r[1];Wo(parseInt(r[2]||String(e.length))===e.length,`invalid array length for ${n}`,"value",e);const a=[];return e.forEach(function(n){a.push(Yp(t,n,!0))}),ti(ci(a))}Wo(!1,"invalid type","type",n)}function Xp(n,e){Wo(n.length===e.length,"wrong number of values; expected ${ types.length }","values",e);const t=[];return n.forEach(function(n,r){t.push(Yp(n,e[r]))}),si(ci(t))}function nf(n,e){return cl(Xp(n,e))}function ef(n,e){return nu(Xp(n,e))}const tf=new Uint8Array(32);tf.fill(0);const rf=BigInt(-1),af=BigInt(0),of=BigInt(1),sf=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const cf=Ni(of,32),lf=Ni(af,32),uf={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},df=["name","version","chainId","verifyingContract","salt"];function hf(n){return function(e){return Wo("string"==typeof e,`invalid domain value for ${JSON.stringify(n)}`,`domain.${n}`,e),e}}const pf={name:hf("name"),version:hf("version"),chainId:function(n){const e=ki(n,"domain.chainId");return Wo(e>=0,"invalid chain ID","domain.chainId",n),Number.isSafeInteger(e)?Number(e):Ri(e)},verifyingContract:function(n){try{return Cd(n).toLowerCase()}catch(n){}Wo(!1,'invalid domain value "verifyingContract"',"domain.verifyingContract",n)},salt:function(n){const e=ti(n,"domain.salt");return Wo(32===e.length,'invalid domain value "salt"',"domain.salt",n),si(e)}};function ff(n){{const e=n.match(/^(u?)int(\d+)$/);if(e){const t=""===e[1],r=parseInt(e[2]);Wo(r%8==0&&0!==r&&r<=256&&e[2]===String(r),"invalid numeric width","type",n);const a=wi(sf,t?r-1:r),o=t?(a+of)*rf:af;return function(e){const r=ki(e,"value");return Wo(r>=o&&r<=a,`value out-of-bounds for ${n}`,"value",r),Ni(t?vi(r,256):r,32)}}}{const e=n.match(/^bytes(\d+)$/);if(e){const t=parseInt(e[1]);return Wo(0!==t&&t<=32&&e[1]===String(t),"invalid bytes width","type",n),function(e){return Wo(ti(e).length===t,`invalid length for ${n}`,"value",e),function(n){const e=ti(n),t=e.length%32;return t?ci([e,tf.slice(t)]):si(e)}(e)}}}switch(n){case"address":return function(n){return pi(Cd(n),32)};case"bool":return function(n){return n?cf:lf};case"bytes":return function(n){return cl(n)};case"string":return function(n){return Fh(n)}}return null}function gf(n,e){return`${n}(${e.map(({name:n,type:e})=>e+" "+n).join(",")})`}function mf(n){const e=n.match(/^([^\x5b]*)((\x5b\d*\x5d)*)(\x5b(\d*)\x5d)$/);return e?{base:e[1],index:e[2]+e[4],array:{base:e[1],prefix:e[1]+e[2],count:e[5]?parseInt(e[5]):-1}}:{base:n}}class bf{primaryType;#hn;get types(){return JSON.parse(this.#hn)}#pn;#fn;constructor(n){this.#pn=new Map,this.#fn=new Map;const e=new Map,t=new Map,r=new Map,a={};Object.keys(n).forEach(o=>{a[o]=n[o].map(({name:e,type:t})=>{let{base:r,index:a}=mf(t);return"int"!==r||n.int||(r="int256"),"uint"!==r||n.uint||(r="uint256"),{name:e,type:r+(a||"")}}),e.set(o,new Set),t.set(o,[]),r.set(o,new Set)}),this.#hn=JSON.stringify(a);for(const r in a){const o=new Set;for(const i of a[r]){Wo(!o.has(i.name),`duplicate variable name ${JSON.stringify(i.name)} in ${JSON.stringify(r)}`,"types",n),o.add(i.name);const a=mf(i.type).base;Wo(a!==r,`circular type reference to ${JSON.stringify(a)}`,"types",n);ff(a)||(Wo(t.has(a),`unknown type ${JSON.stringify(a)}`,"types",n),t.get(a).push(r),e.get(r).add(a))}}const o=Array.from(t.keys()).filter(n=>0===t.get(n).length);Wo(0!==o.length,"missing primary type","types",n),Wo(1===o.length,`ambiguous primary types or unused types: ${o.map(n=>JSON.stringify(n)).join(", ")}`,"types",n),Ko(this,{primaryType:o[0]}),function a(o,i){Wo(!i.has(o),`circular type reference to ${JSON.stringify(o)}`,"types",n),i.add(o);for(const n of e.get(o))if(t.has(n)){a(n,i);for(const e of i)r.get(e).add(n)}i.delete(o)}(this.primaryType,new Set);for(const[n,e]of r){const t=Array.from(e);t.sort(),this.#pn.set(n,gf(n,a[n])+t.map(n=>gf(n,a[n])).join(""))}}getEncoder(n){let e=this.#fn.get(n);return e||(e=this.#gn(n),this.#fn.set(n,e)),e}#gn(n){{const e=ff(n);if(e)return e}const e=mf(n).array;if(e){const n=e.prefix,t=this.getEncoder(n);return r=>{Wo(-1===e.count||e.count===r.length,`array length mismatch; expected length ${e.count}`,"value",r);let a=r.map(t);return this.#pn.has(n)&&(a=a.map(cl)),cl(ci(a))}}const t=this.types[n];if(t){const e=Fh(this.#pn.get(n));return n=>{const r=t.map(({name:e,type:t})=>{const r=this.getEncoder(t)(n[e]);return this.#pn.has(t)?cl(r):r});return r.unshift(e),ci(r)}}Wo(!1,`unknown type: ${n}`,"type",n)}encodeType(n){const e=this.#pn.get(n);return Wo(e,`unknown type: ${JSON.stringify(n)}`,"name",n),e}encodeData(n,e){return this.getEncoder(n)(e)}hashStruct(n,e){return cl(this.encodeData(n,e))}encode(n){return this.encodeData(this.primaryType,n)}hash(n){return this.hashStruct(this.primaryType,n)}_visit(n,e,t){if(ff(n))return t(n,e);const r=mf(n).array;if(r)return Wo(-1===r.count||r.count===e.length,`array length mismatch; expected length ${r.count}`,"value",e),e.map(n=>this._visit(r.prefix,n,t));const a=this.types[n];if(a)return a.reduce((n,{name:r,type:a})=>(n[r]=this._visit(a,e[r],t),n),{});Wo(!1,`unknown type: ${n}`,"type",n)}visit(n,e){return this._visit(this.primaryType,n,e)}static from(n){return new bf(n)}static getPrimaryType(n){return bf.from(n).primaryType}static hashStruct(n,e,t){return bf.from(e).hashStruct(n,t)}static hashDomain(n){const e=[];for(const t in n){if(null==n[t])continue;const r=uf[t];Wo(r,`invalid typed-data domain key: ${JSON.stringify(t)}`,"domain",n),e.push({name:t,type:r})}return e.sort((n,e)=>df.indexOf(n.name)-df.indexOf(e.name)),bf.hashStruct("EIP712Domain",{EIP712Domain:e},n)}static encode(n,e,t){return ci(["0x1901",bf.hashDomain(n),bf.from(e).hash(t)])}static hash(n,e,t){return cl(bf.encode(n,e,t))}static async resolveNames(n,e,t,r){n=Object.assign({},n);for(const e in n)null==n[e]&&delete n[e];const a={};n.verifyingContract&&!ai(n.verifyingContract,20)&&(a[n.verifyingContract]="0x");const o=bf.from(e);o.visit(t,(n,e)=>("address"!==n||ai(e,20)||(a[e]="0x"),e));for(const n in a)a[n]=await r(n);return n.verifyingContract&&a[n.verifyingContract]&&(n.verifyingContract=a[n.verifyingContract]),{domain:n,value:t=o.visit(t,(n,e)=>"address"===n&&a[e]?a[e]:e)}}static getPayload(n,e,t){bf.hashDomain(n);const r={},a=[];df.forEach(e=>{const t=n[e];null!=t&&(r[e]=pf[e](t),a.push({name:e,type:uf[e]}))});const o=bf.from(e);e=o.types;const i=Object.assign({},e);return Wo(null==i.EIP712Domain,"types must not contain EIP712Domain type","types.EIP712Domain",e),i.EIP712Domain=a,o.encode(t),{types:i,domain:r,primaryType:o.primaryType,message:o.visit(t,(n,e)=>{if(n.match(/^bytes(\d*)/))return si(ti(e));if(n.match(/^u?int/))return ki(e).toString();switch(n){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return Wo("string"==typeof e,"invalid string","value",e),e}Wo(!1,"unsupported type","type",n)})}}}function yf(n,e,t,r){return ph(bf.hash(n,e,t),r)}function vf(n){const e=new Set;return n.forEach(n=>e.add(n)),Object.freeze(e)}const wf=vf("external public payable override".split(" ")),kf="constant external internal payable private public pure view override",Af=vf(kf.split(" ")),Ef="constructor error event fallback function receive struct",xf=vf(Ef.split(" ")),If="calldata memory storage payable indexed",Pf=vf(If.split(" ")),Nf=vf([Ef,If,"tuple returns",kf].join(" ").split(" ")),zf={"(":"OPEN_PAREN",")":"CLOSE_PAREN","[":"OPEN_BRACKET","]":"CLOSE_BRACKET",",":"COMMA","@":"AT"},Rf=new RegExp("^(\\s*)"),Tf=new RegExp("^([0-9]+)"),Sf=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)"),Bf=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)$"),Cf=new RegExp("^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$");class Of{#F;#mn;get offset(){return this.#F}get length(){return this.#mn.length-this.#F}constructor(n){this.#F=0,this.#mn=n.slice()}clone(){return new Of(this.#mn)}reset(){this.#F=0}#bn(n=0,e=0){return new Of(this.#mn.slice(n,e).map(e=>Object.freeze(Object.assign({},e,{match:e.match-n,linkBack:e.linkBack-n,linkNext:e.linkNext-n}))))}popKeyword(n){const e=this.peek();if("KEYWORD"!==e.type||!n.has(e.text))throw new Error(`expected keyword ${e.text}`);return this.pop().text}popType(n){if(this.peek().type!==n){const e=this.peek();throw new Error(`expected ${n}; got ${e.type} ${JSON.stringify(e.text)}`)}return this.pop().text}popParen(){const n=this.peek();if("OPEN_PAREN"!==n.type)throw new Error("bad start");const e=this.#bn(this.#F+1,n.match+1);return this.#F=n.match+1,e}popParams(){const n=this.peek();if("OPEN_PAREN"!==n.type)throw new Error("bad start");const e=[];for(;this.#F<n.match-1;){const n=this.peek().linkNext;e.push(this.#bn(this.#F+1,n)),this.#F=n}return this.#F=n.match+1,e}peek(){if(this.#F>=this.#mn.length)throw new Error("out-of-bounds");return this.#mn[this.#F]}peekKeyword(n){const e=this.peekType("KEYWORD");return null!=e&&n.has(e)?e:null}peekType(n){if(0===this.length)return null;const e=this.peek();return e.type===n?e.text:null}pop(){const n=this.peek();return this.#F++,n}toString(){const n=[];for(let e=this.#F;e<this.#mn.length;e++){const t=this.#mn[e];n.push(`${t.type}:${t.text}`)}return`<TokenString ${n.join(" ")}>`}}function Uf(n){const e=[],t=e=>{const t=o<n.length?JSON.stringify(n[o]):"$EOI";throw new Error(`invalid token ${t} at ${o}: ${e}`)};let r=[],a=[],o=0;for(;o<n.length;){let i=n.substring(o),s=i.match(Rf);s&&(o+=s[1].length,i=n.substring(o));const c={depth:r.length,linkBack:-1,linkNext:-1,match:-1,type:"",text:"",offset:o,value:-1};e.push(c);let l=zf[i[0]]||"";if(l){if(c.type=l,c.text=i[0],o++,"OPEN_PAREN"===l)r.push(e.length-1),a.push(e.length-1);else if("CLOSE_PAREN"==l)0===r.length&&t("no matching open bracket"),c.match=r.pop(),e[c.match].match=e.length-1,c.depth--,c.linkBack=a.pop(),e[c.linkBack].linkNext=e.length-1;else if("COMMA"===l)c.linkBack=a.pop(),e[c.linkBack].linkNext=e.length-1,a.push(e.length-1);else if("OPEN_BRACKET"===l)c.type="BRACKET";else if("CLOSE_BRACKET"===l){let n=e.pop().text;if(e.length>0&&"NUMBER"===e[e.length-1].type){const t=e.pop().text;n=t+n,e[e.length-1].value=Ii(t)}if(0===e.length||"BRACKET"!==e[e.length-1].type)throw new Error("missing opening bracket");e[e.length-1].text+=n}}else if(s=i.match(Sf),s){if(c.text=s[1],o+=c.text.length,Nf.has(c.text)){c.type="KEYWORD";continue}if(c.text.match(Cf)){c.type="TYPE";continue}c.type="ID"}else{if(s=i.match(Tf),!s)throw new Error(`unexpected token ${JSON.stringify(i[0])} at position ${o}`);c.text=s[1],c.type="NUMBER",o+=c.text.length}}return new Of(e.map(n=>Object.freeze(n)))}function Ff(n,e){let t=[];for(const r in e.keys())n.has(r)&&t.push(r);if(t.length>1)throw new Error(`conflicting types: ${t.join(", ")}`)}function Lf(n,e){if(e.peekKeyword(xf)){const t=e.pop().text;if(t!==n)throw new Error(`expected ${n}, got ${t}`)}return e.popType("ID")}function jf(n,e){const t=new Set;for(;;){const r=n.peekType("KEYWORD");if(null==r||e&&!e.has(r))break;if(n.pop(),t.has(r))throw new Error(`duplicate keywords: ${JSON.stringify(r)}`);t.add(r)}return Object.freeze(t)}function Df(n){let e=jf(n,Af);return Ff(e,vf("constant payable nonpayable".split(" "))),Ff(e,vf("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"}function Mf(n,e){return n.popParams().map(n=>ng.from(n,e))}function Gf(n){if(n.peekType("AT")){if(n.pop(),n.peekType("NUMBER"))return ki(n.pop().text);throw new Error("invalid gas")}return null}function qf(n){if(n.length)throw new Error(`unexpected tokens at offset ${n.offset}: ${n.toString()}`)}const Hf=new RegExp(/^(.*)\[([0-9]*)\]$/);function Kf(n){const e=n.match(Cf);if(Wo(e,"invalid type","type",n),"uint"===n)return"uint256";if("int"===n)return"int256";if(e[2]){const t=parseInt(e[2]);Wo(0!==t&&t<=32,"invalid bytes length","type",n)}else if(e[3]){const t=parseInt(e[3]);Wo(0!==t&&t<=256&&t%8==0,"invalid numeric width","type",n)}return n}const Vf={},_f=Symbol.for("_ethers_internal"),Qf="_ParamTypeInternal",Jf="_ErrorInternal",$f="_EventInternal",Wf="_ConstructorInternal",Zf="_FallbackInternal",Yf="_FunctionInternal",Xf="_StructInternal";class ng{name;type;baseType;indexed;components;arrayLength;arrayChildren;constructor(n,e,t,r,a,o,i,s){if(ni(n,Vf,"ParamType"),Object.defineProperty(this,_f,{value:Qf}),o&&(o=Object.freeze(o.slice())),"array"===r){if(null==i||null==s)throw new Error("")}else if(null!=i||null!=s)throw new Error("");if("tuple"===r){if(null==o)throw new Error("")}else if(null!=o)throw new Error("");Ko(this,{name:e,type:t,baseType:r,indexed:a,components:o,arrayLength:i,arrayChildren:s})}format(n){if(null==n&&(n="sighash"),"json"===n){const e=this.name||"";if(this.isArray()){const n=JSON.parse(this.arrayChildren.format("json"));return n.name=e,n.type+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`,JSON.stringify(n)}const t={type:"tuple"===this.baseType?"tuple":this.type,name:e};return"boolean"==typeof this.indexed&&(t.indexed=this.indexed),this.isTuple()&&(t.components=this.components.map(e=>JSON.parse(e.format(n)))),JSON.stringify(t)}let e="";return this.isArray()?(e+=this.arrayChildren.format(n),e+=`[${this.arrayLength<0?"":String(this.arrayLength)}]`):this.isTuple()?e+="("+this.components.map(e=>e.format(n)).join("full"===n?", ":",")+")":e+=this.type,"sighash"!==n&&(!0===this.indexed&&(e+=" indexed"),"full"===n&&this.name&&(e+=" "+this.name)),e}isArray(){return"array"===this.baseType}isTuple(){return"tuple"===this.baseType}isIndexable(){return null!=this.indexed}walk(n,e){if(this.isArray()){if(!Array.isArray(n))throw new Error("invalid array value");if(-1!==this.arrayLength&&n.length!==this.arrayLength)throw new Error("array is wrong length");const t=this;return n.map(n=>t.arrayChildren.walk(n,e))}if(this.isTuple()){if(!Array.isArray(n))throw new Error("invalid tuple value");if(n.length!==this.components.length)throw new Error("array is wrong length");const t=this;return n.map((n,r)=>t.components[r].walk(n,e))}return e(this.type,n)}#yn(n,e,t,r){if(this.isArray()){if(!Array.isArray(e))throw new Error("invalid array value");if(-1!==this.arrayLength&&e.length!==this.arrayLength)throw new Error("array is wrong length");const a=this.arrayChildren,o=e.slice();return o.forEach((e,r)=>{a.#yn(n,e,t,n=>{o[r]=n})}),void r(o)}if(this.isTuple()){const a=this.components;let o;if(Array.isArray(e))o=e.slice();else{if(null==e||"object"!=typeof e)throw new Error("invalid tuple value");o=a.map(n=>{if(!n.name)throw new Error("cannot use object value with unnamed components");if(!(n.name in e))throw new Error(`missing value for component ${n.name}`);return e[n.name]})}if(o.length!==this.components.length)throw new Error("array is wrong length");return o.forEach((e,r)=>{a[r].#yn(n,e,t,n=>{o[r]=n})}),void r(o)}const a=t(this.type,e);a.then?n.push(async function(){r(await a)}()):r(a)}async walkAsync(n,e){const t=[],r=[n];return this.#yn(t,n,e,n=>{r[0]=n}),t.length&&await Promise.all(t),r[0]}static from(n,e){if(ng.isParamType(n))return n;if("string"==typeof n)try{return ng.from(Uf(n),e)}catch(e){Wo(!1,"invalid param type","obj",n)}else if(n instanceof Of){let t="",r="",a=null;jf(n,vf(["tuple"])).has("tuple")||n.peekType("OPEN_PAREN")?(r="tuple",a=n.popParams().map(n=>ng.from(n)),t=`tuple(${a.map(n=>n.format()).join(",")})`):(t=Kf(n.popType("TYPE")),r=t);let o=null,i=null;for(;n.length&&n.peekType("BRACKET");){const e=n.pop();o=new ng(Vf,"",t,r,null,a,i,o),i=e.value,t+=e.text,r="array",a=null}let s=null;if(jf(n,Pf).has("indexed")){if(!e)throw new Error("");s=!0}const c=n.peekType("ID")?n.pop().text:"";if(n.length)throw new Error("leftover tokens");return new ng(Vf,c,t,r,s,a,i,o)}const t=n.name;Wo(!t||"string"==typeof t&&t.match(Bf),"invalid name","obj.name",t);let r=n.indexed;null!=r&&(Wo(e,"parameter cannot be indexed","obj.indexed",n.indexed),r=!!r);let a=n.type,o=a.match(Hf);if(o){const e=parseInt(o[2]||"-1"),i=ng.from({type:o[1],components:n.components});return new ng(Vf,t||"",a,"array",r,null,e,i)}if("tuple"===a||a.startsWith("tuple(")||a.startsWith("(")){const e=null!=n.components?n.components.map(n=>ng.from(n)):null;return new ng(Vf,t||"",a,"tuple",r,e,null,null)}return a=Kf(n.type),new ng(Vf,t||"",a,a,r,null,null,null)}static isParamType(n){return n&&n[_f]===Qf}}class eg{type;inputs;constructor(n,e,t){ni(n,Vf,"Fragment"),Ko(this,{type:e,inputs:t=Object.freeze(t.slice())})}static from(n){if("string"==typeof n){try{eg.from(JSON.parse(n))}catch(n){}return eg.from(Uf(n))}if(n instanceof Of){switch(n.peekKeyword(xf)){case"constructor":return ig.from(n);case"error":return ag.from(n);case"event":return og.from(n);case"fallback":case"receive":return sg.from(n);case"function":return cg.from(n);case"struct":return lg.from(n)}}else if("object"==typeof n){switch(n.type){case"constructor":return ig.from(n);case"error":return ag.from(n);case"event":return og.from(n);case"fallback":case"receive":return sg.from(n);case"function":return cg.from(n);case"struct":return lg.from(n)}$o(!1,`unsupported type: ${n.type}`,"UNSUPPORTED_OPERATION",{operation:"Fragment.from"})}Wo(!1,"unsupported frgament object","obj",n)}static isConstructor(n){return ig.isFragment(n)}static isError(n){return ag.isFragment(n)}static isEvent(n){return og.isFragment(n)}static isFunction(n){return cg.isFragment(n)}static isStruct(n){return lg.isFragment(n)}}class tg extends eg{name;constructor(n,e,t,r){super(n,e,r),Wo("string"==typeof t&&t.match(Bf),"invalid identifier","name",t),r=Object.freeze(r.slice()),Ko(this,{name:t})}}function rg(n,e){return"("+e.map(e=>e.format(n)).join("full"===n?", ":",")+")"}class ag extends tg{constructor(n,e,t){super(n,"error",e,t),Object.defineProperty(this,_f,{value:Jf})}get selector(){return Fh(this.format("sighash")).substring(0,10)}format(n){if(null==n&&(n="sighash"),"json"===n)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(n)))});const e=[];return"sighash"!==n&&e.push("error"),e.push(this.name+rg(n,this.inputs)),e.join(" ")}static from(n){if(ag.isFragment(n))return n;if("string"==typeof n)return ag.from(Uf(n));if(n instanceof Of){const e=Lf("error",n),t=Mf(n);return qf(n),new ag(Vf,e,t)}return new ag(Vf,n.name,n.inputs?n.inputs.map(ng.from):[])}static isFragment(n){return n&&n[_f]===Jf}}class og extends tg{anonymous;constructor(n,e,t,r){super(n,"event",e,t),Object.defineProperty(this,_f,{value:$f}),Ko(this,{anonymous:r})}get topicHash(){return Fh(this.format("sighash"))}format(n){if(null==n&&(n="sighash"),"json"===n)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(n)))});const e=[];return"sighash"!==n&&e.push("event"),e.push(this.name+rg(n,this.inputs)),"sighash"!==n&&this.anonymous&&e.push("anonymous"),e.join(" ")}static getTopicHash(n,e){e=(e||[]).map(n=>ng.from(n));return new og(Vf,n,e,!1).topicHash}static from(n){if(og.isFragment(n))return n;if("string"==typeof n)try{return og.from(Uf(n))}catch(e){Wo(!1,"invalid event fragment","obj",n)}else if(n instanceof Of){const e=Lf("event",n),t=Mf(n,!0),r=!!jf(n,vf(["anonymous"])).has("anonymous");return qf(n),new og(Vf,e,t,r)}return new og(Vf,n.name,n.inputs?n.inputs.map(n=>ng.from(n,!0)):[],!!n.anonymous)}static isFragment(n){return n&&n[_f]===$f}}class ig extends eg{payable;gas;constructor(n,e,t,r,a){super(n,e,t),Object.defineProperty(this,_f,{value:Wf}),Ko(this,{payable:r,gas:a})}format(n){if($o(null!=n&&"sighash"!==n,"cannot format a constructor for sighash","UNSUPPORTED_OPERATION",{operation:"format(sighash)"}),"json"===n)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(n)))});const e=[`constructor${rg(n,this.inputs)}`];return this.payable&&e.push("payable"),null!=this.gas&&e.push(`@${this.gas.toString()}`),e.join(" ")}static from(n){if(ig.isFragment(n))return n;if("string"==typeof n)try{return ig.from(Uf(n))}catch(e){Wo(!1,"invalid constuctor fragment","obj",n)}else if(n instanceof Of){jf(n,vf(["constructor"]));const e=Mf(n),t=!!jf(n,wf).has("payable"),r=Gf(n);return qf(n),new ig(Vf,"constructor",e,t,r)}return new ig(Vf,"constructor",n.inputs?n.inputs.map(ng.from):[],!!n.payable,null!=n.gas?n.gas:null)}static isFragment(n){return n&&n[_f]===Wf}}class sg extends eg{payable;constructor(n,e,t){super(n,"fallback",e),Object.defineProperty(this,_f,{value:Zf}),Ko(this,{payable:t})}format(n){const e=0===this.inputs.length?"receive":"fallback";if("json"===n){const n=this.payable?"payable":"nonpayable";return JSON.stringify({type:e,stateMutability:n})}return`${e}()${this.payable?" payable":""}`}static from(n){if(sg.isFragment(n))return n;if("string"==typeof n)try{return sg.from(Uf(n))}catch(e){Wo(!1,"invalid fallback fragment","obj",n)}else if(n instanceof Of){const e=n.toString();Wo(n.peekKeyword(vf(["fallback","receive"])),"type must be fallback or receive","obj",e);if("receive"===n.popKeyword(vf(["fallback","receive"]))){const e=Mf(n);return Wo(0===e.length,"receive cannot have arguments","obj.inputs",e),jf(n,vf(["payable"])),qf(n),new sg(Vf,[],!0)}let t=Mf(n);t.length?Wo(1===t.length&&"bytes"===t[0].type,"invalid fallback inputs","obj.inputs",t.map(n=>n.format("minimal")).join(", ")):t=[ng.from("bytes")];const r=Df(n);if(Wo("nonpayable"===r||"payable"===r,"fallback cannot be constants","obj.stateMutability",r),jf(n,vf(["returns"])).has("returns")){const e=Mf(n);Wo(1===e.length&&"bytes"===e[0].type,"invalid fallback outputs","obj.outputs",e.map(n=>n.format("minimal")).join(", "))}return qf(n),new sg(Vf,t,"payable"===r)}if("receive"===n.type)return new sg(Vf,[],!0);if("fallback"===n.type){const e=[ng.from("bytes")],t="payable"===n.stateMutability;return new sg(Vf,e,t)}Wo(!1,"invalid fallback description","obj",n)}static isFragment(n){return n&&n[_f]===Zf}}class cg extends tg{constant;outputs;stateMutability;payable;gas;constructor(n,e,t,r,a,o){super(n,"function",e,r),Object.defineProperty(this,_f,{value:Yf});Ko(this,{constant:"view"===t||"pure"===t,gas:o,outputs:a=Object.freeze(a.slice()),payable:"payable"===t,stateMutability:t})}get selector(){return Fh(this.format("sighash")).substring(0,10)}format(n){if(null==n&&(n="sighash"),"json"===n)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(n))),outputs:this.outputs.map(e=>JSON.parse(e.format(n)))});const e=[];return"sighash"!==n&&e.push("function"),e.push(this.name+rg(n,this.inputs)),"sighash"!==n&&("nonpayable"!==this.stateMutability&&e.push(this.stateMutability),this.outputs&&this.outputs.length&&(e.push("returns"),e.push(rg(n,this.outputs))),null!=this.gas&&e.push(`@${this.gas.toString()}`)),e.join(" ")}static getSelector(n,e){e=(e||[]).map(n=>ng.from(n));return new cg(Vf,n,"view",e,[],null).selector}static from(n){if(cg.isFragment(n))return n;if("string"==typeof n)try{return cg.from(Uf(n))}catch(e){Wo(!1,"invalid function fragment","obj",n)}else if(n instanceof Of){const e=Lf("function",n),t=Mf(n),r=Df(n);let a=[];jf(n,vf(["returns"])).has("returns")&&(a=Mf(n));const o=Gf(n);return qf(n),new cg(Vf,e,r,t,a,o)}let e=n.stateMutability;return null==e&&(e="payable","boolean"==typeof n.constant?(e="view",n.constant||(e="payable","boolean"!=typeof n.payable||n.payable||(e="nonpayable"))):"boolean"!=typeof n.payable||n.payable||(e="nonpayable")),new cg(Vf,n.name,e,n.inputs?n.inputs.map(ng.from):[],n.outputs?n.outputs.map(ng.from):[],null!=n.gas?n.gas:null)}static isFragment(n){return n&&n[_f]===Yf}}class lg extends tg{constructor(n,e,t){super(n,"struct",e,t),Object.defineProperty(this,_f,{value:Xf})}format(){throw new Error("@TODO")}static from(n){if("string"==typeof n)try{return lg.from(Uf(n))}catch(e){Wo(!1,"invalid struct fragment","obj",n)}else if(n instanceof Of){const e=Lf("struct",n),t=Mf(n);return qf(n),new lg(Vf,e,t)}return new lg(Vf,n.name,n.inputs?n.inputs.map(ng.from):[])}static isFragment(n){return n&&n[_f]===Xf}}const ug=new Map;ug.set(0,"GENERIC_PANIC"),ug.set(1,"ASSERT_FALSE"),ug.set(17,"OVERFLOW"),ug.set(18,"DIVIDE_BY_ZERO"),ug.set(33,"ENUM_RANGE_ERROR"),ug.set(34,"BAD_STORAGE_DATA"),ug.set(49,"STACK_UNDERFLOW"),ug.set(50,"ARRAY_RANGE_ERROR"),ug.set(65,"OUT_OF_MEMORY"),ug.set(81,"UNINITIALIZED_FUNCTION_CALL");const dg=new RegExp(/^bytes([0-9]*)$/),hg=new RegExp(/^(u?int)([0-9]*)$/);let pg=null,fg=1024;class gg{#vn(n){if(n.isArray())return new Wd(this.#vn(n.arrayChildren),n.arrayLength,n.name);if(n.isTuple())return new ch(n.components.map(n=>this.#vn(n)),n.name);switch(n.baseType){case"address":return new _d(n.name);case"bool":return new Zd(n.name);case"string":return new sh(n.name);case"bytes":return new Xd(n.name);case"":return new th(n.name)}let e=n.type.match(hg);if(e){let t=parseInt(e[2]||"256");return Wo(0!==t&&t<=256&&t%8==0,"invalid "+e[1]+" bit length","param",n),new ih(t/8,"int"===e[1],n.name)}if(e=n.type.match(dg),e){let t=parseInt(e[1]);return Wo(0!==t&&t<=32,"invalid bytes length","param",n),new nh(t,n.name)}Wo(!1,"invalid type","type",n.type)}getDefaultValue(n){const e=n.map(n=>this.#vn(ng.from(n)));return new ch(e,"_").defaultValue()}encode(n,e){Zo(e.length,n.length,"types/values length mismatch");const t=n.map(n=>this.#vn(ng.from(n))),r=new ch(t,"_"),a=new Ks;return r.encode(a,e),a.data}decode(n,e,t){const r=n.map(n=>this.#vn(ng.from(n)));return new ch(r,"_").decode(new Vs(e,t,fg))}static _setDefaultMaxInflation(n){Wo("number"==typeof n&&Number.isInteger(n),"invalid defaultMaxInflation factor","value",n),fg=n}static defaultAbiCoder(){return null==pg&&(pg=new gg),pg}static getBuiltinCallException(n,e,t){return function(n,e,t,r){let a="missing revert data",o=null,i=null;if(t){a="execution reverted";const n=ti(t);if(t=si(t),0===n.length)a+=" (no data present; likely require(false) occurred",o="require(false)";else if(n.length%32!=4)a+=" (could not decode reason; invalid data length)";else if("0x08c379a0"===si(n.slice(0,4)))try{o=r.decode(["string"],n.slice(4))[0],i={signature:"Error(string)",name:"Error",args:[o]},a+=`: ${JSON.stringify(o)}`}catch(n){a+=" (could not decode reason; invalid string data)"}else if("0x4e487b71"===si(n.slice(0,4)))try{const e=Number(r.decode(["uint256"],n.slice(4))[0]);i={signature:"Panic(uint256)",name:"Panic",args:[e]},o=`Panic due to ${ug.get(e)||"UNKNOWN"}(${e})`,a+=`: ${o}`}catch(n){a+=" (could not decode panic code)"}else a+=" (unknown custom error)"}const s={to:e.to?Cd(e.to):null,data:e.data||"0x"};return e.from&&(s.from=Cd(e.from)),Jo(a,"CALL_EXCEPTION",{action:n,data:t,reason:o,transaction:s,invocation:null,revert:i})}(n,e,t,gg.defaultAbiCoder())}}function mg(n){const e=Hi(n);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return fi(e,32)}function bg(n){const e=ti(n,"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 t=31;for(;0===e[t-1];)t--;return Ki(e.slice(0,t))}class yg{fragment;name;signature;topic;args;constructor(n,e,t){const r=n.name,a=n.format();Ko(this,{fragment:n,name:r,signature:a,topic:e,args:t})}}class vg{fragment;name;args;signature;selector;value;constructor(n,e,t,r){const a=n.name,o=n.format();Ko(this,{fragment:n,name:a,args:t,signature:o,selector:e,value:r})}}class wg{fragment;name;args;signature;selector;constructor(n,e,t){const r=n.name,a=n.format();Ko(this,{fragment:n,name:r,args:t,signature:a,selector:e})}}class kg{hash;_isIndexed;static isIndexed(n){return!(!n||!n._isIndexed)}constructor(n){Ko(this,{hash:n,_isIndexed:!0})}}const Ag={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"},Eg={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:n=>`reverted with reason string ${JSON.stringify(n)}`},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"],reason:n=>{let e="unknown panic code";return n>=0&&n<=255&&Ag[n.toString()]&&(e=Ag[n.toString()]),`reverted with panic code 0x${n.toString(16)} (${e})`}}};class xg{fragments;deploy;fallback;receive;#wn;#kn;#An;#En;constructor(n){let e=[];e="string"==typeof n?JSON.parse(n):n,this.#An=new Map,this.#wn=new Map,this.#kn=new Map;const t=[];for(const n of e)try{t.push(eg.from(n))}catch(e){console.log(`[Warning] Invalid Fragment ${JSON.stringify(n)}:`,e.message)}Ko(this,{fragments:Object.freeze(t)});let r=null,a=!1;this.#En=this.getAbiCoder(),this.fragments.forEach((n,e)=>{let t;switch(n.type){case"constructor":return this.deploy?void console.log("duplicate definition - constructor"):void Ko(this,{deploy:n});case"fallback":return void(0===n.inputs.length?a=!0:(Wo(!r||n.payable!==r.payable,"conflicting fallback fragments",`fragments[${e}]`,n),r=n,a=r.payable));case"function":t=this.#An;break;case"event":t=this.#kn;break;case"error":t=this.#wn;break;default:return}const o=n.format();t.has(o)||t.set(o,n)}),this.deploy||Ko(this,{deploy:ig.from("constructor()")}),Ko(this,{fallback:r,receive:a})}format(n){const e=n?"minimal":"full",t=this.fragments.map(n=>n.format(e));return t}formatJson(){const n=this.fragments.map(n=>n.format("json"));return JSON.stringify(n.map(n=>JSON.parse(n)))}getAbiCoder(){return gg.defaultAbiCoder()}#xn(n,e,t){if(ai(n)){const e=n.toLowerCase();for(const n of this.#An.values())if(e===n.selector)return n;return null}if(-1===n.indexOf("(")){const r=[];for(const[e,t]of this.#An)e.split("(")[0]===n&&r.push(t);if(e){const n=e.length>0?e[e.length-1]:null;let t=e.length,a=!0;Vd.isTyped(n)&&"overrides"===n.type&&(a=!1,t--);for(let n=r.length-1;n>=0;n--){const e=r[n].inputs.length;e===t||a&&e===t-1||r.splice(n,1)}for(let n=r.length-1;n>=0;n--){const t=r[n].inputs;for(let a=0;a<e.length;a++)if(Vd.isTyped(e[a])){if(a>=t.length){if("overrides"===e[a].type)continue;r.splice(n,1);break}if(e[a].type!==t[a].baseType){r.splice(n,1);break}}}}if(1===r.length&&e&&e.length!==r[0].inputs.length){const n=e[e.length-1];(null==n||Array.isArray(n)||"object"!=typeof n)&&r.splice(0,1)}if(0===r.length)return null;if(r.length>1&&t){Wo(!1,`ambiguous function description (i.e. matches ${r.map(n=>JSON.stringify(n.format())).join(", ")})`,"key",n)}return r[0]}const r=this.#An.get(cg.from(n).format());return r||null}getFunctionName(n){const e=this.#xn(n,null,!1);return Wo(e,"no matching function","key",n),e.name}hasFunction(n){return!!this.#xn(n,null,!1)}getFunction(n,e){return this.#xn(n,e||null,!0)}forEachFunction(n){const e=Array.from(this.#An.keys());e.sort((n,e)=>n.localeCompare(e));for(let t=0;t<e.length;t++){const r=e[t];n(this.#An.get(r),t)}}#In(n,e,t){if(ai(n)){const e=n.toLowerCase();for(const n of this.#kn.values())if(e===n.topicHash)return n;return null}if(-1===n.indexOf("(")){const r=[];for(const[e,t]of this.#kn)e.split("(")[0]===n&&r.push(t);if(e){for(let n=r.length-1;n>=0;n--)r[n].inputs.length<e.length&&r.splice(n,1);for(let n=r.length-1;n>=0;n--){const t=r[n].inputs;for(let a=0;a<e.length;a++)if(Vd.isTyped(e[a])&&e[a].type!==t[a].baseType){r.splice(n,1);break}}}if(0===r.length)return null;if(r.length>1&&t){Wo(!1,`ambiguous event description (i.e. matches ${r.map(n=>JSON.stringify(n.format())).join(", ")})`,"key",n)}return r[0]}const r=this.#kn.get(og.from(n).format());return r||null}getEventName(n){const e=this.#In(n,null,!1);return Wo(e,"no matching event","key",n),e.name}hasEvent(n){return!!this.#In(n,null,!1)}getEvent(n,e){return this.#In(n,e||null,!0)}forEachEvent(n){const e=Array.from(this.#kn.keys());e.sort((n,e)=>n.localeCompare(e));for(let t=0;t<e.length;t++){const r=e[t];n(this.#kn.get(r),t)}}getError(n,e){if(ai(n)){const e=n.toLowerCase();if(Eg[e])return ag.from(Eg[e].signature);for(const n of this.#wn.values())if(e===n.selector)return n;return null}if(-1===n.indexOf("(")){const e=[];for(const[t,r]of this.#wn)t.split("(")[0]===n&&e.push(r);if(0===e.length)return"Error"===n?ag.from("error Error(string)"):"Panic"===n?ag.from("error Panic(uint256)"):null;if(e.length>1){Wo(!1,`ambiguous error description (i.e. ${e.map(n=>JSON.stringify(n.format())).join(", ")})`,"name",n)}return e[0]}if("Error(string)"===(n=ag.from(n).format()))return ag.from("error Error(string)");if("Panic(uint256)"===n)return ag.from("error Panic(uint256)");const t=this.#wn.get(n);return t||null}forEachError(n){const e=Array.from(this.#wn.keys());e.sort((n,e)=>n.localeCompare(e));for(let t=0;t<e.length;t++){const r=e[t];n(this.#wn.get(r),t)}}_decodeParams(n,e){return this.#En.decode(n,e)}_encodeParams(n,e){return this.#En.encode(n,e)}encodeDeploy(n){return this._encodeParams(this.deploy.inputs,n||[])}decodeErrorResult(n,e){if("string"==typeof n){const e=this.getError(n);Wo(e,"unknown error","fragment",n),n=e}return Wo(ui(e,0,4)===n.selector,`data signature does not match error ${n.name}.`,"data",e),this._decodeParams(n.inputs,ui(e,4))}encodeErrorResult(n,e){if("string"==typeof n){const e=this.getError(n);Wo(e,"unknown error","fragment",n),n=e}return ci([n.selector,this._encodeParams(n.inputs,e||[])])}decodeFunctionData(n,e){if("string"==typeof n){const e=this.getFunction(n);Wo(e,"unknown function","fragment",n),n=e}return Wo(ui(e,0,4)===n.selector,`data signature does not match function ${n.name}.`,"data",e),this._decodeParams(n.inputs,ui(e,4))}encodeFunctionData(n,e){if("string"==typeof n){const e=this.getFunction(n);Wo(e,"unknown function","fragment",n),n=e}return ci([n.selector,this._encodeParams(n.inputs,e||[])])}decodeFunctionResult(n,e){if("string"==typeof n){const e=this.getFunction(n);Wo(e,"unknown function","fragment",n),n=e}let t="invalid length for result data";const r=ri(e);if(r.length%32==0)try{return this.#En.decode(n.outputs,r)}catch(n){t="could not decode result data"}$o(!1,t,"BAD_DATA",{value:si(r),info:{method:n.name,signature:n.format()}})}makeError(n,e){const t=ti(n,"data"),r=gg.getBuiltinCallException("call",e,t);if(r.message.startsWith("execution reverted (unknown custom error)")){const n=si(t.slice(0,4)),e=this.getError(n);if(e)try{const n=this.#En.decode(e.inputs,t.slice(4));r.revert={name:e.name,signature:e.format(),args:n},r.reason=r.revert.signature,r.message=`execution reverted: ${r.reason}`}catch(n){r.message="execution reverted (coult not decode custom error)"}}const a=this.parseTransaction(e);return a&&(r.invocation={method:a.name,signature:a.signature,args:a.args}),r}encodeFunctionResult(n,e){if("string"==typeof n){const e=this.getFunction(n);Wo(e,"unknown function","fragment",n),n=e}return si(this.#En.encode(n.outputs,e||[]))}encodeFilterTopics(n,e){if("string"==typeof n){const e=this.getEvent(n);Wo(e,"unknown event","eventFragment",n),n=e}$o(e.length<=n.inputs.length,`too many arguments for ${n.format()}`,"UNEXPECTED_ARGUMENT",{count:e.length,expectedCount:n.inputs.length});const t=[];n.anonymous||t.push(n.topicHash);const r=(n,e)=>"string"===n.type?Fh(e):"bytes"===n.type?cl(si(e)):("bool"===n.type&&"boolean"==typeof e?e=e?"0x01":"0x00":n.type.match(/^u?int/)?e=Ni(e):n.type.match(/^bytes/)?e=fi(e,32):"address"===n.type&&this.#En.encode(["address"],[e]),pi(si(e),32));for(e.forEach((e,a)=>{const o=n.inputs[a];o.indexed?null==e?t.push(null):"array"===o.baseType||"tuple"===o.baseType?Wo(!1,"filtering with tuples or arrays not supported","contract."+o.name,e):Array.isArray(e)?t.push(e.map(n=>r(o,n))):t.push(r(o,e)):Wo(null==e,"cannot filter non-indexed parameters; must be null","contract."+o.name,e)});t.length&&null===t[t.length-1];)t.pop();return t}encodeEventLog(n,e){if("string"==typeof n){const e=this.getEvent(n);Wo(e,"unknown event","eventFragment",n),n=e}const t=[],r=[],a=[];return n.anonymous||t.push(n.topicHash),Wo(e.length===n.inputs.length,"event arguments/values mismatch","values",e),n.inputs.forEach((n,o)=>{const i=e[o];if(n.indexed)if("string"===n.type)t.push(Fh(i));else if("bytes"===n.type)t.push(cl(i));else{if("tuple"===n.baseType||"array"===n.baseType)throw new Error("not implemented");t.push(this.#En.encode([n.type],[i]))}else r.push(n),a.push(i)}),{data:this.#En.encode(r,a),topics:t}}decodeEventLog(n,e,t){if("string"==typeof n){const e=this.getEvent(n);Wo(e,"unknown event","eventFragment",n),n=e}if(null!=t&&!n.anonymous){const e=n.topicHash;Wo(ai(t[0],32)&&t[0].toLowerCase()===e,"fragment/topic mismatch","topics[0]",t[0]),t=t.slice(1)}const r=[],a=[],o=[];n.inputs.forEach((n,e)=>{n.indexed?"string"===n.type||"bytes"===n.type||"tuple"===n.baseType||"array"===n.baseType?(r.push(ng.from({type:"bytes32",name:n.name})),o.push(!0)):(r.push(n),o.push(!1)):(a.push(n),o.push(!1))});const i=null!=t?this.#En.decode(r,ci(t)):null,s=this.#En.decode(a,e,!0),c=[],l=[];let u=0,d=0;return n.inputs.forEach((n,e)=>{let t=null;if(n.indexed)if(null==i)t=new kg(null);else if(o[e])t=new kg(i[d++]);else try{t=i[d++]}catch(n){t=n}else try{t=s[u++]}catch(n){t=n}c.push(t),l.push(n.name||null)}),Ms.fromItems(c,l)}parseTransaction(n){const e=ti(n.data,"tx.data"),t=ki(null!=n.value?n.value:0,"tx.value"),r=this.getFunction(si(e.slice(0,4)));if(!r)return null;const a=this.#En.decode(r.inputs,e.slice(4));return new vg(r,r.selector,a,t)}parseCallResult(n){throw new Error("@TODO")}parseLog(n){const e=this.getEvent(n.topics[0]);return!e||e.anonymous?null:new yg(e,e.topicHash,this.decodeEventLog(e,n.data,n.topics))}parseError(n){const e=si(n),t=this.getError(ui(e,0,4));if(!t)return null;const r=this.#En.decode(t.inputs,ui(e,4));return new wg(t,t.selector,r)}static from(n){return n instanceof xg?n:"string"==typeof n?new xg(JSON.parse(n)):"function"==typeof n.formatJson?new xg(n.formatJson()):"function"==typeof n.format?new xg(n.format("json")):new xg(n)}}const Ig=BigInt(0);function Pg(n){return null==n?null:n}function Ng(n){return null==n?null:n.toString()}class zg{gasPrice;maxFeePerGas;maxPriorityFeePerGas;constructor(n,e,t){Ko(this,{gasPrice:Pg(n),maxFeePerGas:Pg(e),maxPriorityFeePerGas:Pg(t)})}toJSON(){const{gasPrice:n,maxFeePerGas:e,maxPriorityFeePerGas:t}=this;return{_type:"FeeData",gasPrice:Ng(n),maxFeePerGas:Ng(e),maxPriorityFeePerGas:Ng(t)}}}function Rg(n){const e={};n.to&&(e.to=n.to),n.from&&(e.from=n.from),n.data&&(e.data=si(n.data));const t="chainId,gasLimit,gasPrice,maxFeePerBlobGas,maxFeePerGas,maxPriorityFeePerGas,value".split(/,/);for(const r of t)r in n&&null!=n[r]&&(e[r]=ki(n[r],`request.${r}`));const r="type,nonce".split(/,/);for(const t of r)t in n&&null!=n[t]&&(e[t]=Ii(n[t],`request.${t}`));return n.accessList&&(e.accessList=uh(n.accessList)),n.authorizationList&&(e.authorizationList=n.authorizationList.slice()),"blockTag"in n&&(e.blockTag=n.blockTag),"enableCcipRead"in n&&(e.enableCcipRead=!!n.enableCcipRead),"customData"in n&&(e.customData=n.customData),"blobVersionedHashes"in n&&n.blobVersionedHashes&&(e.blobVersionedHashes=n.blobVersionedHashes.slice()),"kzg"in n&&(e.kzg=n.kzg),"blobWrapperVersion"in n&&(e.blobWrapperVersion=n.blobWrapperVersion),"blobs"in n&&n.blobs&&(e.blobs=n.blobs.map(n=>oi(n)?si(n):Object.assign({},n))),e}class Tg{provider;number;hash;timestamp;parentHash;parentBeaconBlockRoot;nonce;difficulty;gasLimit;gasUsed;stateRoot;receiptsRoot;blobGasUsed;excessBlobGas;miner;prevRandao;extraData;baseFeePerGas;#Pn;constructor(n,e){this.#Pn=n.transactions.map(n=>"string"!=typeof n?new Cg(n,e):n),Ko(this,{provider:e,hash:Pg(n.hash),number:n.number,timestamp:n.timestamp,parentHash:n.parentHash,parentBeaconBlockRoot:n.parentBeaconBlockRoot,nonce:n.nonce,difficulty:n.difficulty,gasLimit:n.gasLimit,gasUsed:n.gasUsed,blobGasUsed:n.blobGasUsed,excessBlobGas:n.excessBlobGas,miner:n.miner,prevRandao:Pg(n.prevRandao),extraData:n.extraData,baseFeePerGas:Pg(n.baseFeePerGas),stateRoot:n.stateRoot,receiptsRoot:n.receiptsRoot})}get transactions(){return this.#Pn.map(n=>"string"==typeof n?n:n.hash)}get prefetchedTransactions(){const n=this.#Pn.slice();return 0===n.length?[]:($o("object"==typeof n[0],"transactions were not prefetched with block request","UNSUPPORTED_OPERATION",{operation:"transactionResponses()"}),n)}toJSON(){const{baseFeePerGas:n,difficulty:e,extraData:t,gasLimit:r,gasUsed:a,hash:o,miner:i,prevRandao:s,nonce:c,number:l,parentHash:u,parentBeaconBlockRoot:d,stateRoot:h,receiptsRoot:p,timestamp:f,transactions:g}=this;return{_type:"Block",baseFeePerGas:Ng(n),difficulty:Ng(e),extraData:t,gasLimit:Ng(r),gasUsed:Ng(a),blobGasUsed:Ng(this.blobGasUsed),excessBlobGas:Ng(this.excessBlobGas),hash:o,miner:i,prevRandao:s,nonce:c,number:l,parentHash:u,timestamp:f,parentBeaconBlockRoot:d,stateRoot:h,receiptsRoot:p,transactions:g}}[Symbol.iterator](){let n=0;const e=this.transactions;return{next:()=>n<this.length?{value:e[n++],done:!1}:{value:void 0,done:!0}}}get length(){return this.#Pn.length}get date(){return null==this.timestamp?null:new Date(1e3*this.timestamp)}async getTransaction(n){let e;if("number"==typeof n)e=this.#Pn[n];else{const t=n.toLowerCase();for(const n of this.#Pn){if("string"==typeof n){if(n!==t)continue;e=n;break}if(n.hash===t){e=n;break}}}if(null==e)throw new Error("no such tx");return"string"==typeof e?await this.provider.getTransaction(e):e}getPrefetchedTransaction(n){const e=this.prefetchedTransactions;if("number"==typeof n)return e[n];n=n.toLowerCase();for(const t of e)if(t.hash===n)return t;Wo(!1,"no matching transaction","indexOrHash",n)}isMined(){return!!this.hash}isLondon(){return!!this.baseFeePerGas}orphanedEvent(){if(!this.isMined())throw new Error("");return{orphan:"drop-block",hash:(n=this).hash,number:n.number};var n}}class Sg{provider;transactionHash;blockHash;blockNumber;removed;address;data;topics;index;transactionIndex;constructor(n,e){this.provider=e;const t=Object.freeze(n.topics.slice());Ko(this,{transactionHash:n.transactionHash,blockHash:n.blockHash,blockNumber:n.blockNumber,removed:n.removed,address:n.address,data:n.data,topics:t,index:n.index,transactionIndex:n.transactionIndex})}toJSON(){const{address:n,blockHash:e,blockNumber:t,data:r,index:a,removed:o,topics:i,transactionHash:s,transactionIndex:c}=this;return{_type:"log",address:n,blockHash:e,blockNumber:t,data:r,index:a,removed:o,topics:i,transactionHash:s,transactionIndex:c}}async getBlock(){const n=await this.provider.getBlock(this.blockHash);return $o(!!n,"failed to find transaction","UNKNOWN_ERROR",{}),n}async getTransaction(){const n=await this.provider.getTransaction(this.transactionHash);return $o(!!n,"failed to find transaction","UNKNOWN_ERROR",{}),n}async getTransactionReceipt(){const n=await this.provider.getTransactionReceipt(this.transactionHash);return $o(!!n,"failed to find transaction receipt","UNKNOWN_ERROR",{}),n}removedEvent(){return{orphan:"drop-log",log:{transactionHash:(n=this).transactionHash,blockHash:n.blockHash,blockNumber:n.blockNumber,address:n.address,data:n.data,topics:Object.freeze(n.topics.slice()),index:n.index}};var n}}class Bg{provider;to;from;contractAddress;hash;index;blockHash;blockNumber;logsBloom;gasUsed;blobGasUsed;cumulativeGasUsed;gasPrice;blobGasPrice;type;status;root;#Nn;constructor(n,e){this.#Nn=Object.freeze(n.logs.map(n=>new Sg(n,e)));let t=Ig;null!=n.effectiveGasPrice?t=n.effectiveGasPrice:null!=n.gasPrice&&(t=n.gasPrice),Ko(this,{provider:e,to:n.to,from:n.from,contractAddress:n.contractAddress,hash:n.hash,index:n.index,blockHash:n.blockHash,blockNumber:n.blockNumber,logsBloom:n.logsBloom,gasUsed:n.gasUsed,cumulativeGasUsed:n.cumulativeGasUsed,blobGasUsed:n.blobGasUsed,gasPrice:t,blobGasPrice:n.blobGasPrice,type:n.type,status:n.status,root:n.root})}get logs(){return this.#Nn}toJSON(){const{to:n,from:e,contractAddress:t,hash:r,index:a,blockHash:o,blockNumber:i,logsBloom:s,logs:c,status:l,root:u}=this;return{_type:"TransactionReceipt",blockHash:o,blockNumber:i,contractAddress:t,cumulativeGasUsed:Ng(this.cumulativeGasUsed),from:e,gasPrice:Ng(this.gasPrice),blobGasUsed:Ng(this.blobGasUsed),blobGasPrice:Ng(this.blobGasPrice),gasUsed:Ng(this.gasUsed),hash:r,index:a,logs:c,logsBloom:s,root:u,status:l,to:n}}get length(){return this.logs.length}[Symbol.iterator](){let n=0;return{next:()=>n<this.length?{value:this.logs[n++],done:!1}:{value:void 0,done:!0}}}get fee(){return this.gasUsed*this.gasPrice}async getBlock(){const n=await this.provider.getBlock(this.blockHash);if(null==n)throw new Error("TODO");return n}async getTransaction(){const n=await this.provider.getTransaction(this.hash);if(null==n)throw new Error("TODO");return n}async getResult(){return await this.provider.getTransactionResult(this.hash)}async confirmations(){return await this.provider.getBlockNumber()-this.blockNumber+1}removedEvent(){return Ug(this)}reorderedEvent(n){return $o(!n||n.isMined(),"unmined 'other' transction cannot be orphaned","UNSUPPORTED_OPERATION",{operation:"reorderedEvent(other)"}),Og(this,n)}}class Cg{provider;blockNumber;blockHash;index;hash;type;to;from;nonce;gasLimit;gasPrice;maxPriorityFeePerGas;maxFeePerGas;maxFeePerBlobGas;data;value;chainId;signature;accessList;blobVersionedHashes;authorizationList;#zn;constructor(n,e){this.provider=e,this.blockNumber=null!=n.blockNumber?n.blockNumber:null,this.blockHash=null!=n.blockHash?n.blockHash:null,this.hash=n.hash,this.index=n.index,this.type=n.type,this.from=n.from,this.to=n.to||null,this.gasLimit=n.gasLimit,this.nonce=n.nonce,this.data=n.data,this.value=n.value,this.gasPrice=n.gasPrice,this.maxPriorityFeePerGas=null!=n.maxPriorityFeePerGas?n.maxPriorityFeePerGas:null,this.maxFeePerGas=null!=n.maxFeePerGas?n.maxFeePerGas:null,this.maxFeePerBlobGas=null!=n.maxFeePerBlobGas?n.maxFeePerBlobGas:null,this.chainId=n.chainId,this.signature=n.signature,this.accessList=null!=n.accessList?n.accessList:null,this.blobVersionedHashes=null!=n.blobVersionedHashes?n.blobVersionedHashes:null,this.authorizationList=null!=n.authorizationList?n.authorizationList:null,this.#zn=-1}toJSON(){const{blockNumber:n,blockHash:e,index:t,hash:r,type:a,to:o,from:i,nonce:s,data:c,signature:l,accessList:u,blobVersionedHashes:d}=this;return{_type:"TransactionResponse",accessList:u,blockNumber:n,blockHash:e,blobVersionedHashes:d,chainId:Ng(this.chainId),data:c,from:i,gasLimit:Ng(this.gasLimit),gasPrice:Ng(this.gasPrice),hash:r,maxFeePerGas:Ng(this.maxFeePerGas),maxPriorityFeePerGas:Ng(this.maxPriorityFeePerGas),maxFeePerBlobGas:Ng(this.maxFeePerBlobGas),nonce:s,signature:l,to:o,index:t,type:a,value:Ng(this.value)}}async getBlock(){let n=this.blockNumber;if(null==n){const e=await this.getTransaction();e&&(n=e.blockNumber)}if(null==n)return null;const e=this.provider.getBlock(n);if(null==e)throw new Error("TODO");return e}async getTransaction(){return this.provider.getTransaction(this.hash)}async confirmations(){if(null==this.blockNumber){const{tx:n,blockNumber:e}=await Ho({tx:this.getTransaction(),blockNumber:this.provider.getBlockNumber()});return null==n||null==n.blockNumber?0:e-n.blockNumber+1}return await this.provider.getBlockNumber()-this.blockNumber+1}async wait(n,e){const t=null==n?1:n,r=null==e?0:e;let a=this.#zn,o=-1,i=-1===a;const s=async()=>{if(i)return null;const{blockNumber:n,nonce:e}=await Ho({blockNumber:this.provider.getBlockNumber(),nonce:this.provider.getTransactionCount(this.from)});if(e<this.nonce)return void(a=n);if(i)return null;const r=await this.getTransaction();if(!r||null==r.blockNumber)for(-1===o&&(o=a-3,o<this.#zn&&(o=this.#zn));o<=n;){if(i)return null;const e=await this.provider.getBlock(o,!0);if(null==e)return;for(const n of e)if(n===this.hash)return;for(let r=0;r<e.length;r++){const o=await e.getTransaction(r);if(o.from===this.from&&o.nonce===this.nonce){if(i)return null;const e=await this.provider.getTransactionReceipt(o.hash);if(null==e)return;if(n-e.blockNumber+1<t)return;let r="replaced";o.data===this.data&&o.to===this.to&&o.value===this.value?r="repriced":"0x"===o.data&&o.from===o.to&&o.value===Ig&&(r="cancelled"),$o(!1,"transaction was replaced","TRANSACTION_REPLACED",{cancelled:"replaced"===r||"cancelled"===r,reason:r,replacement:o.replaceableTransaction(a),hash:o.hash,receipt:e})}}o++}},c=n=>{if(null==n||0!==n.status)return n;$o(!1,"transaction execution reverted","CALL_EXCEPTION",{action:"sendTransaction",data:null,reason:null,invocation:null,revert:null,transaction:{to:n.to,from:n.from,data:""},receipt:n})},l=await this.provider.getTransactionReceipt(this.hash);if(0===t)return c(l);if(l){if(1===t||await l.confirmations()>=t)return c(l)}else if(await s(),0===t)return null;const u=new Promise((n,e)=>{const o=[],l=()=>{o.forEach(n=>n())};if(o.push(()=>{i=!0}),r>0){const n=setTimeout(()=>{l(),e(Jo("wait for transaction timeout","TIMEOUT"))},r);o.push(()=>{clearTimeout(n)})}const u=async r=>{if(await r.confirmations()>=t){l();try{n(c(r))}catch(n){e(n)}}};if(o.push(()=>{this.provider.off(this.hash,u)}),this.provider.on(this.hash,u),a>=0){const n=async()=>{try{await s()}catch(n){if(_o(n,"TRANSACTION_REPLACED"))return l(),void e(n)}i||this.provider.once("block",n)};o.push(()=>{this.provider.off("block",n)}),this.provider.once("block",n)}});return await u}isMined(){return null!=this.blockHash}isLegacy(){return 0===this.type}isBerlin(){return 1===this.type}isLondon(){return 2===this.type}isCancun(){return 3===this.type}removedEvent(){return $o(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),Ug(this)}reorderedEvent(n){return $o(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),$o(!n||n.isMined(),"unmined 'other' transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),Og(this,n)}replaceableTransaction(n){Wo(Number.isInteger(n)&&n>=0,"invalid startBlock","startBlock",n);const e=new Cg(this,this.provider);return e.#zn=n,e}}function Og(n,e){return{orphan:"reorder-transaction",tx:n,other:e}}function Ug(n){return{orphan:"drop-transaction",tx:n}}class Fg extends Sg{interface;fragment;args;constructor(n,e,t){super(n,n.provider);Ko(this,{args:e.decodeEventLog(t,n.data,n.topics),fragment:t,interface:e})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}}class Lg extends Sg{error;constructor(n,e){super(n,n.provider),Ko(this,{error:e})}}class jg extends Bg{#Rn;constructor(n,e,t){super(t,e),this.#Rn=n}get logs(){return super.logs.map(n=>{const e=n.topics.length?this.#Rn.getEvent(n.topics[0]):null;if(e)try{return new Fg(n,this.#Rn,e)}catch(e){return new Lg(n,e)}return n})}}class Dg extends Cg{#Rn;constructor(n,e,t){super(t,e),this.#Rn=n}async wait(n,e){const t=await super.wait(n,e);return null==t?null:new jg(this.#Rn,this.provider,t)}}class Mg extends Di{log;constructor(n,e,t,r){super(n,e,t),Ko(this,{log:r})}async getBlock(){return await this.log.getBlock()}async getTransaction(){return await this.log.getTransaction()}async getTransactionReceipt(){return await this.log.getTransactionReceipt()}}class Gg extends Mg{constructor(n,e,t,r,a){super(n,e,t,new Fg(a,n.interface,r));Ko(this,{args:n.interface.decodeEventLog(r,this.log.data,this.log.topics),fragment:r})}get eventName(){return this.fragment.name}get eventSignature(){return this.fragment.format()}}const qg=BigInt(0);function Hg(n){return n&&"function"==typeof n.call}function Kg(n){return n&&"function"==typeof n.estimateGas}function Vg(n){return n&&"function"==typeof n.resolveName}function _g(n){return n&&"function"==typeof n.sendTransaction}function Qg(n){if(null!=n){if(Vg(n))return n;if(n.provider)return n.provider}}class Jg{#Tn;fragment;constructor(n,e,t){if(Ko(this,{fragment:e}),e.inputs.length<t.length)throw new Error("too many arguments");const r=$g(n.runner,"resolveName"),a=Vg(r)?r:null;this.#Tn=async function(){const r=await Promise.all(e.inputs.map((n,e)=>null==t[e]?null:n.walkAsync(t[e],(n,e)=>"address"===n?Array.isArray(e)?Promise.all(e.map(n=>Md(n,a))):Md(e,a):e)));return n.interface.encodeFilterTopics(e,r)}()}getTopicFilter(){return this.#Tn}}function $g(n,e){return null==n?null:"function"==typeof n[e]?n:n.provider&&"function"==typeof n.provider[e]?n.provider:null}function Wg(n){return null==n?null:n.provider||null}async function Zg(n,e){const t=Vd.dereference(n,"overrides");Wo("object"==typeof t,"invalid overrides parameter","overrides",n);const r=Rg(t);return Wo(null==r.to||(e||[]).indexOf("to")>=0,"cannot override to","overrides.to",r.to),Wo(null==r.data||(e||[]).indexOf("data")>=0,"cannot override data","overrides.data",r.data),r.from&&(r.from=r.from),r}async function Yg(n,e,t){const r=$g(n,"resolveName"),a=Vg(r)?r:null;return await Promise.all(e.map((n,e)=>n.walkAsync(t[e],(n,e)=>(e=Vd.dereference(e,n),"address"===n?Md(e,a):e))))}function Xg(n){const e=async function(e){const t=await Zg(e,["data"]);t.to=await n.getAddress(),t.from&&(t.from=await Md(t.from,Qg(n.runner)));const r=n.interface,a=ki(t.value||qg,"overrides.value")===qg,o="0x"===(t.data||"0x");!r.fallback||r.fallback.payable||!r.receive||o||a||Wo(!1,"cannot send data to receive or send value to non-payable fallback","overrides",e),Wo(r.fallback||o,"cannot send data to receive-only contract","overrides.data",t.data);return Wo(r.receive||r.fallback&&r.fallback.payable||a,"cannot send value to non-payable fallback","overrides.value",t.value),Wo(r.fallback||o,"cannot send data to receive-only contract","overrides.data",t.data),t},t=async function(t){const r=n.runner;$o(_g(r),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const a=await r.sendTransaction(await e(t)),o=Wg(n.runner);return new Dg(n.interface,o,a)},r=async n=>await t(n);return Ko(r,{_contract:n,estimateGas:async function(t){const r=$g(n.runner,"estimateGas");return $o(Kg(r),"contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"}),await r.estimateGas(await e(t))},populateTransaction:e,send:t,staticCall:async function(t){const r=$g(n.runner,"call");$o(Hg(r),"contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});const a=await e(t);try{return await r.call(a)}catch(e){if(Qo(e)&&e.data)throw n.interface.makeError(e.data,a);throw e}}}),r}const nm=Symbol.for("_ethersInternal_contract"),em=new WeakMap;function tm(n){return em.get(n[nm])}async function rm(n,e){let t,r=null;if(Array.isArray(e)){const r=function(e){if(ai(e,32))return e;const t=n.interface.getEvent(e);return Wo(t,"unknown fragment","name",e),t.topicHash};t=e.map(n=>null==n?null:Array.isArray(n)?n.map(r):r(n))}else"*"===e?t=[null]:"string"==typeof e?ai(e,32)?t=[e]:(r=n.interface.getEvent(e),Wo(r,"unknown fragment","event",e),t=[r.topicHash]):(a=e)&&"object"==typeof a&&"getTopicFilter"in a&&"function"==typeof a.getTopicFilter&&a.fragment?t=await e.getTopicFilter():"fragment"in e?(r=e.fragment,t=[r.topicHash]):Wo(!1,"unknown event name","event",e);var a;t=t.map(n=>{if(null==n)return null;if(Array.isArray(n)){const e=Array.from(new Set(n.map(n=>n.toLowerCase())).values());return 1===e.length?e[0]:(e.sort(),e)}return n.toLowerCase()});return{fragment:r,tag:t.map(n=>null==n?"null":Array.isArray(n)?n.join("|"):n).join("&"),topics:t}}async function am(n,e){const{subs:t}=tm(n);return t.get((await rm(n,e)).tag)||null}async function om(n,e,t){const r=Wg(n.runner);$o(r,"contract runner does not support subscribing","UNSUPPORTED_OPERATION",{operation:e});const{fragment:a,tag:o,topics:i}=await rm(n,t),{addr:s,subs:c}=tm(n);let l=c.get(o);if(!l){const e={address:s||n,topics:i},u=e=>{let r=a;if(null==r)try{r=n.interface.getEvent(e.topics[0])}catch(n){}if(r){const o=r,i=a?n.interface.decodeEventLog(a,e.data,e.topics):[];sm(n,t,i,r=>new Gg(n,r,t,o,e))}else sm(n,t,[],r=>new Mg(n,r,t,e))};let d=[];l={tag:o,listeners:[],start:()=>{d.length||d.push(r.on(e,u))},stop:async()=>{if(0==d.length)return;let n=d;d=[],await Promise.all(n),r.off(e,u)}},c.set(o,l)}return l}let im=Promise.resolve();async function sm(n,e,t,r){try{await im}catch(n){}const a=async function(n,e,t,r){await im;const a=await am(n,e);if(!a)return!1;const o=a.listeners.length;return a.listeners=a.listeners.filter(({listener:e,once:a})=>{const o=Array.from(t);r&&o.push(r(a?null:e));try{e.call(n,...o)}catch(n){}return!a}),0===a.listeners.length&&(a.stop(),tm(n).subs.delete(a.tag)),o>0}(n,e,t,r);return im=a,await a}const cm=["then"];class lm{target;interface;runner;filters;[nm];fallback;constructor(n,e,t,r){Wo("string"==typeof n||Ld(n),"invalid value for Contract target","target",n),null==t&&(t=null);const a=xg.from(e);let o;Ko(this,{target:n,runner:t,interface:a}),Object.defineProperty(this,nm,{value:{}});let i=null,s=null;if(r){const n=Wg(t);s=new Dg(this.interface,n,r)}let c=new Map;if("string"==typeof n)if(ai(n))i=n,o=Promise.resolve(n);else{const e=$g(t,"resolveName");if(!Vg(e))throw Jo("contract runner does not support name resolution","UNSUPPORTED_OPERATION",{operation:"resolveName"});o=e.resolveName(n).then(e=>{if(null==e)throw Jo("an ENS name used for a contract target must be correctly configured","UNCONFIGURED_NAME",{value:n});return tm(this).addr=e,e})}else o=n.getAddress().then(n=>{if(null==n)throw new Error("TODO");return tm(this).addr=n,n});var l,u;l=this,u={addrPromise:o,addr:i,deployTx:s,subs:c},em.set(l[nm],u);const d=new Proxy({},{get:(n,e,t)=>{if("symbol"==typeof e||cm.indexOf(e)>=0)return Reflect.get(n,e,t);try{return this.getEvent(e)}catch(n){if(!_o(n,"INVALID_ARGUMENT")||"key"!==n.argument)throw n}},has:(n,e)=>cm.indexOf(e)>=0?Reflect.has(n,e):Reflect.has(n,e)||this.interface.hasEvent(String(e))});return Ko(this,{filters:d}),Ko(this,{fallback:a.receive||a.fallback?Xg(this):null}),new Proxy(this,{get:(n,e,t)=>{if("symbol"==typeof e||e in n||cm.indexOf(e)>=0)return Reflect.get(n,e,t);try{return n.getFunction(e)}catch(n){if(!_o(n,"INVALID_ARGUMENT")||"key"!==n.argument)throw n}},has:(n,e)=>"symbol"==typeof e||e in n||cm.indexOf(e)>=0?Reflect.has(n,e):n.interface.hasFunction(e)})}connect(n){return new lm(this.target,this.interface,n)}attach(n){return new lm(n,this.interface,this.runner)}async getAddress(){return await tm(this).addrPromise}async getDeployedCode(){const n=Wg(this.runner);$o(n,"runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"getDeployedCode"});const e=await n.getCode(await this.getAddress());return"0x"===e?null:e}async waitForDeployment(){const n=this.deploymentTransaction();if(n)return await n.wait(),this;if(null!=await this.getDeployedCode())return this;const e=Wg(this.runner);return $o(null!=e,"contract runner does not support .provider","UNSUPPORTED_OPERATION",{operation:"waitForDeployment"}),new Promise((n,t)=>{const r=async()=>{try{if(null!=await this.getDeployedCode())return n(this);e.once("block",r)}catch(n){t(n)}};r()})}deploymentTransaction(){return tm(this).deployTx}getFunction(n){"string"!=typeof n&&(n=n.format());const e=function(n,e){const t=function(...t){const r=n.interface.getFunction(e,t);return $o(r,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e,args:t}}),r},r=async function(...e){const r=t(...e);let a={};if(r.inputs.length+1===e.length&&(a=await Zg(e.pop()),a.from&&(a.from=await Md(a.from,Qg(n.runner)))),r.inputs.length!==e.length)throw new Error("internal error: fragment inputs doesn't match arguments; should not happen");const o=await Yg(n.runner,r.inputs,e);return Object.assign({},a,await Ho({to:n.getAddress(),data:n.interface.encodeFunctionData(r,o)}))},a=async function(...n){const e=await i(...n);return 1===e.length?e[0]:e},o=async function(...e){const t=n.runner;$o(_g(t),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const a=await t.sendTransaction(await r(...e)),o=Wg(n.runner);return new Dg(n.interface,o,a)},i=async function(...e){const a=$g(n.runner,"call");$o(Hg(a),"contract runner does not support calling","UNSUPPORTED_OPERATION",{operation:"call"});const o=await r(...e);let i="0x";try{i=await a.call(o)}catch(e){if(Qo(e)&&e.data)throw n.interface.makeError(e.data,o);throw e}const s=t(...e);return n.interface.decodeFunctionResult(s,i)},s=async(...n)=>t(...n).constant?await a(...n):await o(...n);return Ko(s,{name:n.interface.getFunctionName(e),_contract:n,_key:e,getFragment:t,estimateGas:async function(...e){const t=$g(n.runner,"estimateGas");return $o(Kg(t),"contract runner does not support gas estimation","UNSUPPORTED_OPERATION",{operation:"estimateGas"}),await t.estimateGas(await r(...e))},populateTransaction:r,send:o,staticCall:a,staticCallResult:i}),Object.defineProperty(s,"fragment",{configurable:!1,enumerable:!0,get:()=>{const t=n.interface.getFunction(e);return $o(t,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e}}),t}}),s}(this,n);return e}getEvent(n){return"string"!=typeof n&&(n=n.format()),function(n,e){const t=function(...t){const r=n.interface.getEvent(e,t);return $o(r,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e,args:t}}),r},r=function(...e){return new Jg(n,t(...e),e)};return Ko(r,{name:n.interface.getEventName(e),_contract:n,_key:e,getFragment:t}),Object.defineProperty(r,"fragment",{configurable:!1,enumerable:!0,get:()=>{const t=n.interface.getEvent(e);return $o(t,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e}}),t}}),r}(this,n)}async queryTransaction(n){throw new Error("@TODO")}async queryFilter(n,e,t){null==e&&(e=0),null==t&&(t="latest");const{addr:r,addrPromise:a}=tm(this),o=r||await a,{fragment:i,topics:s}=await rm(this,n),c={address:o,topics:s,fromBlock:e,toBlock:t},l=Wg(this.runner);return $o(l,"contract runner does not have a provider","UNSUPPORTED_OPERATION",{operation:"queryFilter"}),(await l.getLogs(c)).map(n=>{let e=i;if(null==e)try{e=this.interface.getEvent(n.topics[0])}catch(n){}if(e)try{return new Fg(n,this.interface,e)}catch(e){return new Lg(n,e)}return new Sg(n,l)})}async on(n,e){const t=await om(this,"on",n);return t.listeners.push({listener:e,once:!1}),t.start(),this}async once(n,e){const t=await om(this,"once",n);return t.listeners.push({listener:e,once:!0}),t.start(),this}async emit(n,...e){return await sm(this,n,e,null)}async listenerCount(n){if(n){const e=await am(this,n);return e?e.listeners.length:0}const{subs:e}=tm(this);let t=0;for(const{listeners:n}of e.values())t+=n.length;return t}async listeners(n){if(n){const e=await am(this,n);return e?e.listeners.map(({listener:n})=>n):[]}const{subs:e}=tm(this);let t=[];for(const{listeners:n}of e.values())t=t.concat(n.map(({listener:n})=>n));return t}async off(n,e){const t=await am(this,n);if(!t)return this;if(e){const n=t.listeners.map(({listener:n})=>n).indexOf(e);n>=0&&t.listeners.splice(n,1)}return null!=e&&0!==t.listeners.length||(t.stop(),tm(this).subs.delete(t.tag)),this}async removeAllListeners(n){if(n){const e=await am(this,n);if(!e)return this;e.stop(),tm(this).subs.delete(e.tag)}else{const{subs:n}=tm(this);for(const{tag:e,stop:t}of n.values())t(),n.delete(e)}return this}async addListener(n,e){return await this.on(n,e)}async removeListener(n,e){return await this.off(n,e)}static buildClass(n){return class extends lm{constructor(e,t=null){super(e,n,t)}}}static from(n,e,t){null==t&&(t=null);return new this(n,e,t)}}class um extends(function(){return lm}()){}class dm{interface;bytecode;runner;constructor(n,e,t){const r=xg.from(n);e instanceof Uint8Array||("object"==typeof e&&(e=e.object),e.startsWith("0x")||(e="0x"+e)),Ko(this,{bytecode:e=si(ti(e)),interface:r,runner:t||null})}attach(n){return new lm(n,this.interface,this.runner)}async getDeployTransaction(...n){let e={};const t=this.interface.deploy;if(t.inputs.length+1===n.length&&(e=await Zg(n.pop())),t.inputs.length!==n.length)throw new Error("incorrect number of arguments to constructor");const r=await Yg(this.runner,t.inputs,n),a=ci([this.bytecode,this.interface.encodeDeploy(r)]);return Object.assign({},e,{data:a})}async deploy(...n){const e=await this.getDeployTransaction(...n);$o(this.runner&&"function"==typeof this.runner.sendTransaction,"factory runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const t=await this.runner.sendTransaction(e),r=Ud(t);return new lm(r,this.interface,this.runner,t)}connect(n){return new dm(this.interface,this.bytecode,n)}static fromSolidity(n,e){Wo(null!=n,"bad compiler output","output",n),"string"==typeof n&&(n=JSON.parse(n));const t=n.abi;let r="";return n.bytecode?r=n.bytecode:n.evm&&n.evm.bytecode&&(r=n.evm.bytecode),new this(t,r,e)}}function hm(n){return n.match(/^ipfs:\/\/ipfs\//i)?n=n.substring(12):n.match(/^ipfs:\/\//i)?n=n.substring(7):Wo(!1,"unsupported IPFS format","link",n),`https://gateway.ipfs.io/ipfs/${n}`}class pm{name;constructor(n){Ko(this,{name:n})}connect(n){return this}supportsCoinType(n){return!1}async encodeAddress(n,e){throw new Error("unsupported coin")}async decodeAddress(n,e){throw new Error("unsupported coin")}}const fm=new RegExp("^(ipfs)://(.*)$","i"),gm=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),fm,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];class mm{provider;address;name;#Sn;#Bn;constructor(n,e,t){Ko(this,{provider:n,address:e,name:t}),this.#Sn=null,this.#Bn=new um(e,["function supportsInterface(bytes4) view returns (bool)","function resolve(bytes, bytes) view returns (bytes)","function addr(bytes32) view returns (address)","function addr(bytes32, uint) view returns (bytes)","function text(bytes32, string) view returns (string)","function contenthash(bytes32) view returns (bytes)"],n)}async supportsWildcard(){return null==this.#Sn&&(this.#Sn=(async()=>{try{return await this.#Bn.supportsInterface("0x9061b923")}catch(n){if(_o(n,"CALL_EXCEPTION"))return!1;throw this.#Sn=null,n}})()),await this.#Sn}async#Cn(n,e){e=(e||[]).slice();const t=this.#Bn.interface;e.unshift(Vp(this.name));let r=null;await this.supportsWildcard()&&(r=t.getFunction(n),$o(r,"missing fragment","UNKNOWN_ERROR",{info:{funcName:n}}),e=[_p(this.name,255),t.encodeFunctionData(r,e)],n="resolve(bytes,bytes)"),e.push({enableCcipRead:!0});try{const a=await this.#Bn[n](...e);return r?t.decodeFunctionResult(r,a)[0]:a}catch(n){if(!_o(n,"CALL_EXCEPTION"))throw n}return null}async getAddress(n){if(null==n&&(n=60),60===n)try{const n=await this.#Cn("addr(bytes32)");return null==n||n===od?null:n}catch(n){if(_o(n,"CALL_EXCEPTION"))return null;throw n}if(n>=0&&n<2147483648){let e=n+2147483648;const t=await this.#Cn("addr(bytes32,uint)",[e]);if(ai(t,20))return Cd(t)}let e=null;for(const t of this.provider.plugins)if(t instanceof pm&&t.supportsCoinType(n)){e=t;break}if(null==e)return null;const t=await this.#Cn("addr(bytes32,uint)",[n]);if(null==t||"0x"===t)return null;const r=await e.decodeAddress(n,t);if(null!=r)return r;$o(!1,"invalid coin data","UNSUPPORTED_OPERATION",{operation:`getAddress(${n})`,info:{coinType:n,data:t}})}async getText(n){const e=await this.#Cn("text(bytes32,string)",[n]);return null==e||"0x"===e?null:e}async getContentHash(){const n=await this.#Cn("contenthash(bytes32)");if(null==n||"0x"===n)return null;const e=n.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);if(e){const n="e3010170"===e[1]?"ipfs":"ipns",t=parseInt(e[4],16);if(e[5].length===2*t)return`${n}://${Ui("0x"+e[2])}`}const t=n.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(t&&64===t[1].length)return`bzz://${t[1]}`;$o(!1,"invalid or unsupported content hash data","UNSUPPORTED_OPERATION",{operation:"getContentHash()",info:{data:n}})}async getAvatar(){return(await this._getAvatar()).url}async _getAvatar(){const n=[{type:"name",value:this.name}];try{const e=await this.getText("avatar");if(null==e)return n.push({type:"!avatar",value:""}),{url:null,linkage:n};n.push({type:"avatar",value:e});for(let t=0;t<gm.length;t++){const r=e.match(gm[t]);if(null==r)continue;const a=r[1].toLowerCase();switch(a){case"https":case"data":return n.push({type:"url",value:e}),{linkage:n,url:e};case"ipfs":{const t=hm(e);return n.push({type:"ipfs",value:e}),n.push({type:"url",value:t}),{linkage:n,url:t}}case"erc721":case"erc1155":{const t="erc721"===a?"tokenURI(uint256)":"uri(uint256)";n.push({type:a,value:e});const o=await this.getAddress();if(null==o)return n.push({type:"!owner",value:""}),{url:null,linkage:n};const i=(r[2]||"").split("/");if(2!==i.length)return n.push({type:`!${a}caip`,value:r[2]||""}),{url:null,linkage:n};const s=i[1],c=new um(i[0],["function tokenURI(uint) view returns (string)","function ownerOf(uint) view returns (address)","function uri(uint) view returns (string)","function balanceOf(address, uint256) view returns (uint)"],this.provider);if("erc721"===a){const e=await c.ownerOf(s);if(o!==e)return n.push({type:"!owner",value:e}),{url:null,linkage:n};n.push({type:"owner",value:e})}else if("erc1155"===a){const e=await c.balanceOf(o,s);if(!e)return n.push({type:"!balance",value:"0"}),{url:null,linkage:n};n.push({type:"balance",value:e.toString()})}let l=await c[t](s);if(null==l||"0x"===l)return n.push({type:"!metadata-url",value:""}),{url:null,linkage:n};n.push({type:"metadata-url-base",value:l}),"erc1155"===a&&(l=l.replace("{id}",Ni(s,32).substring(2)),n.push({type:"metadata-url-expanded",value:l})),l.match(/^ipfs:/i)&&(l=hm(l)),n.push({type:"metadata-url",value:l});let u={};const d=await new rs(l).send();d.assertOk();try{u=d.bodyJson}catch(e){try{n.push({type:"!metadata",value:d.bodyText})}catch(e){const t=d.body;return t&&n.push({type:"!metadata",value:si(t)}),{url:null,linkage:n}}return{url:null,linkage:n}}if(!u)return n.push({type:"!metadata",value:""}),{url:null,linkage:n};n.push({type:"metadata",value:JSON.stringify(u)});let h=u.image;if("string"!=typeof h)return n.push({type:"!imageUrl",value:""}),{url:null,linkage:n};if(h.match(/^(https:\/\/|data:)/i));else{if(null==h.match(fm))return n.push({type:"!imageUrl-ipfs",value:h}),{url:null,linkage:n};n.push({type:"imageUrl-ipfs",value:h}),h=hm(h)}return n.push({type:"url",value:h}),{linkage:n,url:h}}}}}catch(n){}return{linkage:n,url:null}}static async getEnsAddress(n){const e=await n.getNetwork(),t=e.getPlugin("org.ethers.plugins.network.Ens");return $o(t,"network does not support ENS","UNSUPPORTED_OPERATION",{operation:"getEnsAddress",info:{network:e}}),t.address}static async#On(n,e){const t=await mm.getEnsAddress(n);try{const r=new um(t,["function resolver(bytes32) view returns (address)"],n),a=await r.resolver(Vp(e),{enableCcipRead:!0});return a===od?null:a}catch(n){throw n}return null}static async fromName(n,e){let t=e;for(;;){if(""===t||"."===t)return null;if("eth"!==e&&"eth"===t)return null;const r=await mm.#On(n,t);if(null!=r){const a=new mm(n,r,e);return t===e||await a.supportsWildcard()?a:null}t=t.split(".").slice(1).join(".")}}}const bm=BigInt(0);function ym(n,e){return function(t){return null==t?e:n(t)}}function vm(n,e){return t=>{if(e&&null==t)return null;if(!Array.isArray(t))throw new Error("not an array");return t.map(e=>n(e))}}function wm(n,e){return t=>{const r={};for(const a in n){let o=a;if(e&&a in e&&!(o in t))for(const n of e[a])if(n in t){o=n;break}try{const e=n[a](t[o]);void 0!==e&&(r[a]=e)}catch(n){$o(!1,`invalid value for value.${a} (${n instanceof Error?n.message:"not-an-error"})`,"BAD_DATA",{value:t})}}return r}}function km(n){return Wo(ai(n,!0),"invalid data","value",n),n}function Am(n){return Wo(ai(n,32),"invalid hash","value",n),n}const Em=wm({address:Cd,blockHash:Am,blockNumber:Ii,data:km,index:Ii,removed:ym(function(n){switch(n){case!0:case"true":return!0;case!1:case"false":return!1}Wo(!1,`invalid boolean; ${JSON.stringify(n)}`,"value",n)},!1),topics:vm(Am),transactionHash:Am,transactionIndex:Ii},{index:["logIndex"]});const xm=wm({hash:ym(Am),parentHash:Am,parentBeaconBlockRoot:ym(Am,null),number:Ii,timestamp:Ii,nonce:ym(km),difficulty:ki,gasLimit:ki,gasUsed:ki,stateRoot:ym(Am,null),receiptsRoot:ym(Am,null),blobGasUsed:ym(ki,null),excessBlobGas:ym(ki,null),miner:ym(Cd),prevRandao:ym(Am,null),extraData:km,baseFeePerGas:ym(ki)},{prevRandao:["mixHash"]});const Im=wm({transactionIndex:Ii,blockNumber:Ii,transactionHash:Am,address:Cd,topics:vm(Am),data:km,index:Ii,blockHash:Am},{index:["logIndex"]});const Pm=wm({to:ym(Cd,null),from:ym(Cd,null),contractAddress:ym(Cd,null),index:Ii,root:ym(si),gasUsed:ki,blobGasUsed:ym(ki,null),logsBloom:ym(km),blockHash:Am,hash:Am,logs:vm(function(n){return Im(n)}),blockNumber:Ii,cumulativeGasUsed:ki,effectiveGasPrice:ym(ki),blobGasPrice:ym(ki,null),status:ym(Ii),type:ym(Ii,0)},{effectiveGasPrice:["gasPrice"],hash:["transactionHash"],index:["transactionIndex"]});function Nm(n){n.to&&ki(n.to)===bm&&(n.to="0x0000000000000000000000000000000000000000");const e=wm({hash:Am,index:ym(Ii,void 0),type:n=>"0x"===n||null==n?0:Ii(n),accessList:ym(uh,null),blobVersionedHashes:ym(vm(Am,!0),null),authorizationList:ym(vm(n=>{let e;if(n.signature)e=n.signature;else{let t=n.yParity;"0x1b"===t?t=0:"0x1c"===t&&(t=1),e=Object.assign({},n,{yParity:t})}return{address:Cd(n.address),chainId:ki(n.chainId),nonce:ki(n.nonce),signature:xd.from(e)}},!1),null),blockHash:ym(Am,null),blockNumber:ym(Ii,null),transactionIndex:ym(Ii,null),from:Cd,gasPrice:ym(ki),maxPriorityFeePerGas:ym(ki),maxFeePerGas:ym(ki),maxFeePerBlobGas:ym(ki,null),gasLimit:ki,to:ym(Cd,null),value:ki,nonce:Ii,data:km,creates:ym(Cd,null),chainId:ym(ki,null)},{data:["input"],gasLimit:["gas"],index:["transactionIndex"]})(n);if(null==e.to&&null==e.creates&&(e.creates=Ud(e)),1!==n.type&&2!==n.type||null!=n.accessList||(e.accessList=[]),n.signature?e.signature=xd.from(n.signature):e.signature=xd.from(n),null==e.chainId){const n=e.signature.legacyChainId;null!=n&&(e.chainId=n)}return e.blockHash&&ki(e.blockHash)===bm&&(e.blockHash=null),e}class zm{name;constructor(n){Ko(this,{name:n})}clone(){return new zm(this.name)}}class Rm extends zm{effectiveBlock;txBase;txCreate;txDataZero;txDataNonzero;txAccessListStorageKey;txAccessListAddress;constructor(n,e){null==n&&(n=0),super(`org.ethers.network.plugins.GasCost#${n||0}`);const t={effectiveBlock:n};function r(n,r){let a=(e||{})[n];null==a&&(a=r),Wo("number"==typeof a,`invalud value for ${n}`,"costs",e),t[n]=a}r("txBase",21e3),r("txCreate",32e3),r("txDataZero",4),r("txDataNonzero",16),r("txAccessListStorageKey",1900),r("txAccessListAddress",2400),Ko(this,t)}clone(){return new Rm(this.effectiveBlock,this)}}class Tm extends zm{address;targetNetwork;constructor(n,e){super("org.ethers.plugins.network.Ens"),Ko(this,{address:n||"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",targetNetwork:null==e?1:e})}clone(){return new Tm(this.address,this.targetNetwork)}}class Sm extends zm{#Un;get feeDataFunc(){return this.#Un}constructor(n){super("org.ethers.plugins.network.FeeData"),this.#Un=n}async getFeeData(n){return await this.#Un(n)}clone(){return new Sm(this.#Un)}}class Bm extends zm{#c;#Fn;get url(){return this.#c}get processFunc(){return this.#Fn}constructor(n,e){super("org.ethers.plugins.network.FetchUrlFeeDataPlugin"),this.#c=n,this.#Fn=e}clone(){return this}}const Cm=new Map;class Om{#Ln;#tn;#jn;constructor(n,e){this.#Ln=n,this.#tn=ki(e),this.#jn=new Map}toJSON(){return{name:this.name,chainId:String(this.chainId)}}get name(){return this.#Ln}set name(n){this.#Ln=n}get chainId(){return this.#tn}set chainId(n){this.#tn=ki(n,"chainId")}matches(n){if(null==n)return!1;if("string"==typeof n){try{return this.chainId===ki(n)}catch(n){}return this.name===n}if("number"==typeof n||"bigint"==typeof n){try{return this.chainId===ki(n)}catch(n){}return!1}if("object"==typeof n){if(null!=n.chainId){try{return this.chainId===ki(n.chainId)}catch(n){}return!1}return null!=n.name&&this.name===n.name}return!1}get plugins(){return Array.from(this.#jn.values())}attachPlugin(n){if(this.#jn.get(n.name))throw new Error(`cannot replace existing plugin: ${n.name} `);return this.#jn.set(n.name,n.clone()),this}getPlugin(n){return this.#jn.get(n)||null}getPlugins(n){return this.plugins.filter(e=>e.name.split("#")[0]===n)}clone(){const n=new Om(this.name,this.chainId);return this.plugins.forEach(e=>{n.attachPlugin(e.clone())}),n}computeIntrinsicGas(n){const e=this.getPlugin("org.ethers.plugins.network.GasCost")||new Rm;let t=e.txBase;if(null==n.to&&(t+=e.txCreate),n.data)for(let r=2;r<n.data.length;r+=2)"00"===n.data.substring(r,r+2)?t+=e.txDataZero:t+=e.txDataNonzero;if(n.accessList){const r=uh(n.accessList);for(const n in r)t+=e.txAccessListAddress+e.txAccessListStorageKey*r[n].storageKeys.length}return t}static from(n){if(function(){if(Lm)return;function n(n,e,t){const r=function(){const r=new Om(n,e);return null!=t.ensNetwork&&r.attachPlugin(new Tm(null,t.ensNetwork)),r.attachPlugin(new Rm),(t.plugins||[]).forEach(n=>{r.attachPlugin(n)}),r};Om.register(n,r),Om.register(e,r),t.altNames&&t.altNames.forEach(n=>{Om.register(n,r)})}Lm=!0,n("mainnet",1,{ensNetwork:1,altNames:["homestead"]}),n("ropsten",3,{ensNetwork:3}),n("rinkeby",4,{ensNetwork:4}),n("goerli",5,{ensNetwork:5}),n("kovan",42,{ensNetwork:42}),n("sepolia",11155111,{ensNetwork:11155111}),n("holesky",17e3,{ensNetwork:17e3}),n("classic",61,{}),n("classicKotti",6,{}),n("arbitrum",42161,{ensNetwork:1}),n("arbitrum-goerli",421613,{}),n("arbitrum-sepolia",421614,{}),n("base",8453,{ensNetwork:1}),n("base-goerli",84531,{}),n("base-sepolia",84532,{}),n("bnb",56,{ensNetwork:1}),n("bnbt",97,{}),n("filecoin",314,{}),n("filecoin-calibration",314159,{}),n("linea",59144,{ensNetwork:1}),n("linea-goerli",59140,{}),n("linea-sepolia",59141,{}),n("matic",137,{ensNetwork:1,plugins:[Fm("https://gasstation.polygon.technology/v2")]}),n("matic-amoy",80002,{}),n("matic-mumbai",80001,{altNames:["maticMumbai","maticmum"],plugins:[Fm("https://gasstation-testnet.polygon.technology/v2")]}),n("optimism",10,{ensNetwork:1,plugins:[]}),n("optimism-goerli",420,{}),n("optimism-sepolia",11155420,{}),n("xdai",100,{ensNetwork:1})}(),null==n)return Om.from("mainnet");if("number"==typeof n&&(n=BigInt(n)),"string"==typeof n||"bigint"==typeof n){const e=Cm.get(n);if(e)return e();if("bigint"==typeof n)return new Om("unknown",n);Wo(!1,"unknown network","network",n)}if("function"==typeof n.clone){return n.clone()}if("object"==typeof n){Wo("string"==typeof n.name&&"number"==typeof n.chainId,"invalid network object name or chainId","network",n);const e=new Om(n.name,n.chainId);return(n.ensAddress||null!=n.ensNetwork)&&e.attachPlugin(new Tm(n.ensAddress,n.ensNetwork)),e}Wo(!1,"invalid network","network",n)}static register(n,e){"number"==typeof n&&(n=BigInt(n));const t=Cm.get(n);t&&Wo(!1,`conflicting network for ${JSON.stringify(t.name)}`,"nameOrChainId",n),Cm.set(n,e)}}function Um(n,e){const t=String(n);if(!t.match(/^[0-9.]+$/))throw new Error(`invalid gwei value: ${n}`);const r=t.split(".");if(1===r.length&&r.push(""),2!==r.length)throw new Error(`invalid gwei value: ${n}`);for(;r[1].length<e;)r[1]+="0";if(r[1].length>9){let n=BigInt(r[1].substring(0,9));r[1].substring(9).match(/^0+$/)||n++,r[1]=n.toString()}return BigInt(r[0]+r[1])}function Fm(n){return new Bm(n,async(n,e,t)=>{let r;t.setHeader("User-Agent","ethers");try{const[e,a]=await Promise.all([t.send(),n()]);r=e;const o=r.bodyJson.standard;return{gasPrice:a.gasPrice,maxFeePerGas:Um(o.maxFee,9),maxPriorityFeePerGas:Um(o.maxPriorityFee,9)}}catch(n){$o(!1,`error encountered with polygon gas station (${JSON.stringify(t.url)})`,"SERVER_ERROR",{request:t,response:r,error:n})}})}let Lm=!1;function jm(n){return JSON.parse(JSON.stringify(n))}class Dm{#Dn;#Mn;#Gn;#qn;constructor(n){this.#Dn=n,this.#Mn=null,this.#Gn=4e3,this.#qn=-2}get pollingInterval(){return this.#Gn}set pollingInterval(n){this.#Gn=n}async#Hn(){try{const n=await this.#Dn.getBlockNumber();if(-2===this.#qn)return void(this.#qn=n);if(n!==this.#qn){for(let e=this.#qn+1;e<=n;e++){if(null==this.#Mn)return;await this.#Dn.emit("block",e)}this.#qn=n}}catch(n){}null!=this.#Mn&&(this.#Mn=this.#Dn._setTimeout(this.#Hn.bind(this),this.#Gn))}start(){this.#Mn||(this.#Mn=this.#Dn._setTimeout(this.#Hn.bind(this),this.#Gn),this.#Hn())}stop(){this.#Mn&&(this.#Dn._clearTimeout(this.#Mn),this.#Mn=null)}pause(n){this.stop(),n&&(this.#qn=-2)}resume(){this.start()}}class Mm{#Dn;#Hn;#Kn;constructor(n){this.#Dn=n,this.#Kn=!1,this.#Hn=n=>{this._poll(n,this.#Dn)}}async _poll(n,e){throw new Error("sub-classes must override this")}start(){this.#Kn||(this.#Kn=!0,this.#Hn(-2),this.#Dn.on("block",this.#Hn))}stop(){this.#Kn&&(this.#Kn=!1,this.#Dn.off("block",this.#Hn))}pause(n){this.stop()}resume(){this.start()}}class Gm extends Mm{#Vn;#_n;constructor(n,e){super(n),this.#Vn=e,this.#_n=-2}pause(n){n&&(this.#_n=-2),super.pause(n)}async _poll(n,e){const t=await e.getBlock(this.#Vn);null!=t&&(-2===this.#_n?this.#_n=t.number:t.number>this.#_n&&(e.emit(this.#Vn,t.number),this.#_n=t.number))}}class qm extends Mm{#Tn;constructor(n,e){super(n),this.#Tn=jm(e)}async _poll(n,e){throw new Error("@TODO")}}class Hm extends Mm{#Qn;constructor(n,e){super(n),this.#Qn=e}async _poll(n,e){const t=await e.getTransactionReceipt(this.#Qn);t&&e.emit(this.#Qn,t)}}class Km{#Dn;#Tn;#Mn;#Kn;#qn;constructor(n,e){this.#Dn=n,this.#Tn=jm(e),this.#Mn=this.#Hn.bind(this),this.#Kn=!1,this.#qn=-2}async#Hn(n){if(-2===this.#qn)return;const e=jm(this.#Tn);e.fromBlock=this.#qn+1,e.toBlock=n;const t=await this.#Dn.getLogs(e);if(0!==t.length)for(const n of t)this.#Dn.emit(this.#Tn,n),this.#qn=n.blockNumber;else this.#qn<n-60&&(this.#qn=n-60)}start(){this.#Kn||(this.#Kn=!0,-2===this.#qn&&this.#Dn.getBlockNumber().then(n=>{this.#qn=n}),this.#Dn.on("block",this.#Mn))}stop(){this.#Kn&&(this.#Kn=!1,this.#Dn.off("block",this.#Mn))}pause(n){this.stop(),n&&(this.#qn=-2)}resume(){this.start()}}const Vm=BigInt(2);function _m(n){return n&&"function"==typeof n.then}function Qm(n,e){return n+":"+JSON.stringify(e,(n,e)=>{if(null==e)return"null";if("bigint"==typeof e)return`bigint:${e.toString()}`;if("string"==typeof e)return e.toLowerCase();if("object"==typeof e&&!Array.isArray(e)){const n=Object.keys(e);return n.sort(),n.reduce((n,t)=>(n[t]=e[t],n),{})}return e})}class Jm{name;constructor(n){Ko(this,{name:n})}start(){}stop(){}pause(n){}resume(){}}function $m(n){return(n=Array.from(new Set(n).values())).sort(),n}async function Wm(n,e){if(null==n)throw new Error("invalid event");if(Array.isArray(n)&&(n={topics:n}),"string"==typeof n)switch(n){case"block":case"debug":case"error":case"finalized":case"network":case"pending":case"safe":return{type:n,tag:n}}if(ai(n,32)){const e=n.toLowerCase();return{type:"transaction",tag:Qm("tx",{hash:e}),hash:e}}if(n.orphan){const e=n;return{type:"orphan",tag:Qm("orphan",e),filter:(t=e,JSON.parse(JSON.stringify(t)))}}var t;if(n.address||n.topics){const t=n,r={topics:(t.topics||[]).map(n=>null==n?null:Array.isArray(n)?$m(n.map(n=>n.toLowerCase())):n.toLowerCase())};if(t.address){const n=[],a=[],o=t=>{ai(t)?n.push(t):a.push((async()=>{n.push(await Md(t,e))})())};Array.isArray(t.address)?t.address.forEach(o):o(t.address),a.length&&await Promise.all(a),r.address=$m(n.map(n=>n.toLowerCase()))}return{filter:r,tag:Qm("event",r),type:"event"}}Wo(!1,"unknown ProviderEvent","event",n)}function Zm(){return(new Date).getTime()}const Ym={cacheTimeout:250,pollingInterval:4e3};class Xm{#Jn;#jn;#$n;#Wn;#Zn;#Yn;#Xn;#ne;#ee;#te;#re;#Q;constructor(n,e){if(this.#Q=Object.assign({},Ym,e||{}),"any"===n)this.#Yn=!0,this.#Zn=null;else if(n){const e=Om.from(n);this.#Yn=!1,this.#Zn=Promise.resolve(e),setTimeout(()=>{this.emit("network",e,null)},0)}else this.#Yn=!1,this.#Zn=null;this.#ne=-1,this.#Xn=new Map,this.#Jn=new Map,this.#jn=new Map,this.#$n=null,this.#Wn=!1,this.#ee=1,this.#te=new Map,this.#re=!1}get pollingInterval(){return this.#Q.pollingInterval}get provider(){return this}get plugins(){return Array.from(this.#jn.values())}attachPlugin(n){if(this.#jn.get(n.name))throw new Error(`cannot replace existing plugin: ${n.name} `);return this.#jn.set(n.name,n.connect(this)),this}getPlugin(n){return this.#jn.get(n)||null}get disableCcipRead(){return this.#re}set disableCcipRead(n){this.#re=!!n}async#ae(n){const e=this.#Q.cacheTimeout;if(e<0)return await this._perform(n);const t=Qm(n.method,n);let r=this.#Xn.get(t);return r||(r=this._perform(n),this.#Xn.set(t,r),setTimeout(()=>{this.#Xn.get(t)===r&&this.#Xn.delete(t)},e)),await r}async ccipReadFetch(n,e,t){if(this.disableCcipRead||0===t.length||null==n.to)return null;const r=n.to.toLowerCase(),a=e.toLowerCase(),o=[];for(let e=0;e<t.length;e++){const i=t[e],s=i.replace("{sender}",r).replace("{data}",a),c=new rs(s);-1===i.indexOf("{data}")&&(c.body={data:a,sender:r}),this.emit("debug",{action:"sendCcipReadFetchRequest",request:c,index:e,urls:t});let l,u="unknown error";try{l=await c.send()}catch(n){o.push(n.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:c,result:{error:n}});continue}try{const n=l.bodyJson;if(n.data)return this.emit("debug",{action:"receiveCcipReadFetchResult",request:c,result:n}),n.data;n.message&&(u=n.message),this.emit("debug",{action:"receiveCcipReadFetchError",request:c,result:n})}catch(n){}$o(l.statusCode<400||l.statusCode>=500,`response not found during CCIP fetch: ${u}`,"OFFCHAIN_FAULT",{reason:"404_MISSING_RESOURCE",transaction:n,info:{url:i,errorMessage:u}}),o.push(u)}$o(!1,`error encountered during CCIP fetch: ${o.map(n=>JSON.stringify(n)).join(", ")}`,"OFFCHAIN_FAULT",{reason:"500_SERVER_ERROR",transaction:n,info:{urls:t,errorMessages:o}})}_wrapBlock(n,e){return new Tg(function(n){const e=xm(n);return e.transactions=n.transactions.map(n=>"string"==typeof n?n:Nm(n)),e}(n),this)}_wrapLog(n,e){return new Sg(function(n){return Em(n)}(n),this)}_wrapTransactionReceipt(n,e){return new Bg(function(n){return Pm(n)}(n),this)}_wrapTransactionResponse(n,e){return new Cg(Nm(n),this)}_detectNetwork(){$o(!1,"sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(n){$o(!1,`unsupported method: ${n.method}`,"UNSUPPORTED_OPERATION",{operation:n.method,info:n})}async getBlockNumber(){const n=Ii(await this.#ae({method:"getBlockNumber"}),"%response");return this.#ne>=0&&(this.#ne=n),n}_getAddress(n){return Md(n,this)}_getBlockTag(n){if(null==n)return"latest";switch(n){case"earliest":return"0x0";case"finalized":case"latest":case"pending":case"safe":return n}return ai(n)?ai(n,32)?n:Ri(n):("bigint"==typeof n&&(n=Ii(n,"blockTag")),"number"==typeof n?n>=0?Ri(n):this.#ne>=0?Ri(this.#ne+n):this.getBlockNumber().then(e=>Ri(e+n)):void Wo(!1,"invalid blockTag","blockTag",n))}_getFilter(n){const e=(n.topics||[]).map(n=>null==n?null:Array.isArray(n)?$m(n.map(n=>n.toLowerCase())):n.toLowerCase()),t="blockHash"in n?n.blockHash:void 0,r=(n,r,a)=>{let o;switch(n.length){case 0:break;case 1:o=n[0];break;default:n.sort(),o=n}if(t&&(null!=r||null!=a))throw new Error("invalid filter");const i={};return o&&(i.address=o),e.length&&(i.topics=e),r&&(i.fromBlock=r),a&&(i.toBlock=a),t&&(i.blockHash=t),i};let a,o,i=[];if(n.address)if(Array.isArray(n.address))for(const e of n.address)i.push(this._getAddress(e));else i.push(this._getAddress(n.address));return"fromBlock"in n&&(a=this._getBlockTag(n.fromBlock)),"toBlock"in n&&(o=this._getBlockTag(n.toBlock)),i.filter(n=>"string"!=typeof n).length||null!=a&&"string"!=typeof a||null!=o&&"string"!=typeof o?Promise.all([Promise.all(i),a,o]).then(n=>r(n[0],n[1],n[2])):r(i,a,o)}_getTransactionRequest(n){const e=Rg(n),t=[];if(["to","from"].forEach(n=>{if(null==e[n])return;const r=Md(e[n],this);_m(r)?t.push(async function(){e[n]=await r}()):e[n]=r}),null!=e.blockTag){const n=this._getBlockTag(e.blockTag);_m(n)?t.push(async function(){e.blockTag=await n}()):e.blockTag=n}return t.length?async function(){return await Promise.all(t),e}():e}async getNetwork(){if(null==this.#Zn){const n=(async()=>{try{const n=await this._detectNetwork();return this.emit("network",n,null),n}catch(e){throw this.#Zn===n&&(this.#Zn=null),e}})();return this.#Zn=n,(await n).clone()}const n=this.#Zn,[e,t]=await Promise.all([n,this._detectNetwork()]);return e.chainId!==t.chainId&&(this.#Yn?(this.emit("network",t,e),this.#Zn===n&&(this.#Zn=Promise.resolve(t))):$o(!1,`network changed: ${e.chainId} => ${t.chainId} `,"NETWORK_ERROR",{event:"changed"})),e.clone()}async getFeeData(){const n=await this.getNetwork(),e=async()=>{const{_block:e,gasPrice:t,priorityFee:r}=await Ho({_block:this.#oe("latest",!1),gasPrice:(async()=>{try{return ki(await this.#ae({method:"getGasPrice"}),"%response")}catch(n){}return null})(),priorityFee:(async()=>{try{return ki(await this.#ae({method:"getPriorityFee"}),"%response")}catch(n){}return null})()});let a=null,o=null;const i=this._wrapBlock(e,n);return i&&i.baseFeePerGas&&(o=null!=r?r:BigInt("1000000000"),a=i.baseFeePerGas*Vm+o),new zg(t,a,o)},t=n.getPlugin("org.ethers.plugins.network.FetchUrlFeeDataPlugin");if(t){const n=new rs(t.url),r=await t.processFunc(e,this,n);return new zg(r.gasPrice,r.maxFeePerGas,r.maxPriorityFeePerGas)}return await e()}async estimateGas(n){let e=this._getTransactionRequest(n);return _m(e)&&(e=await e),ki(await this.#ae({method:"estimateGas",transaction:e}),"%response")}async#ie(n,e,t){$o(t<10,"CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},n,{blockTag:e,enableCcipRead:!0})});const r=Rg(n);try{return si(await this._perform({method:"call",transaction:r,blockTag:e}))}catch(n){if(!this.disableCcipRead&&Qo(n)&&n.data&&t>=0&&"latest"===e&&null!=r.to&&"0x556f1830"===ui(n.data,0,4)){const a=n.data,o=await Md(r.to,this);let i;try{i=function(n){const e={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};$o(li(n)>=160,"insufficient OffchainLookup data","OFFCHAIN_FAULT",{reason:"insufficient OffchainLookup data"});const t=ui(n,0,32);$o(ui(t,0,12)===ui(ib,0,12),"corrupt OffchainLookup sender","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup sender"}),e.sender=ui(t,12);try{const t=[],r=Ii(ui(n,32,64)),a=Ii(ui(n,r,r+32)),o=ui(n,r+32);for(let n=0;n<a;n++){const e=nb(o,32*n);if(null==e)throw new Error("abort");t.push(e)}e.urls=t}catch(n){$o(!1,"corrupt OffchainLookup urls","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup urls"})}try{const t=eb(n,64);if(null==t)throw new Error("abort");e.calldata=t}catch(n){$o(!1,"corrupt OffchainLookup calldata","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup calldata"})}$o(ui(n,100,128)===ui(ib,0,28),"corrupt OffchainLookup callbaackSelector","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup callbaackSelector"}),e.selector=ui(n,96,100);try{const t=eb(n,128);if(null==t)throw new Error("abort");e.extraData=t}catch(n){$o(!1,"corrupt OffchainLookup extraData","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup extraData"})}return e.errorArgs="sender,urls,calldata,selector,extraData".split(/,/).map(n=>e[n]),e}(ui(n.data,4))}catch(n){$o(!1,n.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:r,info:{data:a}})}$o(i.sender.toLowerCase()===o.toLowerCase(),"CCIP Read sender mismatch","CALL_EXCEPTION",{action:"call",data:a,reason:"OffchainLookup",transaction:r,invocation:null,revert:{signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",name:"OffchainLookup",args:i.errorArgs}});const s=await this.ccipReadFetch(r,i.calldata,i.urls);$o(null!=s,"CCIP Read failed to fetch data","OFFCHAIN_FAULT",{reason:"FETCH_FAILED",transaction:r,info:{data:n.data,errorArgs:i.errorArgs}});const c={to:o,data:ci([i.selector,ob([s,i.extraData])])};this.emit("debug",{action:"sendCcipReadCall",transaction:c});try{const n=await this.#ie(c,e,t+1);return this.emit("debug",{action:"receiveCcipReadCallResult",transaction:Object.assign({},c),result:n}),n}catch(n){throw this.emit("debug",{action:"receiveCcipReadCallError",transaction:Object.assign({},c),error:n}),n}}throw n}}async#se(n){const{value:e}=await Ho({network:this.getNetwork(),value:n});return e}async call(n){const{tx:e,blockTag:t}=await Ho({tx:this._getTransactionRequest(n),blockTag:this._getBlockTag(n.blockTag)});return await this.#se(this.#ie(e,t,n.enableCcipRead?0:-1))}async#ce(n,e,t){let r=this._getAddress(e),a=this._getBlockTag(t);return"string"==typeof r&&"string"==typeof a||([r,a]=await Promise.all([r,a])),await this.#se(this.#ae(Object.assign(n,{address:r,blockTag:a})))}async getBalance(n,e){return ki(await this.#ce({method:"getBalance"},n,e),"%response")}async getTransactionCount(n,e){return Ii(await this.#ce({method:"getTransactionCount"},n,e),"%response")}async getCode(n,e){return si(await this.#ce({method:"getCode"},n,e))}async getStorage(n,e,t){const r=ki(e,"position");return si(await this.#ce({method:"getStorage",position:r},n,t))}async broadcastTransaction(n){const{blockNumber:e,hash:t,network:r}=await Ho({blockNumber:this.getBlockNumber(),hash:this._perform({method:"broadcastTransaction",signedTransaction:n}),network:this.getNetwork()}),a=Ch.from(n);if(a.hash!==t)throw new Error("@TODO: the returned hash did not match");return this._wrapTransactionResponse(a,r).replaceableTransaction(e)}async#oe(n,e){if(ai(n,32))return await this.#ae({method:"getBlock",blockHash:n,includeTransactions:e});let t=this._getBlockTag(n);return"string"!=typeof t&&(t=await t),await this.#ae({method:"getBlock",blockTag:t,includeTransactions:e})}async getBlock(n,e){const{network:t,params:r}=await Ho({network:this.getNetwork(),params:this.#oe(n,!!e)});return null==r?null:this._wrapBlock(r,t)}async getTransaction(n){const{network:e,params:t}=await Ho({network:this.getNetwork(),params:this.#ae({method:"getTransaction",hash:n})});return null==t?null:this._wrapTransactionResponse(t,e)}async getTransactionReceipt(n){const{network:e,params:t}=await Ho({network:this.getNetwork(),params:this.#ae({method:"getTransactionReceipt",hash:n})});if(null==t)return null;if(null==t.gasPrice&&null==t.effectiveGasPrice){const e=await this.#ae({method:"getTransaction",hash:n});if(null==e)throw new Error("report this; could not find tx or effectiveGasPrice");t.effectiveGasPrice=e.gasPrice}return this._wrapTransactionReceipt(t,e)}async getTransactionResult(n){const{result:e}=await Ho({network:this.getNetwork(),result:this.#ae({method:"getTransactionResult",hash:n})});return null==e?null:si(e)}async getLogs(n){let e=this._getFilter(n);_m(e)&&(e=await e);const{network:t,params:r}=await Ho({network:this.getNetwork(),params:this.#ae({method:"getLogs",filter:e})});return r.map(n=>this._wrapLog(n,t))}_getProvider(n){$o(!1,"provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(n){return await mm.fromName(this,n)}async getAvatar(n){const e=await this.getResolver(n);return e?await e.getAvatar():null}async resolveName(n){const e=await this.getResolver(n);return e?await e.getAddress():null}async lookupAddress(n){const e=Vp((n=Cd(n)).substring(2).toLowerCase()+".addr.reverse");try{const t=await mm.getEnsAddress(this),r=new um(t,["function resolver(bytes32) view returns (address)"],this),a=await r.resolver(e);if(null==a||a===od)return null;const o=new um(a,["function name(bytes32) view returns (string)"],this),i=await o.name(e);return await this.resolveName(i)!==n?null:i}catch(n){if(_o(n,"BAD_DATA")&&"0x"===n.value)return null;if(_o(n,"CALL_EXCEPTION"))return null;throw n}return null}async waitForTransaction(n,e,t){const r=null!=e?e:1;return 0===r?this.getTransactionReceipt(n):new Promise(async(e,a)=>{let o=null;const i=async t=>{try{const a=await this.getTransactionReceipt(n);if(null!=a&&t-a.blockNumber+1>=r)return e(a),void(o&&(clearTimeout(o),o=null))}catch(n){console.log("EEE",n)}this.once("block",i)};null!=t&&(o=setTimeout(()=>{null!=o&&(o=null,this.off("block",i),a(Jo("timeout","TIMEOUT",{reason:"timeout"})))},t)),i(await this.getBlockNumber())})}async waitForBlock(n){$o(!1,"not implemented yet","NOT_IMPLEMENTED",{operation:"waitForBlock"})}_clearTimeout(n){const e=this.#te.get(n);e&&(e.timer&&clearTimeout(e.timer),this.#te.delete(n))}_setTimeout(n,e){null==e&&(e=0);const t=this.#ee++,r=()=>{this.#te.delete(t),n()};if(this.paused)this.#te.set(t,{timer:null,func:r,time:e});else{const n=setTimeout(r,e);this.#te.set(t,{timer:n,func:r,time:Zm()})}return t}_forEachSubscriber(n){for(const e of this.#Jn.values())n(e.subscriber)}_getSubscriber(n){switch(n.type){case"debug":case"error":case"network":return new Jm(n.type);case"block":{const n=new Dm(this);return n.pollingInterval=this.pollingInterval,n}case"safe":case"finalized":return new Gm(this,n.type);case"event":return new Km(this,n.filter);case"transaction":return new Hm(this,n.hash);case"orphan":return new qm(this,n.filter)}throw new Error(`unsupported event: ${n.type}`)}_recoverSubscriber(n,e){for(const t of this.#Jn.values())if(t.subscriber===n){t.started&&t.subscriber.stop(),t.subscriber=e,t.started&&e.start(),null!=this.#$n&&e.pause(this.#$n);break}}async#le(n,e){let t=await Wm(n,this);return"event"===t.type&&e&&e.length>0&&!0===e[0].removed&&(t=await Wm({orphan:"drop-log",log:e[0]},this)),this.#Jn.get(t.tag)||null}async#ue(n){const e=await Wm(n,this),t=e.tag;let r=this.#Jn.get(t);if(!r){r={subscriber:this._getSubscriber(e),tag:t,addressableMap:new WeakMap,nameMap:new Map,started:!1,listeners:[]},this.#Jn.set(t,r)}return r}async on(n,e){const t=await this.#ue(n);return t.listeners.push({listener:e,once:!1}),t.started||(t.subscriber.start(),t.started=!0,null!=this.#$n&&t.subscriber.pause(this.#$n)),this}async once(n,e){const t=await this.#ue(n);return t.listeners.push({listener:e,once:!0}),t.started||(t.subscriber.start(),t.started=!0,null!=this.#$n&&t.subscriber.pause(this.#$n)),this}async emit(n,...e){const t=await this.#le(n,e);if(!t||0===t.listeners.length)return!1;const r=t.listeners.length;return t.listeners=t.listeners.filter(({listener:t,once:r})=>{const a=new Di(this,r?null:t,n);try{t.call(this,...e,a)}catch(n){}return!r}),0===t.listeners.length&&(t.started&&t.subscriber.stop(),this.#Jn.delete(t.tag)),r>0}async listenerCount(n){if(n){const e=await this.#le(n);return e?e.listeners.length:0}let e=0;for(const{listeners:n}of this.#Jn.values())e+=n.length;return e}async listeners(n){if(n){const e=await this.#le(n);return e?e.listeners.map(({listener:n})=>n):[]}let e=[];for(const{listeners:n}of this.#Jn.values())e=e.concat(n.map(({listener:n})=>n));return e}async off(n,e){const t=await this.#le(n);if(!t)return this;if(e){const n=t.listeners.map(({listener:n})=>n).indexOf(e);n>=0&&t.listeners.splice(n,1)}return e&&0!==t.listeners.length||(t.started&&t.subscriber.stop(),this.#Jn.delete(t.tag)),this}async removeAllListeners(n){if(n){const{tag:e,started:t,subscriber:r}=await this.#ue(n);t&&r.stop(),this.#Jn.delete(e)}else for(const[n,{started:e,subscriber:t}]of this.#Jn)e&&t.stop(),this.#Jn.delete(n);return this}async addListener(n,e){return await this.on(n,e)}async removeListener(n,e){return this.off(n,e)}get destroyed(){return this.#Wn}destroy(){this.removeAllListeners();for(const n of this.#te.keys())this._clearTimeout(n);this.#Wn=!0}get paused(){return null!=this.#$n}set paused(n){!!n!==this.paused&&(this.paused?this.resume():this.pause(!1))}pause(n){if(this.#ne=-1,null!=this.#$n){if(this.#$n==!!n)return;$o(!1,"cannot change pause type; resume first","UNSUPPORTED_OPERATION",{operation:"pause"})}this._forEachSubscriber(e=>e.pause(n)),this.#$n=!!n;for(const n of this.#te.values())n.timer&&clearTimeout(n.timer),n.time=Zm()-n.time}resume(){if(null!=this.#$n){this._forEachSubscriber(n=>n.resume()),this.#$n=null;for(const n of this.#te.values()){let e=n.time;e<0&&(e=0),n.time=Zm(),setTimeout(n.func,e)}}}}function nb(n,e){try{const t=eb(n,e);if(t)return Ki(t)}catch(n){}return null}function eb(n,e){if("0x"===n)return null;try{const t=Ii(ui(n,e,e+32)),r=Ii(ui(n,t,t+32));return ui(n,t+32,t+32+r)}catch(n){}return null}function tb(n){const e=zi(n);if(e.length>32)throw new Error("internal; should not happen");const t=new Uint8Array(32);return t.set(e,32-e.length),t}function rb(n){if(n.length%32==0)return n;const e=new Uint8Array(32*Math.ceil(n.length/32));return e.set(n),e}const ab=new Uint8Array([]);function ob(n){const e=[];let t=0;for(let r=0;r<n.length;r++)e.push(ab),t+=32;for(let r=0;r<n.length;r++){const a=ti(n[r]);e[r]=tb(t),e.push(tb(a.length)),e.push(rb(a)),t+=32+32*Math.ceil(a.length/32)}return ci(e)}const ib="0x0000000000000000000000000000000000000000000000000000000000000000";function sb(n,e){if(n.provider)return n.provider;$o(!1,"missing provider","UNSUPPORTED_OPERATION",{operation:e})}async function cb(n,e){let t=Rg(e);if(null!=t.to&&(t.to=Md(t.to,n)),null!=t.from){const e=t.from;t.from=Promise.all([n.getAddress(),Md(e,n)]).then(([n,e])=>(Wo(n.toLowerCase()===e.toLowerCase(),"transaction from mismatch","tx.from",e),n))}else t.from=n.getAddress();return await Ho(t)}class lb{provider;constructor(n){Ko(this,{provider:n||null})}async getNonce(n){return sb(this,"getTransactionCount").getTransactionCount(await this.getAddress(),n)}async populateCall(n){return await cb(this,n)}async populateTransaction(n){const e=sb(this,"populateTransaction"),t=await cb(this,n);null==t.nonce&&(t.nonce=await this.getNonce("pending")),null==t.gasLimit&&(t.gasLimit=await this.estimateGas(t));const r=await this.provider.getNetwork();if(null!=t.chainId){Wo(ki(t.chainId)===r.chainId,"transaction chainId mismatch","tx.chainId",n.chainId)}else t.chainId=r.chainId;const a=null!=t.maxFeePerGas||null!=t.maxPriorityFeePerGas;if(null==t.gasPrice||2!==t.type&&!a?0!==t.type&&1!==t.type||!a||Wo(!1,"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","tx",n):Wo(!1,"eip-1559 transaction do not support gasPrice","tx",n),2!==t.type&&null!=t.type||null==t.maxFeePerGas||null==t.maxPriorityFeePerGas)if(0===t.type||1===t.type){const n=await e.getFeeData();$o(null!=n.gasPrice,"network does not support gasPrice","UNSUPPORTED_OPERATION",{operation:"getGasPrice"}),null==t.gasPrice&&(t.gasPrice=n.gasPrice)}else{const n=await e.getFeeData();if(null==t.type)if(null!=n.maxFeePerGas&&null!=n.maxPriorityFeePerGas)if(t.authorizationList&&t.authorizationList.length?t.type=4:t.type=2,null!=t.gasPrice){const n=t.gasPrice;delete t.gasPrice,t.maxFeePerGas=n,t.maxPriorityFeePerGas=n}else null==t.maxFeePerGas&&(t.maxFeePerGas=n.maxFeePerGas),null==t.maxPriorityFeePerGas&&(t.maxPriorityFeePerGas=n.maxPriorityFeePerGas);else null!=n.gasPrice?($o(!a,"network does not support EIP-1559","UNSUPPORTED_OPERATION",{operation:"populateTransaction"}),null==t.gasPrice&&(t.gasPrice=n.gasPrice),t.type=0):$o(!1,"failed to get consistent fee data","UNSUPPORTED_OPERATION",{operation:"signer.getFeeData"});else 2!==t.type&&3!==t.type&&4!==t.type||(null==t.maxFeePerGas&&(t.maxFeePerGas=n.maxFeePerGas),null==t.maxPriorityFeePerGas&&(t.maxPriorityFeePerGas=n.maxPriorityFeePerGas))}else t.type=2;return await Ho(t)}async populateAuthorization(n){const e=Object.assign({},n);return null==e.chainId&&(e.chainId=(await sb(this,"getNetwork").getNetwork()).chainId),null==e.nonce&&(e.nonce=await this.getNonce()),e}async estimateGas(n){return sb(this,"estimateGas").estimateGas(await this.populateCall(n))}async call(n){return sb(this,"call").call(await this.populateCall(n))}async resolveName(n){const e=sb(this,"resolveName");return await e.resolveName(n)}async sendTransaction(n){const e=sb(this,"sendTransaction"),t=await this.populateTransaction(n);delete t.from;const r=Ch.from(t);return await e.broadcastTransaction(await this.signTransaction(r))}authorize(n){$o(!1,"authorization not implemented for this signer","UNSUPPORTED_OPERATION",{operation:"authorize"})}}class ub extends lb{address;constructor(n,e){super(e),Ko(this,{address:n})}async getAddress(){return this.address}connect(n){return new ub(this.address,n)}#de(n,e){$o(!1,`VoidSigner cannot sign ${n}`,"UNSUPPORTED_OPERATION",{operation:e})}async signTransaction(n){this.#de("transactions","signTransaction")}async signMessage(n){this.#de("messages","signMessage")}async signTypedData(n,e,t){this.#de("typed-data","signTypedData")}}const db=new Set;function hb(n){db.has(n)||(db.add(n),console.log("========= NOTICE ========="),console.log(`Request-Rate Exceeded for ${n} (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.org/api-keys/"),console.log("=========================="))}class pb{#Dn;#he;#Mn;#Kn;#pe;#fe;constructor(n){this.#Dn=n,this.#he=null,this.#Mn=this.#Hn.bind(this),this.#Kn=!1,this.#pe=null,this.#fe=!1}_subscribe(n){throw new Error("subclasses must override this")}_emitResults(n,e){throw new Error("subclasses must override this")}_recover(n){throw new Error("subclasses must override this")}async#Hn(n){try{null==this.#he&&(this.#he=this._subscribe(this.#Dn));let n=null;try{n=await this.#he}catch(n){if(!_o(n,"UNSUPPORTED_OPERATION")||"eth_newFilter"!==n.operation)throw n}if(null==n)return this.#he=null,void this.#Dn._recoverSubscriber(this,this._recover(this.#Dn));const e=await this.#Dn.getNetwork();if(this.#pe||(this.#pe=e),this.#pe.chainId!==e.chainId)throw new Error("chaid changed");if(this.#fe)return;const t=await this.#Dn.send("eth_getFilterChanges",[n]);await this._emitResults(this.#Dn,t)}catch(n){console.log("@TODO",n)}this.#Dn.once("block",this.#Mn)}#ge(){const n=this.#he;n&&(this.#he=null,n.then(n=>{this.#Dn.destroyed||this.#Dn.send("eth_uninstallFilter",[n])}))}start(){this.#Kn||(this.#Kn=!0,this.#Hn(-2))}stop(){this.#Kn&&(this.#Kn=!1,this.#fe=!0,this.#ge(),this.#Dn.off("block",this.#Mn))}pause(n){n&&this.#ge(),this.#Dn.off("block",this.#Mn)}resume(){this.start()}}class fb extends pb{#me;constructor(n,e){var t;super(n),this.#me=(t=e,JSON.parse(JSON.stringify(t)))}_recover(n){return new Km(n,this.#me)}async _subscribe(n){return await n.send("eth_newFilter",[this.#me])}async _emitResults(n,e){for(const t of e)n.emit(this.#me,n._wrapLog(t,n._network))}}class gb extends pb{async _subscribe(n){return await n.send("eth_newPendingTransactionFilter",[])}async _emitResults(n,e){for(const t of e)n.emit("pending",t)}}const mb="bigint,boolean,function,number,string,symbol".split(/,/g);function bb(n){if(null==n||mb.indexOf(typeof n)>=0)return n;if("function"==typeof n.getAddress)return n;if(Array.isArray(n))return n.map(bb);if("object"==typeof n)return Object.keys(n).reduce((e,t)=>(e[t]=n[t],e),{});throw new Error(`should not happen: ${n} (${typeof n})`)}function yb(n){return new Promise(e=>{setTimeout(e,n)})}function vb(n){return n?n.toLowerCase():n}function wb(n){return n&&"number"==typeof n.pollingInterval}const kb={polling:!1,staticNetwork:null,batchStallTime:10,batchMaxSize:1<<20,batchMaxCount:100,cacheTimeout:250,pollingInterval:4e3};class Ab extends lb{address;constructor(n,e){super(n),Ko(this,{address:e=Cd(e)})}connect(n){$o(!1,"cannot reconnect JsonRpcSigner","UNSUPPORTED_OPERATION",{operation:"signer.connect"})}async getAddress(){return this.address}async populateTransaction(n){return await this.populateCall(n)}async sendUncheckedTransaction(n){const e=bb(n),t=[];if(e.from){const r=e.from;t.push((async()=>{const t=await Md(r,this.provider);Wo(null!=t&&t.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",n),e.from=t})())}else e.from=this.address;if(null==e.gasLimit&&t.push((async()=>{e.gasLimit=await this.provider.estimateGas({...e,from:this.address})})()),null!=e.to){const n=e.to;t.push((async()=>{e.to=await Md(n,this.provider)})())}t.length&&await Promise.all(t);const r=this.provider.getRpcTransaction(e);return this.provider.send("eth_sendTransaction",[r])}async sendTransaction(n){const e=await this.provider.getBlockNumber(),t=await this.sendUncheckedTransaction(n);return await new Promise((n,r)=>{const a=[1e3,100];let o=0;const i=async()=>{try{const r=await this.provider.getTransaction(t);if(null!=r)return void n(r.replaceableTransaction(e))}catch(n){if(_o(n,"CANCELLED")||_o(n,"BAD_DATA")||_o(n,"NETWORK_ERROR")||_o(n,"UNSUPPORTED_OPERATION"))return null==n.info&&(n.info={}),n.info.sendTransactionHash=t,void r(n);if(_o(n,"INVALID_ARGUMENT")&&(o++,null==n.info&&(n.info={}),n.info.sendTransactionHash=t,o>10))return void r(n);this.provider.emit("error",Jo("failed to fetch transation after sending (will try again)","UNKNOWN_ERROR",{error:n}))}this.provider._setTimeout(()=>{i()},a.pop()||4e3)};i()})}async signTransaction(n){const e=bb(n);if(e.from){const t=await Md(e.from,this.provider);Wo(null!=t&&t.toLowerCase()===this.address.toLowerCase(),"from address mismatch","transaction",n),e.from=t}else e.from=this.address;const t=this.provider.getRpcTransaction(e);return await this.provider.send("eth_signTransaction",[t])}async signMessage(n){const e="string"==typeof n?Hi(n):n;return await this.provider.send("personal_sign",[si(e),this.address.toLowerCase()])}async signTypedData(n,e,t){const r=bb(t),a=await bf.resolveNames(n,e,r,async n=>{const e=await Md(n);return Wo(null!=e,"TypedData does not support null address","value",n),e});return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(bf.getPayload(a.domain,e,a.value))])}async unlock(n){return this.provider.send("personal_unlockAccount",[this.address.toLowerCase(),n,null])}async _legacySignMessage(n){const e="string"==typeof n?Hi(n):n;return await this.provider.send("eth_sign",[this.address.toLowerCase(),si(e)])}}class Eb extends Xm{#Q;#be;#ye;#ve;#we;#pe;#ke;#Ae(){if(this.#ve)return;const n=1===this._getOption("batchMaxCount")?0:this._getOption("batchStallTime");this.#ve=setTimeout(()=>{this.#ve=null;const n=this.#ye;for(this.#ye=[];n.length;){const e=[n.shift()];for(;n.length&&e.length!==this.#Q.batchMaxCount;){e.push(n.shift());if(JSON.stringify(e.map(n=>n.payload)).length>this.#Q.batchMaxSize){n.unshift(e.pop());break}}(async()=>{const n=1===e.length?e[0].payload:e.map(n=>n.payload);this.emit("debug",{action:"sendRpcPayload",payload:n});try{const t=await this._send(n);this.emit("debug",{action:"receiveRpcResult",result:t});for(const{resolve:n,reject:r,payload:a}of e){if(this.destroyed){r(Jo("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:a.method}));continue}const e=t.filter(n=>n.id===a.id)[0];if(null==e){const n=Jo("missing response for request","BAD_DATA",{value:t,info:{payload:a}});this.emit("error",n),r(n);continue}"error"in e?r(this.getRpcError(a,e)):n(e.result)}}catch(n){this.emit("debug",{action:"receiveRpcError",error:n});for(const{reject:t}of e)t(n)}})()}},n)}constructor(n,e){super(n,e),this.#be=1,this.#Q=Object.assign({},kb,e||{}),this.#ye=[],this.#ve=null,this.#pe=null,this.#ke=null;{let n=null;const e=new Promise(e=>{n=e});this.#we={promise:e,resolve:n}}const t=this._getOption("staticNetwork");"boolean"==typeof t?(Wo(!t||"any"!==n,"staticNetwork cannot be used on special network 'any'","options",e),t&&null!=n&&(this.#pe=Om.from(n))):t&&(Wo(null==n||t.matches(n),"staticNetwork MUST match network object","options",e),this.#pe=t)}_getOption(n){return this.#Q[n]}get _network(){return $o(this.#pe,"network is not available yet","NETWORK_ERROR"),this.#pe}async _perform(n){if("call"===n.method||"estimateGas"===n.method){let e=n.transaction;if(e&&null!=e.type&&ki(e.type)&&null==e.maxFeePerGas&&null==e.maxPriorityFeePerGas){const t=await this.getFeeData();null==t.maxFeePerGas&&null==t.maxPriorityFeePerGas&&(n=Object.assign({},n,{transaction:Object.assign({},e,{type:void 0})}))}}const e=this.getRpcRequest(n);return null!=e?await this.send(e.method,e.args):super._perform(n)}async _detectNetwork(){const n=this._getOption("staticNetwork");if(n){if(!0!==n)return n;if(this.#pe)return this.#pe}return this.#ke?await this.#ke:this.ready?(this.#ke=(async()=>{try{const n=Om.from(ki(await this.send("eth_chainId",[])));return this.#ke=null,n}catch(n){throw this.#ke=null,n}})(),await this.#ke):(this.#ke=(async()=>{const n={id:this.#be++,method:"eth_chainId",params:[],jsonrpc:"2.0"};let e;this.emit("debug",{action:"sendRpcPayload",payload:n});try{e=(await this._send(n))[0],this.#ke=null}catch(n){throw this.#ke=null,this.emit("debug",{action:"receiveRpcError",error:n}),n}if(this.emit("debug",{action:"receiveRpcResult",result:e}),"result"in e)return Om.from(ki(e.result));throw this.getRpcError(n,e)})(),await this.#ke)}_start(){null!=this.#we&&null!=this.#we.resolve&&(this.#we.resolve(),this.#we=null,(async()=>{for(;null==this.#pe&&!this.destroyed;)try{this.#pe=await this._detectNetwork()}catch(n){if(this.destroyed)break;console.log("JsonRpcProvider failed to detect network and cannot start up; retry in 1s (perhaps the URL is wrong or the node is not started)"),this.emit("error",Jo("failed to bootstrap network detection","NETWORK_ERROR",{event:"initial-network-discovery",info:{error:n}})),await yb(1e3)}this.#Ae()})())}async _waitUntilReady(){if(null!=this.#we)return await this.#we.promise}_getSubscriber(n){return"pending"===n.type?new gb(this):"event"===n.type?this._getOption("polling")?new Km(this,n.filter):new fb(this,n.filter):"orphan"===n.type&&"drop-log"===n.filter.orphan?new Jm("orphan"):super._getSubscriber(n)}get ready(){return null==this.#we}getRpcTransaction(n){const e={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(t=>{if(null==n[t])return;let r=t;"gasLimit"===t&&(r="gas"),e[r]=Ri(ki(n[t],`tx.${t}`))}),["from","to","data"].forEach(t=>{null!=n[t]&&(e[t]=si(n[t]))}),n.accessList&&(e.accessList=uh(n.accessList)),n.blobVersionedHashes&&(e.blobVersionedHashes=n.blobVersionedHashes.map(n=>n.toLowerCase())),n.authorizationList&&(e.authorizationList=n.authorizationList.map(n=>{const e=dh(n);return{address:e.address,nonce:Ri(e.nonce),chainId:Ri(e.chainId),yParity:Ri(e.signature.yParity),r:Ri(e.signature.r),s:Ri(e.signature.s)}})),e}getRpcRequest(n){switch(n.method){case"chainId":return{method:"eth_chainId",args:[]};case"getBlockNumber":return{method:"eth_blockNumber",args:[]};case"getGasPrice":return{method:"eth_gasPrice",args:[]};case"getPriorityFee":return{method:"eth_maxPriorityFeePerGas",args:[]};case"getBalance":return{method:"eth_getBalance",args:[vb(n.address),n.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[vb(n.address),n.blockTag]};case"getCode":return{method:"eth_getCode",args:[vb(n.address),n.blockTag]};case"getStorage":return{method:"eth_getStorageAt",args:[vb(n.address),"0x"+n.position.toString(16),n.blockTag]};case"broadcastTransaction":return{method:"eth_sendRawTransaction",args:[n.signedTransaction]};case"getBlock":if("blockTag"in n)return{method:"eth_getBlockByNumber",args:[n.blockTag,!!n.includeTransactions]};if("blockHash"in n)return{method:"eth_getBlockByHash",args:[n.blockHash,!!n.includeTransactions]};break;case"getTransaction":return{method:"eth_getTransactionByHash",args:[n.hash]};case"getTransactionReceipt":return{method:"eth_getTransactionReceipt",args:[n.hash]};case"call":return{method:"eth_call",args:[this.getRpcTransaction(n.transaction),n.blockTag]};case"estimateGas":return{method:"eth_estimateGas",args:[this.getRpcTransaction(n.transaction)]};case"getLogs":return n.filter&&null!=n.filter.address&&(Array.isArray(n.filter.address)?n.filter.address=n.filter.address.map(vb):n.filter.address=vb(n.filter.address)),{method:"eth_getLogs",args:[n.filter]}}return null}getRpcError(n,e){const{method:t}=n,{error:r}=e;if("eth_estimateGas"===t&&r.message){const e=r.message;if(!e.match(/revert/i)&&e.match(/insufficient funds/i))return Jo("insufficient funds","INSUFFICIENT_FUNDS",{transaction:n.params[0],info:{payload:n,error:r}});if(e.match(/nonce/i)&&e.match(/too low/i))return Jo("nonce has already been used","NONCE_EXPIRED",{transaction:n.params[0],info:{payload:n,error:r}})}if("eth_call"===t||"eth_estimateGas"===t){const e=Pb(r),a=gg.getBuiltinCallException("eth_call"===t?"call":"estimateGas",n.params[0],e?e.data:null);return a.info={error:r,payload:n},a}const a=JSON.stringify(function(n){const e=[];return Nb(n,e),e}(r));if("string"==typeof r.message&&r.message.match(/user denied|ethers-user-denied/i)){return Jo("user rejected action","ACTION_REJECTED",{action:{eth_sign:"signMessage",personal_sign:"signMessage",eth_signTypedData_v4:"signTypedData",eth_signTransaction:"signTransaction",eth_sendTransaction:"sendTransaction",eth_requestAccounts:"requestAccess",wallet_requestAccounts:"requestAccess"}[t]||"unknown",reason:"rejected",info:{payload:n,error:r}})}if("eth_sendRawTransaction"===t||"eth_sendTransaction"===t){const e=n.params[0];if(a.match(/insufficient funds|base fee exceeds gas limit/i))return Jo("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e,info:{error:r}});if(a.match(/nonce/i)&&a.match(/too low/i))return Jo("nonce has already been used","NONCE_EXPIRED",{transaction:e,info:{error:r}});if(a.match(/replacement transaction/i)&&a.match(/underpriced/i))return Jo("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e,info:{error:r}});if(a.match(/only replay-protected/i))return Jo("legacy pre-eip-155 transactions not supported","UNSUPPORTED_OPERATION",{operation:t,info:{transaction:e,info:{error:r}}})}let o=!!a.match(/the method .* does not exist/i);return o||r&&r.details&&r.details.startsWith("Unauthorized method:")&&(o=!0),o?Jo("unsupported operation","UNSUPPORTED_OPERATION",{operation:n.method,info:{error:r,payload:n}}):Jo("could not coalesce error","UNKNOWN_ERROR",{error:r,payload:n})}send(n,e){if(this.destroyed)return Promise.reject(Jo("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:n}));const t=this.#be++,r=new Promise((r,a)=>{this.#ye.push({resolve:r,reject:a,payload:{method:n,params:e,id:t,jsonrpc:"2.0"}})});return this.#Ae(),r}async getSigner(n){null==n&&(n=0);const e=this.send("eth_accounts",[]);if("number"==typeof n){const t=await e;if(n>=t.length)throw new Error("no such account");return new Ab(this,t[n])}const{accounts:t}=await Ho({network:this.getNetwork(),accounts:e});n=Cd(n);for(const e of t)if(Cd(e)===n)return new Ab(this,n);throw new Error("invalid account")}async listAccounts(){return(await this.send("eth_accounts",[])).map(n=>new Ab(this,n))}destroy(){this.#ve&&(clearTimeout(this.#ve),this.#ve=null);for(const{payload:n,reject:e}of this.#ye)e(Jo("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:n.method}));this.#ye=[],super.destroy()}}class xb extends Eb{#Ee;constructor(n,e){super(n,e);let t=this._getOption("pollingInterval");null==t&&(t=kb.pollingInterval),this.#Ee=t}_getSubscriber(n){const e=super._getSubscriber(n);return wb(e)&&(e.pollingInterval=this.#Ee),e}get pollingInterval(){return this.#Ee}set pollingInterval(n){if(!Number.isInteger(n)||n<0)throw new Error("invalid interval");this.#Ee=n,this._forEachSubscriber(n=>{wb(n)&&(n.pollingInterval=this.#Ee)})}}class Ib extends xb{#xe;constructor(n,e,t){null==n&&(n="http://localhost:8545"),super(e,t),this.#xe="string"==typeof n?new rs(n):n.clone()}_getConnection(){return this.#xe.clone()}async send(n,e){return await this._start(),await super.send(n,e)}async _send(n){const e=this._getConnection();e.body=JSON.stringify(n),e.setHeader("content-type","application/json");const t=await e.send();t.assertOk();let r=t.bodyJson;return Array.isArray(r)||(r=[r]),r}}function Pb(n){if(null==n)return null;if("string"==typeof n.message&&n.message.match(/revert/i)&&ai(n.data))return{message:n.message,data:n.data};if("object"==typeof n){for(const e in n){const t=Pb(n[e]);if(t)return t}return null}if("string"==typeof n)try{return Pb(JSON.parse(n))}catch(n){}return null}function Nb(n,e){if(null!=n){if("string"==typeof n.message&&e.push(n.message),"object"==typeof n)for(const t in n)Nb(n[t],e);if("string"==typeof n)try{return Nb(JSON.parse(n),e)}catch(n){}}}const zb="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";class Rb extends Ib{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Om.from(n);null==e&&(e=zb);const r={polling:!0,staticNetwork:t};super(Rb.getRequest(t,e),t,r),Ko(this,{apiKey:e})}_getProvider(n){try{return new Rb(n,this.apiKey)}catch(n){}return super._getProvider(n)}static getRequest(n,e){null==e&&(e=zb);const t=new rs(`https://${function(n){switch(n){case"mainnet":return"rpc.ankr.com/eth";case"goerli":return"rpc.ankr.com/eth_goerli";case"sepolia":return"rpc.ankr.com/eth_sepolia";case"arbitrum":return"rpc.ankr.com/arbitrum";case"base":return"rpc.ankr.com/base";case"base-goerli":return"rpc.ankr.com/base_goerli";case"base-sepolia":return"rpc.ankr.com/base_sepolia";case"bnb":return"rpc.ankr.com/bsc";case"bnbt":return"rpc.ankr.com/bsc_testnet_chapel";case"filecoin":return"rpc.ankr.com/filecoin";case"filecoin-calibration":return"rpc.ankr.com/filecoin_testnet";case"matic":return"rpc.ankr.com/polygon";case"matic-mumbai":return"rpc.ankr.com/polygon_mumbai";case"optimism":return"rpc.ankr.com/optimism";case"optimism-goerli":return"rpc.ankr.com/optimism_testnet";case"optimism-sepolia":return"rpc.ankr.com/optimism_sepolia"}Wo(!1,"unsupported network","network",n)}(n.name)}/${e}`);return t.allowGzip=!0,e===zb&&(t.retryFunc=async(n,e,t)=>(hb("AnkrProvider"),!0)),t}getRpcError(n,e){return"eth_sendRawTransaction"===n.method&&e&&e.error&&"INTERNAL_ERROR: could not replace existing tx"===e.error.message&&(e.error.message="replacement transaction underpriced"),super.getRpcError(n,e)}isCommunityResource(){return this.apiKey===zb}}const Tb="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class Sb extends Ib{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Om.from(n);null==e&&(e=Tb);super(Sb.getRequest(t,e),t,{staticNetwork:t}),Ko(this,{apiKey:e})}_getProvider(n){try{return new Sb(n,this.apiKey)}catch(n){}return super._getProvider(n)}async _perform(n){if("getTransactionResult"===n.method){const{trace:e,tx:t}=await Ho({trace:this.send("trace_transaction",[n.hash]),tx:this.getTransaction(n.hash)});if(null==e||null==t)return null;let r,a=!1;try{r=e[0].result.output,a="Reverted"===e[0].error}catch(n){}if(r)return $o(!a,"an error occurred during transaction executions","CALL_EXCEPTION",{action:"getTransactionResult",data:r,reason:null,transaction:t,invocation:null,revert:null}),r;$o(!1,"could not parse trace result","BAD_DATA",{value:e})}return await super._perform(n)}isCommunityResource(){return this.apiKey===Tb}static getRequest(n,e){null==e&&(e=Tb);const t=new rs(`https://${function(n){switch(n){case"mainnet":return"eth-mainnet.g.alchemy.com";case"goerli":return"eth-goerli.g.alchemy.com";case"sepolia":return"eth-sepolia.g.alchemy.com";case"arbitrum":return"arb-mainnet.g.alchemy.com";case"arbitrum-goerli":return"arb-goerli.g.alchemy.com";case"arbitrum-sepolia":return"arb-sepolia.g.alchemy.com";case"base":return"base-mainnet.g.alchemy.com";case"base-goerli":return"base-goerli.g.alchemy.com";case"base-sepolia":return"base-sepolia.g.alchemy.com";case"matic":return"polygon-mainnet.g.alchemy.com";case"matic-amoy":return"polygon-amoy.g.alchemy.com";case"matic-mumbai":return"polygon-mumbai.g.alchemy.com";case"optimism":return"opt-mainnet.g.alchemy.com";case"optimism-goerli":return"opt-goerli.g.alchemy.com";case"optimism-sepolia":return"opt-sepolia.g.alchemy.com"}Wo(!1,"unsupported network","network",n)}(n.name)}/v2/${e}`);return t.allowGzip=!0,e===Tb&&(t.retryFunc=async(n,e,t)=>(hb("alchemy"),!0)),t}}function Bb(n){switch(n){case"mainnet":return"39f1d67cedf8b7831010a665328c9197";case"arbitrum":return"0550c209db33c3abf4cc927e1e18cea1";case"bnb":return"98b5a77e531614387366f6fc5da097f8";case"matic":return"cd9d4d70377471aa7c142ec4a4205249"}Wo(!1,"unsupported network","network",n)}class Cb extends Ib{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Om.from(n);null==e&&(e=Bb(t.name));super(Cb.getRequest(t,e),t,{staticNetwork:t}),Ko(this,{apiKey:e})}_getProvider(n){try{return new Cb(n,this.apiKey)}catch(n){}return super._getProvider(n)}isCommunityResource(){return this.apiKey===Bb(this._network.name)}static getRequest(n,e){null==e&&(e=Bb(n.name));const t=new rs(`https://${function(n){switch(n){case"mainnet":return"ethereum-mainnet.core.chainstack.com";case"arbitrum":return"arbitrum-mainnet.core.chainstack.com";case"bnb":return"bsc-mainnet.core.chainstack.com";case"matic":return"polygon-mainnet.core.chainstack.com"}Wo(!1,"unsupported network","network",n)}(n.name)}/${e}`);return t.allowGzip=!0,e===Bb(n.name)&&(t.retryFunc=async(n,e,t)=>(hb("ChainstackProvider"),!0)),t}}class Ob extends Ib{constructor(n){null==n&&(n="mainnet");const e=Om.from(n);Wo("mainnet"===e.name,"unsupported network","network",n),super("https://cloudflare-eth.com/",e,{staticNetwork:e})}}const Ub="1 11155111 17000 560048 2741 11124 33111 33139 42170 42161 421614 43114 43113 8453 84532 80069 80094 199 1029 81457 168587773 56 97 42220 11142220 252 2523 100 999 737373 747474 59144 59141 5000 5003 43521 143 10143 1287 1284 1285 10 11155420 204 5611 80002 137 534352 534351 1329 1328 146 14601 988 2201 1923 1924 167013 167000 130 1301 480 4801 51 50 324 300".split(/ /g);const Fb="org.ethers.plugins.provider.Etherscan";class Lb extends zm{baseUrl;constructor(n){super(Fb),Ko(this,{baseUrl:n})}clone(){return new Lb(this.baseUrl)}}const jb=["enableCcipRead"];let Db=1;class Mb extends Xm{network;apiKey;#Ie;constructor(n,e){const t=null!=e?e:null;super();const r=Om.from(n);Wo(Ub.indexOf(`${r.chainId}`)>=0,"unsupported network","network",r),this.#Ie=r.getPlugin(Fb),Ko(this,{apiKey:t,network:r})}getBaseUrl(){if(this.#Ie)return this.#Ie.baseUrl;switch(this.network.name){case"mainnet":return"https://api.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io";case"sepolia":return"https://api-sepolia.etherscan.io";case"holesky":return"https://api-holesky.etherscan.io";case"arbitrum":return"https://api.arbiscan.io";case"arbitrum-goerli":return"https://api-goerli.arbiscan.io";case"base":return"https://api.basescan.org";case"base-sepolia":return"https://api-sepolia.basescan.org";case"bnb":return"https://api.bscscan.com";case"bnbt":return"https://api-testnet.bscscan.com";case"matic":return"https://api.polygonscan.com";case"matic-amoy":return"https://api-amoy.polygonscan.com";case"matic-mumbai":return"https://api-testnet.polygonscan.com";case"optimism":return"https://api-optimistic.etherscan.io";case"optimism-goerli":return"https://api-goerli-optimistic.etherscan.io"}Wo(!1,"unsupported network","network",this.network)}getUrl(n,e){let t=Object.keys(e).reduce((n,t)=>{const r=e[t];return null!=r&&(n+=`&${t}=${r}`),n},"");return this.apiKey&&(t+=`&apikey=${this.apiKey}`),`https://api.etherscan.io/v2/api?chainid=${this.network.chainId}&module=${n}${t}`}getPostUrl(){return`https://api.etherscan.io/v2/api?chainid=${this.network.chainId}`}getPostData(n,e){return e.module=n,e.apikey=this.apiKey,e.chainid=this.network.chainId,e}async detectNetwork(){return this.network}async fetch(n,e,t){const r=Db++,a=t?this.getPostUrl():this.getUrl(n,e),o=t?this.getPostData(n,e):null;this.emit("debug",{action:"sendRequest",id:r,url:a,payload:o});const i=new rs(a);i.setThrottleParams({slotInterval:1e3}),i.retryFunc=(n,e,t)=>(this.isCommunityResource()&&hb("Etherscan"),Promise.resolve(!0)),i.processFunc=async(e,t)=>{const a=t.hasBody()?JSON.parse(Ki(t.body)):{},o=("string"==typeof a.result?a.result:"").toLowerCase().indexOf("rate limit")>=0;return"proxy"===n?a&&0==a.status&&"NOTOK"==a.message&&o&&(this.emit("debug",{action:"receiveError",id:r,reason:"proxy-NOTOK",error:a}),t.throwThrottleError(a.result,2e3)):o&&(this.emit("debug",{action:"receiveError",id:r,reason:"null result",error:a.result}),t.throwThrottleError(a.result,2e3)),t},o&&(i.setHeader("content-type","application/x-www-form-urlencoded; charset=UTF-8"),i.body=Object.keys(o).map(n=>`${n}=${o[n]}`).join("&"));const s=await i.send();try{s.assertOk()}catch(n){this.emit("debug",{action:"receiveError",id:r,error:n,reason:"assertOk"}),$o(!1,"response error","SERVER_ERROR",{request:i,response:s})}s.hasBody()||(this.emit("debug",{action:"receiveError",id:r,error:"missing body",reason:"null body"}),$o(!1,"missing response","SERVER_ERROR",{request:i,response:s}));const c=JSON.parse(Ki(s.body));return"proxy"===n?("2.0"!=c.jsonrpc&&(this.emit("debug",{action:"receiveError",id:r,result:c,reason:"invalid JSON-RPC"}),$o(!1,"invalid JSON-RPC response (missing jsonrpc='2.0')","SERVER_ERROR",{request:i,response:s,info:{result:c}})),c.error&&(this.emit("debug",{action:"receiveError",id:r,result:c,reason:"JSON-RPC error"}),$o(!1,"error response","SERVER_ERROR",{request:i,response:s,info:{result:c}})),this.emit("debug",{action:"receiveRequest",id:r,result:c}),c.result):0!=c.status||"No records found"!==c.message&&"No transactions found"!==c.message?((1!=c.status||"string"==typeof c.message&&!c.message.match(/^OK/))&&(this.emit("debug",{action:"receiveError",id:r,result:c}),$o(!1,"error response","SERVER_ERROR",{request:i,response:s,info:{result:c}})),this.emit("debug",{action:"receiveRequest",id:r,result:c}),c.result):(this.emit("debug",{action:"receiveRequest",id:r,result:c}),c.result)}_getTransactionPostData(n){const e={};for(let t in n){if(jb.indexOf(t)>=0)continue;if(null==n[t])continue;let r=n[t];if(("type"!==t||0!==r)&&("blockTag"!==t||"latest"!==r)){if({type:!0,gasLimit:!0,gasPrice:!0,maxFeePerGs:!0,maxPriorityFeePerGas:!0,nonce:!0,value:!0}[t])r=Ri(r);else if("accessList"===t)r="["+uh(r).map(n=>`{address:"${n.address}",storageKeys:["${n.storageKeys.join('","')}"]}`).join(",")+"]";else if("blobVersionedHashes"===t){if(0===r.length)continue;$o(!1,"Etherscan API does not support blobVersionedHashes","UNSUPPORTED_OPERATION",{operation:"_getTransactionPostData",info:{transaction:n}})}else r=si(r);e[t]=r}}return e}_checkError(n,e,t){let r="";if(_o(e,"SERVER_ERROR")){try{r=e.info.result.error.message}catch(n){}if(!r)try{r=e.info.message}catch(n){}}if("estimateGas"===n.method&&!r.match(/revert/i)&&r.match(/insufficient funds/i)&&$o(!1,"insufficient funds","INSUFFICIENT_FUNDS",{transaction:n.transaction}),("call"===n.method||"estimateGas"===n.method)&&r.match(/execution reverted/i)){let t="";try{t=e.info.result.error.data}catch(e){}const r=gg.getBuiltinCallException(n.method,n.transaction,t);throw r.info={request:n,error:e},r}if(r&&"broadcastTransaction"===n.method){const e=Ch.from(n.signedTransaction);r.match(/replacement/i)&&r.match(/underpriced/i)&&$o(!1,"replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e}),r.match(/insufficient funds/)&&$o(!1,"insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e}),r.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&$o(!1,"nonce has already been used","NONCE_EXPIRED",{transaction:e})}throw e}async _detectNetwork(){return this.network}async _perform(n){switch(n.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"getPriorityFee":if("mainnet"===this.network.name)return"1000000000";if("optimism"===this.network.name)return"1000000";throw new Error("fallback onto the AbstractProvider default");case"getBalance":return this.fetch("account",{action:"balance",address:n.address,tag:n.blockTag});case"getTransactionCount":return this.fetch("proxy",{action:"eth_getTransactionCount",address:n.address,tag:n.blockTag});case"getCode":return this.fetch("proxy",{action:"eth_getCode",address:n.address,tag:n.blockTag});case"getStorage":return this.fetch("proxy",{action:"eth_getStorageAt",address:n.address,position:n.position,tag:n.blockTag});case"broadcastTransaction":return this.fetch("proxy",{action:"eth_sendRawTransaction",hex:n.signedTransaction},!0).catch(e=>this._checkError(n,e,n.signedTransaction));case"getBlock":if("blockTag"in n)return this.fetch("proxy",{action:"eth_getBlockByNumber",tag:n.blockTag,boolean:n.includeTransactions?"true":"false"});$o(!1,"getBlock by blockHash not supported by Etherscan","UNSUPPORTED_OPERATION",{operation:"getBlock(blockHash)"});case"getTransaction":return this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:n.hash});case"getTransactionReceipt":return this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:n.hash});case"call":{if("latest"!==n.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");const e=this._getTransactionPostData(n.transaction);e.module="proxy",e.action="eth_call";try{return await this.fetch("proxy",e,!0)}catch(e){return this._checkError(n,e,n.transaction)}}case"estimateGas":{const e=this._getTransactionPostData(n.transaction);e.module="proxy",e.action="eth_estimateGas";try{return await this.fetch("proxy",e,!0)}catch(e){return this._checkError(n,e,n.transaction)}}}return super._perform(n)}async getNetwork(){return this.network}async getEtherPrice(){return"mainnet"!==this.network.name?0:parseFloat((await this.fetch("stats",{action:"ethprice"})).ethusd)}async getContract(n){let e=this._getAddress(n);var t;(t=e)&&"function"==typeof t.then&&(e=await e);try{const n=await this.fetch("contract",{action:"getabi",address:e}),t=JSON.parse(n);return new um(e,t,this)}catch(n){return null}}isCommunityResource(){return null==this.apiKey}}const Gb=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")}().WebSocket;class qb{#Dn;#Tn;get filter(){return JSON.parse(this.#Tn)}#Pe;#Ne;#ze;constructor(n,e){this.#Dn=n,this.#Tn=JSON.stringify(e),this.#Pe=null,this.#Ne=null,this.#ze=null}start(){this.#Pe=this.#Dn.send("eth_subscribe",this.filter).then(n=>(this.#Dn._register(n,this),n))}stop(){this.#Pe.then(n=>{this.#Dn.destroyed||this.#Dn.send("eth_unsubscribe",[n])}),this.#Pe=null}pause(n){$o(n,"preserve logs while paused not supported by SocketSubscriber yet","UNSUPPORTED_OPERATION",{operation:"pause(false)"}),this.#Ne=!!n}resume(){this.#Ne=null}_handleMessage(n){if(null!=this.#Pe&&null===this.#Ne){let e=this.#ze;e=null==e?this._emit(this.#Dn,n):e.then(async()=>{await this._emit(this.#Dn,n)}),this.#ze=e.then(()=>{this.#ze===e&&(this.#ze=null)})}}async _emit(n,e){throw new Error("sub-classes must implemente this; _emit")}}class Hb extends qb{constructor(n){super(n,["newHeads"])}async _emit(n,e){n.emit("block",parseInt(e.number))}}class Kb extends qb{constructor(n){super(n,["newPendingTransactions"])}async _emit(n,e){n.emit("pending",e)}}class Vb extends qb{#Re;get logFilter(){return JSON.parse(this.#Re)}constructor(n,e){super(n,["logs",e]),this.#Re=JSON.stringify(e)}async _emit(n,e){n.emit(this.logFilter,n._wrapLog(e,n._network))}}class _b extends Eb{#Te;#Jn;#Se;constructor(n,e){const t=Object.assign({},null!=e?e:{});Wo(null==t.batchMaxCount||1===t.batchMaxCount,"sockets-based providers do not support batches","options.batchMaxCount",e),t.batchMaxCount=1,null==t.staticNetwork&&(t.staticNetwork=!0),super(n,t),this.#Te=new Map,this.#Jn=new Map,this.#Se=new Map}_getSubscriber(n){switch(n.type){case"close":return new Jm("close");case"block":return new Hb(this);case"pending":return new Kb(this);case"event":return new Vb(this,n.filter);case"orphan":if("drop-log"===n.filter.orphan)return new Jm("drop-log")}return super._getSubscriber(n)}_register(n,e){this.#Jn.set(n,e);const t=this.#Se.get(n);if(t){for(const n of t)e._handleMessage(n);this.#Se.delete(n)}}async _send(n){Wo(!Array.isArray(n),"WebSocket does not support batch send","payload",n);const e=new Promise((e,t)=>{this.#Te.set(n.id,{payload:n,resolve:e,reject:t})});return await this._waitUntilReady(),await this._write(JSON.stringify(n)),[await e]}async _processMessage(n){const e=JSON.parse(n);if(e&&"object"==typeof e&&"id"in e){const n=this.#Te.get(e.id);if(null==n)return void this.emit("error",Jo("received result for unknown id","UNKNOWN_ERROR",{reasonCode:"UNKNOWN_ID",result:e}));this.#Te.delete(e.id),n.resolve(e)}else{if(!e||"eth_subscription"!==e.method)return void this.emit("error",Jo("received unexpected message","UNKNOWN_ERROR",{reasonCode:"UNEXPECTED_MESSAGE",result:e}));{const n=e.params.subscription,t=this.#Jn.get(n);if(t)t._handleMessage(e.params.result);else{let t=this.#Se.get(n);null==t&&(t=[],this.#Se.set(n,t)),t.push(e.params.result)}}}}async _write(n){throw new Error("sub-classes must override this")}}class Qb extends _b{#xe;#Be;get websocket(){if(null==this.#Be)throw new Error("websocket closed");return this.#Be}constructor(n,e,t){super(e,t),"string"==typeof n?(this.#xe=()=>new Gb(n),this.#Be=this.#xe()):"function"==typeof n?(this.#xe=n,this.#Be=n()):(this.#xe=null,this.#Be=n),this.websocket.onopen=async()=>{try{await this._start(),this.resume()}catch(n){console.log("failed to start WebsocketProvider",n)}},this.websocket.onmessage=n=>{this._processMessage(n.data)}}async _write(n){this.websocket.send(n)}async destroy(){null!=this.#Be&&(this.#Be.close(),this.#Be=null),super.destroy()}}const Jb="84842078b09946638c03157f83405213";class $b extends Qb{projectId;projectSecret;constructor(n,e){const t=new Wb(n,e),r=t._getConnection();$o(!r.credentials,"INFURA WebSocket project secrets unsupported","UNSUPPORTED_OPERATION",{operation:"InfuraProvider.getWebSocketProvider()"});super(r.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/"),t._network),Ko(this,{projectId:t.projectId,projectSecret:t.projectSecret})}isCommunityResource(){return this.projectId===Jb}}class Wb extends Ib{projectId;projectSecret;constructor(n,e,t){null==n&&(n="mainnet");const r=Om.from(n);null==e&&(e=Jb),null==t&&(t=null);super(Wb.getRequest(r,e,t),r,{staticNetwork:r}),Ko(this,{projectId:e,projectSecret:t})}_getProvider(n){try{return new Wb(n,this.projectId,this.projectSecret)}catch(n){}return super._getProvider(n)}isCommunityResource(){return this.projectId===Jb}static getWebSocketProvider(n,e){return new $b(n,e)}static getRequest(n,e,t){null==e&&(e=Jb),null==t&&(t=null);const r=new rs(`https://${function(n){switch(n){case"mainnet":return"mainnet.infura.io";case"goerli":return"goerli.infura.io";case"sepolia":return"sepolia.infura.io";case"arbitrum":return"arbitrum-mainnet.infura.io";case"arbitrum-goerli":return"arbitrum-goerli.infura.io";case"arbitrum-sepolia":return"arbitrum-sepolia.infura.io";case"base":return"base-mainnet.infura.io";case"base-goerlia":case"base-goerli":return"base-goerli.infura.io";case"base-sepolia":return"base-sepolia.infura.io";case"bnb":return"bsc-mainnet.infura.io";case"bnbt":return"bsc-testnet.infura.io";case"linea":return"linea-mainnet.infura.io";case"linea-goerli":return"linea-goerli.infura.io";case"linea-sepolia":return"linea-sepolia.infura.io";case"matic":return"polygon-mainnet.infura.io";case"matic-amoy":return"polygon-amoy.infura.io";case"matic-mumbai":return"polygon-mumbai.infura.io";case"optimism":return"optimism-mainnet.infura.io";case"optimism-goerli":return"optimism-goerli.infura.io";case"optimism-sepolia":return"optimism-sepolia.infura.io"}Wo(!1,"unsupported network","network",n)}(n.name)}/v3/${e}`);return r.allowGzip=!0,t&&r.setCredentials("",t),e===Jb&&(r.retryFunc=async(n,e,t)=>(hb("InfuraProvider"),!0)),r}}const Zb="919b412a057b5e9c9b6dce193c5a60242d6efadb";class Yb extends Ib{token;constructor(n,e){null==n&&(n="mainnet");const t=Om.from(n);null==e&&(e=Zb);super(Yb.getRequest(t,e),t,{staticNetwork:t}),Ko(this,{token:e})}_getProvider(n){try{return new Yb(n,this.token)}catch(n){}return super._getProvider(n)}isCommunityResource(){return this.token===Zb}static getRequest(n,e){null==e&&(e=Zb);const t=new rs(`https://${function(n){switch(n){case"mainnet":return"ethers.quiknode.pro";case"goerli":return"ethers.ethereum-goerli.quiknode.pro";case"sepolia":return"ethers.ethereum-sepolia.quiknode.pro";case"holesky":return"ethers.ethereum-holesky.quiknode.pro";case"arbitrum":return"ethers.arbitrum-mainnet.quiknode.pro";case"arbitrum-goerli":return"ethers.arbitrum-goerli.quiknode.pro";case"arbitrum-sepolia":return"ethers.arbitrum-sepolia.quiknode.pro";case"base":return"ethers.base-mainnet.quiknode.pro";case"base-goerli":return"ethers.base-goerli.quiknode.pro";case"base-spolia":return"ethers.base-sepolia.quiknode.pro";case"bnb":return"ethers.bsc.quiknode.pro";case"bnbt":return"ethers.bsc-testnet.quiknode.pro";case"matic":return"ethers.matic.quiknode.pro";case"matic-mumbai":return"ethers.matic-testnet.quiknode.pro";case"optimism":return"ethers.optimism.quiknode.pro";case"optimism-goerli":return"ethers.optimism-goerli.quiknode.pro";case"optimism-sepolia":return"ethers.optimism-sepolia.quiknode.pro";case"xdai":return"ethers.xdai.quiknode.pro"}Wo(!1,"unsupported network","network",n)}(n.name)}/${e}`);return t.allowGzip=!0,e===Zb&&(t.retryFunc=async(n,e,t)=>(hb("QuickNodeProvider"),!0)),t}}const Xb=BigInt("1"),ny=BigInt("2");function ey(){return(new Date).getTime()}function ty(n){return JSON.stringify(n,(n,e)=>"bigint"==typeof e?{type:"bigint",value:e.toString()}:e)}const ry={stallTimeout:400,priority:1,weight:1},ay={blockNumber:-2,requests:0,lateResponses:0,errorResponses:0,outOfSync:-1,unsupportedEvents:0,rollingDuration:0,score:0,_network:null,_updateNumber:null,_totalTime:0,_lastFatalError:null,_lastFatalErrorTimestamp:0};function oy(n){if(null==n)return"null";if(Array.isArray(n))return"["+n.map(oy).join(",")+"]";if("object"==typeof n&&"function"==typeof n.toJSON)return oy(n.toJSON());switch(typeof n){case"boolean":case"symbol":return n.toString();case"bigint":case"number":return BigInt(n).toString();case"string":return JSON.stringify(n);case"object":{const e=Object.keys(n);return e.sort(),"{"+e.map(e=>`${JSON.stringify(e)}:${oy(n[e])}`).join(",")+"}"}}throw console.log("Could not serialize",n),new Error("Hmm...")}function iy(n,e){if("error"in e){const n=e.error;let t;return t=_o(n,"CALL_EXCEPTION")?oy(Object.assign({},n,{shortMessage:void 0,reason:void 0,info:void 0})):oy(n),{tag:t,value:n}}const t=e.result;return{tag:oy(t),value:t}}function sy(n,e){const t=new Map;for(const{value:n,tag:r,weight:a}of e){const e=t.get(r)||{value:n,weight:0};e.weight+=a,t.set(r,e)}let r=null;for(const e of t.values())e.weight>=n&&(!r||e.weight>r.weight)&&(r=e);if(r)return r.value}function cy(n,e){let t=0;const r=new Map;let a=null;const o=[];for(const{value:n,tag:i,weight:s}of e)if(n instanceof Error){const e=r.get(i)||{value:n,weight:0};e.weight+=s,r.set(i,e),(null==a||e.weight>a.weight)&&(a=e)}else o.push(BigInt(n)),t+=s;if(t<n)return a&&a.weight>=n?a.value:void 0;o.sort((n,e)=>n<e?-1:e>n?1:0);const i=Math.floor(o.length/2);return o.length%2?o[i]:(o[i-1]+o[i]+Xb)/ny}function ly(n,e){const t=sy(n,e);if(void 0!==t)return t;for(const n of e)if(n.value)return n.value}class uy extends Xm{quorum;eventQuorum;eventWorkers;#Ce;#Oe;#Ue;constructor(n,e,t){super(e,t),this.#Ce=n.map(n=>n instanceof Xm?Object.assign({provider:n},ry,ay):Object.assign({},ry,n,ay)),this.#Oe=-2,this.#Ue=null,t&&null!=t.quorum?this.quorum=t.quorum:this.quorum=Math.ceil(this.#Ce.reduce((n,e)=>n+=e.weight,0)/2),this.eventQuorum=1,this.eventWorkers=1,Wo(this.quorum<=this.#Ce.reduce((n,e)=>n+e.weight,0),"quorum exceed provider weight","quorum",this.quorum)}get providerConfigs(){return this.#Ce.map(n=>{const e=Object.assign({},n);for(const n in e)"_"===n[0]&&delete e[n];return e})}async _detectNetwork(){return Om.from(ki(await this._perform({method:"chainId"})))}async _translatePerform(n,e){switch(e.method){case"broadcastTransaction":return await n.broadcastTransaction(e.signedTransaction);case"call":return await n.call(Object.assign({},e.transaction,{blockTag:e.blockTag}));case"chainId":return(await n.getNetwork()).chainId;case"estimateGas":return await n.estimateGas(e.transaction);case"getBalance":return await n.getBalance(e.address,e.blockTag);case"getBlock":{const t="blockHash"in e?e.blockHash:e.blockTag;return await n.getBlock(t,e.includeTransactions)}case"getBlockNumber":return await n.getBlockNumber();case"getCode":return await n.getCode(e.address,e.blockTag);case"getGasPrice":return(await n.getFeeData()).gasPrice;case"getPriorityFee":return(await n.getFeeData()).maxPriorityFeePerGas;case"getLogs":return await n.getLogs(e.filter);case"getStorage":return await n.getStorage(e.address,e.position,e.blockTag);case"getTransaction":return await n.getTransaction(e.hash);case"getTransactionCount":return await n.getTransactionCount(e.address,e.blockTag);case"getTransactionReceipt":return await n.getTransactionReceipt(e.hash);case"getTransactionResult":return await n.getTransactionResult(e.hash)}}#Fe(n){const e=Array.from(n).map(n=>n.config),t=this.#Ce.slice();!function(n){for(let e=n.length-1;e>0;e--){const t=Math.floor(Math.random()*(e+1)),r=n[e];n[e]=n[t],n[t]=r}}(t),t.sort((n,e)=>n.priority-e.priority);for(const n of t)if(!n._lastFatalError&&-1===e.indexOf(n))return n;return null}#Le(n,e){const t=this.#Fe(n);if(null==t)return null;const r={config:t,result:null,didBump:!1,perform:null,staller:null},a=ey();return r.perform=(async()=>{try{t.requests++;const n=await this._translatePerform(t.provider,e);r.result={result:n}}catch(n){t.errorResponses++,r.result={error:n}}const n=ey()-a;t._totalTime+=n,t.rollingDuration=.95*t.rollingDuration+.05*n,r.perform=null})(),r.staller=(async()=>{var n;await(n=t.stallTimeout,new Promise(e=>{setTimeout(e,n)})),r.staller=null})(),n.add(r),r}async#je(){let n=this.#Ue;if(!n){const e=[];this.#Ce.forEach(n=>{e.push((async()=>{await async function(n,e){for(;(n.blockNumber<0||n.blockNumber<e)&&(n._updateNumber||(n._updateNumber=(async()=>{try{const e=await n.provider.getBlockNumber();e>n.blockNumber&&(n.blockNumber=e)}catch(e){n.blockNumber=-2,n._lastFatalError=e,n._lastFatalErrorTimestamp=ey()}n._updateNumber=null})()),await n._updateNumber,n.outOfSync++,!n._lastFatalError););}(n,0),n._lastFatalError||(n._network=await n.provider.getNetwork())})())}),this.#Ue=n=(async()=>{await Promise.all(e);let n=null;for(const e of this.#Ce){if(e._lastFatalError)continue;const t=e._network;null==n?n=t.chainId:t.chainId!==n&&$o(!1,"cannot mix providers on different networks","UNSUPPORTED_OPERATION",{operation:"new FallbackProvider"})}})()}await n}async#De(n,e){const t=[];for(const r of n)if(null!=r.result){const{tag:n,value:a}=iy(e.method,r.result);t.push({tag:n,value:a,weight:r.config.weight})}if(!(t.reduce((n,e)=>n+e.weight,0)<this.quorum)){switch(e.method){case"getBlockNumber":{-2===this.#Oe&&(this.#Oe=Math.ceil(Ii(cy(this.quorum,this.#Ce.filter(n=>!n._lastFatalError).map(n=>({value:n.blockNumber,tag:Ii(n.blockNumber).toString(),weight:n.weight}))))));const n=function(n,e){if(1===n)return Ii(cy(n,e),"%internal");const t=new Map,r=(n,e)=>{const r=t.get(n)||{result:n,weight:0};r.weight+=e,t.set(n,r)};for(const{weight:n,value:t}of e){const e=Ii(t);r(e-1,n),r(e,n),r(e+1,n)}let a,o=0;for(const{weight:e,result:r}of t.values())e>=n&&(e>o||null!=a&&e===o&&r>a)&&(o=e,a=r);return a}(this.quorum,t);if(void 0===n)return;return n>this.#Oe&&(this.#Oe=n),this.#Oe}case"getGasPrice":case"getPriorityFee":case"estimateGas":return cy(this.quorum,t);case"getBlock":return"blockTag"in e&&"pending"===e.blockTag?ly(this.quorum,t):sy(this.quorum,t);case"call":case"chainId":case"getBalance":case"getTransactionCount":case"getCode":case"getStorage":case"getTransaction":case"getTransactionReceipt":case"getLogs":return sy(this.quorum,t);case"broadcastTransaction":return ly(this.quorum,t)}$o(!1,"unsupported method","UNSUPPORTED_OPERATION",{operation:`_perform(${ty(e.method)})`})}}async#Me(n,e){if(0===n.size)throw new Error("no runners?!");const t=[];let r=0;for(const e of n)e.perform&&t.push(e.perform),e.staller?t.push(e.staller):e.didBump||(e.didBump=!0,r++);const a=await this.#De(n,e);if(void 0!==a){if(a instanceof Error)throw a;return a}for(let t=0;t<r;t++)this.#Le(n,e);return $o(t.length>0,"quorum not met","SERVER_ERROR",{request:"%sub-requests",info:{request:e,results:Array.from(n).map(n=>ty(n.result))}}),await Promise.race(t),await this.#Me(n,e)}async _perform(n){if("broadcastTransaction"===n.method){const e=this.#Ce.map(n=>null),t=this.#Ce.map(async({provider:t,weight:r},a)=>{try{const o=await t._perform(n);e[a]=Object.assign(iy(n.method,{result:o}),{weight:r})}catch(t){e[a]=Object.assign(iy(n.method,{error:t}),{weight:r})}});for(;;){const n=e.filter(n=>null!=n);for(const{value:e}of n)if(!(e instanceof Error))return e;const r=sy(this.quorum,e.filter(n=>null!=n));if(_o(r,"INSUFFICIENT_FUNDS"))throw r;const a=t.filter((n,t)=>null==e[t]);if(0===a.length)break;await Promise.race(a)}const r=ly(this.quorum,e);if($o(void 0!==r,"problem multi-broadcasting","SERVER_ERROR",{request:"%sub-requests",info:{request:n,results:e.map(ty)}}),r instanceof Error)throw r;return r}await this.#je();const e=new Set;let t=0;for(;;){const r=this.#Le(e,n);if(null==r)break;if(t+=r.config.weight,t>=this.quorum)break}const r=await this.#Me(e,n);for(const n of e)n.perform&&null==n.result&&n.config.lateResponses++;return r}async destroy(){for(const{provider:n}of this.#Ce)n.destroy();super.destroy()}}const dy="goerli kovan sepolia classicKotti optimism-goerli arbitrum-goerli matic-mumbai bnbt".split(" ");function hy(n,e){null==e&&(e={});const t=n=>"-"!==e[n]&&("string"==typeof e.exclusive?n===e.exclusive:!Array.isArray(e.exclusive)||-1!==e.exclusive.indexOf(n));if("string"==typeof n&&n.match(/^https?:/))return new Ib(n);if("string"==typeof n&&n.match(/^wss?:/)||(r=n)&&"function"==typeof r.send&&"function"==typeof r.close)return new Qb(n);var r;let a=null;try{a=Om.from(n)}catch(n){}const o=[];if(t("publicPolygon")&&a&&("matic"===a.name?o.push(new Ib("https://polygon-rpc.com/",a,{staticNetwork:a})):"matic-amoy"===a.name&&o.push(new Ib("https://rpc-amoy.polygon.technology/",a,{staticNetwork:a}))),t("alchemy"))try{o.push(new Sb(n,e.alchemy))}catch(n){}if(t("ankr")&&null!=e.ankr)try{o.push(new Rb(n,e.ankr))}catch(n){}if(t("chainstack"))try{o.push(new Cb(n,e.chainstack))}catch(n){}if(t("cloudflare"))try{o.push(new Ob(n))}catch(n){}if(t("etherscan"))try{o.push(new Mb(n,e.etherscan))}catch(n){}if(t("infura"))try{let t,r=e.infura;"object"==typeof r&&(t=r.projectSecret,r=r.projectId),o.push(new Wb(n,r,t))}catch(n){}if(t("quicknode"))try{let t=e.quicknode;o.push(new Yb(n,t))}catch(n){}if($o(o.length,"unsupported default network","UNSUPPORTED_OPERATION",{operation:"getDefaultProvider"}),1===o.length)return o[0];let i=Math.floor(o.length/2);return i>2&&(i=2),a&&-1!==dy.indexOf(a.name)&&(i=1),e&&e.quorum&&(i=e.quorum),new uy(o,void 0,{quorum:i})}class py extends lb{signer;#Ge;#qe;constructor(n){super(n.provider),Ko(this,{signer:n}),this.#Ge=null,this.#qe=0}async getAddress(){return this.signer.getAddress()}connect(n){return new py(this.signer.connect(n))}async getNonce(n){if("pending"===n){null==this.#Ge&&(this.#Ge=super.getNonce("pending"));const n=this.#qe;return await this.#Ge+n}return super.getNonce(n)}increment(){this.#qe++}reset(){this.#qe=0,this.#Ge=null}async sendTransaction(n){const e=this.getNonce("pending");return this.increment(),(n=await this.signer.populateTransaction(n)).nonce=await e,await this.signer.sendTransaction(n)}signTransaction(n){return this.signer.signTransaction(n)}signMessage(n){return this.signer.signMessage(n)}signTypedData(n,e,t){return this.signer.signTypedData(n,e,t)}}class fy extends xb{#k;#He;constructor(n,e,t){const r=Object.assign({},null!=t?t:{},{batchMaxCount:1});Wo(n&&n.request,"invalid EIP-1193 provider","ethereum",n),super(e,r),this.#He=null,t&&t.providerInfo&&(this.#He=t.providerInfo),this.#k=async(e,t)=>{const r={method:e,params:t};this.emit("debug",{action:"sendEip1193Request",payload:r});try{const e=await n.request(r);return this.emit("debug",{action:"receiveEip1193Result",result:e}),e}catch(n){const e=new Error(n.message);throw e.code=n.code,e.data=n.data,e.payload=r,this.emit("debug",{action:"receiveEip1193Error",error:e}),e}}}get providerInfo(){return this.#He}async send(n,e){return await this._start(),await super.send(n,e)}async _send(n){Wo(!Array.isArray(n),"EIP-1193 does not support batch request","payload",n);try{const e=await this.#k(n.method,n.params||[]);return[{id:n.id,result:e}]}catch(e){return[{id:n.id,error:{code:e.code,data:e.data,message:e.message}}]}}getRpcError(n,e){switch((e=JSON.parse(JSON.stringify(e))).error.code||-1){case 4001:e.error.message=`ethers-user-denied: ${e.error.message}`;break;case 4200:e.error.message=`ethers-unsupported: ${e.error.message}`}return super.getRpcError(n,e)}async hasSigner(n){null==n&&(n=0);const e=await this.send("eth_accounts",[]);return"number"==typeof n?e.length>n:(n=n.toLowerCase(),0!==e.filter(e=>e.toLowerCase()===n).length)}async getSigner(n){if(null==n&&(n=0),!await this.hasSigner(n))try{await this.#k("eth_requestAccounts",[])}catch(n){const e=n.payload;throw this.getRpcError(e,{id:e.id,error:n})}return await super.getSigner(n)}static async discover(n){if(null==n&&(n={}),n.provider)return new fy(n.provider);const e=n.window?n.window:"undefined"!=typeof window?window:null;if(null==e)return null;const t=n.anyProvider;if(t&&e.ethereum)return new fy(e.ethereum);if(!("addEventListener"in e&&"dispatchEvent"in e&&"removeEventListener"in e))return null;const r=n.timeout?n.timeout:300;return 0===r?null:await new Promise((a,o)=>{let i=[];const s=n=>{i.push(n.detail),t&&c()},c=()=>{if(clearTimeout(l),i.length)if(n&&n.filter){const e=n.filter(i.map(n=>Object.assign({},n.info)));if(null==e)a(null);else if(e instanceof fy)a(e);else{let n=null;if(e.uuid){const t=i.filter(n=>e.uuid===n.info.uuid);n=t[0]}if(n){const{provider:e,info:t}=n;a(new fy(e,void 0,{providerInfo:t}))}else o(Jo("filter returned unknown info","UNSUPPORTED_OPERATION",{value:e}))}}else{const{provider:n,info:e}=i[0];a(new fy(n,void 0,{providerInfo:e}))}else a(null);e.removeEventListener("eip6963:announceProvider",s)},l=setTimeout(()=>{c()},r);e.addEventListener("eip6963:announceProvider",s),e.dispatchEvent(new Event("eip6963:requestProvider"))})}}class gy extends Ib{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Om.from(n);null==e&&(e=null);super(gy.getRequest(t),t,{staticNetwork:t}),Ko(this,{apiKey:e})}_getProvider(n){try{return new gy(n,this.apiKey)}catch(n){}return super._getProvider(n)}isCommunityResource(){return null===this.apiKey}getRpcRequest(n){const e=super.getRpcRequest(n);return e&&"eth_estimateGas"===e.method&&1==e.args.length&&(e.args=e.args.slice(),e.args.push("latest")),e}getRpcError(n,e){const t=e?e.error:null;if(t&&-32015===t.code&&!ai(t.data||"",!0)){const n={"assert(false)":"01","arithmetic underflow or overflow":"11","division or modulo by zero":"12","out-of-bounds array access; popping on an empty array":"31","out-of-bounds access of an array or bytesN":"32"};let e="";"VM execution error."===t.message?e=n[t.data]||"":n[t.message||""]&&(e=n[t.message||""]),e&&(t.message+=` (reverted: ${t.data})`,t.data="0x4e487b7100000000000000000000000000000000000000000000000000000000000000"+e)}else t&&-32e3===t.code&&"wrong transaction nonce"===t.message&&(t.message+=" (nonce too low)");return super.getRpcError(n,e)}static getRequest(n){const e=new rs(function(n){switch(n){case"mainnet":return"https://eth.blockscout.com/api/eth-rpc";case"sepolia":return"https://eth-sepolia.blockscout.com/api/eth-rpc";case"holesky":return"https://eth-holesky.blockscout.com/api/eth-rpc";case"classic":return"https://etc.blockscout.com/api/eth-rpc";case"arbitrum":return"https://arbitrum.blockscout.com/api/eth-rpc";case"base":return"https://base.blockscout.com/api/eth-rpc";case"base-sepolia":return"https://base-sepolia.blockscout.com/api/eth-rpc";case"matic":return"https://polygon.blockscout.com/api/eth-rpc";case"optimism":return"https://optimism.blockscout.com/api/eth-rpc";case"optimism-sepolia":return"https://optimism-sepolia.blockscout.com/api/eth-rpc";case"xdai":return"https://gnosis.blockscout.com/api/eth-rpc"}Wo(!1,"unsupported network","network",n)}(n.name));return e.allowGzip=!0,e}}const my="62e1ad51b37b8e00394bda3b";class by extends Ib{applicationId;applicationSecret;constructor(n,e,t){null==n&&(n="mainnet");const r=Om.from(n);null==e&&(e=my),null==t&&(t=null);const a={staticNetwork:r};super(by.getRequest(r,e,t),r,a),Ko(this,{applicationId:e,applicationSecret:t})}_getProvider(n){try{return new by(n,this.applicationId,this.applicationSecret)}catch(n){}return super._getProvider(n)}static getRequest(n,e,t){null==e&&(e=my);const r=new rs(`https://${function(n){switch(n){case"mainnet":return"eth-mainnet.gateway.pokt.network";case"goerli":return"eth-goerli.gateway.pokt.network";case"matic":return"poly-mainnet.gateway.pokt.network";case"matic-mumbai":return"polygon-mumbai-rpc.gateway.pokt.network"}Wo(!1,"unsupported network","network",n)}(n.name)}/v1/lb/${e}`);return r.allowGzip=!0,t&&r.setCredentials("",t),e===my&&(r.retryFunc=async(n,e,t)=>(hb("PocketProvider"),!0)),r}isCommunityResource(){return this.applicationId===my}}const yy=void 0;class vy extends lb{address;#Ke;constructor(n,e){super(e),Wo(n&&"function"==typeof n.sign,"invalid private key","privateKey","[ REDACTED ]"),this.#Ke=n;Ko(this,{address:hh(this.signingKey.publicKey)})}get signingKey(){return this.#Ke}get privateKey(){return this.signingKey.privateKey}async getAddress(){return this.address}connect(n){return new vy(this.#Ke,n)}async signTransaction(n){n=Rg(n);const{to:e,from:t}=await Ho({to:n.to?Md(n.to,this):void 0,from:n.from?Md(n.from,this):void 0});null!=e&&(n.to=e),null!=t&&(n.from=t),null!=n.from&&(Wo(Cd(n.from)===this.address,"transaction from address mismatch","tx.from",n.from),delete n.from);const r=Ch.from(n);return r.signature=this.signingKey.sign(r.unsignedHash),r.serialized}async signMessage(n){return this.signMessageSync(n)}signMessageSync(n){return this.signingKey.sign(Qp(n)).serialized}authorizeSync(n){Wo("string"==typeof n.address,"invalid address for authorizeSync","auth.address",n);const e=this.signingKey.sign(Oh(n));return Object.assign({},{address:Cd(n.address),nonce:ki(n.nonce||0),chainId:ki(n.chainId||0)},{signature:e})}async authorize(n){return n=Object.assign({},n,{address:await Md(n.address,this)}),this.authorizeSync(await this.populateAuthorization(n))}async signTypedData(n,e,t){const r=await bf.resolveNames(n,e,t,async n=>{$o(null!=this.provider,"cannot resolve ENS names without a provider","UNSUPPORTED_OPERATION",{operation:"resolveName",info:{name:n}});const e=await this.provider.resolveName(n);return $o(null!=e,"unconfigured ENS name","UNCONFIGURED_NAME",{value:n}),e});return this.signingKey.sign(bf.hash(r.domain,e,r.value)).serialized}}const wy=" !#$%&'()*+,-./<=>?@[]^_`{|}~",ky=/^[a-z]*$/i;function Ay(n,e){let t=97;return n.reduce((n,r)=>(r===e?t++:r.match(ky)?n.push(String.fromCharCode(t)+r):(t=97,n.push(r)),n),[])}function Ey(n){return Wo("0"===n[0],"unsupported auwl data","data",n),function(n,e){for(let t=28;t>=0;t--)n=n.split(wy[t]).join(e.substring(2*t,2*t+2));const t=[],r=n.replace(/(:|([0-9])|([A-Z][a-z]*))/g,(n,e,r,a)=>{if(r)for(let n=parseInt(r);n>=0;n--)t.push(";");else t.push(e.toLowerCase());return""});if(r)throw new Error(`leftovers: ${JSON.stringify(r)}`);return Ay(Ay(t,";"),":")}(n.substring(59),n.substring(1,59))}class xy{locale;constructor(n){Ko(this,{locale:n})}split(n){return n.toLowerCase().split(/\s+/g)}join(n){return n.join(" ")}}class Iy extends xy{#C;#Ve;constructor(n,e,t){super(n),this.#C=e,this.#Ve=t,this.#_e=null}get _data(){return this.#C}_decodeWords(){return Ey(this.#C)}#_e;#Qe(){if(null==this.#_e){const n=this._decodeWords();if(Fh(n.join("\n")+"\n")!==this.#Ve)throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);this.#_e=n}return this.#_e}getWord(n){const e=this.#Qe();return Wo(n>=0&&n<e.length,`invalid word index: ${n}`,"index",n),e[n]}getWordIndex(n){return this.#Qe().indexOf(n)}}let Py=null;class Ny extends Iy{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<aNn RRelyRga(R*lSeS-SketTt!3A^AnAutyCau'ComeEfF%eG(Ha=H(dLie=LowLtN^Nef./TrayTt Twe&Y#d3Cyc!DKeNdOlogyRdR`Tt _{AdeAmeAnketA,EakE[IndOodO[omOu'UeUrUsh_rdAtDyIlMbNeNusOkO,Rd R(gRrowSsTtomUn)XY_{etA(AndA[A=EadEezeI{Id+IefIghtIngIskOccoliOk&OnzeOomO` OwnUsh2Bb!DdyD+tFf$oIldLbLkL!tNd!Nk Rd&Rg R,SS(e[SyTt Y Zz:Bba+B(B!CtusGeKe~LmM aMpNN$N)lNdyNn#NoeNvasNy#Pab!P.$Pta(RRb#RdRgoRpetRryRtSeShS(o/!Su$TT$ogT^Teg%yTt!UghtU'Ut]Ve3Il(gL yM|NsusNturyRe$Rta(_irAlkAmp]An+AosApt Ar+A'AtEapE{Ee'EfErryE,I{&IefIldIm}yOi)Oo'R#-U{!UnkUrn0G?Nnam#Rc!Tiz&TyVil_imApArifyAwAyE<ErkEv I{I|IffImbIn-IpO{OgO'O`OudOwnUbUmpU, Ut^_^A,C#utDeFfeeIlInL!@L%LumnMb(eMeMf%tM-Mm#Mp<yNc tNdu@NfirmNg*[N}@Nsid NtrolNv()OkOlPp PyR$ReRnR*@/Tt#U^UntryUp!Ur'Us(V Yo>_{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 M<dMi'Ni$Nti,NyP?tP&dPos.P`PutyRi=ScribeS tSignSkSpair/royTailTe@VelopVi)Vo>3AgramAlAm#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-Eg<tEm|Eph<tEvat%I>Se0B?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-P<dPe@Pi*Pla(Po'P*[T&dTra0EEbrow:Br-CeCultyDeIntI`~L'MeMilyMousNNcyNtasyRmSh]TT$Th TigueUltV%.e3Atu*Bru?yD $EEdElMa!N)/iv$T^V W3B Ct]EldGu*LeLmLt N$NdNeNg NishReRmR,Sc$ShTT}[X_gAmeAshAtAv%EeIghtIpOatO{O%Ow UidUshY_mCusGIlLd~owOdOtR)Re,R+tRkRtu}RumRw?dSsil/ UndX_gi!AmeEqu|EshI&dIn+OgOntO,OwnOz&U.2ElNNnyRna)RyTu*:D+tInLaxy~ yMePRa+Rba+Rd&Rl-Rm|SSpTeTh U+Ze3N $NiusN*Nt!Nu(e/u*2O,0AntFtGg!Ng RaffeRlVe_dAn)A*A[IdeImp'ObeOomOryO=OwUe_tDde[LdOdO'RillaSpelSsipV nWn_bA)A(AntApeA[Av.yEatE&IdIefItOc yOupOwUnt_rdE[IdeIltIt?N3M:B.IrLfMm M, NdPpyRb%RdRshR=,TVeWkZ?d3AdAl`ArtAvyD+hogIght~oLmetLpNRo3Dd&Gh~NtPRe/%y5BbyCkeyLdLeLiday~owMeNeyOdPeRnRr%R'Sp.$/TelUrV 5BGeM<Mb!M%Nd*dNgryNtRd!RryRtSb<d3Brid:1EOn0EaEntifyLe2N%e4LLeg$L}[0A+Ita>M&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryF<tFl-tF%mHa!H .Iti$Je@JuryMa>N Noc|PutQuiryS<eSe@SideSpi*/$lTa@T e,ToVe,V.eVol=3On0L<dOla>Sue0Em1Ory: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(Vious0CurE<Tob 0Or1FF Fi)T&2L1Ay0DI=Ymp-0It0CeEI#L(eLy1EnEraIn]Po'T]1An+B.Ch?dD D(?yG<I|Ig($Ph<0Tr-h0H 0Tdo%T TputTside0AlEnEr0NN 0Yg&0/ 0O}:CtDd!GeIrLa)LmNdaNelN-N` P RadeR|RkRrotRtySsT^ThTi|TrolTt nU'VeYm|3A)AnutArAs<tL-<NN$tyNcilOp!Pp Rfe@Rm.Rs#T2O}OtoRa'Ys-$0AnoCn-Ctu*E)GGe#~LotNkO} Pe/olT^Zza_)A}tA,-A>AyEa'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)IdeIghtImOg<OtOwUsh0AllArtI!OkeOo`0A{AkeApIffOw0ApCc Ci$CkDaFtL?Ldi LidLut]L=Me#eNgOnRryRtUlUndUpUr)U`0A)A*Ati$AwnEakEci$EedEllEndH eI)Id IkeInIr.L.OilOns%O#OrtOtRayReadR(gY0Ua*UeezeUir*l_b!AdiumAffA+AirsAmpAndArtA>AyEakEelEmEpE*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~NN<tNnisNtRm/Xt_nkAtEmeEnE%yE*EyIngIsOughtReeRi=RowUmbUnd 0CketDeG LtMb MeNyPRedSsueT!5A,BaccoDayDdl EGe` I!tK&MatoM%rowNeNgueNightOlO`PP-Pp!R^RnadoRtoi'SsT$Uri,W?dW WnY_{AdeAff-Ag-A(Ansf ApAshA=lAyEatEeEndI$IbeI{Igg ImIpOphyOub!U{UeUlyUmpetU,U`Y2BeIt]Mb!NaN}lRkeyRnRt!1El=EntyI)InI,O1PeP-$:5Ly5B*lla0Ab!Awa*C!Cov D DoFairFoldHappyIf%mIqueItIv 'KnownLo{TilUsu$Veil1Da>GradeHoldOnP Set1B<Ge0A+EEdEfulE![U$0Il.y:C<tCuumGueLidL!yL=NNishP%Rious/Ult3H-!L=tNd%Ntu*NueRbRifyRs]RyS'lT <3Ab!Br<tCiousCt%yDeoEw~a+Nta+Ol(Rtu$RusSaS.Su$T$Vid5C$I)IdLc<oLumeTeYa+:GeG#ItLk~LnutNtRfa*RmRri%ShSp/eT VeY3Al`Ap#ArA'lA` BDd(gEk&dIrdLcome/T_!AtEatEelEnE*IpIsp 0DeD`FeLd~NNdowNeNgNkNn Nt ReSdomSeShT}[5LfM<Nd OdOlRdRkRldRryR`_pE{E,!I,I>Ong::Rd3Ar~ow9UUngU`:3BraRo9NeO","0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60")}static wordlist(){return null==Py&&(Py=new Ny),Py}}function zy(n){return(1<<n)-1<<8-n&255}function Ry(n){return(1<<n)-1&255}function Ty(n,e){Xo("NFKD"),null==e&&(e=Ny.wordlist());const t=e.split(n);Wo(t.length%3==0&&t.length>=12&&t.length<=24,"invalid mnemonic length","mnemonic","[ REDACTED ]");const r=new Uint8Array(Math.ceil(11*t.length/8));let a=0;for(let n=0;n<t.length;n++){let o=e.getWordIndex(t[n].normalize("NFKD"));Wo(o>=0,`invalid mnemonic word at index ${n}`,"mnemonic","[ REDACTED ]");for(let n=0;n<11;n++)o&1<<10-n&&(r[a>>3]|=1<<7-a%8),a++}const o=32*t.length/3,i=zy(t.length/3);return Wo((ti(nu(r.slice(0,o/8)))[0]&i)===(r[r.length-1]&i),"invalid mnemonic checksum","mnemonic","[ REDACTED ]"),si(r.slice(0,o/8))}function Sy(n,e){Wo(n.length%4==0&&n.length>=16&&n.length<=32,"invalid entropy size","entropy","[ REDACTED ]"),null==e&&(e=Ny.wordlist());const t=[0];let r=11;for(let e=0;e<n.length;e++)r>8?(t[t.length-1]<<=8,t[t.length-1]|=n[e],r-=8):(t[t.length-1]<<=r,t[t.length-1]|=n[e]>>8-r,t.push(n[e]&Ry(8-r)),r+=3);const a=n.length/4,o=parseInt(nu(n).substring(2,4),16)&zy(a);return t[t.length-1]<<=a,t[t.length-1]|=o>>8-a,e.join(t.map(n=>e.getWord(n)))}const By={};class Cy{phrase;password;wordlist;entropy;constructor(n,e,t,r,a){null==r&&(r=""),null==a&&(a=Ny.wordlist()),ni(n,By,"Mnemonic"),Ko(this,{phrase:t,password:r,wordlist:a,entropy:e})}computeSeed(){const n=Hi("mnemonic"+this.password,"NFKD");return Tl(Hi(this.phrase,"NFKD"),n,2048,64,"sha512")}static fromPhrase(n,e,t){const r=Ty(n,t);return n=Sy(ti(r),t),new Cy(By,r,n,e,t)}static fromEntropy(n,e,t){const r=ti(n,"entropy"),a=Sy(r,t);return new Cy(By,si(r),a,e,t)}static entropyToPhrase(n,e){return Sy(ti(n,"entropy"),e)}static phraseToEntropy(n,e){return Ty(n,e)}static isValidMnemonic(n,e){try{return Ty(n,e),!0}catch(n){}return!1}}
|
|
14
|
+
/*! MIT License. Copyright 2015-2022 Richard Moore <me@ricmoo.com>. See LICENSE.txt. */var Oy,Uy,Fy,Ly=function(n,e,t,r){if("a"===t&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?n!==e||!r:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?r:"a"===t?r.call(n):r?r.value:e.get(n)},jy=function(n,e,t,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?n!==e||!a:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(n,t):a?a.value=t:e.set(n,t),t};const Dy={16:10,24:12,32:14},My=[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],Gy=[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],qy=[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],Hy=[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],Ky=[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],Vy=[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],_y=[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],Qy=[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],Jy=[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],$y=[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],Wy=[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],Zy=[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],Yy=[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],Xy=[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],nv=[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 ev(n){const e=[];for(let t=0;t<n.length;t+=4)e.push(n[t]<<24|n[t+1]<<16|n[t+2]<<8|n[t+3]);return e}class tv{get key(){return Ly(this,Oy,"f").slice()}constructor(n){if(Oy.set(this,void 0),Uy.set(this,void 0),Fy.set(this,void 0),!(this instanceof tv))throw Error("AES must be instanitated with `new`");jy(this,Oy,new Uint8Array(n),"f");const e=Dy[this.key.length];if(null==e)throw new TypeError("invalid key size (must be 16, 24 or 32 bytes)");jy(this,Fy,[],"f"),jy(this,Uy,[],"f");for(let n=0;n<=e;n++)Ly(this,Fy,"f").push([0,0,0,0]),Ly(this,Uy,"f").push([0,0,0,0]);const t=4*(e+1),r=this.key.length/4,a=ev(this.key);let o;for(let n=0;n<r;n++)o=n>>2,Ly(this,Fy,"f")[o][n%4]=a[n],Ly(this,Uy,"f")[e-o][n%4]=a[n];let i,s=0,c=r;for(;c<t;){if(i=a[r-1],a[0]^=Gy[i>>16&255]<<24^Gy[i>>8&255]<<16^Gy[255&i]<<8^Gy[i>>24&255]^My[s]<<24,s+=1,8!=r)for(let n=1;n<r;n++)a[n]^=a[n-1];else{for(let n=1;n<r/2;n++)a[n]^=a[n-1];i=a[r/2-1],a[r/2]^=Gy[255&i]^Gy[i>>8&255]<<8^Gy[i>>16&255]<<16^Gy[i>>24&255]<<24;for(let n=r/2+1;n<r;n++)a[n]^=a[n-1]}let n,o,l=0;for(;l<r&&c<t;)n=c>>2,o=c%4,Ly(this,Fy,"f")[n][o]=a[l],Ly(this,Uy,"f")[e-n][o]=a[l++],c++}for(let n=1;n<e;n++)for(let e=0;e<4;e++)i=Ly(this,Uy,"f")[n][e],Ly(this,Uy,"f")[n][e]=Zy[i>>24&255]^Yy[i>>16&255]^Xy[i>>8&255]^nv[255&i]}encrypt(n){if(16!=n.length)throw new TypeError("invalid plaintext size (must be 16 bytes)");const e=Ly(this,Fy,"f").length-1,t=[0,0,0,0];let r=ev(n);for(let n=0;n<4;n++)r[n]^=Ly(this,Fy,"f")[0][n];for(let n=1;n<e;n++){for(let e=0;e<4;e++)t[e]=Hy[r[e]>>24&255]^Ky[r[(e+1)%4]>>16&255]^Vy[r[(e+2)%4]>>8&255]^_y[255&r[(e+3)%4]]^Ly(this,Fy,"f")[n][e];r=t.slice()}const a=new Uint8Array(16);let o=0;for(let n=0;n<4;n++)o=Ly(this,Fy,"f")[e][n],a[4*n]=255&(Gy[r[n]>>24&255]^o>>24),a[4*n+1]=255&(Gy[r[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(Gy[r[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(Gy[255&r[(n+3)%4]]^o);return a}decrypt(n){if(16!=n.length)throw new TypeError("invalid ciphertext size (must be 16 bytes)");const e=Ly(this,Uy,"f").length-1,t=[0,0,0,0];let r=ev(n);for(let n=0;n<4;n++)r[n]^=Ly(this,Uy,"f")[0][n];for(let n=1;n<e;n++){for(let e=0;e<4;e++)t[e]=Qy[r[e]>>24&255]^Jy[r[(e+3)%4]>>16&255]^$y[r[(e+2)%4]>>8&255]^Wy[255&r[(e+1)%4]]^Ly(this,Uy,"f")[n][e];r=t.slice()}const a=new Uint8Array(16);let o=0;for(let n=0;n<4;n++)o=Ly(this,Uy,"f")[e][n],a[4*n]=255&(qy[r[n]>>24&255]^o>>24),a[4*n+1]=255&(qy[r[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(qy[r[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(qy[255&r[(n+1)%4]]^o);return a}}Oy=new WeakMap,Uy=new WeakMap,Fy=new WeakMap;class rv{constructor(n,e,t){if(t&&!(this instanceof t))throw new Error(`${n} must be instantiated with "new"`);Object.defineProperties(this,{aes:{enumerable:!0,value:new tv(e)},name:{enumerable:!0,value:n}})}}var av,ov,iv=function(n,e,t,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?n!==e||!a:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(n,t):a?a.value=t:e.set(n,t),t},sv=function(n,e,t,r){if("a"===t&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?n!==e||!r:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?r:"a"===t?r.call(n):r?r.value:e.get(n)};class cv extends rv{constructor(n,e){if(super("ECC",n,cv),av.set(this,void 0),ov.set(this,void 0),e){if(e.length%16)throw new TypeError("invalid iv size (must be 16 bytes)");iv(this,av,new Uint8Array(e),"f")}else iv(this,av,new Uint8Array(16),"f");iv(this,ov,this.iv,"f")}get iv(){return new Uint8Array(sv(this,av,"f"))}encrypt(n){if(n.length%16)throw new TypeError("invalid plaintext size (must be multiple of 16 bytes)");const e=new Uint8Array(n.length);for(let t=0;t<n.length;t+=16){for(let e=0;e<16;e++)sv(this,ov,"f")[e]^=n[t+e];iv(this,ov,this.aes.encrypt(sv(this,ov,"f")),"f"),e.set(sv(this,ov,"f"),t)}return e}decrypt(n){if(n.length%16)throw new TypeError("invalid ciphertext size (must be multiple of 16 bytes)");const e=new Uint8Array(n.length);for(let t=0;t<n.length;t+=16){const r=this.aes.decrypt(n.subarray(t,t+16));for(let a=0;a<16;a++)e[t+a]=r[a]^sv(this,ov,"f")[a],sv(this,ov,"f")[a]=n[t+a]}return e}}av=new WeakMap,ov=new WeakMap;var lv,uv,dv,hv=function(n,e,t,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?n!==e||!a:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(n,t):a?a.value=t:e.set(n,t),t},pv=function(n,e,t,r){if("a"===t&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?n!==e||!r:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?r:"a"===t?r.call(n):r?r.value:e.get(n)};class fv extends rv{constructor(n,e){super("CTR",n,fv),lv.set(this,void 0),uv.set(this,void 0),dv.set(this,void 0),hv(this,dv,new Uint8Array(16),"f"),pv(this,dv,"f").fill(0),hv(this,lv,pv(this,dv,"f"),"f"),hv(this,uv,16,"f"),null==e&&(e=1),"number"==typeof e?this.setCounterValue(e):this.setCounterBytes(e)}get counter(){return new Uint8Array(pv(this,dv,"f"))}setCounterValue(n){if(!Number.isInteger(n)||n<0||n>Number.MAX_SAFE_INTEGER)throw new TypeError("invalid counter initial integer value");for(let e=15;e>=0;--e)pv(this,dv,"f")[e]=n%256,n=Math.floor(n/256)}setCounterBytes(n){if(16!==n.length)throw new TypeError("invalid counter initial Uint8Array value length");pv(this,dv,"f").set(n)}increment(){for(let n=15;n>=0;n--){if(255!==pv(this,dv,"f")[n]){pv(this,dv,"f")[n]++;break}pv(this,dv,"f")[n]=0}}encrypt(n){var e,t;const r=new Uint8Array(n);for(let n=0;n<r.length;n++)16===pv(this,uv,"f")&&(hv(this,lv,this.aes.encrypt(pv(this,dv,"f")),"f"),hv(this,uv,0,"f"),this.increment()),r[n]^=pv(this,lv,"f")[(hv(this,uv,(t=pv(this,uv,"f"),e=t++,t),"f"),e)];return r}decrypt(n){return this.encrypt(n)}}function gv(n){return"string"!=typeof n||n.startsWith("0x")||(n="0x"+n),ri(n)}function mv(n,e){for(n=String(n);n.length<e;)n="0"+n;return n}function bv(n){return"string"==typeof n?Hi(n,"NFKC"):ri(n)}function yv(n,e){const t=e.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);Wo(null!=t,"invalid path","path",e);const r=t[1],a=t[3],o="!"===t[4];let i=n;for(const n of r.toLowerCase().split(".")){if(Array.isArray(i)){if(!n.match(/^[0-9]+$/))break;i=i[parseInt(n)]}else if("object"==typeof i){let e=null;for(const t in i)if(t.toLowerCase()===n){e=i[t];break}i=e}else i=null;if(null==i)break}if(Wo(!o||null!=i,"missing required value","path",r),a&&null!=i){if("int"===a){if("string"==typeof i&&i.match(/^-?[0-9]+$/))return parseInt(i);if(Number.isSafeInteger(i))return i}if("number"===a&&"string"==typeof i&&i.match(/^-?[0-9.]*$/))return parseFloat(i);if("data"===a&&"string"==typeof i)return gv(i);if("array"===a&&Array.isArray(i))return i;if(a===typeof i)return i;Wo(!1,`wrong type found for ${a} `,"path",r)}return i}lv=new WeakMap,uv=new WeakMap,dv=new WeakMap;const vv="m/44'/60'/0'/0/0";function wv(n){try{const e=JSON.parse(n);if(3===(null!=e.version?parseInt(e.version):0))return!0}catch(n){}return!1}function kv(n,e){const t=ti(e),r=yv(n,"crypto.ciphertext:data!");Wo(si(cl(ci([t.slice(16,32),r]))).substring(2)===yv(n,"crypto.mac:string!").toLowerCase(),"incorrect password","password","[ REDACTED ]");const a=function(n,e,t){if("aes-128-ctr"===yv(n,"crypto.cipher:string")){const r=yv(n,"crypto.cipherparams.iv:data!");return si(new fv(e,r).decrypt(t))}$o(!1,"unsupported cipher","UNSUPPORTED_OPERATION",{operation:"decrypt"})}(n,t.slice(0,16),r),o=hh(a);if(n.address){let e=n.address.toLowerCase();e.startsWith("0x")||(e="0x"+e),Wo(Cd(e)===o,"keystore address/privateKey mismatch","address",n.address)}const i={address:o,privateKey:a};if("0.1"===yv(n,"x-ethers.version:string")){const e=t.slice(32,64),r=yv(n,"x-ethers.mnemonicCiphertext:data!"),a=yv(n,"x-ethers.mnemonicCounter:data!"),o=new fv(e,a);i.mnemonic={path:yv(n,"x-ethers.path:string")||vv,locale:yv(n,"x-ethers.locale:string")||"en",entropy:si(ti(o.decrypt(r)))}}return i}function Av(n){const e=yv(n,"crypto.kdf:string");if(e&&"string"==typeof e){if("scrypt"===e.toLowerCase()){const t=yv(n,"crypto.kdfparams.salt:data!"),r=yv(n,"crypto.kdfparams.n:int!"),a=yv(n,"crypto.kdfparams.r:int!"),o=yv(n,"crypto.kdfparams.p:int!");Wo(r>0&&!(r&r-1),"invalid kdf.N","kdf.N",r),Wo(a>0&&o>0,"invalid kdf","kdf",e);const i=yv(n,"crypto.kdfparams.dklen:int!");return Wo(32===i,"invalid kdf.dklen","kdf.dflen",i),{name:"scrypt",salt:t,N:r,r:a,p:o,dkLen:64}}if("pbkdf2"===e.toLowerCase()){const e=yv(n,"crypto.kdfparams.salt:data!"),t=yv(n,"crypto.kdfparams.prf:string!"),r=t.split("-").pop();Wo("sha256"===r||"sha512"===r,"invalid kdf.pdf","kdf.pdf",t);const a=yv(n,"crypto.kdfparams.c:int!"),o=yv(n,"crypto.kdfparams.dklen:int!");return Wo(32===o,"invalid kdf.dklen","kdf.dklen",o),{name:"pbkdf2",salt:e,count:a,dkLen:o,algorithm:r}}}Wo(!1,"unsupported key-derivation function","kdf",e)}function Ev(n,e){const t=JSON.parse(n),r=bv(e),a=Av(t);if("pbkdf2"===a.name){const{salt:n,count:e,dkLen:o,algorithm:i}=a;return kv(t,Tl(r,n,e,o,i))}$o("scrypt"===a.name,"cannot be reached","UNKNOWN_ERROR",{params:a});const{salt:o,N:i,r:s,p:c,dkLen:l}=a;return kv(t,Ql(r,o,i,s,c,l))}function xv(n){return new Promise(e=>{setTimeout(()=>{e()},n)})}async function Iv(n,e,t){const r=JSON.parse(n),a=bv(e),o=Av(r);if("pbkdf2"===o.name){t&&(t(0),await xv(0));const{salt:n,count:e,dkLen:i,algorithm:s}=o,c=Tl(a,n,e,i,s);return t&&(t(1),await xv(0)),kv(r,c)}$o("scrypt"===o.name,"cannot be reached","UNKNOWN_ERROR",{params:o});const{salt:i,N:s,r:c,p:l,dkLen:u}=o;return kv(r,await _l(a,i,s,c,l,u,t))}function Pv(n){const e=null!=n.salt?ti(n.salt,"options.salt"):Ol(32);let t=1<<17,r=8,a=1;return n.scrypt&&(n.scrypt.N&&(t=n.scrypt.N),n.scrypt.r&&(r=n.scrypt.r),n.scrypt.p&&(a=n.scrypt.p)),Wo("number"==typeof t&&t>0&&Number.isSafeInteger(t)&&(BigInt(t)&BigInt(t-1))===BigInt(0),"invalid scrypt N parameter","options.N",t),Wo("number"==typeof r&&r>0&&Number.isSafeInteger(r),"invalid scrypt r parameter","options.r",r),Wo("number"==typeof a&&a>0&&Number.isSafeInteger(a),"invalid scrypt p parameter","options.p",a),{name:"scrypt",dkLen:32,salt:e,N:t,r:r,p:a}}function Nv(n,e,t,r){const a=ti(t.privateKey,"privateKey"),o=null!=r.iv?ti(r.iv,"options.iv"):Ol(16);Wo(16===o.length,"invalid options.iv length","options.iv",r.iv);const i=null!=r.uuid?ti(r.uuid,"options.uuid"):Ol(16);Wo(16===i.length,"invalid options.uuid length","options.uuid",r.iv);const s=n.slice(0,16),c=n.slice(16,32),l=ti(new fv(s,o).encrypt(a)),u=cl(ci([c,l])),d={address:t.address.substring(2).toLowerCase(),id:Ts(i),version:3,Crypto:{cipher:"aes-128-ctr",cipherparams:{iv:si(o).substring(2)},ciphertext:si(l).substring(2),kdf:"scrypt",kdfparams:{salt:si(e.salt).substring(2),n:e.N,dklen:32,p:e.p,r:e.r},mac:u.substring(2)}};if(t.mnemonic){const e=null!=r.client?r.client:`ethers/${Go}`,a=t.mnemonic.path||vv,o=t.mnemonic.locale||"en",i=n.slice(32,64),s=ti(t.mnemonic.entropy,"account.mnemonic.entropy"),c=Ol(16),l=ti(new fv(i,c).encrypt(s)),u=new Date,h="UTC--"+(u.getUTCFullYear()+"-"+mv(u.getUTCMonth()+1,2)+"-"+mv(u.getUTCDate(),2)+"T"+mv(u.getUTCHours(),2)+"-"+mv(u.getUTCMinutes(),2)+"-"+mv(u.getUTCSeconds(),2)+".0Z")+"--"+d.address;d["x-ethers"]={client:e,gethFilename:h,path:a,locale:o,mnemonicCounter:si(c).substring(2),mnemonicCiphertext:si(l).substring(2),version:"0.1"}}return JSON.stringify(d)}function zv(n,e,t){null==t&&(t={});const r=bv(e),a=Pv(t);return Nv(ti(Ql(r,a.salt,a.N,a.r,a.p,64)),a,n,t)}async function Rv(n,e,t){null==t&&(t={});const r=bv(e),a=Pv(t);return Nv(ti(await _l(r,a.salt,a.N,a.r,a.p,64,t.progressCallback)),a,n,t)}const Tv="m/44'/60'/0'/0/0",Sv=new Uint8Array([66,105,116,99,111,105,110,32,115,101,101,100]),Bv=2147483648,Cv=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");function Ov(n,e){let t="";for(;n;)t="0123456789abcdef"[n%16]+t,n=Math.trunc(n/16);for(;t.length<2*e;)t="0"+t;return"0x"+t}function Uv(n){const e=ti(n);return Ui(ci([e,ui(nu(nu(e)),0,4)]))}const Fv={};function Lv(n,e,t,r){const a=new Uint8Array(37);n&Bv?($o(null!=r,"cannot derive child of neutered node","UNSUPPORTED_OPERATION",{operation:"deriveChild"}),a.set(ti(r),1)):a.set(ti(t));for(let e=24;e>=0;e-=8)a[33+(e>>3)]=n>>24-e&255;const o=ti(Hc("sha512",e,a));return{IL:o.slice(0,32),IR:o.slice(32)}}function jv(n,e){const t=e.split("/");Wo(t.length>0,"invalid path","path",e),"m"===t[0]&&(Wo(0===n.depth,`cannot derive root path (i.e. path starting with "m/") for a node at non-zero depth ${n.depth}`,"path",e),t.shift());let r=n;for(let n=0;n<t.length;n++){const e=t[n];if(e.match(/^[0-9]+'$/)){const t=parseInt(e.substring(0,e.length-1));Wo(t<Bv,"invalid path index",`path[${n}]`,e),r=r.deriveChild(Bv+t)}else if(e.match(/^[0-9]+$/)){const t=parseInt(e);Wo(t<Bv,"invalid path index",`path[${n}]`,e),r=r.deriveChild(t)}else Wo(!1,"invalid path component",`path[${n}]`,e)}return r}class Dv extends vy{publicKey;fingerprint;parentFingerprint;mnemonic;chainCode;path;index;depth;constructor(n,e,t,r,a,o,i,s,c){super(e,c),ni(n,Fv,"HDNodeWallet"),Ko(this,{publicKey:e.compressedPublicKey});Ko(this,{parentFingerprint:t,fingerprint:ui(Pl(nu(this.publicKey)),0,4),chainCode:r,path:a,index:o,depth:i}),Ko(this,{mnemonic:s})}connect(n){return new Dv(Fv,this.signingKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.mnemonic,n)}#Je(){const n={address:this.address,privateKey:this.privateKey},e=this.mnemonic;return this.path&&e&&"en"===e.wordlist.locale&&""===e.password&&(n.mnemonic={path:this.path,locale:"en",entropy:e.entropy}),n}async encrypt(n,e){return await Rv(this.#Je(),n,{progressCallback:e})}encryptSync(n){return zv(this.#Je(),n)}get extendedKey(){return $o(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Uv(ci(["0x0488ADE4",Ov(this.depth,1),this.parentFingerprint,Ov(this.index,4),this.chainCode,ci(["0x00",this.privateKey])]))}hasPath(){return null!=this.path}neuter(){return new Mv(Fv,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.provider)}deriveChild(n){const e=Ii(n,"index");Wo(e<=4294967295,"invalid index","index",e);let t=this.path;t&&(t+="/"+(2147483647&e),e&Bv&&(t+="'"));const{IR:r,IL:a}=Lv(e,this.chainCode,this.publicKey,this.privateKey),o=new Id(Ni((xi(a)+BigInt(this.privateKey))%Cv,32));return new Dv(Fv,o,this.fingerprint,si(r),t,e,this.depth+1,this.mnemonic,this.provider)}derivePath(n){return jv(this,n)}static#$e(n,e){Wo(oi(n),"invalid seed","seed","[REDACTED]");const t=ti(n,"seed");Wo(t.length>=16&&t.length<=64,"invalid seed","seed","[REDACTED]");const r=ti(Hc("sha512",Sv,t)),a=new Id(si(r.slice(0,32)));return new Dv(Fv,a,"0x00000000",si(r.slice(32)),"m",0,0,e,null)}static fromExtendedKey(n){const e=zi(Fi(n));Wo(82===e.length||Uv(e.slice(0,78))===n,"invalid extended key","extendedKey","[ REDACTED ]");const t=e[4],r=si(e.slice(5,9)),a=parseInt(si(e.slice(9,13)).substring(2),16),o=si(e.slice(13,45)),i=e.slice(45,78);switch(si(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":{const n=si(i);return new Mv(Fv,hh(n),n,r,o,null,a,t,null)}case"0x0488ade4":case"0x04358394 ":if(0!==i[0])break;return new Dv(Fv,new Id(i.slice(1)),r,o,null,a,t,null,null)}Wo(!1,"invalid extended key prefix","extendedKey","[ REDACTED ]")}static createRandom(n,e,t){null==n&&(n=""),null==e&&(e=Tv),null==t&&(t=Ny.wordlist());const r=Cy.fromEntropy(Ol(16),n,t);return Dv.#$e(r.computeSeed(),r).derivePath(e)}static fromMnemonic(n,e){return e||(e=Tv),Dv.#$e(n.computeSeed(),n).derivePath(e)}static fromPhrase(n,e,t,r){null==e&&(e=""),null==t&&(t=Tv),null==r&&(r=Ny.wordlist());const a=Cy.fromPhrase(n,e,r);return Dv.#$e(a.computeSeed(),a).derivePath(t)}static fromSeed(n){return Dv.#$e(n,null)}}class Mv extends ub{publicKey;fingerprint;parentFingerprint;chainCode;path;index;depth;constructor(n,e,t,r,a,o,i,s,c){super(e,c),ni(n,Fv,"HDNodeVoidWallet"),Ko(this,{publicKey:t});Ko(this,{publicKey:t,fingerprint:ui(Pl(nu(t)),0,4),parentFingerprint:r,chainCode:a,path:o,index:i,depth:s})}connect(n){return new Mv(Fv,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,n)}get extendedKey(){return $o(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Uv(ci(["0x0488B21E",Ov(this.depth,1),this.parentFingerprint,Ov(this.index,4),this.chainCode,this.publicKey]))}hasPath(){return null!=this.path}deriveChild(n){const e=Ii(n,"index");Wo(e<=4294967295,"invalid index","index",e);let t=this.path;t&&(t+="/"+(2147483647&e),e&Bv&&(t+="'"));const{IR:r,IL:a}=Lv(e,this.chainCode,this.publicKey,null),o=Id.addPoints(a,this.publicKey,!0),i=hh(o);return new Mv(Fv,i,o,this.fingerprint,si(r),t,e,this.depth+1,this.provider)}derivePath(n){return jv(this,n)}}function Gv(n){const e=Ii(n,"index");return Wo(e>=0&&e<Bv,"invalid account index","index",e),`m/44'/60'/${e}'/0/0`}function qv(n){const e=Ii(n,"index");return Wo(e>=0&&e<Bv,"invalid account index","index",e),`m/44'/60'/0'/0/${e}`}function Hv(n){try{if(JSON.parse(n).encseed)return!0}catch(n){}return!1}function Kv(n,e){const t=JSON.parse(n),r=bv(e),a=Cd(yv(t,"ethaddr:string!")),o=gv(yv(t,"encseed:string!"));Wo(o&&o.length%16==0,"invalid encseed","json",n);const i=ti(Tl(r,r,2e3,32,"sha256")).slice(0,16),s=o.slice(0,16),c=o.slice(16),l=function(n){if(n.length<16)throw new TypeError("PKCS#7 invalid length");const e=n[n.length-1];if(e>16)throw new TypeError("PKCS#7 padding byte out of range");const t=n.length-e;for(let r=0;r<e;r++)if(n[t+r]!==e)throw new TypeError("PKCS#7 invalid padding byte");return new Uint8Array(n.subarray(0,t))}(ti(new cv(i,s).decrypt(c)));let u="";for(let n=0;n<l.length;n++)u+=String.fromCharCode(l[n]);return{address:a,privateKey:Fh(u)}}function Vv(n){return new Promise(e=>{setTimeout(()=>{e()},n)})}class _v extends vy{constructor(n,e){"string"!=typeof n||n.startsWith("0x")||(n="0x"+n),super("string"==typeof n?new Id(n):n,e)}connect(n){return new _v(this.signingKey,n)}async encrypt(n,e){const t={address:this.address,privateKey:this.privateKey};return await Rv(t,n,{progressCallback:e})}encryptSync(n){return zv({address:this.address,privateKey:this.privateKey},n)}static#We(n){if(Wo(n,"invalid JSON wallet","json","[ REDACTED ]"),"mnemonic"in n&&n.mnemonic&&"en"===n.mnemonic.locale){const e=Cy.fromEntropy(n.mnemonic.entropy),t=Dv.fromMnemonic(e,n.mnemonic.path);if(t.address===n.address&&t.privateKey===n.privateKey)return t;console.log("WARNING: JSON mismatch address/privateKey != mnemonic; fallback onto private key")}const e=new _v(n.privateKey);return Wo(e.address===n.address,"address/privateKey mismatch","json","[ REDACTED ]"),e}static async fromEncryptedJson(n,e,t){let r=null;return wv(n)?r=await Iv(n,e,t):Hv(n)&&(t&&(t(0),await Vv(0)),r=Kv(n,e),t&&(t(1),await Vv(0))),_v.#We(r)}static fromEncryptedJsonSync(n,e){let t=null;return wv(n)?t=Ev(n,e):Hv(n)?t=Kv(n,e):Wo(!1,"invalid JSON wallet","json","[ REDACTED ]"),_v.#We(t)}static createRandom(n){const e=Dv.createRandom();return n?e.connect(n):e}static fromPhrase(n,e){const t=Dv.fromPhrase(n);return e?t.connect(e):t}}class Qv extends Iy{#Ze;constructor(n,e,t,r){super(n,e,r),this.#Ze=t}get _accent(){return this.#Ze}_decodeWords(){return function(n,e){let t=Ey(n).join(",");return e.split(/,/g).forEach(n=>{const r=n.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);Wo(null!==r,"internal error parsing accents","accents",e);let a=0;const o=function(n,e){const t=(1<<n)-1,r=[];let a=0,o=0,i=0;for(let s=0;s<e.length;s++)for(a=a<<6|")!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".indexOf(e[s]),o+=6;o>=n;){const e=a>>o-n;a&=(1<<o-n)-1,o-=n,0===e?i+=t:(r.push(e+i),i=0)}return r}(parseInt(r[3]),r[4]),i=parseInt(r[2]),s=new RegExp(`([${r[1]}])`,"g");t=t.replace(s,(n,e)=>(0===--o[a]&&(e=String.fromCharCode(e.charCodeAt(0),i),a++),e))}),t.split(",")}(this._data,this._accent)}}const Jv={en:Ny.wordlist()};var $v=Object.freeze({__proto__:null,version:Go,decodeBytes32String:bg,encodeBytes32String:mg,AbiCoder:gg,ConstructorFragment:ig,ErrorFragment:ag,EventFragment:og,Fragment:eg,FallbackFragment:sg,FunctionFragment:cg,NamedFragment:tg,ParamType:ng,StructFragment:lg,checkResultErrors:Gs,ErrorDescription:wg,Indexed:kg,Interface:xg,LogDescription:yg,Result:Ms,TransactionDescription:vg,Typed:Vd,getAddress:Cd,getIcapAddress:Od,getCreateAddress:Ud,getCreate2Address:Fd,isAddressable:Ld,isAddress:jd,resolveAddress:Md,ZeroAddress:od,WeiPerEther:cd,MaxUint256:ld,MinInt256:ud,MaxInt256:dd,N:sd,ZeroHash:id,EtherSymbol:"Ξ",MessagePrefix:hd,BaseContract:lm,Contract:um,ContractFactory:dm,ContractEventPayload:Gg,ContractTransactionReceipt:jg,ContractTransactionResponse:Dg,ContractUnknownEventPayload:Mg,EventLog:Fg,UndecodedEventLog:Lg,computeHmac:Hc,randomBytes:Ol,keccak256:cl,ripemd160:Pl,sha256:nu,sha512:eu,pbkdf2:Tl,scrypt:_l,scryptSync:Ql,lock:Pd,Signature:xd,SigningKey:Id,id:Fh,ensNormalize:Hp,isValidName:Kp,namehash:Vp,dnsEncode:_p,hashAuthorization:Oh,verifyAuthorization:Uh,hashMessage:Qp,verifyMessage:Jp,solidityPacked:Xp,solidityPackedKeccak256:nf,solidityPackedSha256:ef,TypedDataEncoder:bf,verifyTypedData:yf,getDefaultProvider:hy,Block:Tg,FeeData:zg,Log:Sg,TransactionReceipt:Bg,TransactionResponse:Cg,AbstractSigner:lb,NonceManager:py,VoidSigner:ub,AbstractProvider:Xm,FallbackProvider:uy,JsonRpcApiProvider:Eb,JsonRpcProvider:Ib,JsonRpcSigner:Ab,BrowserProvider:fy,AlchemyProvider:Sb,AnkrProvider:Rb,BlockscoutProvider:gy,ChainstackProvider:Cb,CloudflareProvider:Ob,EtherscanProvider:Mb,InfuraProvider:Wb,InfuraWebSocketProvider:$b,PocketProvider:by,QuickNodeProvider:Yb,IpcSocketProvider:yy,SocketProvider:_b,WebSocketProvider:Qb,EnsResolver:mm,Network:Om,EnsPlugin:Tm,EtherscanPlugin:Lb,FeeDataNetworkPlugin:Sm,FetchUrlFeeDataNetworkPlugin:Bm,GasCostPlugin:Rm,NetworkPlugin:zm,MulticoinProviderPlugin:pm,SocketBlockSubscriber:Hb,SocketEventSubscriber:Vb,SocketPendingSubscriber:Kb,SocketSubscriber:qb,UnmanagedSubscriber:Jm,copyRequest:Rg,showThrottleMessage:hb,accessListify:uh,authorizationify:dh,computeAddress:hh,recoverAddress:ph,Transaction:Ch,decodeBase58:Fi,encodeBase58:Ui,decodeBase64:Li,encodeBase64:ji,concat:ci,dataLength:li,dataSlice:ui,getBytes:ti,getBytesCopy:ri,hexlify:si,isHexString:ai,isBytesLike:oi,stripZerosLeft:di,zeroPadBytes:fi,zeroPadValue:pi,defineProperties:Ko,resolveProperties:Ho,assert:$o,assertArgument:Wo,assertArgumentCount:Zo,assertNormalize:Xo,assertPrivate:ni,makeError:Jo,isCallException:Qo,isError:_o,EventPayload:Di,FetchRequest:rs,FetchResponse:as,FetchCancelSignal:es,FixedNumber:gs,getBigInt:ki,getNumber:Ii,getUint:Ai,toBeArray:zi,toBigInt:xi,toBeHex:Ni,toNumber:Pi,toQuantity:Ri,fromTwos:yi,toTwos:vi,mask:wi,formatEther:zs,parseEther:Rs,formatUnits:Ps,parseUnits:Ns,toUtf8Bytes:Hi,toUtf8CodePoints:Vi,toUtf8String:Ki,Utf8ErrorFuncs:Gi,decodeRlp:ws,encodeRlp:xs,uuidV4:Ts,Mnemonic:Cy,BaseWallet:vy,HDNodeWallet:Dv,HDNodeVoidWallet:Mv,Wallet:_v,defaultPath:Tv,getAccountPath:Gv,getIndexedAccountPath:qv,isCrowdsaleJson:Hv,isKeystoreJson:wv,decryptCrowdsaleJson:Kv,decryptKeystoreJsonSync:Ev,decryptKeystoreJson:Iv,encryptKeystoreJson:Rv,encryptKeystoreJsonSync:zv,Wordlist:xy,LangEn:Ny,WordlistOwl:Iy,WordlistOwlA:Qv,wordlists:Jv}),Wv=Object.freeze({__proto__:null,ethers:$v,version:Go,decodeBytes32String:bg,encodeBytes32String:mg,AbiCoder:gg,ConstructorFragment:ig,ErrorFragment:ag,EventFragment:og,Fragment:eg,FallbackFragment:sg,FunctionFragment:cg,NamedFragment:tg,ParamType:ng,StructFragment:lg,checkResultErrors:Gs,ErrorDescription:wg,Indexed:kg,Interface:xg,LogDescription:yg,Result:Ms,TransactionDescription:vg,Typed:Vd,getAddress:Cd,getIcapAddress:Od,getCreateAddress:Ud,getCreate2Address:Fd,isAddressable:Ld,isAddress:jd,resolveAddress:Md,ZeroAddress:od,WeiPerEther:cd,MaxUint256:ld,MinInt256:ud,MaxInt256:dd,N:sd,ZeroHash:id,EtherSymbol:"Ξ",MessagePrefix:hd,BaseContract:lm,Contract:um,ContractFactory:dm,ContractEventPayload:Gg,ContractTransactionReceipt:jg,ContractTransactionResponse:Dg,ContractUnknownEventPayload:Mg,EventLog:Fg,UndecodedEventLog:Lg,computeHmac:Hc,randomBytes:Ol,keccak256:cl,ripemd160:Pl,sha256:nu,sha512:eu,pbkdf2:Tl,scrypt:_l,scryptSync:Ql,lock:Pd,Signature:xd,SigningKey:Id,id:Fh,ensNormalize:Hp,isValidName:Kp,namehash:Vp,dnsEncode:_p,hashAuthorization:Oh,verifyAuthorization:Uh,hashMessage:Qp,verifyMessage:Jp,solidityPacked:Xp,solidityPackedKeccak256:nf,solidityPackedSha256:ef,TypedDataEncoder:bf,verifyTypedData:yf,getDefaultProvider:hy,Block:Tg,FeeData:zg,Log:Sg,TransactionReceipt:Bg,TransactionResponse:Cg,AbstractSigner:lb,NonceManager:py,VoidSigner:ub,AbstractProvider:Xm,FallbackProvider:uy,JsonRpcApiProvider:Eb,JsonRpcProvider:Ib,JsonRpcSigner:Ab,BrowserProvider:fy,AlchemyProvider:Sb,AnkrProvider:Rb,BlockscoutProvider:gy,ChainstackProvider:Cb,CloudflareProvider:Ob,EtherscanProvider:Mb,InfuraProvider:Wb,InfuraWebSocketProvider:$b,PocketProvider:by,QuickNodeProvider:Yb,IpcSocketProvider:yy,SocketProvider:_b,WebSocketProvider:Qb,EnsResolver:mm,Network:Om,EnsPlugin:Tm,EtherscanPlugin:Lb,FeeDataNetworkPlugin:Sm,FetchUrlFeeDataNetworkPlugin:Bm,GasCostPlugin:Rm,NetworkPlugin:zm,MulticoinProviderPlugin:pm,SocketBlockSubscriber:Hb,SocketEventSubscriber:Vb,SocketPendingSubscriber:Kb,SocketSubscriber:qb,UnmanagedSubscriber:Jm,copyRequest:Rg,showThrottleMessage:hb,accessListify:uh,authorizationify:dh,computeAddress:hh,recoverAddress:ph,Transaction:Ch,decodeBase58:Fi,encodeBase58:Ui,decodeBase64:Li,encodeBase64:ji,concat:ci,dataLength:li,dataSlice:ui,getBytes:ti,getBytesCopy:ri,hexlify:si,isHexString:ai,isBytesLike:oi,stripZerosLeft:di,zeroPadBytes:fi,zeroPadValue:pi,defineProperties:Ko,resolveProperties:Ho,assert:$o,assertArgument:Wo,assertArgumentCount:Zo,assertNormalize:Xo,assertPrivate:ni,makeError:Jo,isCallException:Qo,isError:_o,EventPayload:Di,FetchRequest:rs,FetchResponse:as,FetchCancelSignal:es,FixedNumber:gs,getBigInt:ki,getNumber:Ii,getUint:Ai,toBeArray:zi,toBigInt:xi,toBeHex:Ni,toNumber:Pi,toQuantity:Ri,fromTwos:yi,toTwos:vi,mask:wi,formatEther:zs,parseEther:Rs,formatUnits:Ps,parseUnits:Ns,toUtf8Bytes:Hi,toUtf8CodePoints:Vi,toUtf8String:Ki,Utf8ErrorFuncs:Gi,decodeRlp:ws,encodeRlp:xs,uuidV4:Ts,Mnemonic:Cy,BaseWallet:vy,HDNodeWallet:Dv,HDNodeVoidWallet:Mv,Wallet:_v,defaultPath:Tv,getAccountPath:Gv,getIndexedAccountPath:qv,isCrowdsaleJson:Hv,isKeystoreJson:wv,decryptCrowdsaleJson:Kv,decryptKeystoreJsonSync:Ev,decryptKeystoreJson:Iv,encryptKeystoreJson:Rv,encryptKeystoreJsonSync:zv,Wordlist:xy,LangEn:Ny,WordlistOwl:Iy,WordlistOwlA:Qv,wordlists:Jv});n.EmblemAuthSDK=f,n.SessionManager=e,n.default=f,Object.defineProperty(n,"__esModule",{value:!0})});
|
|
15
|
+
//# sourceMappingURL=emblem-auth.umd.js.map
|