@emblemvault/auth-sdk 2.3.12 → 2.3.13

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.
@@ -1,15 +1,2 @@
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.consecutiveFailures=0,this.maxBackoffMs=3e4,this.baseBackoffMs=2e3,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 n of t)try{n(e)}catch(n){}}cancel(){this.timer&&(clearTimeout(this.timer),this.timer=null)}getBackoffDelay(){return Math.min(this.baseBackoffMs*Math.pow(2,Math.max(0,this.consecutiveFailures-1)),this.maxBackoffMs)}scheduleRetry(n){this.cancel();const e=Date.now(),t=n.expiresAt-e;if(t<=0)return void this.emit("sessionExpired",n);const r=Math.min(this.getBackoffDelay(),t-1e3);this.timer=r<=0?setTimeout(()=>{this.emit("sessionExpired",n)},t):setTimeout(async()=>{if(this.onRefresh)try{const e=await this.onRefresh(n);e?.expiresAt&&e.authToken&&e.expiresAt!==n.expiresAt?(this.consecutiveFailures=0,this.setSession(e),this.emit("sessionRefreshed",e)):(this.consecutiveFailures++,Date.now()>=n.expiresAt?this.emit("sessionExpired",n):this.scheduleRetry(n))}catch(e){this.consecutiveFailures++,Date.now()>=n.expiresAt?this.emit("sessionExpired",n):this.scheduleRetry(n)}else Date.now()>=n.expiresAt&&this.emit("sessionExpired",n)},r)}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);this.consecutiveFailures=0;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&&e.expiresAt!==n.expiresAt?(this.consecutiveFailures=0,this.setSession(e),this.emit("sessionRefreshed",e)):(this.consecutiveFailures++,Date.now()>=n.expiresAt?this.emit("sessionExpired",n):this.scheduleRetry(n))}catch(e){this.consecutiveFailures++,Date.now()>=n.expiresAt?this.emit("sessionExpired",n):this.scheduleRetry(n)}else Date.now()>=n.expiresAt&&this.emit("sessionExpired",n)},r)}}class t{constructor(n){if(this.session=null,this.pendingNonce=null,this.overlayEl=null,this._iframeEl=null,this.overlayCleanup=null,this.events={},this._cachedVaultInfo=null,this._visitorId=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.visitorIdKey=`emblem_visitorId_${n.appId}`,this.messageHandler=this.onMessage.bind(this),"undefined"!=typeof window&&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),this._visitorId=this.loadPersistedVisitorId()}this.tryConsumeSessionFromHash()}tryConsumeSessionFromHash(){if("undefined"!=typeof window)try{const n=String(window.location.hash||"").replace(/^#/,"");if(!n)return;const e=new URLSearchParams(n).get("emblemAuthSession");if(!e)return;const t=decodeURIComponent(e),r=decodeURIComponent(escape(atob(t))),a=JSON.parse(r);if(a?.appId&&a.appId!==this.config.appId)return void this.authDebug("consumeHash:ignored (appId mismatch)",{expected:this.config.appId,received:a.appId});this.authDebug("consumeHash:accepted",{appId:a?.appId}),this.session=a,this.persistSession(a),this.sessionMgr.setSession(a),this.config.onSuccess?.(a),this.emit("session",a);try{window.history.replaceState(null,"",window.location.pathname+window.location.search)}catch{}}catch(n){this.authDebug("consumeHash:failed",{error:n?.message||String(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 openOAuth(n){if("undefined"==typeof window)throw new Error("openOAuth() must be called in a browser environment");const e=window.location.origin;this.authDebug("openOAuth:start",{provider:n,origin:e,apiUrl:this.config.apiUrl});const t=await this.getAuthInit({origin:e}),r=t?.nonce||this.randomId(),a=t?.state;this.pendingNonce=r,this.authDebug("openOAuth:init ok",{noncePrefix:String(r).slice(0,8),hasState:!!a,statePrefix:String(a||"").slice(0,16)});const o=this.normalizeBaseUrl(this.config.authUrl,"authUrl"),i=new URL(`${o}/api/auth/oauth/init`);i.searchParams.set("provider",n),i.searchParams.set("state",a),this.authDebug("openOAuth:navigate",{url:i.toString()});const s=window.open(i.toString(),"emblem-auth",this.popupFeatures());if(s)try{s.focus()}catch{}else try{this.authDebug("openOAuth:popup blocked, using same-window navigation"),window.location.assign(i.toString())}catch{const n=new Error("Popup blocked. Please allow popups for this site.");this.emitError(n)}}async sendEmailOtp(n){const e=this.config.apiUrl.replace(/\/$/,""),t=await fetch(`${e}/api/auth/email/send-otp`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:n.appId??this.config.appId,email:n.email,password:n.password})}),r=await t.json().catch(()=>null);if(!t.ok){const n=new Error(r?.error||`email_send_otp_${t.status}`);throw n.status=t.status,n.payload=r,n}return r}async verifyEmailOtp(n){const e=this.config.apiUrl.replace(/\/$/,""),t=await fetch(`${e}/api/auth/email/verify-otp`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:n.appId??this.config.appId,email:n.email,otp:n.otp,password:n.password})}),r=await t.json().catch(()=>null);if(!t.ok){const n=new Error(r?.error||`email_verify_otp_${t.status}`);throw n.status=t.status,n.payload=r,n}const a=r?.session;return a&&(this.session=a,this.persistSession(a),this.sessionMgr.setSession(a),this.emit("session",a)),a}async authenticateEmail(n){const e=this.config.apiUrl.replace(/\/$/,""),t=await fetch(`${e}/api/auth/email/login`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:n.appId??this.config.appId,email:n.email,password:n.password})}),r=await t.json().catch(()=>null);if(!t.ok){const n=new Error(r?.error||`email_login_${t.status}`);throw n.status=t.status,n.payload=r,n}const a=r?.session;return a&&(this.session=a,this.persistSession(a),this.sessionMgr.setSession(a),this.emit("session",a)),a}async openAuthModal(){const n=window.location.origin;let e=null,t=null;try{e=await this.getAuthInit({origin:n})}catch(n){t=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){}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}getVisitorId(){return this._visitorId}async refreshSession(){try{if(!this.session)return null;const n=this.tryGetOriginFromConfig();if(!n)return this.session;const e=`${n}/api/auth/refresh`,t=Boolean(this.session.refreshToken),r=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t?{refreshToken:this.session.refreshToken}:{}),credentials:"include"});if(!r.ok)return this.session;const a=await r.json(),o=a?.session;return o&&(this.session=o,this.persistSession(o),this.sessionMgr.setSession(o),this.emit("session",o)),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._visitorId=null,this.persistVisitorId(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{toViemAccount:n}=await Promise.resolve().then(function(){return l}),{config:e,vaultInfo:t}=await this.getSignerContext();return n(e,t)}async toEthersWallet(n){const{toEthersWallet:e}=await Promise.resolve().then(function(){return d}),{config:t,vaultInfo:r}=await this.getSignerContext();return e(t,n,r)}async toWeb3Adapter(){const{toWeb3Adapter:n}=await Promise.resolve().then(function(){return m}),{config:e,vaultInfo:t}=await this.getSignerContext();return n(e,t)}async toSolanaWeb3Signer(){const{toSolanaWeb3Signer:n}=await Promise.resolve().then(function(){return y}),{config:e,vaultInfo:t}=await this.getSignerContext();return n(e,t)}async toSolanaKitSigner(){const{toSolanaKitSigner:n}=await Promise.resolve().then(function(){return y}),{config:e,vaultInfo:t}=await this.getSignerContext();return n(e,t)}async toBitcoinSigner(){const{toBitcoinSigner:n,fetchBitcoinVaultInfo:e}=await Promise.resolve().then(function(){return E}),{config:t}=await this.getSignerContext();return n(t,await e(t))}destroy(){"undefined"!=typeof window&&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()}authDebugEnabled(){try{const n=window?.localStorage?.getItem?.("AUTH_DEBUG");if("true"===String(n).toLowerCase())return!0}catch{}try{const n="undefined"!=typeof process?process:null,e=n?.env||{},t=e.NEXT_PUBLIC_AUTH_DEBUG??e.AUTH_DEBUG;if(!t)return!1;const r=String(t).toLowerCase().trim();return"1"===r||"true"===r||"yes"===r||"on"===r}catch{return!1}}authDebug(...n){this.authDebugEnabled()}normalizeBaseUrl(n,e){if(!n)throw new Error(`${e} is required`);const t=String(n).trim(),r="undefined"!=typeof window?window.location.href:"http://localhost";try{return new URL(t,r).toString().replace(/\/$/,"")}catch{}try{return new URL(`https://${t.replace(/^\/+/,"")}`).toString().replace(/\/$/,"")}catch{}throw new Error(`${e} must be an absolute URL (e.g. "https://api.emblemvault.ai") or a relative path (e.g. "/")`)}onMessage(n){try{const e=new Set([window.location.origin,this.tryGetOriginFromConfig(),this.tryGetOriginFromApiUrl()].filter(Boolean));if(!e.has(n.origin))return void this.authDebug("onMessage:ignored (origin)",{eventOrigin:n.origin,allowedOrigins:Array.from(e)});const t=n.data;if("emblem-auth-cancelled"===t?.type){if(!this.pendingNonce||t.nonce!==this.pendingNonce)return;return this.pendingNonce=null,this.closeOverlay(),this.config.onCancel&&this.config.onCancel(),void this.emit("cancelled",void 0)}if("emblem-auth-success"!==t?.type)return;if(!this.pendingNonce||t.nonce!==this.pendingNonce)return void this.authDebug("onMessage:ignored (nonce)",{expected:this.pendingNonce,received:t?.nonce,origin:n.origin,type:t?.type});this.pendingNonce=null,this.authDebug("onMessage:accepted",{origin:n.origin});const r=t.session;this.session=r,this.persistSession(r),this.sessionMgr.setSession(r),t.visitorId&&(this._visitorId=t.visitorId,this.persistVisitorId(t.visitorId)),r&&this.config.onSuccess&&this.config.onSuccess(r),this.emit("session",r),this.closeOverlay()}catch(n){this.emitError(n)}}emit(n,e){const t=this.events[n];if(t)for(const n of t)try{n(e)}catch(n){}}emitError(n){this.config.onError?.(n),this.emit("authError",n)}popupFeatures(){const n=Math.max(0,(window.outerHeight-680)/2);return`popup=yes,width=520,height=680,left=${Math.max(0,(window.outerWidth-520)/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;const n=this.normalizeBaseUrl(this.config.authUrl,"authUrl");return new URL(n).origin}catch{return null}}tryGetOriginFromApiUrl(){try{if(!this.config.apiUrl)return null;const n=this.normalizeBaseUrl(this.config.apiUrl,"apiUrl");return new URL(n).origin}catch{return null}}async getAuthInit(n){const e=JSON.stringify({appId:this.config.appId,origin:n.origin}),t=async n=>{const t=await fetch(`${n.replace(/\/$/,"")}/api/auth/init`,{method:"POST",headers:{"Content-Type":"application/json"},body:e}),r=await t.json().catch(()=>null);if(!t.ok){const n=new Error(`init ${t.status}`);throw n.status=t.status,n.payload=r||{},n}return r};try{return await t(this.config.authUrl)}catch(n){const e=n;try{return await t(this.config.apiUrl)}catch(n){const t=e;throw t.payload={...e?.payload||{},fallback:n?.payload||void 0},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.55)",e.style.backdropFilter="blur(6px)",e.style.webkitBackdropFilter="blur(6px)",e.style.zIndex="999999",e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center",e.style.padding="12px";const t=document.createElement("div");t.style.width="min(520px, 96vw)",t.style.height="min(680px, 92vh)",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",t.style.display="flex",t.style.flexDirection="column";const r=document.createElement("div");r.style.height="52px",r.style.display="flex",r.style.alignItems="center",r.style.justifyContent="space-between",r.style.padding="0 12px",r.style.borderBottom="1px solid rgba(255, 255, 255, 0.06)",r.style.background="#12161b";const a=document.createElement("div");a.textContent="Emblem",a.style.fontFamily="ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial",a.style.fontSize="13px",a.style.letterSpacing="0.08em",a.style.textTransform="uppercase",a.style.color="rgba(230, 238, 248, 0.75)";const o=document.createElement("button");o.type="button",o.textContent="×",o.setAttribute("aria-label","Close"),o.setAttribute("title","Close"),o.style.width="40px",o.style.height="40px",o.style.display="flex",o.style.alignItems="center",o.style.justifyContent="center",o.style.background="rgba(255, 255, 255, 0.04)",o.style.color="#e6eef8",o.style.border="1px solid rgba(255, 255, 255, 0.08)",o.style.borderRadius="10px",o.style.fontSize="24px",o.style.lineHeight="1",o.style.cursor="pointer",o.style.userSelect="none",o.onclick=()=>this.cancelAuth(),r.appendChild(a),r.appendChild(o);const i=document.createElement("iframe");i.src=n,i.style.width="100%",i.style.height="100%",i.style.border="0",i.referrerPolicy="no-referrer",i.allow="clipboard-read; clipboard-write;",t.appendChild(r),t.appendChild(i),e.appendChild(t),document.body.appendChild(e),e.addEventListener("click",n=>{n.target===e&&this.cancelAuth()});const s=n=>{"Escape"===n.key&&this.cancelAuth()};return document.addEventListener("keydown",s,{capture:!0}),this.overlayEl=e,this._iframeEl=i,this.overlayCleanup=()=>{document.removeEventListener("keydown",s,{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}cancelAuth(){this.pendingNonce=null,this.closeOverlay(),this.config.onCancel&&this.config.onCancel(),this.emit("cancelled",void 0)}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{}}loadPersistedVisitorId(){try{return"undefined"==typeof localStorage?null:localStorage.getItem(this.visitorIdKey)}catch{return null}}persistVisitorId(n){try{if("undefined"==typeof localStorage)return;n&&this.config.persistSession?localStorage.setItem(this.visitorIdKey,n):localStorage.removeItem(this.visitorIdKey)}catch{}}}async function r(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 a(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 o(n){return"bigint"==typeof n?"0x"+n.toString(16):n}function i(n){const e={...n};return void 0!==e.value&&(e.value=o(e.value)),void 0!==e.gas&&(e.gasLimit=o(e.gas),delete e.gas),void 0!==e.gasLimit&&(e.gasLimit=o(e.gasLimit)),void 0!==e.gasPrice&&(e.gasPrice=o(e.gasPrice)),void 0!==e.maxFeePerGas&&(e.maxFeePerGas=o(e.maxFeePerGas)),void 0!==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=o(e.maxPriorityFeePerGas)),void 0!==e.nonce&&(e.nonce=a(e.nonce,"nonce")),void 0!==e.chainId&&(e.chainId=a(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 s(n){let e="0x";for(let t=0;t<n.length;t++)e+=n[t].toString(16).padStart(2,"0");return e}async function c(n){const e=await r("/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}}var l=Object.freeze({__proto__:null,toViemAccount:async function(n,e){const t=e??await c(n),{evmAddress:a,vaultId:o}=t,{toAccount:l}=await Promise.resolve().then(function(){return $o});return l({address:a,async signMessage({message:e}){let t,a=!1;if("string"==typeof e)t=e,a=!1;else if(e&&void 0!==e.raw){const n=e.raw;t="string"==typeof n?n:s(n),a=!0}else if(e instanceof Uint8Array)t=s(e),a=!1;else{if("string"!=typeof(i=e)||!/^0x[0-9a-fA-F]*$/.test(i))throw new Error(`Unsupported message type: ${typeof e}. Expected string, Uint8Array, or hex string.`);t=e,a=!1}var i;return(await r("/sign-eth-message",{vaultId:o,message:t,raw:a},n)).signature},async signTypedData(e){const{domain:t,types:a,message:i}=e;return(await r("/sign-typed-message",{vaultId:o,domain:t,types:a,message:i},n)).signature},async signTransaction(e,t){const a=i(e);return(await r("/sign-eth-tx",{vaultId:o,transaction:a},n)).signedTransaction}})}});var u,h,d=Object.freeze({__proto__:null,toEthersWallet:async function(n,e,t){let a;try{a=await Promise.resolve().then(function(){return ow})}catch{throw new Error("ethers is required for toEthersWallet(). Install it with: npm install ethers")}const{AbstractSigner:o,resolveAddress:l}=a,u=t??await c(n);class h extends o{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=c(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 h(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:s(n);return(await r("/sign-eth-message",{vaultId:this._vaultId,message:e},this._config)).signature}async signTypedData(n,e,t){this._vaultId||await this.initialize();const a={...e};a&&a.EIP712Domain&&delete a.EIP712Domain;return(await r("/sign-typed-message",{vaultId:this._vaultId,domain:n,types:a,message:t},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,t=await this.getAddress();if(e&&e.toLowerCase()!==t.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 o=i(a);return(await r("/sign-eth-tx",{vaultId:this._vaultId,transaction:o,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;if(e.gasPrice||2===e.type)e.gasPrice&&(c=BigInt(e.gasPrice.toString()));else{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 h(n,e,{address:u.evmAddress,vaultId:u.vaultId})}});function p(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 f(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}"function"==typeof SuppressedError&&SuppressedError;class g{constructor(n,e,t){u.set(this,void 0),h.set(this,void 0),this.address=n,f(this,u,e,"f"),f(this,h,t,"f")}async signMessage(n){const e="string"==typeof n?n:s(n);return(await r("/sign-eth-message",{vaultId:p(this,u,"f"),message:e},p(this,h,"f"))).signature}async signTypedData(n,e,t){return(await r("/sign-typed-message",{vaultId:p(this,u,"f"),domain:n,types:e,message:t},p(this,h,"f"))).signature}async signTransaction(n){const e=i(n);return{rawTransaction:(await r("/sign-eth-tx",{vaultId:p(this,u,"f"),transaction:e},p(this,h,"f"))).signedTransaction}}}u=new WeakMap,h=new WeakMap;var m=Object.freeze({__proto__:null,EmblemWeb3Adapter:g,toWeb3Adapter:async function(n,e){const t=e??await c(n);return new g(t.evmAddress,t.vaultId,n)}});class b{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,t=btoa(String.fromCharCode(...e)),a=await r("/sign-solana-message",{vaultId:this.vaultId,message:t},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),t=await r("/sign-solana-transaction",{vaultId:this.vaultId,transactionToSign:e,broadcast:!1,versionedTransaction:!0},this.config),a=t.serializedSignedTransaction||t.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 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 t=this.serializeTransaction(n),a=await r("/sign-solana-transaction",{vaultId:this.vaultId,transactionToSign:t,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}}var y=Object.freeze({__proto__:null,EmblemSolanaSigner:b,toSolanaWeb3Signer:async function(n,e){const t=e??await c(n);return new b(n,t)},toSolanaKitSigner:async function(n,e){const t=e??await c(n);return new b(n,t)}});const v=1e8;class w{constructor(n,e){if(!e.btcPubkey)throw new Error("Bitcoin public key is required in vault info");this.publicKey=e.btcPubkey,this.addresses=e.btcAddresses??{p2pkh:"",p2wpkh:"",p2tr:""},this.config=n,this.vaultId=e.vaultId}async signPsbt(n,e){const{transactionType:t,toSignInputs:a}=e,o=a?.map(n=>({...n,tapLeafHashToSign:this.normalizeToHex(n.tapLeafHashToSign)}));return await r("/sign-btc-transaction",{vaultId:this.vaultId,psbt:n,transactionType:t,toSignInputs:o},this.config)}async signAllPsbts(n){const e=[];for(const{psbt:t,options:r}of n)e.push(await this.signPsbt(t,r));return e}getVaultId(){return this.vaultId}getPublicKey(){return this.publicKey}ownsAddress(n){return n===this.addresses.p2pkh||n===this.addresses.p2wpkh||n===this.addresses.p2tr}getAddress(n="p2wpkh"){switch(n){case"p2pkh":return this.addresses.p2pkh;case"p2wpkh":case"p2sh":default:return this.addresses.p2wpkh;case"p2tr":return this.addresses.p2tr}}normalizeToHex(n){if(null==n)return;if("string"==typeof n)return n;const e=n;let t="";for(let n=0;n<e.length;n++)t+=e[n].toString(16).padStart(2,"0");return t}}async function k(n){const e=await r("/vault/info",{},n);if(!e||!e.vaultId)throw new Error("Invalid vault info response: missing vaultId");if(!e.btcPubkey)throw new Error("Invalid vault info response: missing btcPubkey (Bitcoin public key)");return{vaultId:e.vaultId,address:e.address||"",evmAddress:e.evmAddress||"0x",btcPubkey:e.btcPubkey,btcAddresses:e.btcAddresses,created_by:e.created_by}}function A(n){return n/v}var E=Object.freeze({__proto__:null,SATS_PER_BTC:v,EmblemBitcoinSigner:w,toBitcoinSigner:async function(n,e){const t=e??await k(n);return new w(n,t)},fetchBitcoinVaultInfo:k,detectAddressType:function(n){return n.startsWith("bc1p")?"p2tr":n.startsWith("bc1q")?"p2wpkh":n.startsWith("1")?"p2pkh":n.startsWith("3")?"p2sh":n.startsWith("tb1p")?"p2tr":n.startsWith("tb1q")?"p2wpkh":n.startsWith("m")||n.startsWith("n")?"p2pkh":n.startsWith("2")?"p2sh":"unknown"},satsToBTC:A,btcToSats:function(n){return Math.round(n*v)},formatSats:function(n){return`${n.toLocaleString()} sats (${A(n).toFixed(8)} BTC)`},estimateTransactionSize:function(n,e,t="p2wpkh"){let r;switch(t){case"p2pkh":r=148;break;case"p2tr":r=58;break;default:r=68}return 10+n*r+31*e},calculateFee:function(n,e){return Math.ceil(n*e)},isDust:function(n,e="p2wpkh"){return n<("p2wpkh"===e||"p2tr"===e?294:546)}});const x="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0;function I(n){if(!Number.isSafeInteger(n)||n<0)throw new Error("positive integer expected, got "+n)}function P(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 N(n){if("function"!=typeof n||"function"!=typeof n.create)throw new Error("Hash should be wrapped by utils.createHasher");I(n.outputLen),I(n.blockLen)}function z(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 S(n,e){P(n);const t=e.outputLen;if(n.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function R(...n){for(let e=0;e<n.length;e++)n[e].fill(0)}function T(n){return new DataView(n.buffer,n.byteOffset,n.byteLength)}function B(n,e){return n<<32-e|n>>>e}function C(n,e){return n<<e|n>>>32-e>>>0}function O(n){return n<<24&4278190080|n<<8&16711680|n>>>8&65280|n>>>24&255}const U=(()=>68===new Uint8Array(new Uint32Array([287454020]).buffer)[0])()?n=>n:function(n){for(let e=0;e<n.length;e++)n[e]=O(n[e]);return n},F=(()=>"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex)(),L=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));const j=48,D=57,M=65,G=70,q=97,H=102;function K(n){return n>=j&&n<=D?n-j:n>=M&&n<=G?n-(M-10):n>=q&&n<=H?n-(q-10):void 0}function _(n){if("string"!=typeof n)throw new Error("string expected");return new Uint8Array((new TextEncoder).encode(n))}function V(n){return"string"==typeof n&&(n=_(n)),P(n),n}function Q(n){return"string"==typeof n&&(n=_(n)),P(n),n}function J(...n){let e=0;for(let t=0;t<n.length;t++){const r=n[t];P(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 ${}function W(n){const e=e=>n().update(V(e)).digest(),t=n();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>n(),e}function Z(n=32){if(x&&"function"==typeof x.getRandomValues)return x.getRandomValues(new Uint8Array(n));if(x&&"function"==typeof x.randomBytes)return Uint8Array.from(x.randomBytes(n));throw new Error("crypto.getRandomValues must be defined")}
2
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Y=BigInt(0),X=BigInt(1);function nn(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&"Uint8Array"===n.constructor.name}function en(n){if(!nn(n))throw new Error("Uint8Array expected")}function tn(n,e){if("boolean"!=typeof e)throw new Error(n+" boolean expected, got "+e)}function rn(n){const e=n.toString(16);return 1&e.length?"0"+e:e}function an(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);return""===n?Y:BigInt("0x"+n)}const on="function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex,sn=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function cn(n){if(en(n),on)return n.toHex();let e="";for(let t=0;t<n.length;t++)e+=sn[n[t]];return e}const ln=48,un=57,hn=65,dn=70,pn=97,fn=102;function gn(n){return n>=ln&&n<=un?n-ln:n>=hn&&n<=dn?n-(hn-10):n>=pn&&n<=fn?n-(pn-10):void 0}function mn(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);if(on)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=gn(n.charCodeAt(a)),o=gn(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 bn(n){return an(cn(n))}function yn(n){return en(n),an(cn(Uint8Array.from(n).reverse()))}function vn(n,e){return mn(n.toString(16).padStart(2*e,"0"))}function wn(n,e){return vn(n,e).reverse()}function kn(n,e,t){let r;if("string"==typeof e)try{r=mn(e)}catch(e){throw new Error(n+" must be hex string or Uint8Array, cause: "+e)}else{if(!nn(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 An(...n){let e=0;for(let t=0;t<n.length;t++){const r=n[t];en(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 En=n=>"bigint"==typeof n&&Y<=n;function xn(n,e,t){return En(n)&&En(e)&&En(t)&&e<=n&&n<t}function In(n,e,t,r){if(!xn(e,t,r))throw new Error("expected valid "+n+": "+t+" <= n < "+r+", got "+e)}const Pn=n=>(X<<BigInt(n))-X,Nn=n=>new Uint8Array(n),zn=n=>Uint8Array.from(n);const Sn={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||nn(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 Rn(n,e,t={}){const r=(e,t,r)=>{const a=Sn[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 Tn(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 Bn=BigInt(0),Cn=BigInt(1),On=BigInt(2),Un=BigInt(3),Fn=BigInt(4),Ln=BigInt(5),jn=BigInt(8);function Dn(n,e){const t=n%e;return t>=Bn?t:e+t}function Mn(n,e,t){let r=n;for(;e-- >Bn;)r*=r,r%=t;return r}function Gn(n,e){if(n===Bn)throw new Error("invert: expected non-zero number");if(e<=Bn)throw new Error("invert: expected positive modulus, got "+e);let t=Dn(n,e),r=e,a=Bn,o=Cn;for(;t!==Bn;){const n=r%t,e=a-o*(r/t);r=t,t=n,a=o,o=e}if(r!==Cn)throw new Error("invert: does not exist");return Dn(a,e)}function qn(n,e){const t=(n.ORDER+Cn)/Fn,r=n.pow(e,t);if(!n.eql(n.sqr(r),e))throw new Error("Cannot find square root");return r}function Hn(n,e){const t=(n.ORDER-Ln)/jn,r=n.mul(e,On),a=n.pow(r,t),o=n.mul(e,a),i=n.mul(n.mul(o,On),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 Kn(n){return n%Fn===Un?qn:n%jn===Ln?Hn:function(n){if(n<BigInt(3))throw new Error("sqrt is not defined for small field");let e=n-Cn,t=0;for(;e%On===Bn;)e/=On,t++;let r=On;const a=$n(n);for(;1===Qn(a,r);)if(r++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(1===t)return qn;let o=a.pow(r,e);const i=(e+Cn)/On;return function(n,r){if(n.is0(r))return r;if(1!==Qn(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=Cn<<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 _n=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Vn(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 Qn(n,e){const t=(n.ORDER-Cn)/On,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 Jn(n,e){void 0!==e&&I(e);const t=void 0!==e?e:n.toString(2).length;return{nBitLength:t,nByteLength:Math.ceil(t/8)}}function $n(n,e,t=!1,r={}){if(n<=Bn)throw new Error("invalid field: expected ORDER > 0, got "+n);const{nBitLength:a,nByteLength:o}=Jn(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:Pn(a),ZERO:Bn,ONE:Cn,create:e=>Dn(e,n),isValid:e=>{if("bigint"!=typeof e)throw new Error("invalid field element: expected bigint, got "+typeof e);return Bn<=e&&e<n},is0:n=>n===Bn,isOdd:n=>(n&Cn)===Cn,neg:e=>Dn(-e,n),eql:(n,e)=>n===e,sqr:e=>Dn(e*e,n),add:(e,t)=>Dn(e+t,n),sub:(e,t)=>Dn(e-t,n),mul:(e,t)=>Dn(e*t,n),pow:(n,e)=>function(n,e,t){if(t<Bn)throw new Error("invalid exponent, negatives unsupported");if(t===Bn)return n.ONE;if(t===Cn)return e;let r=n.ONE,a=e;for(;t>Bn;)t&Cn&&(r=n.mul(r,a)),a=n.sqr(a),t>>=Cn;return r}(s,n,e),div:(e,t)=>Dn(e*Gn(t,n),n),sqrN:n=>n*n,addN:(n,e)=>n+e,subN:(n,e)=>n-e,mulN:(n,e)=>n*e,inv:e=>Gn(e,n),sqrt:r.sqrt||(e=>(i||(i=Kn(n)),i(s,e))),toBytes:n=>t?wn(n,o):vn(n,o),fromBytes:n=>{if(n.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+n.length);return t?yn(n):bn(n)},invertBatch:n=>Vn(s,n),cmov:(n,e,t)=>t?e:n});return Object.freeze(s)}function Wn(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 Zn(n){const e=Wn(n);return e+Math.ceil(e/2)}function Yn(n,e,t){return n&e^~n&t}function Xn(n,e,t){return n&e^n&t^e&t}class ne extends ${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=T(this.buffer)}update(n){z(this),P(n=V(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=T(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){z(this),S(n,this),this.finished=!0;const{buffer:e,view:t,blockLen:r,isLE:a}=this;let{pos:o}=this;e[o++]=128,R(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=T(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 ee=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),te=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),re=BigInt(2**32-1),ae=BigInt(32);function oe(n,e=!1){return e?{h:Number(n&re),l:Number(n>>ae&re)}:{h:0|Number(n>>ae&re),l:0|Number(n&re)}}function ie(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}=oe(n[o],e);[r[o],a[o]]=[t,i]}return[r,a]}const se=(n,e,t)=>n>>>t,ce=(n,e,t)=>n<<32-t|e>>>t,le=(n,e,t)=>n>>>t|e<<32-t,ue=(n,e,t)=>n<<32-t|e>>>t,he=(n,e,t)=>n<<64-t|e>>>t-32,de=(n,e,t)=>n>>>t-32|e<<64-t;function pe(n,e,t,r){const a=(e>>>0)+(r>>>0);return{h:n+t+(a/2**32|0)|0,l:0|a}}const fe=(n,e,t)=>(n>>>0)+(e>>>0)+(t>>>0),ge=(n,e,t,r)=>e+t+r+(n/2**32|0)|0,me=(n,e,t,r)=>(n>>>0)+(e>>>0)+(t>>>0)+(r>>>0),be=(n,e,t,r,a)=>e+t+r+a+(n/2**32|0)|0,ye=(n,e,t,r,a)=>(n>>>0)+(e>>>0)+(t>>>0)+(r>>>0)+(a>>>0),ve=(n,e,t,r,a,o)=>e+t+r+a+o+(n/2**32|0)|0,we=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]),ke=new Uint32Array(64);class Ae extends ne{constructor(n=32){super(64,n,8,!1),this.A=0|ee[0],this.B=0|ee[1],this.C=0|ee[2],this.D=0|ee[3],this.E=0|ee[4],this.F=0|ee[5],this.G=0|ee[6],this.H=0|ee[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)ke[t]=n.getUint32(e,!1);for(let n=16;n<64;n++){const e=ke[n-15],t=ke[n-2],r=B(e,7)^B(e,18)^e>>>3,a=B(t,17)^B(t,19)^t>>>10;ke[n]=a+ke[n-7]+r+ke[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+(B(i,6)^B(i,11)^B(i,25))+Yn(i,s,c)+we[n]+ke[n]|0,u=(B(t,2)^B(t,13)^B(t,22))+Xn(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(){R(ke)}destroy(){this.set(0,0,0,0,0,0,0,0),R(this.buffer)}}const Ee=(()=>ie(["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))))(),xe=(()=>Ee[0])(),Ie=(()=>Ee[1])(),Pe=new Uint32Array(80),Ne=new Uint32Array(80);class ze extends ne{constructor(n=64){super(128,n,16,!1),this.Ah=0|te[0],this.Al=0|te[1],this.Bh=0|te[2],this.Bl=0|te[3],this.Ch=0|te[4],this.Cl=0|te[5],this.Dh=0|te[6],this.Dl=0|te[7],this.Eh=0|te[8],this.El=0|te[9],this.Fh=0|te[10],this.Fl=0|te[11],this.Gh=0|te[12],this.Gl=0|te[13],this.Hh=0|te[14],this.Hl=0|te[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:h,Gh:d,Gl:p,Hh:f,Hl:g}=this;return[n,e,t,r,a,o,i,s,c,l,u,h,d,p,f,g]}set(n,e,t,r,a,o,i,s,c,l,u,h,d,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|h,this.Gh=0|d,this.Gl=0|p,this.Hh=0|f,this.Hl=0|g}process(n,e){for(let t=0;t<16;t++,e+=4)Pe[t]=n.getUint32(e),Ne[t]=n.getUint32(e+=4);for(let n=16;n<80;n++){const e=0|Pe[n-15],t=0|Ne[n-15],r=le(e,t,1)^le(e,t,8)^se(e,0,7),a=ue(e,t,1)^ue(e,t,8)^ce(e,t,7),o=0|Pe[n-2],i=0|Ne[n-2],s=le(o,i,19)^he(o,i,61)^se(o,0,6),c=ue(o,i,19)^de(o,i,61)^ce(o,i,6),l=me(a,c,Ne[n-7],Ne[n-16]),u=be(l,r,s,Pe[n-7],Pe[n-16]);Pe[n]=0|u,Ne[n]=0|l}let{Ah:t,Al:r,Bh:a,Bl:o,Ch:i,Cl:s,Dh:c,Dl:l,Eh:u,El:h,Fh:d,Fl:p,Gh:f,Gl:g,Hh:m,Hl:b}=this;for(let n=0;n<80;n++){const e=le(u,h,14)^le(u,h,18)^he(u,h,41),y=ue(u,h,14)^ue(u,h,18)^de(u,h,41),v=u&d^~u&f,w=ye(b,y,h&p^~h&g,Ie[n],Ne[n]),k=ve(w,m,e,v,xe[n],Pe[n]),A=0|w,E=le(t,r,28)^he(t,r,34)^he(t,r,39),x=ue(t,r,28)^de(t,r,34)^de(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|d,g=0|p,d=0|u,p=0|h,({h:u,l:h}=pe(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=fe(A,x,P);t=ge(N,k,E,I),r=0|N}({h:t,l:r}=pe(0|this.Ah,0|this.Al,0|t,0|r)),({h:a,l:o}=pe(0|this.Bh,0|this.Bl,0|a,0|o)),({h:i,l:s}=pe(0|this.Ch,0|this.Cl,0|i,0|s)),({h:c,l:l}=pe(0|this.Dh,0|this.Dl,0|c,0|l)),({h:u,l:h}=pe(0|this.Eh,0|this.El,0|u,0|h)),({h:d,l:p}=pe(0|this.Fh,0|this.Fl,0|d,0|p)),({h:f,l:g}=pe(0|this.Gh,0|this.Gl,0|f,0|g)),({h:m,l:b}=pe(0|this.Hh,0|this.Hl,0|m,0|b)),this.set(t,r,a,o,i,s,c,l,u,h,d,p,f,g,m,b)}roundClean(){R(Pe,Ne)}destroy(){R(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const Se=W(()=>new Ae),Re=W(()=>new ze);class Te extends ${constructor(n,e){super(),this.finished=!1,this.destroyed=!1,N(n);const t=V(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),R(a)}update(n){return z(this),this.iHash.update(n),this}digestInto(n){z(this),P(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 Be=(n,e,t)=>new Te(n,e).update(t).digest();Be.create=(n,e)=>new Te(n,e);const Ce=BigInt(0),Oe=BigInt(1);function Ue(n,e){const t=e.negate();return n?t:e}function Fe(n,e){if(!Number.isSafeInteger(n)||n<=0||n>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+n)}function Le(n,e){Fe(n,e);const t=2**n;return{windows:Math.ceil(e/n)+1,windowSize:2**(n-1),mask:Pn(n),maxNumber:t,shiftBy:BigInt(n)}}function je(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+=Oe);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 De=new WeakMap,Me=new WeakMap;function Ge(n){return Me.get(n)||1}function qe(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>Y;n>>=X,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=Pn(c),u=new Array(Number(l)+1).fill(i);let h=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(h=h.add(e),0!==n)for(let n=0;n<c;n++)h=h.double()}return h}function He(n){return Rn(n.Fp,_n.reduce((n,e)=>(n[e]="function",n),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"})),Rn(n,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Jn(n.n,n.nBitLength),...n,p:n.Fp.ORDER})}function Ke(n){void 0!==n.lowS&&tn("lowS",n.lowS),void 0!==n.prehash&&tn("prehash",n.prehash)}class _e extends Error{constructor(n=""){super(n)}}const Ve={Err:_e,_tlv:{encode:(n,e)=>{const{Err:t}=Ve;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=rn(r);if(a.length/2&128)throw new t("tlv.encode: long form length too big");const o=r>127?rn(a.length/2|128):"";return rn(n)+o+a+e},decode(n,e){const{Err:t}=Ve;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}=Ve;if(n<Je)throw new e("integer: negative integers are not allowed");let t=rn(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}=Ve;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 bn(n)}},toSig(n){const{Err:e,_int:t,_tlv:r}=Ve,a=kn("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}=Ve,r=e.encode(2,t.encode(n.r))+e.encode(2,t.encode(n.s));return e.encode(48,r)}};function Qe(n,e){return cn(vn(n,e))}const Je=BigInt(0),$e=BigInt(1);BigInt(2);const We=BigInt(3),Ze=BigInt(4);function Ye(n){const e=function(n){const e=He(n);Rn(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=$n(e.n,e.nBitLength),a=e.toBytes||((n,e,r)=>{const a=e.toAffine();return An(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,We),Ze),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(nn(n)&&(n=cn(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:bn(kn("private key",n,r))}catch(e){throw new Error("invalid private key, expected hex or "+r+" bytes, got "+typeof n)}return a&&(i=Dn(i,o)),In("private key",i,$e,o),i}function h(n){if(!(n instanceof f))throw new Error("ProjectivePoint expected")}const d=Tn((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=Tn(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=Vn(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(kn("pointHex",n)));return e.assertValidity(),e}static fromPrivateKey(n){return f.BASE.multiply(u(n))}static msm(n,e){return qe(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){h(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,We),{px:o,py:i,pz:s}=this;let c=t.ZERO,l=t.ZERO,u=t.ZERO,h=t.mul(o,o),d=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(d,l),l=t.add(d,l),l=t.mul(c,l),c=t.mul(g,c),u=t.mul(a,u),p=t.mul(n,p),g=t.sub(h,p),g=t.mul(n,g),g=t.add(g,u),u=t.add(h,h),h=t.add(u,h),h=t.add(h,p),h=t.mul(h,g),l=t.add(l,h),p=t.mul(i,s),p=t.add(p,p),h=t.mul(p,g),c=t.sub(c,h),u=t.mul(p,d),u=t.add(u,u),u=t.add(u,u),new f(c,l,u)}add(n){h(n);const{px:r,py:a,pz:o}=this,{px:i,py:s,pz:c}=n;let l=t.ZERO,u=t.ZERO,d=t.ZERO;const p=e.a,g=t.mul(e.b,We);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),d=t.mul(p,w),l=t.mul(g,y),d=t.add(l,d),l=t.sub(b,d),d=t.add(b,d),u=t.mul(l,d),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),d=t.mul(k,d),d=t.add(d,m),new f(l,u,d)}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;In("scalar",n,Je,a);const o=f.ZERO;if(n===Je)return o;if(this.is0()||n===$e)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,h=o,d=this;for(;s>Je||l>Je;)s&$e&&(u=u.add(d)),l&$e&&(h=h.add(d)),d=d.double(),s>>=$e,l>>=$e;return i&&(u=u.negate()),c&&(h=h.negate()),h=new f(t.mul(h.px,r.beta),h.py,h.pz),u.add(h)}multiply(n){const{endo:r,n:a}=e;let o,i;if(In("scalar",n,$e,a),r){const{k1neg:e,k1:a,k2neg:s,k2:c}=r.splitScalar(n);let{p:l,f:u}=this.wNAF(a),{p:h,f:d}=this.wNAF(c);l=b.constTimeNegate(e,l),h=b.constTimeNegate(s,h),h=new f(t.mul(h.px,r.beta),h.py,h.pz),o=l.add(h),i=u.add(d)}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!==Je&&e!==$e&&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 d(this,n)}isTorsionFree(){const{h:n,isTorsionFree:t}=e;if(n===$e)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===$e?this:t?t(f,this):this.multiplyUnsafe(e.h)}toRawBytes(n=!0){return tn("isCompressed",n),this.assertValidity(),a(f,this,n)}toHex(n=!0){return tn("isCompressed",n),cn(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:Ue,hasPrecomputes:n=>1!==Ge(n),unsafeLadder(n,e,t=y.ZERO){let r=n;for(;e>Ce;)e&Oe&&(t=t.add(r)),r=r.double(),e>>=Oe;return t},precomputeWindow(n,e){const{windows:t,windowSize:r}=Le(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=Le(n,v);for(let n=0;n<o.windows;n++){const{nextN:i,offset:s,isZero:c,isNeg:l,isNegF:u,offsetF:h}=je(t,n,o);t=i,c?a=a.add(Ue(u,e[h])):r=r.add(Ue(l,e[s]))}return{p:r,f:a}},wNAFUnsafe(n,e,t,r=y.ZERO){const a=Le(n,v);for(let n=0;n<a.windows&&t!==Ce;n++){const{nextN:o,offset:i,isZero:s,isNeg:c}=je(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=De.get(e);return r||(r=this.precomputeWindow(e,n),1!==n&&De.set(e,t(r))),r},wNAFCached(n,e,t){const r=Ge(n);return this.wNAF(r,this.getPrecomputes(r,n,t),e)},wNAFCachedUnsafe(n,e,t,r){const a=Ge(n);return 1===a?this.unsafeLadder(n,e,r):this.wNAFUnsafe(a,this.getPrecomputes(a,n,t),e,r)},setWindowSize(n,e){Fe(e,v),Me.set(n,e),De.delete(n)}});var y,v;return{CURVE:e,ProjectivePoint:f,normPrivateKeyToScalar:u,weierstrassEquation:i,isWithinCurveOrder:function(n){return xn(n,$e,e.n)}}}function Xe(n){const e=function(n){const e=He(n);return Rn(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 Dn(n,r)}function l(n){return Gn(n,r)}const{ProjectivePoint:u,normPrivateKeyToScalar:h,weierstrassEquation:d,isWithinCurveOrder:p}=Ye({...e,toBytes(n,e,r){const a=e.toAffine(),o=t.toBytes(a.x),i=An;return tn("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=bn(a);if(!xn(n,$e,t.ORDER))throw new Error("Point is not on curve");const e=d(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&$e)===$e)&&(o=t.neg(o)),{x:n,y:o}}}});function f(n){return n>r>>$e}const g=(n,e,t)=>bn(n.slice(e,t));class m{constructor(n,e,t){In("r",n,$e,r),In("s",e,$e,r),this.r=n,this.s=e,null!=t&&(this.recovery=t),Object.freeze(this)}static fromCompact(n){const e=a;return n=kn("compactSignature",n,2*e),new m(g(n,0,e),g(n,e,2*e))}static fromDER(n){const{r:e,s:t}=Ve.toSig(kn("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(kn("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 h=1&o?"03":"02",d=u.fromHex(h+Qe(s,t.BYTES)),p=l(s),f=c(-i*p),g=c(a*p),m=u.BASE.multiplyAndAddUnsafe(d,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 mn(this.toDERHex())}toDERHex(){return Ve.hexFromSig(this)}toCompactRawBytes(){return mn(this.toCompactHex())}toCompactHex(){const n=a;return Qe(this.r,n)+Qe(this.s,n)}}const b={isValidPrivateKey(n){try{return h(n),!0}catch(n){return!1}},normPrivateKeyToScalar:h,randomPrivateKey:()=>{const n=Zn(e.n);return function(n,e,t=!1){const r=n.length,a=Wn(e),o=Zn(e);if(r<16||r<o||r>1024)throw new Error("expected "+o+"-1024 bytes of input, got "+r);const i=Dn(t?yn(n):bn(n),e-Cn)+Cn;return t?wn(i,a):vn(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=kn("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=bn(n),t=8*n.length-o;return t>0?e>>BigInt(t):e},w=e.bits2int_modN||function(n){return c(v(n))},k=Pn(o);function A(n){return In("num < 2^"+o,n,Je,k),vn(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:d,extraEntropy:g}=a;null==s&&(s=!0),n=kn("msgHash",n),Ke(a),d&&(n=kn("prehashed msgHash",o(n)));const b=w(n),y=h(r),k=[A(y),A(b)];if(null!=g&&!1!==g){const n=!0===g?i(t.BYTES):g;k.push(kn("extraEntropy",n))}const E=An(...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===Je)return;const o=c(t*c(I+a*y));if(o===Je)return;let i=(r.x===a?0:2)|Number(r.y&$e),h=o;return s&&f(o)&&(h=function(n){return f(n)?c(-n):n}(o),i^=1),new m(a,h,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(h(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=Nn(n),a=Nn(n),o=0;const i=()=>{r.fill(1),a.fill(0),o=0},s=(...n)=>t(a,r,...n),c=(n=Nn(0))=>{a=s(zn([0]),n),r=s(),0!==n.length&&(a=s(zn([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 An(...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=kn("msgHash",t),r=kn("publicKey",r);const{lowS:i,prehash:s,format:h}=a;if(Ke(a),"strict"in a)throw new Error("options.strict was renamed to lowS");if(void 0!==h&&"compact"!==h&&"der"!==h)throw new Error("format must be compact or der");const d="string"==typeof o||nn(o),p=!d&&!h&&"object"==typeof o&&null!==o&&"bigint"==typeof o.r&&"bigint"==typeof o.s;if(!d&&!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)),d){try{"compact"!==h&&(f=m.fromDER(o))}catch(n){if(!(n instanceof Ve.Err))throw n}f||"der"===h||(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 nt(n){return{hash:n,hmac:(e,...t)=>Be(n,e,J(...t)),randomBytes:Z}}const et=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),tt=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),rt=BigInt(0),at=BigInt(1),ot=BigInt(2),it=(n,e)=>(n+e/ot)/e;const st=$n(et,void 0,void 0,{sqrt:function(n){const e=et,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,h=Mn(u,t,e)*u%e,d=Mn(h,t,e)*u%e,p=Mn(d,ot,e)*l%e,f=Mn(p,a,e)*p%e,g=Mn(f,o,e)*f%e,m=Mn(g,s,e)*g%e,b=Mn(m,c,e)*m%e,y=Mn(b,s,e)*g%e,v=Mn(y,t,e)*u%e,w=Mn(v,i,e)*f%e,k=Mn(w,r,e)*l%e,A=Mn(k,ot,e);if(!st.eql(st.sqr(A),n))throw new Error("Cannot find square root");return A}}),ct=function(n,e){const t=e=>Xe({...n,...nt(e)});return{...t(e),create:t}}({a:rt,b:BigInt(7),Fp:st,n:tt,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:n=>{const e=tt,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-at*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=t,i=BigInt("0x100000000000000000000000000000000"),s=it(o*n,e),c=it(-r*n,e);let l=Dn(n-s*t-c*a,e),u=Dn(-s*r-c*o,e);const h=l>i,d=u>i;if(h&&(l=e-l),d&&(u=e-u),l>i||u>i)throw new Error("splitScalar: Endomorphism failed, k="+n);return{k1neg:h,k1:l,k2neg:d,k2:u}}}},Se),lt=Uint8Array.from([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),ut=(()=>Uint8Array.from(new Array(16).fill(0).map((n,e)=>e)))(),ht=(()=>ut.map(n=>(9*n+5)%16))(),dt=(()=>{const n=[[ut],[ht]];for(let e=0;e<4;e++)for(let t of n)t.push(t[e].map(n=>lt[n]));return n})(),pt=(()=>dt[0])(),ft=(()=>dt[1])(),gt=[[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)),mt=pt.map((n,e)=>n.map(n=>gt[e][n])),bt=ft.map((n,e)=>n.map(n=>gt[e][n])),yt=Uint32Array.from([0,1518500249,1859775393,2400959708,2840853838]),vt=Uint32Array.from([1352829926,1548603684,1836072691,2053994217,0]);function wt(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 kt=new Uint32Array(16);class At extends ne{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)kt[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,h=u;for(let n=0;n<5;n++){const e=4-n,d=yt[n],p=vt[n],f=pt[n],g=ft[n],m=mt[n],b=bt[n];for(let e=0;e<16;e++){const r=C(t+wt(n,a,i,c)+kt[f[e]]+d,m[e])+u|0;t=u,u=c,c=0|C(i,10),i=a,a=r}for(let n=0;n<16;n++){const t=C(r+wt(e,o,s,l)+kt[g[n]]+p,b[n])+h|0;r=h,h=l,l=0|C(s,10),s=o,o=t}}this.set(this.h1+i+l|0,this.h2+c+h|0,this.h3+u+r|0,this.h4+t+o|0,this.h0+a+s|0)}roundClean(){R(kt)}destroy(){this.destroyed=!0,R(this.buffer),this.set(0,0,0,0,0)}}const Et=W(()=>new At);
3
- /*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */function xt(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&"Uint8Array"===n.constructor.name}function It(n,e){return!!Array.isArray(e)&&(0===e.length||(n?e.every(n=>"string"==typeof n):e.every(n=>Number.isSafeInteger(n))))}function Pt(n){if("function"!=typeof n)throw new Error("function expected");return!0}function Nt(n,e){if("string"!=typeof e)throw new Error(`${n}: string expected`);return!0}function zt(n){if(!Number.isSafeInteger(n))throw new Error(`invalid integer: ${n}`)}function St(n){if(!Array.isArray(n))throw new Error("array expected")}function Rt(n,e){if(!It(!0,e))throw new Error(`${n}: array of strings expected`)}function Tt(n,e){if(!It(!1,e))throw new Error(`${n}: array of numbers expected`)}function Bt(...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 Ct(n){const e="string"==typeof n?n.split(""):n,t=e.length;Rt("alphabet",e);const r=new Map(e.map((n,e)=>[n,e]));return{encode:r=>(St(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=>(St(e),e.map(e=>{Nt("alphabet.decode",e);const t=r.get(e);if(void 0===t)throw new Error(`Unknown letter: "${e}". Allowed: ${n}`);return t}))}}function Ot(n=""){return Nt("join",n),{encode:e=>(Rt("join.decode",e),e.join(n)),decode:e=>(Nt("join.decode",e),e.split(n))}}function Ut(n,e="="){return zt(n),Nt("padding",e),{encode(t){for(Rt("padding.encode",t);t.length*n%8;)t.push(e);return t},decode(t){Rt("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 Ft(n){return Pt(n),{encode:n=>n,decode:e=>n(e)}}function Lt(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(St(n),!n.length)return[];let r=0;const a=[],o=Array.from(n,n=>{if(zt(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 h=Math.floor(u);if(o[a]=h,!Number.isSafeInteger(h)||h*t+n!==l)throw new Error("convertRadix: carry overflow");s&&(h?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 jt=(n,e)=>0===e?n:jt(e,n%e),Dt=(n,e)=>n+(e-jt(n,e)),Mt=(()=>{let n=[];for(let e=0;e<40;e++)n.push(2**e);return n})();function Gt(n,e,t,r){if(St(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(Dt(e,t)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${t} carryBits=${Dt(e,t)}`);let a=0,o=0;const i=Mt[e],s=Mt[t]-1,c=[];for(const r of n){if(zt(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=Mt[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 qt(n){zt(n);return{encode:e=>{if(!xt(e))throw new Error("radix.encode input should be Uint8Array");return Lt(Array.from(e),256,n)},decode:e=>(Tt("radix.decode",e),Uint8Array.from(Lt(e,n,256)))}}function Ht(n,e=!1){if(zt(n),n<=0||n>32)throw new Error("radix2: bits should be in (0..32]");if(Dt(8,n)>32||Dt(n,8)>32)throw new Error("radix2: carry overflow");return{encode:t=>{if(!xt(t))throw new Error("radix2.encode input should be Uint8Array");return Gt(Array.from(t),8,n,!e)},decode:t=>(Tt("radix2.decode",t),Uint8Array.from(Gt(t,n,8,e)))}}function Kt(n){return Pt(n),function(...e){try{return n.apply(null,e)}catch(n){}}}function _t(n,e){return zt(n),Pt(e),{encode(t){if(!xt(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(!xt(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 Vt={alphabet:Ct,chain:Bt,checksum:_t,convertRadix:Lt,convertRadix2:Gt,radix:qt,radix2:Ht,join:Ot,padding:Ut};Bt(Ht(4),Ct("0123456789ABCDEF"),Ot("")),Bt(Ht(5),Ct("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),Ut(5),Ot("")),Bt(Ht(5),Ct("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),Ot("")),Bt(Ht(5),Ct("0123456789ABCDEFGHIJKLMNOPQRSTUV"),Ut(5),Ot("")),Bt(Ht(5),Ct("0123456789ABCDEFGHIJKLMNOPQRSTUV"),Ot("")),Bt(Ht(5),Ct("0123456789ABCDEFGHJKMNPQRSTVWXYZ"),Ot(""),Ft(n=>n.toUpperCase().replace(/O/g,"0").replace(/[IL]/g,"1")));const Qt=(()=>"function"==typeof Uint8Array.from([]).toBase64&&"function"==typeof Uint8Array.fromBase64)();Qt||Bt(Ht(6),Ct("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),Ut(6),Ot("")),Bt(Ht(6),Ct("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),Ot("")),Qt||Bt(Ht(6),Ct("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),Ut(6),Ot("")),Bt(Ht(6),Ct("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"),Ot(""));const Jt=n=>Bt(qt(58),Ct(n),Ot("")),$t=Jt("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");Jt("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"),Jt("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz");const Wt=Bt(Ct("qpzry9x8gf2tvdw0s3jn54khce6mua7l"),Ot("")),Zt=[996825010,642813549,513874426,1027748829,705979059];function Yt(n){const e=n>>25;let t=(33554431&n)<<5;for(let n=0;n<Zt.length;n++)1==(e>>n&1)&&(t^=Zt[n]);return t}function Xt(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=Yt(a)^t>>5}a=Yt(a);for(let e=0;e<r;e++)a=Yt(a)^31&n.charCodeAt(e);for(let n of e)a=Yt(a)^n;for(let n=0;n<6;n++)a=Yt(a);return a^=t,Wt.encode(Gt([a%Mt[30]],30,5,!1))}function nr(n){const e="bech32"===n?1:734539939,t=Ht(5),r=t.decode,a=t.encode,o=Kt(r);function i(n,t,r=90){Nt("bech32.encode prefix",n),xt(t)&&(t=Array.from(t)),Tt("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=Xt(i,t,e);return`${i}1${Wt.encode(t)}${s}`}function s(n,t=90){Nt("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=Wt.decode(s).slice(0,-6),l=Xt(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:Kt(s),fromWords:r,fromWordsUnsafe:o,toWords:a}}nr("bech32"),nr("bech32m");(()=>"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex)()||Bt(Ht(4),Ct("0123456789abcdef"),Ot(""),Ft(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 er=ct.ProjectivePoint,tr=(n=>Bt(_t(4,e=>n(n(e))),$t))(Se);function rr(n){P(n);const e=0===n.length?"0":function(n){if(P(n),F)return n.toHex();let e="";for(let t=0;t<n.length;t++)e+=L[n[t]];return e}(n);return BigInt("0x"+e)}function ar(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(F)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=K(n.charCodeAt(a)),o=K(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 or=_("Bitcoin seed"),ir={private:76066276,public:76067358},sr=2147483648,cr=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 T(e).setUint32(0,n,!1),e};class lr{get fingerprint(){if(!this.pubHash)throw new Error("No publicKey set!");return T(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 tr.encode(this.serialize(this.versions.private,J(new Uint8Array([0]),n)))}get publicExtendedKey(){if(!this.pubKey)throw new Error("No public key");return tr.encode(this.serialize(this.versions.public,this.pubKey))}static fromMasterSeed(n,e=ir){if(P(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=Be(Re,or,n);return new lr({versions:e,chainCode:t.slice(32),privateKey:t.slice(0,32)})}static fromExtendedKey(n,e=ir){const t=tr.decode(n),r=T(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 lr(s?{...o,privateKey:i.slice(1)}:{...o,publicKey:i})}static fromJSON(n){return lr.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||ir,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(!ct.utils.isValidPrivateKey(n.privateKey))throw new Error("Invalid private key");this.privKey="bigint"==typeof n.privateKey?n.privateKey:rr(n.privateKey),this.privKeyBytes=ar(this.privKey),this.pubKey=ct.getPublicKey(n.privateKey,!0)}else{if(!n.publicKey)throw new Error("HDKey: no public or private key provided");this.pubKey=er.fromHex(n.publicKey).toRawBytes(!0)}var e;this.pubHash=(e=this.pubKey,Et(Se(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>=sr)throw new Error("Invalid index");"'"===e[2]&&(a+=sr),t=t.deriveChild(a)}return t}deriveChild(n){if(!this.pubKey||!this.chainCode)throw new Error("No publicKey or chainCode set");let e=cr(n);if(n>=sr){const n=this.privateKey;if(!n)throw new Error("Could not derive hardened child key");e=J(new Uint8Array([0]),n,e)}else e=J(this.pubKey,e);const t=Be(Re,this.chainCode,e),r=rr(t.slice(0,32)),a=t.slice(32);if(!ct.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=Dn(this.privKey+r,ct.CURVE.n);if(!ct.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=er.fromHex(this.pubKey).add(er.fromPrivateKey(r));if(n.equals(er.ZERO))throw new Error("The tweak was equal to negative P, which made the result key invalid");o.publicKey=n.toRawBytes(!0)}return new lr(o)}catch(e){return this.deriveChild(n+1)}}sign(n){if(!this.privateKey)throw new Error("No privateKey set!");return P(n,32),ct.sign(n,this.privKey).toCompactRawBytes()}verify(n,e){if(P(n,32),P(e,64),!this.publicKey)throw new Error("No publicKey set!");let t;try{t=ct.Signature.fromCompact(e)}catch(n){return!1}return ct.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 P(e,33),J(cr(n),new Uint8Array([this.depth]),cr(this.parentFingerprint),cr(this.index),this.chainCode,e)}}const ur="2.43.4";let hr=({docsBaseUrl:n,docsPath:e="",docsSlug:t})=>e?`${n??"https://viem.sh"}${e}${t?`#${t}`:""}`:void 0,dr=`viem@${ur}`;class pr extends Error{constructor(n,e={}){const t=e.cause instanceof pr?e.cause.details:e.cause?.message?e.cause.message:e.details,r=e.cause instanceof pr&&e.cause.docsPath||e.docsPath,a=hr?.({...e,docsPath:r});super([n||"An error occurred.","",...e.metaMessages?[...e.metaMessages,""]:[],...a?[`Docs: ${a}`]:[],...t?[`Details: ${t}`]:[],...dr?[`Version: ${dr}`]:[]].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=ur}walk(n){return fr(this,n)}}function fr(n,e){return e?.(n)?n:n&&"object"==typeof n&&"cause"in n&&void 0!==n.cause?fr(n.cause,e):e?null:n}class gr extends pr{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 mr extends pr{constructor({givenSize:n,maxSize:e}){super(`Size cannot exceed ${e} bytes. Given size: ${n} bytes.`,{name:"SizeOverflowError"})}}function br(n,{strict:e=!0}={}){return!!n&&("string"==typeof n&&(e?/^0x[0-9a-fA-F]*$/.test(n):n.startsWith("0x")))}function yr(n){return br(n,{strict:!1})?Math.ceil((n.length-2)/2):n.length}function vr(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 wr extends pr{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 kr extends pr{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 Ar(n,{dir:e,size:t=32}={}){return"string"==typeof n?Er(n,{dir:e,size:t}):function(n,{dir:e,size:t=32}={}){if(null===t)return n;if(n.length>t)throw new kr({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 Er(n,{dir:e,size:t=32}={}){if(null===t)return n;const r=n.replace("0x","");if(r.length>2*t)throw new kr({size:Math.ceil(r.length/2),targetSize:t,type:"hex"});return`0x${r["right"===e?"padEnd":"padStart"](2*t,"0")}`}const xr=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function Ir(n,e={}){return"number"==typeof n||"bigint"==typeof n?zr(n,e):"string"==typeof n?Rr(n,e):"boolean"==typeof n?Pr(n,e):Nr(n,e)}function Pr(n,e={}){const t=`0x${Number(n)}`;return"number"==typeof e.size?(Lr(t,{size:e.size}),Ar(t,{size:e.size})):t}function Nr(n,e={}){let t="";for(let e=0;e<n.length;e++)t+=xr[n[e]];const r=`0x${t}`;return"number"==typeof e.size?(Lr(r,{size:e.size}),Ar(r,{dir:"right",size:e.size})):r}function zr(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 gr({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?Ar(s,{size:r}):s}const Sr=new TextEncoder;function Rr(n,e={}){return Nr(Sr.encode(n),e)}const Tr=new TextEncoder;function Br(n,e={}){return"number"==typeof n||"bigint"==typeof n?function(n,e){const t=zr(n,e);return Ur(t)}(n,e):"boolean"==typeof n?function(n,e={}){const t=new Uint8Array(1);if(t[0]=Number(n),"number"==typeof e.size)return Lr(t,{size:e.size}),Ar(t,{size:e.size});return t}(n,e):br(n)?Ur(n,e):Fr(n,e)}const Cr={zero:48,nine:57,A:65,F:70,a:97,f:102};function Or(n){return n>=Cr.zero&&n<=Cr.nine?n-Cr.zero:n>=Cr.A&&n<=Cr.F?n-(Cr.A-10):n>=Cr.a&&n<=Cr.f?n-(Cr.a-10):void 0}function Ur(n,e={}){let t=n;e.size&&(Lr(t,{size:e.size}),t=Ar(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=Or(r.charCodeAt(e++)),a=Or(r.charCodeAt(e++));if(void 0===t||void 0===a)throw new pr(`Invalid byte sequence ("${r[e-2]}${r[e-1]}" in "${r}").`);o[n]=16*t+a}return o}function Fr(n,e={}){const t=Tr.encode(n);return"number"==typeof e.size?(Lr(t,{size:e.size}),Ar(t,{dir:"right",size:e.size})):t}function Lr(n,{size:e}){if(yr(n)>e)throw new mr({givenSize:yr(n),maxSize:e})}function jr(n,e={}){const{signed:t}=e;e.size&&Lr(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 Dr(n,e={}){return Number(jr(n,e))}class Mr 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 Gr(n){const{source:e}=n,t=new Map,r=new Mr(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 qr=Gr({source:{async get(n){const{address:e,client:t}=n;return async function(n,{address:e,blockTag:t="latest",blockNumber:r}){return Dr(await n.request({method:"eth_getTransactionCount",params:[e,"bigint"==typeof r?zr(r):t]},{dedupe:Boolean(r)}))}(t,{address:e,blockTag:"pending"})},set(){}}});function Hr({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 ct.Signature(jr(n),jr(e)).toCompactHex()}${0===o?"1b":"1c"}`;return"hex"===t?i:Ur(i)}function Kr(n,e,t,r){N(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(I(o),I(i),I(s),o<1)throw new Error("iterations (c) should be >= 1");const c=Q(e),l=Q(t),u=new Uint8Array(i),h=Be.create(n,c),d=h._cloneInto().update(l);return{c:o,dkLen:i,asyncTick:s,DK:u,PRF:h,PRFSalt:d}}function _r(n,e,t,r){const{c:a,dkLen:o,DK:i,PRF:s,PRFSalt:c}=Kr(n,e,t,r);let l;const u=new Uint8Array(4),h=T(u),d=new Uint8Array(s.outputLen);for(let n=1,e=0;e<o;n++,e+=s.outputLen){const t=i.subarray(e,e+s.outputLen);h.setInt32(0,n,!1),(l=c._cloneInto(l)).update(u).digestInto(d),t.set(d.subarray(0,t.length));for(let n=1;n<a;n++){s._cloneInto(l).update(d).digestInto(d);for(let n=0;n<t.length;n++)t[n]^=d[n]}}return function(n,e,t,r,a){return n.destroy(),e.destroy(),r&&r.destroy(),R(a),t}(s,c,i,l,d)}function Vr(n){if("string"!=typeof n)throw new TypeError("invalid mnemonic type: "+typeof n);return n.normalize("NFKD")}function Qr(n,e=128){if(I(e),e%32!=0||e>256)throw new TypeError("Invalid entropy");return function(n,e){t=n,P(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)}),Vt.chain(Vt.checksum(1,Jr),Vt.radix2(11,!0),Vt.alphabet(n))}(e).encode(n);return r.join((n=>"あいこくしん"===n[0])(e)?" ":" ")}(Z(e/8),n)}const Jr=n=>{const e=8-n.length/4;return new Uint8Array([Se(n)[0]>>e<<e])};function $r(n,e=""){return _r(Re,function(n){const e=Vr(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=>Vr("mnemonic"+n))(e),{c:2048,dkLen:64})}class Wr extends pr{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 Zr=BigInt(0),Yr=BigInt(1),Xr=BigInt(2),na=BigInt(7),ea=BigInt(256),ta=BigInt(113),ra=[],aa=[],oa=[];for(let n=0,e=Yr,t=1,r=0;n<24;n++){[t,r]=[r,(2*t+3*r)%5],ra.push(2*(5*r+t)),aa.push((n+1)*(n+2)/2%64);let a=Zr;for(let n=0;n<7;n++)e=(e<<Yr^(e>>na)*ta)%ea,e&Xr&&(a^=Yr<<(Yr<<BigInt(n))-Yr);oa.push(a)}const ia=ie(oa,!0),sa=ia[0],ca=ia[1],la=(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),ua=(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 ha extends ${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,I(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(){U(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=la(o,i,1)^t[r],c=ua(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=aa[t],o=la(e,a,r),i=ua(e,a,r),s=ra[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]^=sa[r],n[1]^=ca[r]}R(t)}(this.state32,this.rounds),U(this.state32),this.posOut=0,this.pos=0}update(n){z(this),P(n=V(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){z(this,!1),P(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 I(n),this.xofInto(new Uint8Array(n))}digestInto(n){if(S(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,R(this.state)}_cloneInto(n){const{blockLen:e,suffix:t,outputLen:r,rounds:a,enableXOF:o}=this;return n||(n=new ha(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 da=(()=>{return n=1,e=136,t=32,W(()=>new ha(e,n,t));var n,e,t})();function pa(n,e){const t=e||"hex",r=da(br(n,{strict:!1})?Br(n):n);return"bytes"===t?r:Ir(r)}const fa=new Mr(8192);function ga(n,e){if(fa.has(`${n}.${e}`))return fa.get(`${n}.${e}`);const t=e?`${e}${n.toLowerCase()}`:n.substring(2).toLowerCase(),r=pa(Fr(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 fa.set(`${n}.${e}`,o),o}const ma=/^0x[a-fA-F0-9]{40}$/,ba=new Mr(8192);function ya(n,e){const{strict:t=!0}=e??{},r=`${n}.${t}`;if(ba.has(r))return ba.get(r);const a=!(!ma.test(n)||n.toLowerCase()!==n&&t&&ga(n)!==n);return ba.set(r,a),a}function va(n){if("string"==typeof n){if(!ya(n,{strict:!1}))throw new Wr({address:n});return{address:n,type:"json-rpc"}}if(!ya(n.address,{strict:!1}))throw new Wr({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 wa(n){return ga(`0x${pa(`0x${n.substring(4)}`).substring(26)}`)}let ka=!1;async function Aa({hash:n,privateKey:e,to:t="object"}){const{r:r,s:a,recovery:o}=ct.sign(n.slice(2),e.slice(2),{lowS:!0,extraEntropy:br(ka,{strict:!1})?Ur(ka):ka}),i={r:zr(r,{size:32}),s:zr(a,{size:32}),v:o?28n:27n,yParity:o};return"bytes"===t||"hex"===t?Hr({...i,to:t}):i}function Ea(n){return"string"==typeof n[0]?xa(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 xa(n){return`0x${n.reduce((n,e)=>n+e.replace("0x",""),"")}`}class Ia extends pr{constructor({offset:n}){super(`Offset \`${n}\` cannot be negative.`,{name:"NegativeOffsetError"})}}class Pa extends pr{constructor({length:n,position:e}){super(`Position \`${e}\` is out of bounds (\`0 < position < ${n}\`).`,{name:"PositionOutOfBoundsError"})}}class Na extends pr{constructor({count:n,limit:e}){super(`Recursive read limit of \`${e}\` exceeded (recursive read count: \`${n}\`).`,{name:"RecursiveReadLimitExceededError"})}}const za={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 Na({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(n){if(n<0||n>this.bytes.length-1)throw new Pa({length:this.bytes.length,position:n})},decrementPosition(n){if(n<0)throw new Ia({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 Ia({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 Sa(n,{recursiveReadLimit:e=8192}={}){const t=Object.create(za);return t.bytes=n,t.dataView=new DataView(n.buffer??n,n.byteOffset,n.byteLength),t.positionReadCount=new Map,t.recursiveReadLimit=e,t}function Ra(n,e="hex"){const t=Ta(n),r=Sa(new Uint8Array(t.length));return t.encode(r),"hex"===e?Nr(r.bytes):r.bytes}function Ta(n){return Array.isArray(n)?function(n){const e=n.reduce((n,e)=>n+e.length,0),t=Ba(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=>Ta(n))):function(n){const e="string"==typeof n?Ur(n):n,t=Ba(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 Ba(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 pr("Length is too large.")}function Ca(n){const{chainId:e,nonce:t,to:r}=n,a=n.contractAddress??n.address,o=pa(xa(["0x05",Ra([e?zr(e):"0x",a,t?zr(t):"0x"])]));return"bytes"===r?Ur(o):o}async function Oa(n){const{chainId:e,nonce:t,privateKey:r,to:a="object"}=n,o=n.contractAddress??n.address,i=await Aa({hash:Ca({address:o,chainId:e,nonce:t}),privateKey:r,to:a});return"object"===a?{address:o,chainId:e,nonce:t,...i}:i}function Ua(n,e){return pa(function(n){const e="string"==typeof n?Rr(n):"string"==typeof n.raw?n.raw:Nr(n.raw);return Ea([Rr(`Ethereum Signed Message:\n${yr(e)}`),e])}(n),e)}async function Fa({message:n,privateKey:e}){return await Aa({hash:Ua(n),privateKey:e,to:"hex"})}const La={ether:-9,wei:9};function ja(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,La[e])}function Da(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 Ma extends pr{constructor({v:n}){super(`Invalid \`v\` value "${n}". Expected 27 or 28.`,{name:"InvalidLegacyVError"})}}class Ga extends pr{constructor({transaction:n}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",Da(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 qa extends pr{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 Ha(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=>Ur(n)):n.blobs,a=[];for(const n of r)a.push(Uint8Array.from(e.blobToKzgCommitment(n)));return"bytes"===t?a:a.map(n=>Nr(n))}function Ka(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=>Ur(n)):n.blobs,a="string"==typeof n.commitments[0]?n.commitments.map(n=>Ur(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=>Nr(n))}const _a=Se;function Va(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=_a(br(n,{strict:!1})?Br(n):n);return"bytes"===t?r:Ir(r)}(e,"bytes");return a.set([t],0),"bytes"===r?a:Nr(a)}const Qa=4096,Ja=131072,$a=761855;class Wa extends pr{constructor({maxSize:n,size:e}){super("Blob size is too large.",{metaMessages:[`Max: ${n} bytes`,`Given: ${e} bytes`],name:"BlobSizeTooLargeError"})}}class Za extends pr{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}class Ya extends pr{constructor({hash:n,size:e}){super(`Versioned hash "${n}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${e}`],name:"InvalidVersionedHashSizeError"})}}class Xa extends pr{constructor({hash:n,version:e}){super(`Versioned hash "${n}" version is invalid.`,{metaMessages:["Expected: 1",`Received: ${e}`],name:"InvalidVersionedHashVersionError"})}}function no(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?Ur(n.data):n.data,r=yr(t);if(!r)throw new Za;if(r>$a)throw new Wa({maxSize:$a,size:r});const a=[];let o=!0,i=0;for(;o;){const n=Sa(new Uint8Array(Ja));let e=0;for(;e<Qa;){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=>Nr(n.bytes))}({data:e,to:r}),o=n.commitments??Ha({blobs:a,kzg:t,to:r}),i=n.proofs??Ka({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 eo=2n**256n-1n;class to extends pr{constructor({chainId:n}){super("number"==typeof n?`Chain ID "${n}" is invalid.`:"Chain ID is invalid.",{name:"InvalidChainIdError"})}}class ro extends pr{constructor({cause:n,maxFeePerGas:e}={}){super(`The fee cap (\`maxFeePerGas\`${e?` = ${ja(e)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:n,name:"FeeCapTooHighError"})}}Object.defineProperty(ro,"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 ao extends pr{constructor({cause:n,maxPriorityFeePerGas:e,maxFeePerGas:t}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${e?` = ${ja(e)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${t?` = ${ja(t)} gwei`:""}).`].join("\n"),{cause:n,name:"TipAboveFeeCapError"})}}function oo(n,e,t,{strict:r}={}){return br(n,{strict:!1})?function(n,e,t,{strict:r}={}){io(n,e);const a=`0x${n.replace("0x","").slice(2*(e??0),2*(t??n.length))}`;r&&so(a,e,t);return a}(n,e,t,{strict:r}):function(n,e,t,{strict:r}={}){io(n,e);const a=n.slice(e,t);r&&so(a,e,t);return a}(n,e,t,{strict:r})}function io(n,e){if("number"==typeof e&&e>0&&e>yr(n)-1)throw new wr({offset:e,position:"start",size:yr(n)})}function so(n,e,t){if("number"==typeof e&&"number"==typeof t&&yr(n)!==t-e)throw new wr({offset:t,position:"end",size:yr(n)})}function co(n){const{chainId:e,maxPriorityFeePerGas:t,maxFeePerGas:r,to:a}=n;if(e<=0)throw new to({chainId:e});if(a&&!ya(a))throw new Wr({address:a});if(r&&r>eo)throw new ro({maxFeePerGas:r});if(t&&r&&t>r)throw new ao({maxFeePerGas:r,maxPriorityFeePerGas:t})}function lo(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 qa({storageKey:a[n]});if(!ya(r,{strict:!1}))throw new Wr({address:r});e.push([r,a])}return e}function uo(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 Ga({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;co(n);const h=lo(l),d=[zr(t),a?zr(a):"0x",c?zr(c):"0x",s?zr(s):"0x",r?zr(r):"0x",o??"0x",i?zr(i):"0x",u??"0x",h,...ho(n,e)];return xa(["0x02",Ra(d)])}(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 to({chainId:e});if(o&&!ya(o))throw new Wr({address:o});if(t||a)throw new pr("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(r&&r>eo)throw new ro({maxFeePerGas:r})}(n);const u=lo(c),h=[zr(t),o?zr(o):"0x",l?zr(l):"0x",r?zr(r):"0x",i??"0x",s?zr(s):"0x",a??"0x",u,...ho(n,e)];return xa(["0x01",Ra(h)])}(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:h}=n;!function(n){const{blobVersionedHashes:e}=n;if(e){if(0===e.length)throw new Za;for(const n of e){const e=yr(n),t=Dr(oo(n,0,1));if(32!==e)throw new Ya({hash:n,size:e});if(1!==t)throw new Xa({hash:n,version:t})}}co(n)}(n);let d=n.blobVersionedHashes,p=n.sidecars;if(n.blobs&&(void 0===d||void 0===p)){const e="string"==typeof n.blobs[0]?n.blobs:n.blobs.map(n=>Nr(n)),t=n.kzg,r=Ha({blobs:e,kzg:t});if(void 0===d&&(d=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(Va({commitment:n,to:r,version:t}));return a}({commitments:r})),void 0===p){p=no({blobs:e,commitments:r,proofs:Ka({blobs:e,commitments:r,kzg:t})})}}const f=lo(u),g=[zr(t),a?zr(a):"0x",l?zr(l):"0x",c?zr(c):"0x",r?zr(r):"0x",o??"0x",i?zr(i):"0x",h??"0x",f,s?zr(s):"0x",d??[],...ho(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 xa(["0x03",Ra(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:h}=n;!function(n){const{authorizationList:e}=n;if(e)for(const n of e){const{chainId:e}=n,t=n.address;if(!ya(t))throw new Wr({address:t});if(e<0)throw new to({chainId:e})}co(n)}(n);const d=lo(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?Ir(n):"0x",o,r?Ir(r):"0x",...ho({},a)])}return e}(t);return xa(["0x04",Ra([zr(r),o?zr(o):"0x",l?zr(l):"0x",c?zr(c):"0x",a?zr(a):"0x",i??"0x",s?zr(s):"0x",h??"0x",d,p,...ho(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&&!ya(o))throw new Wr({address:o});if(void 0!==e&&e<=0)throw new to({chainId:e});if(t||a)throw new pr("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(r&&r>eo)throw new ro({maxFeePerGas:r})}(n);let l=[o?zr(o):"0x",c?zr(c):"0x",r?zr(r):"0x",i??"0x",s?zr(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 Ma({v:e.v});return n})(),r=vr(e.r),a=vr(e.s);l=[...l,zr(n),"0x00"===r?"0x":r,"0x00"===a?"0x":a]}else t>0&&(l=[...l,zr(t),"0x","0x"]);return Ra(l)}(n,e)}function ho(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=vr(t.r),i=vr(t.s);return["number"==typeof a?a?zr(1):"0x":0n===r?"0x":1n===r?zr(1):27n===r?"0x":zr(1),"0x00"===o?"0x":o,"0x00"===i?"0x":i]}async function po(n){const{privateKey:e,transaction:t,serializer:r=uo}=n,a="eip4844"===t.type?{...t,sidecars:!1}:t,o=await Aa({hash:pa(await r(a)),privateKey:e});return await r(t,o)}Object.defineProperty(ao,"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 fo extends pr{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 go extends pr{constructor({expectedSize:n,value:e}){super(`Size of bytes "${e}" (bytes${yr(e)}) does not match expected size (bytes${n}).`,{name:"AbiEncodingBytesSizeMismatchError"})}}class mo extends pr{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 bo extends pr{constructor({expectedSize:n,givenSize:e}){super(`Expected bytes${n}, got bytes${e}.`,{name:"BytesSizeMismatchError"})}}class yo extends pr{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 vo extends pr{constructor(n){super([`Value "${n}" is not a valid array.`].join("\n"),{name:"InvalidArrayError"})}}const wo=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,ko=/^(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 Ao(n,e){if(n.length!==e.length)throw new mo({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(Eo({param:n[r],value:e[r]}));return t}({params:n,values:e}),r=xo(t);return 0===r.length?"0x":r}function Eo({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 vo(n);if(!r&&n.length!==e)throw new fo({expectedLength:e,givenLength:n.length,type:`${t.type}[${e}]`});let a=!1;const o=[];for(let e=0;e<n.length;e++){const r=Eo({param:t,value:n[e]});r.dynamic&&(a=!0),o.push(r)}if(r||a){const n=xo(o);if(r){const e=zr(o.length,{size:32});return{dynamic:!0,encoded:o.length>0?Ea([e,n]):e}}if(a)return{dynamic:!0,encoded:n}}return{dynamic:!1,encoded:Ea(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=Eo({param:o,value:n[Array.isArray(n)?a:o.name]});r.push(i),i.dynamic&&(t=!0)}return{dynamic:t,encoded:t?xo(r):Ea(r.map(({encoded:n})=>n))}}(e,{param:n});if("address"===n.type)return function(n){if(!ya(n))throw new Wr({address:n});return{dynamic:!1,encoded:Er(n.toLowerCase())}}(e);if("bool"===n.type)return function(n){if("boolean"!=typeof n)throw new pr(`Invalid boolean value: "${n}" (type: ${typeof n}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:Er(Pr(n))}}(e);if(n.type.startsWith("uint")||n.type.startsWith("int")){const t=n.type.startsWith("int"),[,,r="256"]=ko.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 gr({max:r.toString(),min:a.toString(),signed:e,size:t/8,value:n.toString()})}return{dynamic:!1,encoded:zr(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=yr(n);if(!t){let e=n;return r%32!=0&&(e=Er(e,{dir:"right",size:32*Math.ceil((n.length-2)/2/32)})),{dynamic:!0,encoded:Ea([Er(zr(r,{size:32})),e])}}if(r!==Number.parseInt(t,10))throw new go({expectedSize:Number.parseInt(t,10),value:n});return{dynamic:!1,encoded:Er(n,{dir:"right"})}}(e,{param:n});if("string"===n.type)return function(n){const e=Rr(n),t=Math.ceil(yr(e)/32),r=[];for(let n=0;n<t;n++)r.push(Er(oo(e,32*n,32*(n+1)),{dir:"right"}));return{dynamic:!0,encoded:Ea([Er(zr(yr(e),{size:32})),...r])}}(e);throw new yo(n.type,{docsPath:"/docs/contract/encodeAbiParameters"})}function xo(n){let e=0;for(let t=0;t<n.length;t++){const{dynamic:r,encoded:a}=n[t];e+=r?32:yr(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(zr(e+a,{size:32})),r.push(s),a+=yr(s)):t.push(s)}return Ea([...t,...r])}class Io extends pr{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 Po extends pr{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 No extends pr{constructor({type:n}){super(`Struct type "${n}" is invalid.`,{metaMessages:["Struct type must not be a Solidity type."],name:"InvalidStructTypeError"})}}function zo({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 So(n){if("address"===n||"bool"===n||"string"===n||n.startsWith("bytes")||n.startsWith("uint")||n.startsWith("int"))throw new No({type:n})}function Ro(n){const{domain:e={},message:t,primaryType:r}=n,a={EIP712Domain:zo({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(ko);if(s&&("number"==typeof i||"bigint"==typeof i)){const[n,e,t]=s;zr(i,{signed:"int"===e,size:Number.parseInt(t,10)/8})}if("address"===r&&"string"==typeof i&&!ya(i))throw new Wr({address:i});const c=r.match(wo);if(c){const[n,e]=c;if(e&&yr(i)!==Number.parseInt(e,10))throw new bo({expectedSize:Number.parseInt(e,10),givenSize:yr(i)})}const l=a[r];l&&(So(r),o(l,i))}};if(a.EIP712Domain&&e){if("object"!=typeof e)throw new Io({domain:e});o(a.EIP712Domain,e)}if("EIP712Domain"!==r){if(!a[r])throw new Po({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 To({data:n,primaryType:"EIP712Domain",types:e})}({domain:e,types:a})),"EIP712Domain"!==r&&o.push(To({data:t,primaryType:r,types:a})),pa(Ea(o))}function To({data:n,primaryType:e,types:t}){return pa(Bo({data:n,primaryType:e,types:t}))}function Bo({data:n,primaryType:e,types:t}){const r=[{type:"bytes32"}],a=[Co({primaryType:e,types:t})];for(const o of t[e]){const[e,i]=Uo({types:t,name:o.name,type:o.type,value:n[o.name]});r.push(e),a.push(i)}return Ao(r,a)}function Co({primaryType:n,types:e}){const t=Ir(function({primaryType:n,types:e}){let t="";const r=Oo({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 pa(t)}function Oo({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])Oo({primaryType:n.type,types:e},t);return t}function Uo({types:n,name:e,type:t,value:r}){if(void 0!==n[t])return[{type:"bytes32"},pa(Bo({data:r,primaryType:t,types:n}))];if("bytes"===t)return[{type:"bytes32"},pa(r)];if("string"===t)return[{type:"bytes32"},pa(Ir(r))];if(t.lastIndexOf("]")===t.length-1){const a=t.slice(0,t.lastIndexOf("[")),o=r.map(t=>Uo({name:e,type:a,types:n,value:t}));return[{type:"bytes32"},pa(Ao(o.map(([n])=>n),o.map(([,n])=>n)))]}return[{type:t},r]}async function Fo(n){const{privateKey:e,...t}=n;return await Aa({hash:Ro(t),privateKey:e,to:"hex"})}function Lo(n,e={}){const{nonceManager:t}=e,r=Ir(ct.getPublicKey(n.slice(2),!1)),a=va({address:wa(r),nonceManager:t,sign:async({hash:e})=>Aa({hash:e,privateKey:n,to:"hex"}),signAuthorization:async e=>Oa({...e,privateKey:n}),signMessage:async({message:e})=>Fa({message:e,privateKey:n}),signTransaction:async(e,{serializer:t}={})=>po({privateKey:n,transaction:e,serializer:t}),signTypedData:async e=>Fo({...e,privateKey:n})});return{...a,publicKey:r,source:"privateKey"}}function jo(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{...Lo(Ir(i.privateKey),o),getHdKey:()=>i,source:"hd"}}const Do="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"),Mo="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"),Go="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"),qo="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"),Ho="あいこくしん\nあいさつ\nあいだ\nあおぞら\nあかちゃん\nあきる\nあけがた\nあける\nあこがれる\nあさい\nあさひ\nあしあと\nあじわう\nあずかる\nあずき\nあそぶ\nあたえる\nあたためる\nあたりまえ\nあたる\nあつい\nあつかう\nあっしゅく\nあつまり\nあつめる\nあてな\nあてはまる\nあひる\nあぶら\nあぶる\nあふれる\nあまい\nあまど\nあまやかす\nあまり\nあみもの\nあめりか\nあやまる\nあゆむ\nあらいぐま\nあらし\nあらすじ\nあらためる\nあらゆる\nあらわす\nありがとう\nあわせる\nあわてる\nあんい\nあんがい\nあんこ\nあんぜん\nあんてい\nあんない\nあんまり\nいいだす\nいおん\nいがい\nいがく\nいきおい\nいきなり\nいきもの\nいきる\nいくじ\nいくぶん\nいけばな\nいけん\nいこう\nいこく\nいこつ\nいさましい\nいさん\nいしき\nいじゅう\nいじょう\nいじわる\nいずみ\nいずれ\nいせい\nいせえび\nいせかい\nいせき\nいぜん\nいそうろう\nいそがしい\nいだい\nいだく\nいたずら\nいたみ\nいたりあ\nいちおう\nいちじ\nいちど\nいちば\nいちぶ\nいちりゅう\nいつか\nいっしゅん\nいっせい\nいっそう\nいったん\nいっち\nいってい\nいっぽう\nいてざ\nいてん\nいどう\nいとこ\nいない\nいなか\nいねむり\nいのち\nいのる\nいはつ\nいばる\nいはん\nいびき\nいひん\nいふく\nいへん\nいほう\nいみん\nいもうと\nいもたれ\nいもり\nいやがる\nいやす\nいよかん\nいよく\nいらい\nいらすと\nいりぐち\nいりょう\nいれい\nいれもの\nいれる\nいろえんぴつ\nいわい\nいわう\nいわかん\nいわば\nいわゆる\nいんげんまめ\nいんさつ\nいんしょう\nいんよう\nうえき\nうえる\nうおざ\nうがい\nうかぶ\nうかべる\nうきわ\nうくらいな\nうくれれ\nうけたまわる\nうけつけ\nうけとる\nうけもつ\nうける\nうごかす\nうごく\nうこん\nうさぎ\nうしなう\nうしろがみ\nうすい\nうすぎ\nうすぐらい\nうすめる\nうせつ\nうちあわせ\nうちがわ\nうちき\nうちゅう\nうっかり\nうつくしい\nうったえる\nうつる\nうどん\nうなぎ\nうなじ\nうなずく\nうなる\nうねる\nうのう\nうぶげ\nうぶごえ\nうまれる\nうめる\nうもう\nうやまう\nうよく\nうらがえす\nうらぐち\nうらない\nうりあげ\nうりきれ\nうるさい\nうれしい\nうれゆき\nうれる\nうろこ\nうわき\nうわさ\nうんこう\nうんちん\nうんてん\nうんどう\nえいえん\nえいが\nえいきょう\nえいご\nえいせい\nえいぶん\nえいよう\nえいわ\nえおり\nえがお\nえがく\nえきたい\nえくせる\nえしゃく\nえすて\nえつらん\nえのぐ\nえほうまき\nえほん\nえまき\nえもじ\nえもの\nえらい\nえらぶ\nえりあ\nえんえん\nえんかい\nえんぎ\nえんげき\nえんしゅう\nえんぜつ\nえんそく\nえんちょう\nえんとつ\nおいかける\nおいこす\nおいしい\nおいつく\nおうえん\nおうさま\nおうじ\nおうせつ\nおうたい\nおうふく\nおうべい\nおうよう\nおえる\nおおい\nおおう\nおおどおり\nおおや\nおおよそ\nおかえり\nおかず\nおがむ\nおかわり\nおぎなう\nおきる\nおくさま\nおくじょう\nおくりがな\nおくる\nおくれる\nおこす\nおこなう\nおこる\nおさえる\nおさない\nおさめる\nおしいれ\nおしえる\nおじぎ\nおじさん\nおしゃれ\nおそらく\nおそわる\nおたがい\nおたく\nおだやか\nおちつく\nおっと\nおつり\nおでかけ\nおとしもの\nおとなしい\nおどり\nおどろかす\nおばさん\nおまいり\nおめでとう\nおもいで\nおもう\nおもたい\nおもちゃ\nおやつ\nおやゆび\nおよぼす\nおらんだ\nおろす\nおんがく\nおんけい\nおんしゃ\nおんせん\nおんだん\nおんちゅう\nおんどけい\nかあつ\nかいが\nがいき\nがいけん\nがいこう\nかいさつ\nかいしゃ\nかいすいよく\nかいぜん\nかいぞうど\nかいつう\nかいてん\nかいとう\nかいふく\nがいへき\nかいほう\nかいよう\nがいらい\nかいわ\nかえる\nかおり\nかかえる\nかがく\nかがし\nかがみ\nかくご\nかくとく\nかざる\nがぞう\nかたい\nかたち\nがちょう\nがっきゅう\nがっこう\nがっさん\nがっしょう\nかなざわし\nかのう\nがはく\nかぶか\nかほう\nかほご\nかまう\nかまぼこ\nかめれおん\nかゆい\nかようび\nからい\nかるい\nかろう\nかわく\nかわら\nがんか\nかんけい\nかんこう\nかんしゃ\nかんそう\nかんたん\nかんち\nがんばる\nきあい\nきあつ\nきいろ\nぎいん\nきうい\nきうん\nきえる\nきおう\nきおく\nきおち\nきおん\nきかい\nきかく\nきかんしゃ\nききて\nきくばり\nきくらげ\nきけんせい\nきこう\nきこえる\nきこく\nきさい\nきさく\nきさま\nきさらぎ\nぎじかがく\nぎしき\nぎじたいけん\nぎじにってい\nぎじゅつしゃ\nきすう\nきせい\nきせき\nきせつ\nきそう\nきぞく\nきぞん\nきたえる\nきちょう\nきつえん\nぎっちり\nきつつき\nきつね\nきてい\nきどう\nきどく\nきない\nきなが\nきなこ\nきぬごし\nきねん\nきのう\nきのした\nきはく\nきびしい\nきひん\nきふく\nきぶん\nきぼう\nきほん\nきまる\nきみつ\nきむずかしい\nきめる\nきもだめし\nきもち\nきもの\nきゃく\nきやく\nぎゅうにく\nきよう\nきょうりゅう\nきらい\nきらく\nきりん\nきれい\nきれつ\nきろく\nぎろん\nきわめる\nぎんいろ\nきんかくじ\nきんじょ\nきんようび\nぐあい\nくいず\nくうかん\nくうき\nくうぐん\nくうこう\nぐうせい\nくうそう\nぐうたら\nくうふく\nくうぼ\nくかん\nくきょう\nくげん\nぐこう\nくさい\nくさき\nくさばな\nくさる\nくしゃみ\nくしょう\nくすのき\nくすりゆび\nくせげ\nくせん\nぐたいてき\nくださる\nくたびれる\nくちこみ\nくちさき\nくつした\nぐっすり\nくつろぐ\nくとうてん\nくどく\nくなん\nくねくね\nくのう\nくふう\nくみあわせ\nくみたてる\nくめる\nくやくしょ\nくらす\nくらべる\nくるま\nくれる\nくろう\nくわしい\nぐんかん\nぐんしょく\nぐんたい\nぐんて\nけあな\nけいかく\nけいけん\nけいこ\nけいさつ\nげいじゅつ\nけいたい\nげいのうじん\nけいれき\nけいろ\nけおとす\nけおりもの\nげきか\nげきげん\nげきだん\nげきちん\nげきとつ\nげきは\nげきやく\nげこう\nげこくじょう\nげざい\nけさき\nげざん\nけしき\nけしごむ\nけしょう\nげすと\nけたば\nけちゃっぷ\nけちらす\nけつあつ\nけつい\nけつえき\nけっこん\nけつじょ\nけっせき\nけってい\nけつまつ\nげつようび\nげつれい\nけつろん\nげどく\nけとばす\nけとる\nけなげ\nけなす\nけなみ\nけぬき\nげねつ\nけねん\nけはい\nげひん\nけぶかい\nげぼく\nけまり\nけみかる\nけむし\nけむり\nけもの\nけらい\nけろけろ\nけわしい\nけんい\nけんえつ\nけんお\nけんか\nげんき\nけんげん\nけんこう\nけんさく\nけんしゅう\nけんすう\nげんそう\nけんちく\nけんてい\nけんとう\nけんない\nけんにん\nげんぶつ\nけんま\nけんみん\nけんめい\nけんらん\nけんり\nこあくま\nこいぬ\nこいびと\nごうい\nこうえん\nこうおん\nこうかん\nごうきゅう\nごうけい\nこうこう\nこうさい\nこうじ\nこうすい\nごうせい\nこうそく\nこうたい\nこうちゃ\nこうつう\nこうてい\nこうどう\nこうない\nこうはい\nごうほう\nごうまん\nこうもく\nこうりつ\nこえる\nこおり\nごかい\nごがつ\nごかん\nこくご\nこくさい\nこくとう\nこくない\nこくはく\nこぐま\nこけい\nこける\nここのか\nこころ\nこさめ\nこしつ\nこすう\nこせい\nこせき\nこぜん\nこそだて\nこたい\nこたえる\nこたつ\nこちょう\nこっか\nこつこつ\nこつばん\nこつぶ\nこてい\nこてん\nことがら\nことし\nことば\nことり\nこなごな\nこねこね\nこのまま\nこのみ\nこのよ\nごはん\nこひつじ\nこふう\nこふん\nこぼれる\nごまあぶら\nこまかい\nごますり\nこまつな\nこまる\nこむぎこ\nこもじ\nこもち\nこもの\nこもん\nこやく\nこやま\nこゆう\nこゆび\nこよい\nこよう\nこりる\nこれくしょん\nころっけ\nこわもて\nこわれる\nこんいん\nこんかい\nこんき\nこんしゅう\nこんすい\nこんだて\nこんとん\nこんなん\nこんびに\nこんぽん\nこんまけ\nこんや\nこんれい\nこんわく\nざいえき\nさいかい\nさいきん\nざいげん\nざいこ\nさいしょ\nさいせい\nざいたく\nざいちゅう\nさいてき\nざいりょう\nさうな\nさかいし\nさがす\nさかな\nさかみち\nさがる\nさぎょう\nさくし\nさくひん\nさくら\nさこく\nさこつ\nさずかる\nざせき\nさたん\nさつえい\nざつおん\nざっか\nざつがく\nさっきょく\nざっし\nさつじん\nざっそう\nさつたば\nさつまいも\nさてい\nさといも\nさとう\nさとおや\nさとし\nさとる\nさのう\nさばく\nさびしい\nさべつ\nさほう\nさほど\nさます\nさみしい\nさみだれ\nさむけ\nさめる\nさやえんどう\nさゆう\nさよう\nさよく\nさらだ\nざるそば\nさわやか\nさわる\nさんいん\nさんか\nさんきゃく\nさんこう\nさんさい\nざんしょ\nさんすう\nさんせい\nさんそ\nさんち\nさんま\nさんみ\nさんらん\nしあい\nしあげ\nしあさって\nしあわせ\nしいく\nしいん\nしうち\nしえい\nしおけ\nしかい\nしかく\nじかん\nしごと\nしすう\nじだい\nしたうけ\nしたぎ\nしたて\nしたみ\nしちょう\nしちりん\nしっかり\nしつじ\nしつもん\nしてい\nしてき\nしてつ\nじてん\nじどう\nしなぎれ\nしなもの\nしなん\nしねま\nしねん\nしのぐ\nしのぶ\nしはい\nしばかり\nしはつ\nしはらい\nしはん\nしひょう\nしふく\nじぶん\nしへい\nしほう\nしほん\nしまう\nしまる\nしみん\nしむける\nじむしょ\nしめい\nしめる\nしもん\nしゃいん\nしゃうん\nしゃおん\nじゃがいも\nしやくしょ\nしゃくほう\nしゃけん\nしゃこ\nしゃざい\nしゃしん\nしゃせん\nしゃそう\nしゃたい\nしゃちょう\nしゃっきん\nじゃま\nしゃりん\nしゃれい\nじゆう\nじゅうしょ\nしゅくはく\nじゅしん\nしゅっせき\nしゅみ\nしゅらば\nじゅんばん\nしょうかい\nしょくたく\nしょっけん\nしょどう\nしょもつ\nしらせる\nしらべる\nしんか\nしんこう\nじんじゃ\nしんせいじ\nしんちく\nしんりん\nすあげ\nすあし\nすあな\nずあん\nすいえい\nすいか\nすいとう\nずいぶん\nすいようび\nすうがく\nすうじつ\nすうせん\nすおどり\nすきま\nすくう\nすくない\nすける\nすごい\nすこし\nずさん\nすずしい\nすすむ\nすすめる\nすっかり\nずっしり\nずっと\nすてき\nすてる\nすねる\nすのこ\nすはだ\nすばらしい\nずひょう\nずぶぬれ\nすぶり\nすふれ\nすべて\nすべる\nずほう\nすぼん\nすまい\nすめし\nすもう\nすやき\nすらすら\nするめ\nすれちがう\nすろっと\nすわる\nすんぜん\nすんぽう\nせあぶら\nせいかつ\nせいげん\nせいじ\nせいよう\nせおう\nせかいかん\nせきにん\nせきむ\nせきゆ\nせきらんうん\nせけん\nせこう\nせすじ\nせたい\nせたけ\nせっかく\nせっきゃく\nぜっく\nせっけん\nせっこつ\nせっさたくま\nせつぞく\nせつだん\nせつでん\nせっぱん\nせつび\nせつぶん\nせつめい\nせつりつ\nせなか\nせのび\nせはば\nせびろ\nせぼね\nせまい\nせまる\nせめる\nせもたれ\nせりふ\nぜんあく\nせんい\nせんえい\nせんか\nせんきょ\nせんく\nせんげん\nぜんご\nせんさい\nせんしゅ\nせんすい\nせんせい\nせんぞ\nせんたく\nせんちょう\nせんてい\nせんとう\nせんぬき\nせんねん\nせんぱい\nぜんぶ\nぜんぽう\nせんむ\nせんめんじょ\nせんもん\nせんやく\nせんゆう\nせんよう\nぜんら\nぜんりゃく\nせんれい\nせんろ\nそあく\nそいとげる\nそいね\nそうがんきょう\nそうき\nそうご\nそうしん\nそうだん\nそうなん\nそうび\nそうめん\nそうり\nそえもの\nそえん\nそがい\nそげき\nそこう\nそこそこ\nそざい\nそしな\nそせい\nそせん\nそそぐ\nそだてる\nそつう\nそつえん\nそっかん\nそつぎょう\nそっけつ\nそっこう\nそっせん\nそっと\nそとがわ\nそとづら\nそなえる\nそなた\nそふぼ\nそぼく\nそぼろ\nそまつ\nそまる\nそむく\nそむりえ\nそめる\nそもそも\nそよかぜ\nそらまめ\nそろう\nそんかい\nそんけい\nそんざい\nそんしつ\nそんぞく\nそんちょう\nぞんび\nぞんぶん\nそんみん\nたあい\nたいいん\nたいうん\nたいえき\nたいおう\nだいがく\nたいき\nたいぐう\nたいけん\nたいこ\nたいざい\nだいじょうぶ\nだいすき\nたいせつ\nたいそう\nだいたい\nたいちょう\nたいてい\nだいどころ\nたいない\nたいねつ\nたいのう\nたいはん\nだいひょう\nたいふう\nたいへん\nたいほ\nたいまつばな\nたいみんぐ\nたいむ\nたいめん\nたいやき\nたいよう\nたいら\nたいりょく\nたいる\nたいわん\nたうえ\nたえる\nたおす\nたおる\nたおれる\nたかい\nたかね\nたきび\nたくさん\nたこく\nたこやき\nたさい\nたしざん\nだじゃれ\nたすける\nたずさわる\nたそがれ\nたたかう\nたたく\nただしい\nたたみ\nたちばな\nだっかい\nだっきゃく\nだっこ\nだっしゅつ\nだったい\nたてる\nたとえる\nたなばた\nたにん\nたぬき\nたのしみ\nたはつ\nたぶん\nたべる\nたぼう\nたまご\nたまる\nだむる\nためいき\nためす\nためる\nたもつ\nたやすい\nたよる\nたらす\nたりきほんがん\nたりょう\nたりる\nたると\nたれる\nたれんと\nたろっと\nたわむれる\nだんあつ\nたんい\nたんおん\nたんか\nたんき\nたんけん\nたんご\nたんさん\nたんじょうび\nだんせい\nたんそく\nたんたい\nだんち\nたんてい\nたんとう\nだんな\nたんにん\nだんねつ\nたんのう\nたんぴん\nだんぼう\nたんまつ\nたんめい\nだんれつ\nだんろ\nだんわ\nちあい\nちあん\nちいき\nちいさい\nちえん\nちかい\nちから\nちきゅう\nちきん\nちけいず\nちけん\nちこく\nちさい\nちしき\nちしりょう\nちせい\nちそう\nちたい\nちたん\nちちおや\nちつじょ\nちてき\nちてん\nちぬき\nちぬり\nちのう\nちひょう\nちへいせん\nちほう\nちまた\nちみつ\nちみどろ\nちめいど\nちゃんこなべ\nちゅうい\nちゆりょく\nちょうし\nちょさくけん\nちらし\nちらみ\nちりがみ\nちりょう\nちるど\nちわわ\nちんたい\nちんもく\nついか\nついたち\nつうか\nつうじょう\nつうはん\nつうわ\nつかう\nつかれる\nつくね\nつくる\nつけね\nつける\nつごう\nつたえる\nつづく\nつつじ\nつつむ\nつとめる\nつながる\nつなみ\nつねづね\nつのる\nつぶす\nつまらない\nつまる\nつみき\nつめたい\nつもり\nつもる\nつよい\nつるぼ\nつるみく\nつわもの\nつわり\nてあし\nてあて\nてあみ\nていおん\nていか\nていき\nていけい\nていこく\nていさつ\nていし\nていせい\nていたい\nていど\nていねい\nていひょう\nていへん\nていぼう\nてうち\nておくれ\nてきとう\nてくび\nでこぼこ\nてさぎょう\nてさげ\nてすり\nてそう\nてちがい\nてちょう\nてつがく\nてつづき\nでっぱ\nてつぼう\nてつや\nでぬかえ\nてぬき\nてぬぐい\nてのひら\nてはい\nてぶくろ\nてふだ\nてほどき\nてほん\nてまえ\nてまきずし\nてみじか\nてみやげ\nてらす\nてれび\nてわけ\nてわたし\nでんあつ\nてんいん\nてんかい\nてんき\nてんぐ\nてんけん\nてんごく\nてんさい\nてんし\nてんすう\nでんち\nてんてき\nてんとう\nてんない\nてんぷら\nてんぼうだい\nてんめつ\nてんらんかい\nでんりょく\nでんわ\nどあい\nといれ\nどうかん\nとうきゅう\nどうぐ\nとうし\nとうむぎ\nとおい\nとおか\nとおく\nとおす\nとおる\nとかい\nとかす\nときおり\nときどき\nとくい\nとくしゅう\nとくてん\nとくに\nとくべつ\nとけい\nとける\nとこや\nとさか\nとしょかん\nとそう\nとたん\nとちゅう\nとっきゅう\nとっくん\nとつぜん\nとつにゅう\nとどける\nととのえる\nとない\nとなえる\nとなり\nとのさま\nとばす\nどぶがわ\nとほう\nとまる\nとめる\nともだち\nともる\nどようび\nとらえる\nとんかつ\nどんぶり\nないかく\nないこう\nないしょ\nないす\nないせん\nないそう\nなおす\nながい\nなくす\nなげる\nなこうど\nなさけ\nなたでここ\nなっとう\nなつやすみ\nななおし\nなにごと\nなにもの\nなにわ\nなのか\nなふだ\nなまいき\nなまえ\nなまみ\nなみだ\nなめらか\nなめる\nなやむ\nならう\nならび\nならぶ\nなれる\nなわとび\nなわばり\nにあう\nにいがた\nにうけ\nにおい\nにかい\nにがて\nにきび\nにくしみ\nにくまん\nにげる\nにさんかたんそ\nにしき\nにせもの\nにちじょう\nにちようび\nにっか\nにっき\nにっけい\nにっこう\nにっさん\nにっしょく\nにっすう\nにっせき\nにってい\nになう\nにほん\nにまめ\nにもつ\nにやり\nにゅういん\nにりんしゃ\nにわとり\nにんい\nにんか\nにんき\nにんげん\nにんしき\nにんずう\nにんそう\nにんたい\nにんち\nにんてい\nにんにく\nにんぷ\nにんまり\nにんむ\nにんめい\nにんよう\nぬいくぎ\nぬかす\nぬぐいとる\nぬぐう\nぬくもり\nぬすむ\nぬまえび\nぬめり\nぬらす\nぬんちゃく\nねあげ\nねいき\nねいる\nねいろ\nねぐせ\nねくたい\nねくら\nねこぜ\nねこむ\nねさげ\nねすごす\nねそべる\nねだん\nねつい\nねっしん\nねつぞう\nねったいぎょ\nねぶそく\nねふだ\nねぼう\nねほりはほり\nねまき\nねまわし\nねみみ\nねむい\nねむたい\nねもと\nねらう\nねわざ\nねんいり\nねんおし\nねんかん\nねんきん\nねんぐ\nねんざ\nねんし\nねんちゃく\nねんど\nねんぴ\nねんぶつ\nねんまつ\nねんりょう\nねんれい\nのいず\nのおづま\nのがす\nのきなみ\nのこぎり\nのこす\nのこる\nのせる\nのぞく\nのぞむ\nのたまう\nのちほど\nのっく\nのばす\nのはら\nのべる\nのぼる\nのみもの\nのやま\nのらいぬ\nのらねこ\nのりもの\nのりゆき\nのれん\nのんき\nばあい\nはあく\nばあさん\nばいか\nばいく\nはいけん\nはいご\nはいしん\nはいすい\nはいせん\nはいそう\nはいち\nばいばい\nはいれつ\nはえる\nはおる\nはかい\nばかり\nはかる\nはくしゅ\nはけん\nはこぶ\nはさみ\nはさん\nはしご\nばしょ\nはしる\nはせる\nぱそこん\nはそん\nはたん\nはちみつ\nはつおん\nはっかく\nはづき\nはっきり\nはっくつ\nはっけん\nはっこう\nはっさん\nはっしん\nはったつ\nはっちゅう\nはってん\nはっぴょう\nはっぽう\nはなす\nはなび\nはにかむ\nはぶらし\nはみがき\nはむかう\nはめつ\nはやい\nはやし\nはらう\nはろうぃん\nはわい\nはんい\nはんえい\nはんおん\nはんかく\nはんきょう\nばんぐみ\nはんこ\nはんしゃ\nはんすう\nはんだん\nぱんち\nぱんつ\nはんてい\nはんとし\nはんのう\nはんぱ\nはんぶん\nはんぺん\nはんぼうき\nはんめい\nはんらん\nはんろん\nひいき\nひうん\nひえる\nひかく\nひかり\nひかる\nひかん\nひくい\nひけつ\nひこうき\nひこく\nひさい\nひさしぶり\nひさん\nびじゅつかん\nひしょ\nひそか\nひそむ\nひたむき\nひだり\nひたる\nひつぎ\nひっこし\nひっし\nひつじゅひん\nひっす\nひつぜん\nぴったり\nぴっちり\nひつよう\nひてい\nひとごみ\nひなまつり\nひなん\nひねる\nひはん\nひびく\nひひょう\nひほう\nひまわり\nひまん\nひみつ\nひめい\nひめじし\nひやけ\nひやす\nひよう\nびょうき\nひらがな\nひらく\nひりつ\nひりょう\nひるま\nひるやすみ\nひれい\nひろい\nひろう\nひろき\nひろゆき\nひんかく\nひんけつ\nひんこん\nひんしゅ\nひんそう\nぴんち\nひんぱん\nびんぼう\nふあん\nふいうち\nふうけい\nふうせん\nぷうたろう\nふうとう\nふうふ\nふえる\nふおん\nふかい\nふきん\nふくざつ\nふくぶくろ\nふこう\nふさい\nふしぎ\nふじみ\nふすま\nふせい\nふせぐ\nふそく\nぶたにく\nふたん\nふちょう\nふつう\nふつか\nふっかつ\nふっき\nふっこく\nぶどう\nふとる\nふとん\nふのう\nふはい\nふひょう\nふへん\nふまん\nふみん\nふめつ\nふめん\nふよう\nふりこ\nふりる\nふるい\nふんいき\nぶんがく\nぶんぐ\nふんしつ\nぶんせき\nふんそう\nぶんぽう\nへいあん\nへいおん\nへいがい\nへいき\nへいげん\nへいこう\nへいさ\nへいしゃ\nへいせつ\nへいそ\nへいたく\nへいてん\nへいねつ\nへいわ\nへきが\nへこむ\nべにいろ\nべにしょうが\nへらす\nへんかん\nべんきょう\nべんごし\nへんさい\nへんたい\nべんり\nほあん\nほいく\nぼうぎょ\nほうこく\nほうそう\nほうほう\nほうもん\nほうりつ\nほえる\nほおん\nほかん\nほきょう\nぼきん\nほくろ\nほけつ\nほけん\nほこう\nほこる\nほしい\nほしつ\nほしゅ\nほしょう\nほせい\nほそい\nほそく\nほたて\nほたる\nぽちぶくろ\nほっきょく\nほっさ\nほったん\nほとんど\nほめる\nほんい\nほんき\nほんけ\nほんしつ\nほんやく\nまいにち\nまかい\nまかせる\nまがる\nまける\nまこと\nまさつ\nまじめ\nますく\nまぜる\nまつり\nまとめ\nまなぶ\nまぬけ\nまねく\nまほう\nまもる\nまゆげ\nまよう\nまろやか\nまわす\nまわり\nまわる\nまんが\nまんきつ\nまんぞく\nまんなか\nみいら\nみうち\nみえる\nみがく\nみかた\nみかん\nみけん\nみこん\nみじかい\nみすい\nみすえる\nみせる\nみっか\nみつかる\nみつける\nみてい\nみとめる\nみなと\nみなみかさい\nみねらる\nみのう\nみのがす\nみほん\nみもと\nみやげ\nみらい\nみりょく\nみわく\nみんか\nみんぞく\nむいか\nむえき\nむえん\nむかい\nむかう\nむかえ\nむかし\nむぎちゃ\nむける\nむげん\nむさぼる\nむしあつい\nむしば\nむじゅん\nむしろ\nむすう\nむすこ\nむすぶ\nむすめ\nむせる\nむせん\nむちゅう\nむなしい\nむのう\nむやみ\nむよう\nむらさき\nむりょう\nむろん\nめいあん\nめいうん\nめいえん\nめいかく\nめいきょく\nめいさい\nめいし\nめいそう\nめいぶつ\nめいれい\nめいわく\nめぐまれる\nめざす\nめした\nめずらしい\nめだつ\nめまい\nめやす\nめんきょ\nめんせき\nめんどう\nもうしあげる\nもうどうけん\nもえる\nもくし\nもくてき\nもくようび\nもちろん\nもどる\nもらう\nもんく\nもんだい\nやおや\nやける\nやさい\nやさしい\nやすい\nやすたろう\nやすみ\nやせる\nやそう\nやたい\nやちん\nやっと\nやっぱり\nやぶる\nやめる\nややこしい\nやよい\nやわらかい\nゆうき\nゆうびんきょく\nゆうべ\nゆうめい\nゆけつ\nゆしゅつ\nゆせん\nゆそう\nゆたか\nゆちゃく\nゆでる\nゆにゅう\nゆびわ\nゆらい\nゆれる\nようい\nようか\nようきゅう\nようじ\nようす\nようちえん\nよかぜ\nよかん\nよきん\nよくせい\nよくぼう\nよけい\nよごれる\nよさん\nよしゅう\nよそう\nよそく\nよっか\nよてい\nよどがわく\nよねつ\nよやく\nよゆう\nよろこぶ\nよろしい\nらいう\nらくがき\nらくご\nらくさつ\nらくだ\nらしんばん\nらせん\nらぞく\nらたい\nらっか\nられつ\nりえき\nりかい\nりきさく\nりきせつ\nりくぐん\nりくつ\nりけん\nりこう\nりせい\nりそう\nりそく\nりてん\nりねん\nりゆう\nりゅうがく\nりよう\nりょうり\nりょかん\nりょくちゃ\nりょこう\nりりく\nりれき\nりろん\nりんご\nるいけい\nるいさい\nるいじ\nるいせき\nるすばん\nるりがわら\nれいかん\nれいぎ\nれいせい\nれいぞうこ\nれいとう\nれいぼう\nれきし\nれきだい\nれんあい\nれんけい\nれんこん\nれんさい\nれんしゅう\nれんぞく\nれんらく\nろうか\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"),Ko="가격\n가끔\n가난\n가능\n가득\n가르침\n가뭄\n가방\n가상\n가슴\n가운데\n가을\n가이드\n가입\n가장\n가정\n가족\n가죽\n각오\n각자\n간격\n간부\n간섭\n간장\n간접\n간판\n갈등\n갈비\n갈색\n갈증\n감각\n감기\n감소\n감수성\n감자\n감정\n갑자기\n강남\n강당\n강도\n강력히\n강변\n강북\n강사\n강수량\n강아지\n강원도\n강의\n강제\n강조\n같이\n개구리\n개나리\n개방\n개별\n개선\n개성\n개인\n객관적\n거실\n거액\n거울\n거짓\n거품\n걱정\n건강\n건물\n건설\n건조\n건축\n걸음\n검사\n검토\n게시판\n게임\n겨울\n견해\n결과\n결국\n결론\n결석\n결승\n결심\n결정\n결혼\n경계\n경고\n경기\n경력\n경복궁\n경비\n경상도\n경영\n경우\n경쟁\n경제\n경주\n경찰\n경치\n경향\n경험\n계곡\n계단\n계란\n계산\n계속\n계약\n계절\n계층\n계획\n고객\n고구려\n고궁\n고급\n고등학생\n고무신\n고민\n고양이\n고장\n고전\n고집\n고춧가루\n고통\n고향\n곡식\n골목\n골짜기\n골프\n공간\n공개\n공격\n공군\n공급\n공기\n공동\n공무원\n공부\n공사\n공식\n공업\n공연\n공원\n공장\n공짜\n공책\n공통\n공포\n공항\n공휴일\n과목\n과일\n과장\n과정\n과학\n관객\n관계\n관광\n관념\n관람\n관련\n관리\n관습\n관심\n관점\n관찰\n광경\n광고\n광장\n광주\n괴로움\n굉장히\n교과서\n교문\n교복\n교실\n교양\n교육\n교장\n교직\n교통\n교환\n교훈\n구경\n구름\n구멍\n구별\n구분\n구석\n구성\n구속\n구역\n구입\n구청\n구체적\n국가\n국기\n국내\n국립\n국물\n국민\n국수\n국어\n국왕\n국적\n국제\n국회\n군대\n군사\n군인\n궁극적\n권리\n권위\n권투\n귀국\n귀신\n규정\n규칙\n균형\n그날\n그냥\n그늘\n그러나\n그룹\n그릇\n그림\n그제서야\n그토록\n극복\n극히\n근거\n근교\n근래\n근로\n근무\n근본\n근원\n근육\n근처\n글씨\n글자\n금강산\n금고\n금년\n금메달\n금액\n금연\n금요일\n금지\n긍정적\n기간\n기관\n기념\n기능\n기독교\n기둥\n기록\n기름\n기법\n기본\n기분\n기쁨\n기숙사\n기술\n기억\n기업\n기온\n기운\n기원\n기적\n기준\n기침\n기혼\n기획\n긴급\n긴장\n길이\n김밥\n김치\n김포공항\n깍두기\n깜빡\n깨달음\n깨소금\n껍질\n꼭대기\n꽃잎\n나들이\n나란히\n나머지\n나물\n나침반\n나흘\n낙엽\n난방\n날개\n날씨\n날짜\n남녀\n남대문\n남매\n남산\n남자\n남편\n남학생\n낭비\n낱말\n내년\n내용\n내일\n냄비\n냄새\n냇물\n냉동\n냉면\n냉방\n냉장고\n넥타이\n넷째\n노동\n노란색\n노력\n노인\n녹음\n녹차\n녹화\n논리\n논문\n논쟁\n놀이\n농구\n농담\n농민\n농부\n농업\n농장\n농촌\n높이\n눈동자\n눈물\n눈썹\n뉴욕\n느낌\n늑대\n능동적\n능력\n다방\n다양성\n다음\n다이어트\n다행\n단계\n단골\n단독\n단맛\n단순\n단어\n단위\n단점\n단체\n단추\n단편\n단풍\n달걀\n달러\n달력\n달리\n닭고기\n담당\n담배\n담요\n담임\n답변\n답장\n당근\n당분간\n당연히\n당장\n대규모\n대낮\n대단히\n대답\n대도시\n대략\n대량\n대륙\n대문\n대부분\n대신\n대응\n대장\n대전\n대접\n대중\n대책\n대출\n대충\n대통령\n대학\n대한민국\n대합실\n대형\n덩어리\n데이트\n도대체\n도덕\n도둑\n도망\n도서관\n도심\n도움\n도입\n도자기\n도저히\n도전\n도중\n도착\n독감\n독립\n독서\n독일\n독창적\n동화책\n뒷모습\n뒷산\n딸아이\n마누라\n마늘\n마당\n마라톤\n마련\n마무리\n마사지\n마약\n마요네즈\n마을\n마음\n마이크\n마중\n마지막\n마찬가지\n마찰\n마흔\n막걸리\n막내\n막상\n만남\n만두\n만세\n만약\n만일\n만점\n만족\n만화\n많이\n말기\n말씀\n말투\n맘대로\n망원경\n매년\n매달\n매력\n매번\n매스컴\n매일\n매장\n맥주\n먹이\n먼저\n먼지\n멀리\n메일\n며느리\n며칠\n면담\n멸치\n명단\n명령\n명예\n명의\n명절\n명칭\n명함\n모금\n모니터\n모델\n모든\n모범\n모습\n모양\n모임\n모조리\n모집\n모퉁이\n목걸이\n목록\n목사\n목소리\n목숨\n목적\n목표\n몰래\n몸매\n몸무게\n몸살\n몸속\n몸짓\n몸통\n몹시\n무관심\n무궁화\n무더위\n무덤\n무릎\n무슨\n무엇\n무역\n무용\n무조건\n무지개\n무척\n문구\n문득\n문법\n문서\n문제\n문학\n문화\n물가\n물건\n물결\n물고기\n물론\n물리학\n물음\n물질\n물체\n미국\n미디어\n미사일\n미술\n미역\n미용실\n미움\n미인\n미팅\n미혼\n민간\n민족\n민주\n믿음\n밀가루\n밀리미터\n밑바닥\n바가지\n바구니\n바나나\n바늘\n바닥\n바닷가\n바람\n바이러스\n바탕\n박물관\n박사\n박수\n반대\n반드시\n반말\n반발\n반성\n반응\n반장\n반죽\n반지\n반찬\n받침\n발가락\n발걸음\n발견\n발달\n발레\n발목\n발바닥\n발생\n발음\n발자국\n발전\n발톱\n발표\n밤하늘\n밥그릇\n밥맛\n밥상\n밥솥\n방금\n방면\n방문\n방바닥\n방법\n방송\n방식\n방안\n방울\n방지\n방학\n방해\n방향\n배경\n배꼽\n배달\n배드민턴\n백두산\n백색\n백성\n백인\n백제\n백화점\n버릇\n버섯\n버튼\n번개\n번역\n번지\n번호\n벌금\n벌레\n벌써\n범위\n범인\n범죄\n법률\n법원\n법적\n법칙\n베이징\n벨트\n변경\n변동\n변명\n변신\n변호사\n변화\n별도\n별명\n별일\n병실\n병아리\n병원\n보관\n보너스\n보라색\n보람\n보름\n보상\n보안\n보자기\n보장\n보전\n보존\n보통\n보편적\n보험\n복도\n복사\n복숭아\n복습\n볶음\n본격적\n본래\n본부\n본사\n본성\n본인\n본질\n볼펜\n봉사\n봉지\n봉투\n부근\n부끄러움\n부담\n부동산\n부문\n부분\n부산\n부상\n부엌\n부인\n부작용\n부장\n부정\n부족\n부지런히\n부친\n부탁\n부품\n부회장\n북부\n북한\n분노\n분량\n분리\n분명\n분석\n분야\n분위기\n분필\n분홍색\n불고기\n불과\n불교\n불꽃\n불만\n불법\n불빛\n불안\n불이익\n불행\n브랜드\n비극\n비난\n비닐\n비둘기\n비디오\n비로소\n비만\n비명\n비밀\n비바람\n비빔밥\n비상\n비용\n비율\n비중\n비타민\n비판\n빌딩\n빗물\n빗방울\n빗줄기\n빛깔\n빨간색\n빨래\n빨리\n사건\n사계절\n사나이\n사냥\n사람\n사랑\n사립\n사모님\n사물\n사방\n사상\n사생활\n사설\n사슴\n사실\n사업\n사용\n사월\n사장\n사전\n사진\n사촌\n사춘기\n사탕\n사투리\n사흘\n산길\n산부인과\n산업\n산책\n살림\n살인\n살짝\n삼계탕\n삼국\n삼십\n삼월\n삼촌\n상관\n상금\n상대\n상류\n상반기\n상상\n상식\n상업\n상인\n상자\n상점\n상처\n상추\n상태\n상표\n상품\n상황\n새벽\n색깔\n색연필\n생각\n생명\n생물\n생방송\n생산\n생선\n생신\n생일\n생활\n서랍\n서른\n서명\n서민\n서비스\n서양\n서울\n서적\n서점\n서쪽\n서클\n석사\n석유\n선거\n선물\n선배\n선생\n선수\n선원\n선장\n선전\n선택\n선풍기\n설거지\n설날\n설렁탕\n설명\n설문\n설사\n설악산\n설치\n설탕\n섭씨\n성공\n성당\n성명\n성별\n성인\n성장\n성적\n성질\n성함\n세금\n세미나\n세상\n세월\n세종대왕\n세탁\n센터\n센티미터\n셋째\n소규모\n소극적\n소금\n소나기\n소년\n소득\n소망\n소문\n소설\n소속\n소아과\n소용\n소원\n소음\n소중히\n소지품\n소질\n소풍\n소형\n속담\n속도\n속옷\n손가락\n손길\n손녀\n손님\n손등\n손목\n손뼉\n손실\n손질\n손톱\n손해\n솔직히\n솜씨\n송아지\n송이\n송편\n쇠고기\n쇼핑\n수건\n수년\n수단\n수돗물\n수동적\n수면\n수명\n수박\n수상\n수석\n수술\n수시로\n수업\n수염\n수영\n수입\n수준\n수집\n수출\n수컷\n수필\n수학\n수험생\n수화기\n숙녀\n숙소\n숙제\n순간\n순서\n순수\n순식간\n순위\n숟가락\n술병\n술집\n숫자\n스님\n스물\n스스로\n스승\n스웨터\n스위치\n스케이트\n스튜디오\n스트레스\n스포츠\n슬쩍\n슬픔\n습관\n습기\n승객\n승리\n승부\n승용차\n승진\n시각\n시간\n시골\n시금치\n시나리오\n시댁\n시리즈\n시멘트\n시민\n시부모\n시선\n시설\n시스템\n시아버지\n시어머니\n시월\n시인\n시일\n시작\n시장\n시절\n시점\n시중\n시즌\n시집\n시청\n시합\n시험\n식구\n식기\n식당\n식량\n식료품\n식물\n식빵\n식사\n식생활\n식초\n식탁\n식품\n신고\n신규\n신념\n신문\n신발\n신비\n신사\n신세\n신용\n신제품\n신청\n신체\n신화\n실감\n실내\n실력\n실례\n실망\n실수\n실습\n실시\n실장\n실정\n실질적\n실천\n실체\n실컷\n실태\n실패\n실험\n실현\n심리\n심부름\n심사\n심장\n심정\n심판\n쌍둥이\n씨름\n씨앗\n아가씨\n아나운서\n아드님\n아들\n아쉬움\n아스팔트\n아시아\n아울러\n아저씨\n아줌마\n아직\n아침\n아파트\n아프리카\n아픔\n아홉\n아흔\n악기\n악몽\n악수\n안개\n안경\n안과\n안내\n안녕\n안동\n안방\n안부\n안주\n알루미늄\n알코올\n암시\n암컷\n압력\n앞날\n앞문\n애인\n애정\n액수\n앨범\n야간\n야단\n야옹\n약간\n약국\n약속\n약수\n약점\n약품\n약혼녀\n양념\n양력\n양말\n양배추\n양주\n양파\n어둠\n어려움\n어른\n어젯밤\n어쨌든\n어쩌다가\n어쩐지\n언니\n언덕\n언론\n언어\n얼굴\n얼른\n얼음\n얼핏\n엄마\n업무\n업종\n업체\n엉덩이\n엉망\n엉터리\n엊그제\n에너지\n에어컨\n엔진\n여건\n여고생\n여관\n여군\n여권\n여대생\n여덟\n여동생\n여든\n여론\n여름\n여섯\n여성\n여왕\n여인\n여전히\n여직원\n여학생\n여행\n역사\n역시\n역할\n연결\n연구\n연극\n연기\n연락\n연설\n연세\n연속\n연습\n연애\n연예인\n연인\n연장\n연주\n연출\n연필\n연합\n연휴\n열기\n열매\n열쇠\n열심히\n열정\n열차\n열흘\n염려\n엽서\n영국\n영남\n영상\n영양\n영역\n영웅\n영원히\n영하\n영향\n영혼\n영화\n옆구리\n옆방\n옆집\n예감\n예금\n예방\n예산\n예상\n예선\n예술\n예습\n예식장\n예약\n예전\n예절\n예정\n예컨대\n옛날\n오늘\n오락\n오랫동안\n오렌지\n오로지\n오른발\n오븐\n오십\n오염\n오월\n오전\n오직\n오징어\n오페라\n오피스텔\n오히려\n옥상\n옥수수\n온갖\n온라인\n온몸\n온종일\n온통\n올가을\n올림픽\n올해\n옷차림\n와이셔츠\n와인\n완성\n완전\n왕비\n왕자\n왜냐하면\n왠지\n외갓집\n외국\n외로움\n외삼촌\n외출\n외침\n외할머니\n왼발\n왼손\n왼쪽\n요금\n요일\n요즘\n요청\n용기\n용서\n용어\n우산\n우선\n우승\n우연히\n우정\n우체국\n우편\n운동\n운명\n운반\n운전\n운행\n울산\n울음\n움직임\n웃어른\n웃음\n워낙\n원고\n원래\n원서\n원숭이\n원인\n원장\n원피스\n월급\n월드컵\n월세\n월요일\n웨이터\n위반\n위법\n위성\n위원\n위험\n위협\n윗사람\n유난히\n유럽\n유명\n유물\n유산\n유적\n유치원\n유학\n유행\n유형\n육군\n육상\n육십\n육체\n은행\n음력\n음료\n음반\n음성\n음식\n음악\n음주\n의견\n의논\n의문\n의복\n의식\n의심\n의외로\n의욕\n의원\n의학\n이것\n이곳\n이념\n이놈\n이달\n이대로\n이동\n이렇게\n이력서\n이론적\n이름\n이민\n이발소\n이별\n이불\n이빨\n이상\n이성\n이슬\n이야기\n이용\n이웃\n이월\n이윽고\n이익\n이전\n이중\n이튿날\n이틀\n이혼\n인간\n인격\n인공\n인구\n인근\n인기\n인도\n인류\n인물\n인생\n인쇄\n인연\n인원\n인재\n인종\n인천\n인체\n인터넷\n인하\n인형\n일곱\n일기\n일단\n일대\n일등\n일반\n일본\n일부\n일상\n일생\n일손\n일요일\n일월\n일정\n일종\n일주일\n일찍\n일체\n일치\n일행\n일회용\n임금\n임무\n입대\n입력\n입맛\n입사\n입술\n입시\n입원\n입장\n입학\n자가용\n자격\n자극\n자동\n자랑\n자부심\n자식\n자신\n자연\n자원\n자율\n자전거\n자정\n자존심\n자판\n작가\n작년\n작성\n작업\n작용\n작은딸\n작품\n잔디\n잔뜩\n잔치\n잘못\n잠깐\n잠수함\n잠시\n잠옷\n잠자리\n잡지\n장관\n장군\n장기간\n장래\n장례\n장르\n장마\n장면\n장모\n장미\n장비\n장사\n장소\n장식\n장애인\n장인\n장점\n장차\n장학금\n재능\n재빨리\n재산\n재생\n재작년\n재정\n재채기\n재판\n재학\n재활용\n저것\n저고리\n저곳\n저녁\n저런\n저렇게\n저번\n저울\n저절로\n저축\n적극\n적당히\n적성\n적용\n적응\n전개\n전공\n전기\n전달\n전라도\n전망\n전문\n전반\n전부\n전세\n전시\n전용\n전자\n전쟁\n전주\n전철\n전체\n전통\n전혀\n전후\n절대\n절망\n절반\n절약\n절차\n점검\n점수\n점심\n점원\n점점\n점차\n접근\n접시\n접촉\n젓가락\n정거장\n정도\n정류장\n정리\n정말\n정면\n정문\n정반대\n정보\n정부\n정비\n정상\n정성\n정오\n정원\n정장\n정지\n정치\n정확히\n제공\n제과점\n제대로\n제목\n제발\n제법\n제삿날\n제안\n제일\n제작\n제주도\n제출\n제품\n제한\n조각\n조건\n조금\n조깅\n조명\n조미료\n조상\n조선\n조용히\n조절\n조정\n조직\n존댓말\n존재\n졸업\n졸음\n종교\n종로\n종류\n종소리\n종업원\n종종\n종합\n좌석\n죄인\n주관적\n주름\n주말\n주머니\n주먹\n주문\n주민\n주방\n주변\n주식\n주인\n주일\n주장\n주전자\n주택\n준비\n줄거리\n줄기\n줄무늬\n중간\n중계방송\n중국\n중년\n중단\n중독\n중반\n중부\n중세\n중소기업\n중순\n중앙\n중요\n중학교\n즉석\n즉시\n즐거움\n증가\n증거\n증권\n증상\n증세\n지각\n지갑\n지경\n지극히\n지금\n지급\n지능\n지름길\n지리산\n지방\n지붕\n지식\n지역\n지우개\n지원\n지적\n지점\n지진\n지출\n직선\n직업\n직원\n직장\n진급\n진동\n진로\n진료\n진리\n진짜\n진찰\n진출\n진통\n진행\n질문\n질병\n질서\n짐작\n집단\n집안\n집중\n짜증\n찌꺼기\n차남\n차라리\n차량\n차림\n차별\n차선\n차츰\n착각\n찬물\n찬성\n참가\n참기름\n참새\n참석\n참여\n참외\n참조\n찻잔\n창가\n창고\n창구\n창문\n창밖\n창작\n창조\n채널\n채점\n책가방\n책방\n책상\n책임\n챔피언\n처벌\n처음\n천국\n천둥\n천장\n천재\n천천히\n철도\n철저히\n철학\n첫날\n첫째\n청년\n청바지\n청소\n청춘\n체계\n체력\n체온\n체육\n체중\n체험\n초등학생\n초반\n초밥\n초상화\n초순\n초여름\n초원\n초저녁\n초점\n초청\n초콜릿\n촛불\n총각\n총리\n총장\n촬영\n최근\n최상\n최선\n최신\n최악\n최종\n추석\n추억\n추진\n추천\n추측\n축구\n축소\n축제\n축하\n출근\n출발\n출산\n출신\n출연\n출입\n출장\n출판\n충격\n충고\n충돌\n충분히\n충청도\n취업\n취직\n취향\n치약\n친구\n친척\n칠십\n칠월\n칠판\n침대\n침묵\n침실\n칫솔\n칭찬\n카메라\n카운터\n칼국수\n캐릭터\n캠퍼스\n캠페인\n커튼\n컨디션\n컬러\n컴퓨터\n코끼리\n코미디\n콘서트\n콜라\n콤플렉스\n콩나물\n쾌감\n쿠데타\n크림\n큰길\n큰딸\n큰소리\n큰아들\n큰어머니\n큰일\n큰절\n클래식\n클럽\n킬로\n타입\n타자기\n탁구\n탁자\n탄생\n태권도\n태양\n태풍\n택시\n탤런트\n터널\n터미널\n테니스\n테스트\n테이블\n텔레비전\n토론\n토마토\n토요일\n통계\n통과\n통로\n통신\n통역\n통일\n통장\n통제\n통증\n통합\n통화\n퇴근\n퇴원\n퇴직금\n튀김\n트럭\n특급\n특별\n특성\n특수\n특징\n특히\n튼튼히\n티셔츠\n파란색\n파일\n파출소\n판결\n판단\n판매\n판사\n팔십\n팔월\n팝송\n패션\n팩스\n팩시밀리\n팬티\n퍼센트\n페인트\n편견\n편의\n편지\n편히\n평가\n평균\n평생\n평소\n평양\n평일\n평화\n포스터\n포인트\n포장\n포함\n표면\n표정\n표준\n표현\n품목\n품질\n풍경\n풍속\n풍습\n프랑스\n프린터\n플라스틱\n피곤\n피망\n피아노\n필름\n필수\n필요\n필자\n필통\n핑계\n하느님\n하늘\n하드웨어\n하룻밤\n하반기\n하숙집\n하순\n하여튼\n하지만\n하천\n하품\n하필\n학과\n학교\n학급\n학기\n학년\n학력\n학번\n학부모\n학비\n학생\n학술\n학습\n학용품\n학원\n학위\n학자\n학점\n한계\n한글\n한꺼번에\n한낮\n한눈\n한동안\n한때\n한라산\n한마디\n한문\n한번\n한복\n한식\n한여름\n한쪽\n할머니\n할아버지\n할인\n함께\n함부로\n합격\n합리적\n항공\n항구\n항상\n항의\n해결\n해군\n해답\n해당\n해물\n해석\n해설\n해수욕장\n해안\n핵심\n핸드백\n햄버거\n햇볕\n햇살\n행동\n행복\n행사\n행운\n행위\n향기\n향상\n향수\n허락\n허용\n헬기\n현관\n현금\n현대\n현상\n현실\n현장\n현재\n현지\n혈액\n협력\n형부\n형사\n형수\n형식\n형제\n형태\n형편\n혜택\n호기심\n호남\n호랑이\n호박\n호텔\n호흡\n혹시\n홀로\n홈페이지\n홍보\n홍수\n홍차\n화면\n화분\n화살\n화요일\n화장\n화학\n확보\n확인\n확장\n확정\n환갑\n환경\n환영\n환율\n환자\n활기\n활동\n활발히\n활용\n활짝\n회견\n회관\n회복\n회색\n회원\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"),_o="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"),Vo="的\n一\n是\n在\n不\n了\n有\n和\n人\n这\n中\n大\n为\n上\n个\n国\n我\n以\n要\n他\n时\n来\n用\n们\n生\n到\n作\n地\n于\n出\n就\n分\n对\n成\n会\n可\n主\n发\n年\n动\n同\n工\n也\n能\n下\n过\n子\n说\n产\n种\n面\n而\n方\n后\n多\n定\n行\n学\n法\n所\n民\n得\n经\n十\n三\n之\n进\n着\n等\n部\n度\n家\n电\n力\n里\n如\n水\n化\n高\n自\n二\n理\n起\n小\n物\n现\n实\n加\n量\n都\n两\n体\n制\n机\n当\n使\n点\n从\n业\n本\n去\n把\n性\n好\n应\n开\n它\n合\n还\n因\n由\n其\n些\n然\n前\n外\n天\n政\n四\n日\n那\n社\n义\n事\n平\n形\n相\n全\n表\n间\n样\n与\n关\n各\n重\n新\n线\n内\n数\n正\n心\n反\n你\n明\n看\n原\n又\n么\n利\n比\n或\n但\n质\n气\n第\n向\n道\n命\n此\n变\n条\n只\n没\n结\n解\n问\n意\n建\n月\n公\n无\n系\n军\n很\n情\n者\n最\n立\n代\n想\n已\n通\n并\n提\n直\n题\n党\n程\n展\n五\n果\n料\n象\n员\n革\n位\n入\n常\n文\n总\n次\n品\n式\n活\n设\n及\n管\n特\n件\n长\n求\n老\n头\n基\n资\n边\n流\n路\n级\n少\n图\n山\n统\n接\n知\n较\n将\n组\n见\n计\n别\n她\n手\n角\n期\n根\n论\n运\n农\n指\n几\n九\n区\n强\n放\n决\n西\n被\n干\n做\n必\n战\n先\n回\n则\n任\n取\n据\n处\n队\n南\n给\n色\n光\n门\n即\n保\n治\n北\n造\n百\n规\n热\n领\n七\n海\n口\n东\n导\n器\n压\n志\n世\n金\n增\n争\n济\n阶\n油\n思\n术\n极\n交\n受\n联\n什\n认\n六\n共\n权\n收\n证\n改\n清\n美\n再\n采\n转\n更\n单\n风\n切\n打\n白\n教\n速\n花\n带\n安\n场\n身\n车\n例\n真\n务\n具\n万\n每\n目\n至\n达\n走\n积\n示\n议\n声\n报\n斗\n完\n类\n八\n离\n华\n名\n确\n才\n科\n张\n信\n马\n节\n话\n米\n整\n空\n元\n况\n今\n集\n温\n传\n土\n许\n步\n群\n广\n石\n记\n需\n段\n研\n界\n拉\n林\n律\n叫\n且\n究\n观\n越\n织\n装\n影\n算\n低\n持\n音\n众\n书\n布\n复\n容\n儿\n须\n际\n商\n非\n验\n连\n断\n深\n难\n近\n矿\n千\n周\n委\n素\n技\n备\n半\n办\n青\n省\n列\n习\n响\n约\n支\n般\n史\n感\n劳\n便\n团\n往\n酸\n历\n市\n克\n何\n除\n消\n构\n府\n称\n太\n准\n精\n值\n号\n率\n族\n维\n划\n选\n标\n写\n存\n候\n毛\n亲\n快\n效\n斯\n院\n查\n江\n型\n眼\n王\n按\n格\n养\n易\n置\n派\n层\n片\n始\n却\n专\n状\n育\n厂\n京\n识\n适\n属\n圆\n包\n火\n住\n调\n满\n县\n局\n照\n参\n红\n细\n引\n听\n该\n铁\n价\n严\n首\n底\n液\n官\n德\n随\n病\n苏\n失\n尔\n死\n讲\n配\n女\n黄\n推\n显\n谈\n罪\n神\n艺\n呢\n席\n含\n企\n望\n密\n批\n营\n项\n防\n举\n球\n英\n氧\n势\n告\n李\n台\n落\n木\n帮\n轮\n破\n亚\n师\n围\n注\n远\n字\n材\n排\n供\n河\n态\n封\n另\n施\n减\n树\n溶\n怎\n止\n案\n言\n士\n均\n武\n固\n叶\n鱼\n波\n视\n仅\n费\n紧\n爱\n左\n章\n早\n朝\n害\n续\n轻\n服\n试\n食\n充\n兵\n源\n判\n护\n司\n足\n某\n练\n差\n致\n板\n田\n降\n黑\n犯\n负\n击\n范\n继\n兴\n似\n余\n坚\n曲\n输\n修\n故\n城\n夫\n够\n送\n笔\n船\n占\n右\n财\n吃\n富\n春\n职\n觉\n汉\n画\n功\n巴\n跟\n虽\n杂\n飞\n检\n吸\n助\n升\n阳\n互\n初\n创\n抗\n考\n投\n坏\n策\n古\n径\n换\n未\n跑\n留\n钢\n曾\n端\n责\n站\n简\n述\n钱\n副\n尽\n帝\n射\n草\n冲\n承\n独\n令\n限\n阿\n宣\n环\n双\n请\n超\n微\n让\n控\n州\n良\n轴\n找\n否\n纪\n益\n依\n优\n顶\n础\n载\n倒\n房\n突\n坐\n粉\n敌\n略\n客\n袁\n冷\n胜\n绝\n析\n块\n剂\n测\n丝\n协\n诉\n念\n陈\n仍\n罗\n盐\n友\n洋\n错\n苦\n夜\n刑\n移\n频\n逐\n靠\n混\n母\n短\n皮\n终\n聚\n汽\n村\n云\n哪\n既\n距\n卫\n停\n烈\n央\n察\n烧\n迅\n境\n若\n印\n洲\n刻\n括\n激\n孔\n搞\n甚\n室\n待\n核\n校\n散\n侵\n吧\n甲\n游\n久\n菜\n味\n旧\n模\n湖\n货\n损\n预\n阻\n毫\n普\n稳\n乙\n妈\n植\n息\n扩\n银\n语\n挥\n酒\n守\n拿\n序\n纸\n医\n缺\n雨\n吗\n针\n刘\n啊\n急\n唱\n误\n训\n愿\n审\n附\n获\n茶\n鲜\n粮\n斤\n孩\n脱\n硫\n肥\n善\n龙\n演\n父\n渐\n血\n欢\n械\n掌\n歌\n沙\n刚\n攻\n谓\n盾\n讨\n晚\n粒\n乱\n燃\n矛\n乎\n杀\n药\n宁\n鲁\n贵\n钟\n煤\n读\n班\n伯\n香\n介\n迫\n句\n丰\n培\n握\n兰\n担\n弦\n蛋\n沉\n假\n穿\n执\n答\n乐\n谁\n顺\n烟\n缩\n征\n脸\n喜\n松\n脚\n困\n异\n免\n背\n星\n福\n买\n染\n井\n概\n慢\n怕\n磁\n倍\n祖\n皇\n促\n静\n补\n评\n翻\n肉\n践\n尼\n衣\n宽\n扬\n棉\n希\n伤\n操\n垂\n秋\n宜\n氢\n套\n督\n振\n架\n亮\n末\n宪\n庆\n编\n牛\n触\n映\n雷\n销\n诗\n座\n居\n抓\n裂\n胞\n呼\n娘\n景\n威\n绿\n晶\n厚\n盟\n衡\n鸡\n孙\n延\n危\n胶\n屋\n乡\n临\n陆\n顾\n掉\n呀\n灯\n岁\n措\n束\n耐\n剧\n玉\n赵\n跳\n哥\n季\n课\n凯\n胡\n额\n款\n绍\n卷\n齐\n伟\n蒸\n殖\n永\n宗\n苗\n川\n炉\n岩\n弱\n零\n杨\n奏\n沿\n露\n杆\n探\n滑\n镇\n饭\n浓\n航\n怀\n赶\n库\n夺\n伊\n灵\n税\n途\n灭\n赛\n归\n召\n鼓\n播\n盘\n裁\n险\n康\n唯\n录\n菌\n纯\n借\n糖\n盖\n横\n符\n私\n努\n堂\n域\n枪\n润\n幅\n哈\n竟\n熟\n虫\n泽\n脑\n壤\n碳\n欧\n遍\n侧\n寨\n敢\n彻\n虑\n斜\n薄\n庭\n纳\n弹\n饲\n伸\n折\n麦\n湿\n暗\n荷\n瓦\n塞\n床\n筑\n恶\n户\n访\n塔\n奇\n透\n梁\n刀\n旋\n迹\n卡\n氯\n遇\n份\n毒\n泥\n退\n洗\n摆\n灰\n彩\n卖\n耗\n夏\n择\n忙\n铜\n献\n硬\n予\n繁\n圈\n雪\n函\n亦\n抽\n篇\n阵\n阴\n丁\n尺\n追\n堆\n雄\n迎\n泛\n爸\n楼\n避\n谋\n吨\n野\n猪\n旗\n累\n偏\n典\n馆\n索\n秦\n脂\n潮\n爷\n豆\n忽\n托\n惊\n塑\n遗\n愈\n朱\n替\n纤\n粗\n倾\n尚\n痛\n楚\n谢\n奋\n购\n磨\n君\n池\n旁\n碎\n骨\n监\n捕\n弟\n暴\n割\n贯\n殊\n释\n词\n亡\n壁\n顿\n宝\n午\n尘\n闻\n揭\n炮\n残\n冬\n桥\n妇\n警\n综\n招\n吴\n付\n浮\n遭\n徐\n您\n摇\n谷\n赞\n箱\n隔\n订\n男\n吹\n园\n纷\n唐\n败\n宋\n玻\n巨\n耕\n坦\n荣\n闭\n湾\n键\n凡\n驻\n锅\n救\n恩\n剥\n凝\n碱\n齿\n截\n炼\n麻\n纺\n禁\n废\n盛\n版\n缓\n净\n睛\n昌\n婚\n涉\n筒\n嘴\n插\n岸\n朗\n庄\n街\n藏\n姑\n贸\n腐\n奴\n啦\n惯\n乘\n伙\n恢\n匀\n纱\n扎\n辩\n耳\n彪\n臣\n亿\n璃\n抵\n脉\n秀\n萨\n俄\n网\n舞\n店\n喷\n纵\n寸\n汗\n挂\n洪\n贺\n闪\n柬\n爆\n烯\n津\n稻\n墙\n软\n勇\n像\n滚\n厘\n蒙\n芳\n肯\n坡\n柱\n荡\n腿\n仪\n旅\n尾\n轧\n冰\n贡\n登\n黎\n削\n钻\n勒\n逃\n障\n氨\n郭\n峰\n币\n港\n伏\n轨\n亩\n毕\n擦\n莫\n刺\n浪\n秘\n援\n株\n健\n售\n股\n岛\n甘\n泡\n睡\n童\n铸\n汤\n阀\n休\n汇\n舍\n牧\n绕\n炸\n哲\n磷\n绩\n朋\n淡\n尖\n启\n陷\n柴\n呈\n徒\n颜\n泪\n稍\n忘\n泵\n蓝\n拖\n洞\n授\n镜\n辛\n壮\n锋\n贫\n虚\n弯\n摩\n泰\n幼\n廷\n尊\n窗\n纲\n弄\n隶\n疑\n氏\n宫\n姐\n震\n瑞\n怪\n尤\n琴\n循\n描\n膜\n违\n夹\n腰\n缘\n珠\n穷\n森\n枝\n竹\n沟\n催\n绳\n忆\n邦\n剩\n幸\n浆\n栏\n拥\n牙\n贮\n礼\n滤\n钠\n纹\n罢\n拍\n咱\n喊\n袖\n埃\n勤\n罚\n焦\n潜\n伍\n墨\n欲\n缝\n姓\n刊\n饱\n仿\n奖\n铝\n鬼\n丽\n跨\n默\n挖\n链\n扫\n喝\n袋\n炭\n污\n幕\n诸\n弧\n励\n梅\n奶\n洁\n灾\n舟\n鉴\n苯\n讼\n抱\n毁\n懂\n寒\n智\n埔\n寄\n届\n跃\n渡\n挑\n丹\n艰\n贝\n碰\n拔\n爹\n戴\n码\n梦\n芽\n熔\n赤\n渔\n哭\n敬\n颗\n奔\n铅\n仲\n虎\n稀\n妹\n乏\n珍\n申\n桌\n遵\n允\n隆\n螺\n仓\n魏\n锐\n晓\n氮\n兼\n隐\n碍\n赫\n拨\n忠\n肃\n缸\n牵\n抢\n博\n巧\n壳\n兄\n杜\n讯\n诚\n碧\n祥\n柯\n页\n巡\n矩\n悲\n灌\n龄\n伦\n票\n寻\n桂\n铺\n圣\n恐\n恰\n郑\n趣\n抬\n荒\n腾\n贴\n柔\n滴\n猛\n阔\n辆\n妻\n填\n撤\n储\n签\n闹\n扰\n紫\n砂\n递\n戏\n吊\n陶\n伐\n喂\n疗\n瓶\n婆\n抚\n臂\n摸\n忍\n虾\n蜡\n邻\n胸\n巩\n挤\n偶\n弃\n槽\n劲\n乳\n邓\n吉\n仁\n烂\n砖\n租\n乌\n舰\n伴\n瓜\n浅\n丙\n暂\n燥\n橡\n柳\n迷\n暖\n牌\n秧\n胆\n详\n簧\n踏\n瓷\n谱\n呆\n宾\n糊\n洛\n辉\n愤\n竞\n隙\n怒\n粘\n乃\n绪\n肩\n籍\n敏\n涂\n熙\n皆\n侦\n悬\n掘\n享\n纠\n醒\n狂\n锁\n淀\n恨\n牲\n霸\n爬\n赏\n逆\n玩\n陵\n祝\n秒\n浙\n貌\n役\n彼\n悉\n鸭\n趋\n凤\n晨\n畜\n辈\n秩\n卵\n署\n梯\n炎\n滩\n棋\n驱\n筛\n峡\n冒\n啥\n寿\n译\n浸\n泉\n帽\n迟\n硅\n疆\n贷\n漏\n稿\n冠\n嫩\n胁\n芯\n牢\n叛\n蚀\n奥\n鸣\n岭\n羊\n凭\n串\n塘\n绘\n酵\n融\n盆\n锡\n庙\n筹\n冻\n辅\n摄\n袭\n筋\n拒\n僚\n旱\n钾\n鸟\n漆\n沈\n眉\n疏\n添\n棒\n穗\n硝\n韩\n逼\n扭\n侨\n凉\n挺\n碗\n栽\n炒\n杯\n患\n馏\n劝\n豪\n辽\n勃\n鸿\n旦\n吏\n拜\n狗\n埋\n辊\n掩\n饮\n搬\n骂\n辞\n勾\n扣\n估\n蒋\n绒\n雾\n丈\n朵\n姆\n拟\n宇\n辑\n陕\n雕\n偿\n蓄\n崇\n剪\n倡\n厅\n咬\n驶\n薯\n刷\n斥\n番\n赋\n奉\n佛\n浇\n漫\n曼\n扇\n钙\n桃\n扶\n仔\n返\n俗\n亏\n腔\n鞋\n棱\n覆\n框\n悄\n叔\n撞\n骗\n勘\n旺\n沸\n孤\n吐\n孟\n渠\n屈\n疾\n妙\n惜\n仰\n狠\n胀\n谐\n抛\n霉\n桑\n岗\n嘛\n衰\n盗\n渗\n脏\n赖\n涌\n甜\n曹\n阅\n肌\n哩\n厉\n烃\n纬\n毅\n昨\n伪\n症\n煮\n叹\n钉\n搭\n茎\n笼\n酷\n偷\n弓\n锥\n恒\n杰\n坑\n鼻\n翼\n纶\n叙\n狱\n逮\n罐\n络\n棚\n抑\n膨\n蔬\n寺\n骤\n穆\n冶\n枯\n册\n尸\n凸\n绅\n坯\n牺\n焰\n轰\n欣\n晋\n瘦\n御\n锭\n锦\n丧\n旬\n锻\n垄\n搜\n扑\n邀\n亭\n酯\n迈\n舒\n脆\n酶\n闲\n忧\n酚\n顽\n羽\n涨\n卸\n仗\n陪\n辟\n惩\n杭\n姚\n肚\n捉\n飘\n漂\n昆\n欺\n吾\n郎\n烷\n汁\n呵\n饰\n萧\n雅\n邮\n迁\n燕\n撒\n姻\n赴\n宴\n烦\n债\n帐\n斑\n铃\n旨\n醇\n董\n饼\n雏\n姿\n拌\n傅\n腹\n妥\n揉\n贤\n拆\n歪\n葡\n胺\n丢\n浩\n徽\n昂\n垫\n挡\n览\n贪\n慰\n缴\n汪\n慌\n冯\n诺\n姜\n谊\n凶\n劣\n诬\n耀\n昏\n躺\n盈\n骑\n乔\n溪\n丛\n卢\n抹\n闷\n咨\n刮\n驾\n缆\n悟\n摘\n铒\n掷\n颇\n幻\n柄\n惠\n惨\n佳\n仇\n腊\n窝\n涤\n剑\n瞧\n堡\n泼\n葱\n罩\n霍\n捞\n胎\n苍\n滨\n俩\n捅\n湘\n砍\n霞\n邵\n萄\n疯\n淮\n遂\n熊\n粪\n烘\n宿\n档\n戈\n驳\n嫂\n裕\n徙\n箭\n捐\n肠\n撑\n晒\n辨\n殿\n莲\n摊\n搅\n酱\n屏\n疫\n哀\n蔡\n堵\n沫\n皱\n畅\n叠\n阁\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"),Qo="á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"),Jo="的\n一\n是\n在\n不\n了\n有\n和\n人\n這\n中\n大\n為\n上\n個\n國\n我\n以\n要\n他\n時\n來\n用\n們\n生\n到\n作\n地\n於\n出\n就\n分\n對\n成\n會\n可\n主\n發\n年\n動\n同\n工\n也\n能\n下\n過\n子\n說\n產\n種\n面\n而\n方\n後\n多\n定\n行\n學\n法\n所\n民\n得\n經\n十\n三\n之\n進\n著\n等\n部\n度\n家\n電\n力\n裡\n如\n水\n化\n高\n自\n二\n理\n起\n小\n物\n現\n實\n加\n量\n都\n兩\n體\n制\n機\n當\n使\n點\n從\n業\n本\n去\n把\n性\n好\n應\n開\n它\n合\n還\n因\n由\n其\n些\n然\n前\n外\n天\n政\n四\n日\n那\n社\n義\n事\n平\n形\n相\n全\n表\n間\n樣\n與\n關\n各\n重\n新\n線\n內\n數\n正\n心\n反\n你\n明\n看\n原\n又\n麼\n利\n比\n或\n但\n質\n氣\n第\n向\n道\n命\n此\n變\n條\n只\n沒\n結\n解\n問\n意\n建\n月\n公\n無\n系\n軍\n很\n情\n者\n最\n立\n代\n想\n已\n通\n並\n提\n直\n題\n黨\n程\n展\n五\n果\n料\n象\n員\n革\n位\n入\n常\n文\n總\n次\n品\n式\n活\n設\n及\n管\n特\n件\n長\n求\n老\n頭\n基\n資\n邊\n流\n路\n級\n少\n圖\n山\n統\n接\n知\n較\n將\n組\n見\n計\n別\n她\n手\n角\n期\n根\n論\n運\n農\n指\n幾\n九\n區\n強\n放\n決\n西\n被\n幹\n做\n必\n戰\n先\n回\n則\n任\n取\n據\n處\n隊\n南\n給\n色\n光\n門\n即\n保\n治\n北\n造\n百\n規\n熱\n領\n七\n海\n口\n東\n導\n器\n壓\n志\n世\n金\n增\n爭\n濟\n階\n油\n思\n術\n極\n交\n受\n聯\n什\n認\n六\n共\n權\n收\n證\n改\n清\n美\n再\n採\n轉\n更\n單\n風\n切\n打\n白\n教\n速\n花\n帶\n安\n場\n身\n車\n例\n真\n務\n具\n萬\n每\n目\n至\n達\n走\n積\n示\n議\n聲\n報\n鬥\n完\n類\n八\n離\n華\n名\n確\n才\n科\n張\n信\n馬\n節\n話\n米\n整\n空\n元\n況\n今\n集\n溫\n傳\n土\n許\n步\n群\n廣\n石\n記\n需\n段\n研\n界\n拉\n林\n律\n叫\n且\n究\n觀\n越\n織\n裝\n影\n算\n低\n持\n音\n眾\n書\n布\n复\n容\n兒\n須\n際\n商\n非\n驗\n連\n斷\n深\n難\n近\n礦\n千\n週\n委\n素\n技\n備\n半\n辦\n青\n省\n列\n習\n響\n約\n支\n般\n史\n感\n勞\n便\n團\n往\n酸\n歷\n市\n克\n何\n除\n消\n構\n府\n稱\n太\n準\n精\n值\n號\n率\n族\n維\n劃\n選\n標\n寫\n存\n候\n毛\n親\n快\n效\n斯\n院\n查\n江\n型\n眼\n王\n按\n格\n養\n易\n置\n派\n層\n片\n始\n卻\n專\n狀\n育\n廠\n京\n識\n適\n屬\n圓\n包\n火\n住\n調\n滿\n縣\n局\n照\n參\n紅\n細\n引\n聽\n該\n鐵\n價\n嚴\n首\n底\n液\n官\n德\n隨\n病\n蘇\n失\n爾\n死\n講\n配\n女\n黃\n推\n顯\n談\n罪\n神\n藝\n呢\n席\n含\n企\n望\n密\n批\n營\n項\n防\n舉\n球\n英\n氧\n勢\n告\n李\n台\n落\n木\n幫\n輪\n破\n亞\n師\n圍\n注\n遠\n字\n材\n排\n供\n河\n態\n封\n另\n施\n減\n樹\n溶\n怎\n止\n案\n言\n士\n均\n武\n固\n葉\n魚\n波\n視\n僅\n費\n緊\n愛\n左\n章\n早\n朝\n害\n續\n輕\n服\n試\n食\n充\n兵\n源\n判\n護\n司\n足\n某\n練\n差\n致\n板\n田\n降\n黑\n犯\n負\n擊\n范\n繼\n興\n似\n餘\n堅\n曲\n輸\n修\n故\n城\n夫\n夠\n送\n筆\n船\n佔\n右\n財\n吃\n富\n春\n職\n覺\n漢\n畫\n功\n巴\n跟\n雖\n雜\n飛\n檢\n吸\n助\n昇\n陽\n互\n初\n創\n抗\n考\n投\n壞\n策\n古\n徑\n換\n未\n跑\n留\n鋼\n曾\n端\n責\n站\n簡\n述\n錢\n副\n盡\n帝\n射\n草\n衝\n承\n獨\n令\n限\n阿\n宣\n環\n雙\n請\n超\n微\n讓\n控\n州\n良\n軸\n找\n否\n紀\n益\n依\n優\n頂\n礎\n載\n倒\n房\n突\n坐\n粉\n敵\n略\n客\n袁\n冷\n勝\n絕\n析\n塊\n劑\n測\n絲\n協\n訴\n念\n陳\n仍\n羅\n鹽\n友\n洋\n錯\n苦\n夜\n刑\n移\n頻\n逐\n靠\n混\n母\n短\n皮\n終\n聚\n汽\n村\n雲\n哪\n既\n距\n衛\n停\n烈\n央\n察\n燒\n迅\n境\n若\n印\n洲\n刻\n括\n激\n孔\n搞\n甚\n室\n待\n核\n校\n散\n侵\n吧\n甲\n遊\n久\n菜\n味\n舊\n模\n湖\n貨\n損\n預\n阻\n毫\n普\n穩\n乙\n媽\n植\n息\n擴\n銀\n語\n揮\n酒\n守\n拿\n序\n紙\n醫\n缺\n雨\n嗎\n針\n劉\n啊\n急\n唱\n誤\n訓\n願\n審\n附\n獲\n茶\n鮮\n糧\n斤\n孩\n脫\n硫\n肥\n善\n龍\n演\n父\n漸\n血\n歡\n械\n掌\n歌\n沙\n剛\n攻\n謂\n盾\n討\n晚\n粒\n亂\n燃\n矛\n乎\n殺\n藥\n寧\n魯\n貴\n鐘\n煤\n讀\n班\n伯\n香\n介\n迫\n句\n豐\n培\n握\n蘭\n擔\n弦\n蛋\n沉\n假\n穿\n執\n答\n樂\n誰\n順\n煙\n縮\n徵\n臉\n喜\n松\n腳\n困\n異\n免\n背\n星\n福\n買\n染\n井\n概\n慢\n怕\n磁\n倍\n祖\n皇\n促\n靜\n補\n評\n翻\n肉\n踐\n尼\n衣\n寬\n揚\n棉\n希\n傷\n操\n垂\n秋\n宜\n氫\n套\n督\n振\n架\n亮\n末\n憲\n慶\n編\n牛\n觸\n映\n雷\n銷\n詩\n座\n居\n抓\n裂\n胞\n呼\n娘\n景\n威\n綠\n晶\n厚\n盟\n衡\n雞\n孫\n延\n危\n膠\n屋\n鄉\n臨\n陸\n顧\n掉\n呀\n燈\n歲\n措\n束\n耐\n劇\n玉\n趙\n跳\n哥\n季\n課\n凱\n胡\n額\n款\n紹\n卷\n齊\n偉\n蒸\n殖\n永\n宗\n苗\n川\n爐\n岩\n弱\n零\n楊\n奏\n沿\n露\n桿\n探\n滑\n鎮\n飯\n濃\n航\n懷\n趕\n庫\n奪\n伊\n靈\n稅\n途\n滅\n賽\n歸\n召\n鼓\n播\n盤\n裁\n險\n康\n唯\n錄\n菌\n純\n借\n糖\n蓋\n橫\n符\n私\n努\n堂\n域\n槍\n潤\n幅\n哈\n竟\n熟\n蟲\n澤\n腦\n壤\n碳\n歐\n遍\n側\n寨\n敢\n徹\n慮\n斜\n薄\n庭\n納\n彈\n飼\n伸\n折\n麥\n濕\n暗\n荷\n瓦\n塞\n床\n築\n惡\n戶\n訪\n塔\n奇\n透\n梁\n刀\n旋\n跡\n卡\n氯\n遇\n份\n毒\n泥\n退\n洗\n擺\n灰\n彩\n賣\n耗\n夏\n擇\n忙\n銅\n獻\n硬\n予\n繁\n圈\n雪\n函\n亦\n抽\n篇\n陣\n陰\n丁\n尺\n追\n堆\n雄\n迎\n泛\n爸\n樓\n避\n謀\n噸\n野\n豬\n旗\n累\n偏\n典\n館\n索\n秦\n脂\n潮\n爺\n豆\n忽\n托\n驚\n塑\n遺\n愈\n朱\n替\n纖\n粗\n傾\n尚\n痛\n楚\n謝\n奮\n購\n磨\n君\n池\n旁\n碎\n骨\n監\n捕\n弟\n暴\n割\n貫\n殊\n釋\n詞\n亡\n壁\n頓\n寶\n午\n塵\n聞\n揭\n炮\n殘\n冬\n橋\n婦\n警\n綜\n招\n吳\n付\n浮\n遭\n徐\n您\n搖\n谷\n贊\n箱\n隔\n訂\n男\n吹\n園\n紛\n唐\n敗\n宋\n玻\n巨\n耕\n坦\n榮\n閉\n灣\n鍵\n凡\n駐\n鍋\n救\n恩\n剝\n凝\n鹼\n齒\n截\n煉\n麻\n紡\n禁\n廢\n盛\n版\n緩\n淨\n睛\n昌\n婚\n涉\n筒\n嘴\n插\n岸\n朗\n莊\n街\n藏\n姑\n貿\n腐\n奴\n啦\n慣\n乘\n夥\n恢\n勻\n紗\n扎\n辯\n耳\n彪\n臣\n億\n璃\n抵\n脈\n秀\n薩\n俄\n網\n舞\n店\n噴\n縱\n寸\n汗\n掛\n洪\n賀\n閃\n柬\n爆\n烯\n津\n稻\n牆\n軟\n勇\n像\n滾\n厘\n蒙\n芳\n肯\n坡\n柱\n盪\n腿\n儀\n旅\n尾\n軋\n冰\n貢\n登\n黎\n削\n鑽\n勒\n逃\n障\n氨\n郭\n峰\n幣\n港\n伏\n軌\n畝\n畢\n擦\n莫\n刺\n浪\n秘\n援\n株\n健\n售\n股\n島\n甘\n泡\n睡\n童\n鑄\n湯\n閥\n休\n匯\n舍\n牧\n繞\n炸\n哲\n磷\n績\n朋\n淡\n尖\n啟\n陷\n柴\n呈\n徒\n顏\n淚\n稍\n忘\n泵\n藍\n拖\n洞\n授\n鏡\n辛\n壯\n鋒\n貧\n虛\n彎\n摩\n泰\n幼\n廷\n尊\n窗\n綱\n弄\n隸\n疑\n氏\n宮\n姐\n震\n瑞\n怪\n尤\n琴\n循\n描\n膜\n違\n夾\n腰\n緣\n珠\n窮\n森\n枝\n竹\n溝\n催\n繩\n憶\n邦\n剩\n幸\n漿\n欄\n擁\n牙\n貯\n禮\n濾\n鈉\n紋\n罷\n拍\n咱\n喊\n袖\n埃\n勤\n罰\n焦\n潛\n伍\n墨\n欲\n縫\n姓\n刊\n飽\n仿\n獎\n鋁\n鬼\n麗\n跨\n默\n挖\n鏈\n掃\n喝\n袋\n炭\n污\n幕\n諸\n弧\n勵\n梅\n奶\n潔\n災\n舟\n鑑\n苯\n訟\n抱\n毀\n懂\n寒\n智\n埔\n寄\n屆\n躍\n渡\n挑\n丹\n艱\n貝\n碰\n拔\n爹\n戴\n碼\n夢\n芽\n熔\n赤\n漁\n哭\n敬\n顆\n奔\n鉛\n仲\n虎\n稀\n妹\n乏\n珍\n申\n桌\n遵\n允\n隆\n螺\n倉\n魏\n銳\n曉\n氮\n兼\n隱\n礙\n赫\n撥\n忠\n肅\n缸\n牽\n搶\n博\n巧\n殼\n兄\n杜\n訊\n誠\n碧\n祥\n柯\n頁\n巡\n矩\n悲\n灌\n齡\n倫\n票\n尋\n桂\n鋪\n聖\n恐\n恰\n鄭\n趣\n抬\n荒\n騰\n貼\n柔\n滴\n猛\n闊\n輛\n妻\n填\n撤\n儲\n簽\n鬧\n擾\n紫\n砂\n遞\n戲\n吊\n陶\n伐\n餵\n療\n瓶\n婆\n撫\n臂\n摸\n忍\n蝦\n蠟\n鄰\n胸\n鞏\n擠\n偶\n棄\n槽\n勁\n乳\n鄧\n吉\n仁\n爛\n磚\n租\n烏\n艦\n伴\n瓜\n淺\n丙\n暫\n燥\n橡\n柳\n迷\n暖\n牌\n秧\n膽\n詳\n簧\n踏\n瓷\n譜\n呆\n賓\n糊\n洛\n輝\n憤\n競\n隙\n怒\n粘\n乃\n緒\n肩\n籍\n敏\n塗\n熙\n皆\n偵\n懸\n掘\n享\n糾\n醒\n狂\n鎖\n淀\n恨\n牲\n霸\n爬\n賞\n逆\n玩\n陵\n祝\n秒\n浙\n貌\n役\n彼\n悉\n鴨\n趨\n鳳\n晨\n畜\n輩\n秩\n卵\n署\n梯\n炎\n灘\n棋\n驅\n篩\n峽\n冒\n啥\n壽\n譯\n浸\n泉\n帽\n遲\n矽\n疆\n貸\n漏\n稿\n冠\n嫩\n脅\n芯\n牢\n叛\n蝕\n奧\n鳴\n嶺\n羊\n憑\n串\n塘\n繪\n酵\n融\n盆\n錫\n廟\n籌\n凍\n輔\n攝\n襲\n筋\n拒\n僚\n旱\n鉀\n鳥\n漆\n沈\n眉\n疏\n添\n棒\n穗\n硝\n韓\n逼\n扭\n僑\n涼\n挺\n碗\n栽\n炒\n杯\n患\n餾\n勸\n豪\n遼\n勃\n鴻\n旦\n吏\n拜\n狗\n埋\n輥\n掩\n飲\n搬\n罵\n辭\n勾\n扣\n估\n蔣\n絨\n霧\n丈\n朵\n姆\n擬\n宇\n輯\n陝\n雕\n償\n蓄\n崇\n剪\n倡\n廳\n咬\n駛\n薯\n刷\n斥\n番\n賦\n奉\n佛\n澆\n漫\n曼\n扇\n鈣\n桃\n扶\n仔\n返\n俗\n虧\n腔\n鞋\n棱\n覆\n框\n悄\n叔\n撞\n騙\n勘\n旺\n沸\n孤\n吐\n孟\n渠\n屈\n疾\n妙\n惜\n仰\n狠\n脹\n諧\n拋\n黴\n桑\n崗\n嘛\n衰\n盜\n滲\n臟\n賴\n湧\n甜\n曹\n閱\n肌\n哩\n厲\n烴\n緯\n毅\n昨\n偽\n症\n煮\n嘆\n釘\n搭\n莖\n籠\n酷\n偷\n弓\n錐\n恆\n傑\n坑\n鼻\n翼\n綸\n敘\n獄\n逮\n罐\n絡\n棚\n抑\n膨\n蔬\n寺\n驟\n穆\n冶\n枯\n冊\n屍\n凸\n紳\n坯\n犧\n焰\n轟\n欣\n晉\n瘦\n禦\n錠\n錦\n喪\n旬\n鍛\n壟\n搜\n撲\n邀\n亭\n酯\n邁\n舒\n脆\n酶\n閒\n憂\n酚\n頑\n羽\n漲\n卸\n仗\n陪\n闢\n懲\n杭\n姚\n肚\n捉\n飄\n漂\n昆\n欺\n吾\n郎\n烷\n汁\n呵\n飾\n蕭\n雅\n郵\n遷\n燕\n撒\n姻\n赴\n宴\n煩\n債\n帳\n斑\n鈴\n旨\n醇\n董\n餅\n雛\n姿\n拌\n傅\n腹\n妥\n揉\n賢\n拆\n歪\n葡\n胺\n丟\n浩\n徽\n昂\n墊\n擋\n覽\n貪\n慰\n繳\n汪\n慌\n馮\n諾\n姜\n誼\n兇\n劣\n誣\n耀\n昏\n躺\n盈\n騎\n喬\n溪\n叢\n盧\n抹\n悶\n諮\n刮\n駕\n纜\n悟\n摘\n鉺\n擲\n頗\n幻\n柄\n惠\n慘\n佳\n仇\n臘\n窩\n滌\n劍\n瞧\n堡\n潑\n蔥\n罩\n霍\n撈\n胎\n蒼\n濱\n倆\n捅\n湘\n砍\n霞\n邵\n萄\n瘋\n淮\n遂\n熊\n糞\n烘\n宿\n檔\n戈\n駁\n嫂\n裕\n徙\n箭\n捐\n腸\n撐\n曬\n辨\n殿\n蓮\n攤\n攪\n醬\n屏\n疫\n哀\n蔡\n堵\n沫\n皺\n暢\n疊\n閣\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 $o=Object.freeze({__proto__:null,HDKey:lr,createNonceManager:Gr,nonceManager:qr,signatureToHex:Hr,serializeSignature:Hr,generateMnemonic:function(n,e){return Qr(n,e)},generatePrivateKey:function(){return Ir(ct.utils.randomPrivateKey())},hdKeyToAccount:jo,mnemonicToAccount:function(n,{passphrase:e,...t}={}){const r=$r(n,e);return jo(lr.fromMasterSeed(r),t)},privateKeyToAccount:Lo,toAccount:va,parseAccount:function(n){return"string"==typeof n?{address:n,type:"json-rpc"}:n},privateKeyToAddress:function(n){return wa(Nr(ct.getPublicKey(n.slice(2),!1)))},publicKeyToAddress:wa,setSignEntropy:function(n){if(!n)throw new Error("must be a `true` or a hex value.");ka=n},sign:Aa,signAuthorization:Oa,signMessage:Fa,signTransaction:po,signTypedData:Fo,czech:Do,english:Mo,french:Go,italian:qo,japanese:Ho,korean:Ko,portuguese:_o,simplifiedChinese:Vo,spanish:Qo,traditionalChinese:Jo});const Wo="6.16.0";function Zo(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 Yo(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 Xo(n,e,t){for(let r in e){let a=e[r];const o=t?t[r]:null;o&&Zo(a,o,r),Object.defineProperty(n,r,{enumerable:!0,value:a,writable:!1})}}function ni(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=>ni(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 ni(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=>`${ni(t,e)}: ${ni(n[t],e)}`).join(", ")+" }"}}return"[ COULD NOT SERIALIZE ]"}function ei(n,e){return n&&n.code===e}function ti(n){return ei(n,"CALL_EXCEPTION")}function ri(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: ${ni(t)}`);for(const n in t){if("shortMessage"===n)continue;const e=t[n];r.push(n+"="+ni(e))}}r.push(`code=${e}`),r.push(`version=${Wo}`),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 Xo(r,{code:e}),t&&Object.assign(r,t),null==r.shortMessage&&Xo(r,{shortMessage:a}),r}function ai(n,e,t,r){if(!n)throw ri(e,t,r)}function oi(n,e,t,r){ai(n,e,"INVALID_ARGUMENT",{argument:t,value:r})}function ii(n,e,t){null==t&&(t=""),t&&(t=": "+t),ai(n>=e,"missing argument"+t,"MISSING_ARGUMENT",{count:n,expectedCount:e}),ai(n<=e,"too many arguments"+t,"UNEXPECTED_ARGUMENT",{count:n,expectedCount:e})}const si=["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 ci(n){ai(si.indexOf(n)>=0,"platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:n}})}function li(n,e,t){if(null==t&&(t=""),n!==e){let n=t,e="new";t&&(n+=".",e+=" "+t),ai(!1,`private constructor; use ${n}from* methods`,"UNSUPPORTED_OPERATION",{operation:e})}}function ui(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}oi(!1,"invalid BytesLike value",e||"value",n)}function hi(n,e){return ui(n,e,!1)}function di(n,e){return ui(n,e,!0)}function pi(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 fi(n){return pi(n,!0)||n instanceof Uint8Array}const gi="0123456789abcdef";function mi(n){const e=hi(n);let t="0x";for(let n=0;n<e.length;n++){const r=e[n];t+=gi[(240&r)>>4]+gi[15&r]}return t}function bi(n){return"0x"+n.map(n=>mi(n).substring(2)).join("")}function yi(n){return pi(n,!0)?(n.length-2)/2:hi(n).length}function vi(n,e,t){const r=hi(n);return null!=t&&t>r.length&&ai(!1,"cannot slice beyond data bounds","BUFFER_OVERRUN",{buffer:r,length:r.length,offset:t}),mi(r.slice(null==e?0:e,null==t?r.length:t))}function wi(n){let e=mi(n).substring(2);for(;e.startsWith("00");)e=e.substring(2);return"0x"+e}function ki(n,e,t){const r=hi(n);ai(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),mi(a)}function Ai(n,e){return ki(n,e,!0)}function Ei(n,e){return ki(n,e,!1)}const xi=BigInt(0),Ii=BigInt(1),Pi=9007199254740991;function Ni(n,e){const t=Ti(n,"value"),r=BigInt(Oi(e,"width"));if(ai(t>>r===xi,"overflow","NUMERIC_FAULT",{operation:"fromTwos",fault:"overflow",value:n}),t>>r-Ii){return-((~t&(Ii<<r)-Ii)+Ii)}return t}function zi(n,e){let t=Ri(n,"value");const r=BigInt(Oi(e,"width")),a=Ii<<r-Ii;if(t<xi){t=-t,ai(t<=a,"too low","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:n});return(~t&(Ii<<r)-Ii)+Ii}return ai(t<a,"too high","NUMERIC_FAULT",{operation:"toTwos",fault:"overflow",value:n}),t}function Si(n,e){const t=Ti(n,"value"),r=BigInt(Oi(e,"bits"));return t&(Ii<<r)-Ii}function Ri(n,e){switch(typeof n){case"bigint":return n;case"number":return oi(Number.isInteger(n),"underflow",e||"value",n),oi(n>=-Pi&&n<=Pi,"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){oi(!1,`invalid BigNumberish string: ${t.message}`,e||"value",n)}}oi(!1,"invalid BigNumberish value",e||"value",n)}function Ti(n,e){const t=Ri(n,e);return ai(t>=xi,"unsigned value cannot be negative","NUMERIC_FAULT",{fault:"overflow",operation:"getUint",value:n}),t}const Bi="0123456789abcdef";function Ci(n){if(n instanceof Uint8Array){let e="0x0";for(const t of n)e+=Bi[t>>4],e+=Bi[15&t];return BigInt(e)}return Ri(n)}function Oi(n,e){switch(typeof n){case"bigint":return oi(n>=-Pi&&n<=Pi,"overflow",e||"value",n),Number(n);case"number":return oi(Number.isInteger(n),"underflow",e||"value",n),oi(n>=-Pi&&n<=Pi,"overflow",e||"value",n),n;case"string":try{if(""===n)throw new Error("empty string");return Oi(BigInt(n),e)}catch(t){oi(!1,`invalid numeric string: ${t.message}`,e||"value",n)}}oi(!1,"invalid numeric value",e||"value",n)}function Ui(n){return Oi(Ci(n))}function Fi(n,e){const t=Ti(n,"value");let r=t.toString(16);if(null==e)r.length%2&&(r="0"+r);else{const a=Oi(e,"width");if(0===a&&t===xi)return"0x";for(ai(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 Li(n,e){const t=Ti(n,"value");if(t===xi){const n=null!=e?Oi(e,"width"):0;return new Uint8Array(n)}let r=t.toString(16);if(r.length%2&&(r="0"+r),null!=e){const t=Oi(e,"width");for(;r.length<2*t;)r="00"+r;ai(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 ji(n){let e=mi(fi(n)?n:Li(n)).substring(2);for(;e.startsWith("0");)e=e.substring(1);return""===e&&(e="0"),"0x"+e}const Di="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";let Mi=null;function Gi(n){if(null==Mi){Mi={};for(let n=0;n<58;n++)Mi[Di[n]]=BigInt(n)}const e=Mi[n];return oi(null!=e,"invalid base58 value","letter",n),e}const qi=BigInt(0),Hi=BigInt(58);function Ki(n){const e=hi(n);let t=Ci(e),r="";for(;t;)r=Di[Number(t%Hi)]+r,t/=Hi;for(let n=0;n<e.length&&!e[n];n++)r=Di[0]+r;return r}function _i(n){let e=qi;for(let t=0;t<n.length;t++)e*=Hi,e+=Gi(n[t]);return e}function Vi(n){n=atob(n);const e=new Uint8Array(n.length);for(let t=0;t<n.length;t++)e[t]=n.charCodeAt(t);return hi(e)}function Qi(n){const e=hi(n);let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}class Ji{filter;emitter;#n;constructor(n,e,t){this.#n=e,Xo(this,{emitter:n,filter:t})}async removeListener(){null!=this.#n&&await this.emitter.off(this.filter,this.#n)}}function $i(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 Wi=Object.freeze({error:function(n,e,t,r,a){oi(!1,`invalid codepoint at offset ${e}; ${n}`,"bytes",t)},ignore:$i,replace:function(n,e,t,r,a){return"OVERLONG"===n?(oi("number"==typeof a,"invalid bad code point for replacement","badCodepoint",a),r.push(a),0):(r.push(65533),$i(n,e,t))}});function Zi(n,e){null==e&&(e=Wi.error);const t=hi(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 Yi(n,e){oi("string"==typeof n,"invalid string value","str",n),null!=e&&(ci(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);oi(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 Xi(n,e){return Zi(n,e).map(n=>n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode(55296+(n>>10&1023),56320+(1023&n)))).join("")}function ns(n,e){return Zi(Yi(n,e))}function es(n){return async function(e,t){ai(null==t||!t.cancelled,"request cancelled before sending","CANCELLED");const r=e.url.split(":")[0].toLowerCase();ai("http"===r||"https"===r,`unsupported protocol ${r}`,"UNSUPPORTED_OPERATION",{info:{protocol:r},operation:"request"}),ai("https"===r||!e.credentials||e.allowInsecureAuthentication,"insecure authorized connections unsupported","UNSUPPORTED_OPERATION",{operation:"request"});let a=null;const o=new AbortController,i=setTimeout(()=>{a=ri("request timeout","TIMEOUT"),o.abort()},e.timeout);t&&t.addListener(()=>{a=ri("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(),h=null==u?null:new Uint8Array(u);return{statusCode:c.status,statusMessage:c.statusText,headers:l,body:h}}}let ts=es();const rs=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),as=new RegExp("^ipfs://(ipfs/)?(.*)$","i");let os=!1;async function is(n,e){try{const e=n.match(rs);if(!e)throw new Error("invalid data");return new ps(200,"OK",{"content-type":e[1]||"text/plain"},e[2]?Vi(e[3]):Yi(e[3].replace(/%([0-9a-f][0-9a-f])/gi,(n,e)=>String.fromCharCode(parseInt(e,16)))))}catch(e){return new ps(599,"BAD REQUEST (invalid data: URI)",{},null,new ds(n))}}function ss(n){return async function(e,t){try{const t=e.match(as);if(!t)throw new Error("invalid link");return new ds(`${n}${t[2]}`)}catch(n){return new ps(599,"BAD REQUEST (invalid IPFS URI)",{},null,new ds(e))}}}const cs={data:is,ipfs:ss("https://gateway.ipfs.io/ipfs/")},ls=new WeakMap;class us{#e;#t;constructor(n){this.#e=[],this.#t=!1,ls.set(n,()=>{if(!this.#t){this.#t=!0;for(const n of this.#e)setTimeout(()=>{n()},0);this.#e=[]}})}addListener(n){ai(!this.#t,"singal already cancelled","UNSUPPORTED_OPERATION",{operation:"fetchCancelSignal.addCancelListener"}),this.#e.push(n)}get cancelled(){return this.#t}checkSignal(){ai(!this.cancelled,"cancelled","CANCELLED",{})}}function hs(n){if(null==n)throw new Error("missing signal; should not happen");return n.checkSignal(),n}class ds{#r;#a;#o;#i;#s;#c;#l;#u;#h;#d;#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=Yi(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=Yi(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.#h&&(n.authorization=`Basic ${Qi(Yi(this.#h))}`),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.#h||null}setCredentials(n,e){oi(!n.match(/:/),"invalid basic authentication username","username","[REDACTED]"),this.#h=`${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){oi(n>=0,"timeout must be non-zero","timeout",n),this.#s=n}get preflightFunc(){return this.#d||null}set preflightFunc(n){this.#d=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||ts}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?mi(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");ai(fs()<=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 cs){const n=await cs[i](o.url,hs(r.#g));if(n instanceof ps){let e=n;if(this.processFunc){hs(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,hs(r.#g));let c=new ps(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){hs(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 ai(null==this.#g,"request already sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.send"}),this.#g=new us(this),this.#y(0,fs()+this.timeout,0,this,new ps(0,"",{},null,this))}cancel(){ai(null!=this.#g,"request has not been sent","UNSUPPORTED_OPERATION",{operation:"fetchRequest.cancel"});const n=ls.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();ai("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 ds(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 ds(this.url);return n.#i=this.#i,this.#l&&(n.#l=this.#l),n.#u=this.#u,n.#o=Object.assign({},this.#o),n.#h=this.#h,this.allowGzip&&(n.allowGzip=!0),n.timeout=this.timeout,this.allowInsecureAuthentication&&(n.allowInsecureAuthentication=!0),n.#d=this.#d,n.#p=this.#p,n.#f=this.#f,n.#m=Object.assign({},this.#m),n.#b=this.#b,n}static lockConfig(){os=!0}static getGateway(n){return cs[n.toLowerCase()]||null}static registerGateway(n,e){if("http"===(n=n.toLowerCase())||"https"===n)throw new Error(`cannot intercept ${n}; use registerGetUrl`);if(os)throw new Error("gateways locked");cs[n]=e}static registerGetUrl(n){if(os)throw new Error("gateways locked");ts=n}static createGetUrlFunc(n){return es(n)}static createDataGateway(){return is}static createIpfsGatewayFunc(n){return ss(n)}}class ps{#v;#w;#o;#l;#k;#A;toString(){return`<FetchResponse status=${this.statusCode} body=${this.#l?mi(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?"":Xi(this.#l)}catch(n){ai(!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){ai(!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 ps(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:oi(Number.isInteger(e)&&e>=0,"invalid stall timeout","stall",e);const t=new Error(n||"throttling requests");throw Xo(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=Xi(this.#l))}catch(n){}ai(!1,n,"SERVER_ERROR",{request:this.request||"unknown request",response:this,error:e,info:{requestUrl:t,responseBody:r,responseStatus:`${this.statusCode} ${this.statusMessage}`}})}}function fs(){return(new Date).getTime()}const gs=BigInt(-1),ms=BigInt(0),bs=BigInt(1),ys=BigInt(5),vs={};let ws="0000";for(;ws.length<80;)ws+=ws;function ks(n){let e=ws;for(;e.length<n;)e+=e;return BigInt("1"+e.substring(0,n))}function As(n,e,t){const r=BigInt(e.width);if(e.signed){const e=bs<<r-bs;ai(null==t||n>=-e&&n<e,"overflow","NUMERIC_FAULT",{operation:t,fault:"overflow",value:n}),n=n>ms?Ni(Si(n,r),r):-Ni(Si(-n,r),r)}else{const e=bs<<r;ai(null==t||n>=0&&n<e,"overflow","NUMERIC_FAULT",{operation:t,fault:"overflow",value:n}),n=(n%e+e)%e&e-bs}return n}function Es(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]+)$/);oi(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:(oi(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)}oi(t%8==0,"invalid FixedNumber width (not byte aligned)","format.width",t),oi(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 xs{format;#E;#x;#I;_value;constructor(n,e,t){li(n,vs,"FixedNumber"),this.#x=e,this.#E=t;const r=function(n,e){let t="";n<ms&&(t="-",n*=gs);let r=n.toString();if(0===e)return t+r;for(;r.length<=e;)r=ws+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);Xo(this,{format:t.name,_value:r}),this.#I=ks(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){oi(this.format===n.format,"incompatible format; use fixedNumber.toFormat","other",n)}#N(n,e){return n=As(n,this.#E,e),new xs(vs,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")}#S(n,e){return this.#P(n),this.#N(this.#x-n.#x,e)}subUnsafe(n){return this.#S(n)}sub(n){return this.#S(n,"sub")}#R(n,e){return this.#P(n),this.#N(this.#x*n.#x/this.#I,e)}mulUnsafe(n){return this.#R(n)}mul(n){return this.#R(n,"mul")}mulSignal(n){this.#P(n);const e=this.#x*n.#x;return ai(e%this.#I===ms,"precision lost during signalling mul","NUMERIC_FAULT",{operation:"mulSignal",fault:"underflow",value:this}),this.#N(e/this.#I,"mulSignal")}#T(n,e){return ai(n.#x!==ms,"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.#T(n)}div(n){return this.#T(n,"div")}divSignal(n){ai(n.#x!==ms,"division by zero","NUMERIC_FAULT",{operation:"div",fault:"divide-by-zero",value:this}),this.#P(n);const e=this.#x*this.#I;return ai(e%n.#x===ms,"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*=ks(r):r<0&&(e*=ks(-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<ms&&(n-=this.#I-bs),n=this.#x/this.#I*this.#I,this.#N(n,"floor")}ceiling(){let n=this.#x;return this.#x>ms&&(n+=this.#I-bs),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=ys*ks(e-1);let r=this.value+t;const a=ks(e);return r=r/a*a,As(r,this.#E,"round"),new xs(vs,r,this.#E)}isZero(){return this.#x===ms}isNegative(){return this.#x<ms}toString(){return this._value}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(n){return xs.fromString(this.toString(),n)}static fromValue(n,e,t){const r=null==e?0:Oi(e),a=Es(t);let o=Ri(n,"value");const i=r-a.decimals;if(i>0){const e=ks(i);ai(o%e===ms,"value loses precision for format","NUMERIC_FAULT",{operation:"fromValue",fault:"underflow",value:n}),o/=e}else i<0&&(o*=ks(-i));return As(o,a,"fromValue"),new xs(vs,o,a)}static fromString(n,e){const t=n.match(/^(-?)([0-9]*)\.?([0-9]*)$/);oi(t&&t[2].length+t[3].length>0,"invalid FixedNumber string value","value",n);const r=Es(e);let a=t[2]||"0",o=t[3]||"";for(;o.length<r.decimals;)o+=ws;ai(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 As(i,r,"fromString"),new xs(vs,i,r)}static fromBytes(n,e){let t=Ci(hi(n,"value"));const r=Es(e);return r.signed&&(t=Ni(t,r.width)),As(t,r,"fromBytes"),new xs(vs,t,r)}}function Is(n){let e=n.toString(16);for(;e.length<2;)e="0"+e;return"0x"+e}function Ps(n,e,t){let r=0;for(let a=0;a<t;a++)r=256*r+n[e+a];return r}function Ns(n,e,t,r){const a=[];for(;t<e+1+r;){const o=zs(n,t);a.push(o.result),ai((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 zs(n,e){ai(0!==n.length,"data too short","BUFFER_OVERRUN",{buffer:n,length:0,offset:1});const t=e=>{ai(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=Ps(n,e+1,r);return t(e+1+r+a),Ns(n,e,e+1+r,r+a)}if(n[e]>=192){const r=n[e]-192;return t(e+1+r),Ns(n,e,e+1,r)}if(n[e]>=184){const r=n[e]-183;t(e+1+r);const a=Ps(n,e+1,r);t(e+1+r+a);return{consumed:1+r+a,result:mi(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:mi(n.slice(e+1,e+1+r))}}return{consumed:1,result:Is(n[e])}}function Ss(n){const e=hi(n,"data"),t=zs(e,0);return oi(t.consumed===e.length,"unexpected junk after rlp payload","data",n),t.result}function Rs(n){const e=[];for(;n;)e.unshift(255&n),n>>=8;return e}function Ts(n){if(Array.isArray(n)){let e=[];if(n.forEach(function(n){e=e.concat(Ts(n))}),e.length<=55)return e.unshift(192+e.length),e;const t=Rs(e.length);return t.unshift(247+t.length),t.concat(e)}const e=Array.prototype.slice.call(hi(n,"object"));if(1===e.length&&e[0]<=127)return e;if(e.length<=55)return e.unshift(128+e.length),e;const t=Rs(e.length);return t.unshift(183+t.length),t.concat(e)}const Bs="0123456789abcdef";function Cs(n){let e="0x";for(const t of Ts(n))e+=Bs[t>>4],e+=Bs[15&t];return e}const Os=["wei","kwei","mwei","gwei","szabo","finney","ether"];function Us(n,e){let t=18;if("string"==typeof e){const n=Os.indexOf(e);oi(n>=0,"invalid unit","unit",e),t=3*n}else null!=e&&(t=Oi(e,"unit"));return xs.fromValue(n,t,{decimals:t,width:512}).toString()}function Fs(n,e){oi("string"==typeof n,"value must be a string","value",n);let t=18;if("string"==typeof e){const n=Os.indexOf(e);oi(n>=0,"invalid unit","unit",e),t=3*n}else null!=e&&(t=Oi(e,"unit"));return xs.fromString(n,{decimals:t,width:512}).value}function Ls(n){return Us(n,18)}function js(n){return Fs(n,18)}function Ds(n){const e=hi(n,"randomBytes");e[6]=15&e[6]|64,e[8]=63&e[8]|128;const t=mi(e);return[t.substring(2,10),t.substring(10,14),t.substring(14,18),t.substring(18,22),t.substring(22,34)].join("-")}const Ms=32,Gs=new Uint8Array(Ms),qs=["then"],Hs={},Ks=new WeakMap;function _s(n){return Ks.get(n)}function Vs(n,e){Ks.set(n,e)}function Qs(n,e){const t=new Error(`deferred error during ABI decoding triggered accessing ${n}`);throw t.error=e,t}function Js(n,e,t){return n.indexOf(null)>=0?e.map((n,e)=>n instanceof $s?Js(_s(n),n,t):n):n.reduce((n,r,a)=>{let o=e.getValue(r);return r in n||(t&&o instanceof $s&&(o=Js(_s(o),o,t)),n[r]=o),n},{})}class $s extends Array{#B;constructor(...n){const e=n[0];let t=n[1],r=(n[2]||[]).slice(),a=!0;e!==Hs&&(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(Vs(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=Oi(e,"%index");if(t<0||t>=this.length)throw new RangeError("out of result range");const r=n[t];return r instanceof Error&&Qs(`index ${t}`,r),r}if(qs.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 Vs(i,_s(this)),i}toArray(n){const e=[];return this.forEach((t,r)=>{t instanceof Error&&Qs(`index ${r}`,t),n&&t instanceof $s&&(t=t.toArray(n)),e.push(t)}),e}toObject(n){const e=_s(this);return e.reduce((t,r,a)=>(ai(null!=r,`value at index ${a} unnamed`,"UNSUPPORTED_OPERATION",{operation:"toObject()"}),Js(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=_s(this),r=[],a=[];for(let o=n;o<e;o++)r.push(this[o]),a.push(t[o]);return new $s(Hs,r,a)}filter(n,e){const t=_s(this),r=[],a=[];for(let o=0;o<this.length;o++){const i=this[o];i instanceof Error&&Qs(`index ${o}`,i),n.call(e,i,o,this)&&(r.push(i),a.push(t[o]))}return new $s(Hs,r,a)}map(n,e){const t=[];for(let r=0;r<this.length;r++){const a=this[r];a instanceof Error&&Qs(`index ${r}`,a),t.push(n.call(e,a,r,this))}return t}getValue(n){const e=_s(this).indexOf(n);if(-1===e)return;const t=this[e];return t instanceof Error&&Qs(`property ${JSON.stringify(n)}`,t.error),t}static fromItems(n,e){return new $s(Hs,n,e)}}function Ws(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 Zs(n){let e=Li(n);return ai(e.length<=Ms,"value out-of-bounds","BUFFER_OVERRUN",{buffer:e,length:Ms,offset:e.length}),e.length!==Ms&&(e=di(bi([Gs.slice(e.length%Ms),e]))),e}class Ys{name;type;localName;dynamic;constructor(n,e,t,r){Xo(this,{name:n,type:e,localName:t,dynamic:r},{name:"string",type:"string",localName:"string",dynamic:"boolean"})}_throwError(n,e){oi(!1,n,this.localName,e)}}class Xs{#C;#O;constructor(){this.#C=[],this.#O=0}get data(){return bi(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(di(n.data))}writeBytes(n){let e=di(n);const t=e.length%Ms;return t&&(e=di(bi([e,Gs.slice(t)]))),this.#U(e)}writeValue(n){return this.#U(Zs(n))}writeUpdatableValue(){const n=this.#C.length;return this.#C.push(Gs),this.#O+=Ms,e=>{this.#C[n]=Zs(e)}}}class nc{allowLoose;#C;#F;#L;#j;#D;constructor(n,e,t){Xo(this,{allowLoose:!!e}),this.#C=di(n),this.#L=0,this.#j=null,this.#D=null!=t?t:1024,this.#F=0}get data(){return mi(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,ai(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:di(this.#C),offset:this.#F,length:n,info:{bytesRead:this.#L,dataLength:this.dataLength}})}#G(n,e,t){let r=Math.ceil(e/Ms)*Ms;return this.#F+r>this.#C.length&&(this.allowLoose&&t&&this.#F+e<=this.#C.length?r=e:ai(!1,"data out-of-bounds","BUFFER_OVERRUN",{buffer:di(this.#C),length:this.#C.length,offset:this.#F+r})),this.#C.slice(this.#F,this.#F+r)}subReader(n){const e=new nc(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 Ci(this.readBytes(Ms))}readIndex(){return Ui(this.readBytes(Ms))}}function ec(n){if(!Number.isSafeInteger(n)||n<0)throw new Error(`Wrong positive integer: ${n}`)}function tc(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 rc(n){if("function"!=typeof n||"function"!=typeof n.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");ec(n.outputLen),ec(n.blockLen)}function ac(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 oc(n,e){tc(n);const t=e.outputLen;if(n.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}const ic="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,sc=n=>n instanceof Uint8Array,cc=n=>new Uint32Array(n.buffer,n.byteOffset,Math.floor(n.byteLength/4)),lc=n=>new DataView(n.buffer,n.byteOffset,n.byteLength),uc=(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 hc=async()=>{};async function dc(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 hc(),r+=n)}}function pc(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)),!sc(n))throw new Error("expected Uint8Array, got "+typeof n);return n}class fc{clone(){return this._cloneInto()}}const gc={}.toString;function mc(n,e){if(void 0!==e&&"[object Object]"!==gc.call(e))throw new Error("Options should be object or undefined");return Object.assign(n,e)}function bc(n){const e=e=>n().update(pc(e)).digest(),t=n();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>n(),e}function yc(n=32){if(ic&&"function"==typeof ic.getRandomValues)return ic.getRandomValues(new Uint8Array(n));throw new Error("crypto.getRandomValues must be defined")}class vc extends fc{constructor(n,e){super(),this.finished=!1,this.destroyed=!1,rc(n);const t=pc(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 ac(this),this.iHash.update(n),this}digestInto(n){ac(this),tc(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 wc=(n,e,t)=>new vc(n,e).update(t).digest();function kc(n,e,t,r){rc(n);const a=mc({dkLen:32,asyncTick:10},r),{c:o,dkLen:i,asyncTick:s}=a;if(ec(o),ec(i),ec(s),o<1)throw new Error("PBKDF2: iterations (c) should be >= 1");const c=pc(e),l=pc(t),u=new Uint8Array(i),h=wc.create(n,c),d=h._cloneInto().update(l);return{c:o,dkLen:i,asyncTick:s,DK:u,PRF:h,PRFSalt:d}}function Ac(n,e,t,r){const{c:a,dkLen:o,DK:i,PRF:s,PRFSalt:c}=kc(n,e,t,r);let l;const u=new Uint8Array(4),h=lc(u),d=new Uint8Array(s.outputLen);for(let n=1,e=0;e<o;n++,e+=s.outputLen){const t=i.subarray(e,e+s.outputLen);h.setInt32(0,n,!1),(l=c._cloneInto(l)).update(u).digestInto(d),t.set(d.subarray(0,t.length));for(let n=1;n<a;n++){s._cloneInto(l).update(d).digestInto(d);for(let n=0;n<t.length;n++)t[n]^=d[n]}}return function(n,e,t,r,a){return n.destroy(),e.destroy(),r&&r.destroy(),a.fill(0),t}(s,c,i,l,d)}wc.create=(n,e)=>new vc(n,e);class Ec extends fc{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=lc(this.buffer)}update(n){ac(this);const{view:e,buffer:t,blockLen:r}=this,a=(n=pc(n)).length;for(let o=0;o<a;){const i=Math.min(r-this.pos,a-o);if(i===r){const e=lc(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){ac(this),oc(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=lc(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 xc=(n,e,t)=>n&e^~n&t,Ic=(n,e,t)=>n&e^n&t^e&t,Pc=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]),Nc=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),zc=new Uint32Array(64);class Sc extends Ec{constructor(){super(64,32,8,!1),this.A=0|Nc[0],this.B=0|Nc[1],this.C=0|Nc[2],this.D=0|Nc[3],this.E=0|Nc[4],this.F=0|Nc[5],this.G=0|Nc[6],this.H=0|Nc[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)zc[t]=n.getUint32(e,!1);for(let n=16;n<64;n++){const e=zc[n-15],t=zc[n-2],r=uc(e,7)^uc(e,18)^e>>>3,a=uc(t,17)^uc(t,19)^t>>>10;zc[n]=a+zc[n-7]+r+zc[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+(uc(i,6)^uc(i,11)^uc(i,25))+xc(i,s,c)+Pc[n]+zc[n]|0,u=(uc(t,2)^uc(t,13)^uc(t,22))+Ic(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(){zc.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const Rc=bc(()=>new Sc),Tc=BigInt(2**32-1),Bc=BigInt(32);function Cc(n,e=!1){return e?{h:Number(n&Tc),l:Number(n>>Bc&Tc)}:{h:0|Number(n>>Bc&Tc),l:0|Number(n&Tc)}}function Oc(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}=Cc(n[a],e);[t[a],r[a]]=[o,i]}return[t,r]}const Uc=(n,e,t)=>n<<t|e>>>32-t,Fc=(n,e,t)=>e<<t|n>>>32-t,Lc=(n,e,t)=>e<<t-32|n>>>64-t,jc=(n,e,t)=>n<<t-32|e>>>64-t;var Dc={fromBig:Cc,split:Oc,toBig:(n,e)=>BigInt(n>>>0)<<Bc|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:Uc,rotlSL:Fc,rotlBH:Lc,rotlBL:jc,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[Mc,Gc]=(()=>Dc.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))))(),qc=new Uint32Array(80),Hc=new Uint32Array(80);class Kc extends Ec{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:h,Gh:d,Gl:p,Hh:f,Hl:g}=this;return[n,e,t,r,a,o,i,s,c,l,u,h,d,p,f,g]}set(n,e,t,r,a,o,i,s,c,l,u,h,d,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|h,this.Gh=0|d,this.Gl=0|p,this.Hh=0|f,this.Hl=0|g}process(n,e){for(let t=0;t<16;t++,e+=4)qc[t]=n.getUint32(e),Hc[t]=n.getUint32(e+=4);for(let n=16;n<80;n++){const e=0|qc[n-15],t=0|Hc[n-15],r=Dc.rotrSH(e,t,1)^Dc.rotrSH(e,t,8)^Dc.shrSH(e,t,7),a=Dc.rotrSL(e,t,1)^Dc.rotrSL(e,t,8)^Dc.shrSL(e,t,7),o=0|qc[n-2],i=0|Hc[n-2],s=Dc.rotrSH(o,i,19)^Dc.rotrBH(o,i,61)^Dc.shrSH(o,i,6),c=Dc.rotrSL(o,i,19)^Dc.rotrBL(o,i,61)^Dc.shrSL(o,i,6),l=Dc.add4L(a,c,Hc[n-7],Hc[n-16]),u=Dc.add4H(l,r,s,qc[n-7],qc[n-16]);qc[n]=0|u,Hc[n]=0|l}let{Ah:t,Al:r,Bh:a,Bl:o,Ch:i,Cl:s,Dh:c,Dl:l,Eh:u,El:h,Fh:d,Fl:p,Gh:f,Gl:g,Hh:m,Hl:b}=this;for(let n=0;n<80;n++){const e=Dc.rotrSH(u,h,14)^Dc.rotrSH(u,h,18)^Dc.rotrBH(u,h,41),y=Dc.rotrSL(u,h,14)^Dc.rotrSL(u,h,18)^Dc.rotrBL(u,h,41),v=u&d^~u&f,w=h&p^~h&g,k=Dc.add5L(b,y,w,Gc[n],Hc[n]),A=Dc.add5H(k,m,e,v,Mc[n],qc[n]),E=0|k,x=Dc.rotrSH(t,r,28)^Dc.rotrBH(t,r,34)^Dc.rotrBH(t,r,39),I=Dc.rotrSL(t,r,28)^Dc.rotrBL(t,r,34)^Dc.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|d,g=0|p,d=0|u,p=0|h,({h:u,l:h}=Dc.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=Dc.add3L(E,I,N);t=Dc.add3H(z,A,x,P),r=0|z}({h:t,l:r}=Dc.add(0|this.Ah,0|this.Al,0|t,0|r)),({h:a,l:o}=Dc.add(0|this.Bh,0|this.Bl,0|a,0|o)),({h:i,l:s}=Dc.add(0|this.Ch,0|this.Cl,0|i,0|s)),({h:c,l:l}=Dc.add(0|this.Dh,0|this.Dl,0|c,0|l)),({h:u,l:h}=Dc.add(0|this.Eh,0|this.El,0|u,0|h)),({h:d,l:p}=Dc.add(0|this.Fh,0|this.Fl,0|d,0|p)),({h:f,l:g}=Dc.add(0|this.Gh,0|this.Gl,0|f,0|g)),({h:m,l:b}=Dc.add(0|this.Hh,0|this.Hl,0|m,0|b)),this.set(t,r,a,o,i,s,c,l,u,h,d,p,f,g,m,b)}roundClean(){qc.fill(0),Hc.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 _c=bc(()=>new Kc);const Vc=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")}(),Qc=Vc.crypto||Vc.msCrypto;function Jc(n){switch(n){case"sha256":return Rc.create();case"sha512":return _c.create()}oi(!1,"invalid hashing algorithm name","algorithm",n)}let $c=!1;const Wc=function(n,e,t){return function(n,e){const t={sha256:Rc,sha512:_c}[n];return oi(null!=t,"invalid hmac algorithm","algorithm",n),wc.create(t,e)}(n,e).update(t).digest()};let Zc=Wc;function Yc(n,e,t){const r=hi(e,"key"),a=hi(t,"data");return mi(Zc(n,r,a))}Yc._=Wc,Yc.lock=function(){$c=!0},Yc.register=function(n){if($c)throw new Error("computeHmac is locked");Zc=n},Object.freeze(Yc);const[Xc,nl,el]=[[],[],[]],tl=BigInt(0),rl=BigInt(1),al=BigInt(2),ol=BigInt(7),il=BigInt(256),sl=BigInt(113);for(let n=0,e=rl,t=1,r=0;n<24;n++){[t,r]=[r,(2*t+3*r)%5],Xc.push(2*(5*r+t)),nl.push((n+1)*(n+2)/2%64);let a=tl;for(let n=0;n<7;n++)e=(e<<rl^(e>>ol)*sl)%il,e&al&&(a^=rl<<(rl<<BigInt(n))-rl);el.push(a)}const[cl,ll]=Oc(el,!0),ul=(n,e,t)=>t>32?Lc(n,e,t):Uc(n,e,t),hl=(n,e,t)=>t>32?jc(n,e,t):Fc(n,e,t);class dl extends fc{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,ec(t),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=cc(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=ul(o,i,1)^t[r],c=hl(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=nl[t],o=ul(e,a,r),i=hl(e,a,r),s=Xc[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]^=cl[r],n[1]^=ll[r]}t.fill(0)}(this.state32,this.rounds),this.posOut=0,this.pos=0}update(n){ac(this);const{blockLen:e,state:t}=this,r=(n=pc(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){ac(this,!1),tc(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 ec(n),this.xofInto(new Uint8Array(n))}digestInto(n){if(oc(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 dl(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 pl=((n,e,t)=>bc(()=>new dl(e,n,t)))(1,136,32);let fl=!1;const gl=function(n){return pl(n)};let ml=gl;function bl(n){const e=hi(n,"data");return mi(ml(e))}bl._=gl,bl.lock=function(){fl=!0},bl.register=function(n){if(fl)throw new TypeError("keccak256 is locked");ml=n},Object.freeze(bl);const yl=new Uint8Array([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),vl=Uint8Array.from({length:16},(n,e)=>e);let wl=[vl],kl=[vl.map(n=>(9*n+5)%16)];for(let n=0;n<4;n++)for(let e of[wl,kl])e.push(e[n].map(n=>yl[n]));const Al=[[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)),El=wl.map((n,e)=>n.map(n=>Al[e][n])),xl=kl.map((n,e)=>n.map(n=>Al[e][n])),Il=new Uint32Array([0,1518500249,1859775393,2400959708,2840853838]),Pl=new Uint32Array([1352829926,1548603684,1836072691,2053994217,0]),Nl=(n,e)=>n<<e|n>>>32-e;function zl(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 Sl=new Uint32Array(16);class Rl extends Ec{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)Sl[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,h=u;for(let n=0;n<5;n++){const e=4-n,d=Il[n],p=Pl[n],f=wl[n],g=kl[n],m=El[n],b=xl[n];for(let e=0;e<16;e++){const r=Nl(t+zl(n,a,i,c)+Sl[f[e]]+d,m[e])+u|0;t=u,u=c,c=0|Nl(i,10),i=a,a=r}for(let n=0;n<16;n++){const t=Nl(r+zl(e,o,s,l)+Sl[g[n]]+p,b[n])+h|0;r=h,h=l,l=0|Nl(s,10),s=o,o=t}}this.set(this.h1+i+l|0,this.h2+c+h|0,this.h3+u+r|0,this.h4+t+o|0,this.h0+a+s|0)}roundClean(){Sl.fill(0)}destroy(){this.destroyed=!0,this.buffer.fill(0),this.set(0,0,0,0,0)}}const Tl=bc(()=>new Rl);let Bl=!1;const Cl=function(n){return Tl(n)};let Ol=Cl;function Ul(n){const e=hi(n,"data");return mi(Ol(e))}Ul._=Cl,Ul.lock=function(){Bl=!0},Ul.register=function(n){if(Bl)throw new TypeError("ripemd160 is locked");Ol=n},Object.freeze(Ul);let Fl=!1;const Ll=function(n,e,t,r,a){return function(n,e,t,r,a){const o={sha256:Rc,sha512:_c}[a];return oi(null!=o,"invalid pbkdf2 algorithm","algorithm",a),Ac(o,n,e,{c:t,dkLen:r})}(n,e,t,r,a)};let jl=Ll;function Dl(n,e,t,r,a){const o=hi(n,"password"),i=hi(e,"salt");return mi(jl(o,i,t,r,a))}Dl._=Ll,Dl.lock=function(){Fl=!0},Dl.register=function(n){if(Fl)throw new Error("pbkdf2 is locked");jl=n},Object.freeze(Dl);let Ml=!1;const Gl=function(n){return new Uint8Array(function(n){ai(null!=Qc,"platform does not support secure random numbers","UNSUPPORTED_OPERATION",{operation:"randomBytes"}),oi(Number.isInteger(n)&&n>0&&n<=1024,"invalid length","length",n);const e=new Uint8Array(n);return Qc.getRandomValues(e),e}(n))};let ql=Gl;function Hl(n){return ql(n)}Hl._=Gl,Hl.lock=function(){Ml=!0},Hl.register=function(n){if(Ml)throw new Error("randomBytes is locked");ql=n},Object.freeze(Hl);const Kl=(n,e)=>n<<e|n>>>32-e;function _l(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++],h=n[e++]^t[r++],d=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=h,z=d,S=p,R=f,T=g,B=m,C=b,O=y,U=v,F=w,L=k;for(let n=0;n<8;n+=2)P^=Kl(A+O|0,7),R^=Kl(P+A|0,9),O^=Kl(R+P|0,13),A^=Kl(O+R|0,18),T^=Kl(N+E|0,7),U^=Kl(T+N|0,9),E^=Kl(U+T|0,13),N^=Kl(E+U|0,18),F^=Kl(B+z|0,7),x^=Kl(F+B|0,9),z^=Kl(x+F|0,13),B^=Kl(z+x|0,18),I^=Kl(L+C|0,7),S^=Kl(I+L|0,9),C^=Kl(S+I|0,13),L^=Kl(C+S|0,18),E^=Kl(A+I|0,7),x^=Kl(E+A|0,9),I^=Kl(x+E|0,13),A^=Kl(I+x|0,18),z^=Kl(N+P|0,7),S^=Kl(z+N|0,9),P^=Kl(S+z|0,13),N^=Kl(P+S|0,18),C^=Kl(B+T|0,7),R^=Kl(C+B|0,9),T^=Kl(R+C|0,13),B^=Kl(T+R|0,18),O^=Kl(L+F|0,7),U^=Kl(O+L|0,9),F^=Kl(U+O|0,13),L^=Kl(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++]=h+N|0,a[o++]=d+z|0,a[o++]=p+S|0,a[o++]=f+R|0,a[o++]=g+T|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 Vl(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)_l(t,i,n,e,t,o),r>0&&(i+=16),_l(t,o,n,e+=16,t,i)}function Ql(n,e,t){const r=mc({dkLen:32,asyncTick:10,maxmem:1073742848},t),{N:a,r:o,p:i,dkLen:s,asyncTick:c,maxmem:l,onProgress:u}=r;if(ec(a),ec(o),ec(i),ec(s),ec(c),ec(l),void 0!==u&&"function"!=typeof u)throw new Error("progressCb should be function");const h=128*o,d=h/4;if(a<=1||a&a-1||a>=2**(h/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/h)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=h*(a+i);if(p>l)throw new Error(`Scrypt: parameters too large, ${p} (128 * r * (N + p)) > ${l} (maxmem)`);const f=Ac(Rc,n,e,{c:1,dkLen:h*i}),g=cc(f),m=cc(new Uint8Array(h*a)),b=cc(new Uint8Array(h));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:d,V:m,B32:g,B:f,tmp:b,blockMixCb:y,asyncTick:c}}function Jl(n,e,t,r,a){const o=Ac(Rc,n,t,{c:1,dkLen:e});return t.fill(0),r.fill(0),a.fill(0),o}let $l=!1,Wl=!1;const Zl=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:h,blockMixCb:d,asyncTick:p}=Ql(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 dc(r-1,p,()=>{Vl(c,t,c,t+=s,a),d()}),Vl(c,(r-1)*s,l,e,a),d(),await dc(r,p,()=>{const n=l[e+s-16]%r;for(let t=0;t<s;t++)h[t]=l[e+t]^c[n*s+t];Vl(h,0,l,e,a),d()})}return Jl(n,i,u,c,h)}(n,e,{N:t,r:r,p:a,dkLen:o,onProgress:i})},Yl=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:h,blockMixCb:d}=Ql(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++)Vl(c,e,c,e+=s,a),d();Vl(c,(r-1)*s,l,e,a),d();for(let n=0;n<r;n++){const n=l[e+s-16]%r;for(let t=0;t<s;t++)h[t]=l[e+t]^c[n*s+t];Vl(h,0,l,e,a),d()}}return Jl(n,i,u,c,h)}(n,e,{N:t,r:r,p:a,dkLen:o})};let Xl=Zl,nu=Yl;async function eu(n,e,t,r,a,o,i){const s=hi(n,"passwd"),c=hi(e,"salt");return mi(await Xl(s,c,t,r,a,o,i))}function tu(n,e,t,r,a,o){const i=hi(n,"passwd"),s=hi(e,"salt");return mi(nu(i,s,t,r,a,o))}eu._=Zl,eu.lock=function(){Wl=!0},eu.register=function(n){if(Wl)throw new Error("scrypt is locked");Xl=n},Object.freeze(eu),tu._=Yl,tu.lock=function(){$l=!0},tu.register=function(n){if($l)throw new Error("scryptSync is locked");nu=n},Object.freeze(tu);const ru=function(n){return Jc("sha256").update(n).digest()},au=function(n){return Jc("sha512").update(n).digest()};let ou=ru,iu=au,su=!1,cu=!1;function lu(n){const e=hi(n,"data");return mi(ou(e))}function uu(n){const e=hi(n,"data");return mi(iu(e))}lu._=ru,lu.lock=function(){su=!0},lu.register=function(n){if(su)throw new Error("sha256 is locked");ou=n},Object.freeze(lu),uu._=au,uu.lock=function(){cu=!0},uu.register=function(n){if(cu)throw new Error("sha512 is locked");iu=n},Object.freeze(lu);
5
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
6
- const hu=BigInt(0),du=BigInt(1),pu=BigInt(2),fu=n=>n instanceof Uint8Array,gu=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function mu(n){if(!fu(n))throw new Error("Uint8Array expected");let e="";for(let t=0;t<n.length;t++)e+=gu[n[t]];return e}function bu(n){const e=n.toString(16);return 1&e.length?`0${e}`:e}function yu(n){if("string"!=typeof n)throw new Error("hex string expected, got "+typeof n);return BigInt(""===n?"0":`0x${n}`)}function vu(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 wu(n){return yu(mu(n))}function ku(n){if(!fu(n))throw new Error("Uint8Array expected");return yu(mu(Uint8Array.from(n).reverse()))}function Au(n,e){return vu(n.toString(16).padStart(2*e,"0"))}function Eu(n,e){return Au(n,e).reverse()}function xu(n,e,t){let r;if("string"==typeof e)try{r=vu(e)}catch(t){throw new Error(`${n} must be valid hex string, got "${e}". Cause: ${t}`)}else{if(!fu(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 Iu(...n){const e=new Uint8Array(n.reduce((n,e)=>n+e.length,0));let t=0;return n.forEach(n=>{if(!fu(n))throw new Error("Uint8Array expected");e.set(n,t),t+=n.length}),e}const Pu=n=>(pu<<BigInt(n-1))-du,Nu=n=>new Uint8Array(n),zu=n=>Uint8Array.from(n);function Su(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=Nu(n),a=Nu(n),o=0;const i=()=>{r.fill(1),a.fill(0),o=0},s=(...n)=>t(a,r,...n),c=(n=Nu())=>{a=s(zu([0]),n),r=s(),0!==n.length&&(a=s(zu([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 Iu(...t)};return(n,e)=>{let t;for(i(),c(n);!(t=e(l()));)c();return i(),t}}const Ru={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 Tu(n,e,t={}){const r=(e,t,r)=>{const a=Ru[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 Bu=Object.freeze({__proto__:null,bytesToHex:mu,numberToHexUnpadded:bu,hexToNumber:yu,hexToBytes:vu,bytesToNumberBE:wu,bytesToNumberLE:ku,numberToBytesBE:Au,numberToBytesLE:Eu,numberToVarBytesBE:function(n){return vu(bu(n))},ensureBytes:xu,concatBytes:Iu,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>hu;n>>=du,e+=1);return e},bitGet:function(n,e){return n>>BigInt(e)&du},bitSet:(n,e,t)=>n|(t?du:hu)<<BigInt(e),bitMask:Pu,createHmacDrbg:Su,validateObject:Tu});
7
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Cu=BigInt(0),Ou=BigInt(1),Uu=BigInt(2),Fu=BigInt(3),Lu=BigInt(4),ju=BigInt(5),Du=BigInt(8);function Mu(n,e){const t=n%e;return t>=Cu?t:e+t}function Gu(n,e,t){if(t<=Cu||e<Cu)throw new Error("Expected power/modulo > 0");if(t===Ou)return Cu;let r=Ou;for(;e>Cu;)e&Ou&&(r=r*n%t),n=n*n%t,e>>=Ou;return r}function qu(n,e,t){let r=n;for(;e-- >Cu;)r*=r,r%=t;return r}function Hu(n,e){if(n===Cu||e<=Cu)throw new Error(`invert: expected positive integers, got n=${n} mod=${e}`);let t=Mu(n,e),r=e,a=Cu,o=Ou;for(;t!==Cu;){const n=r%t,e=a-o*(r/t);r=t,t=n,a=o,o=e}if(r!==Ou)throw new Error("invert: does not exist");return Mu(a,e)}function Ku(n){if(n%Lu===Fu){const e=(n+Ou)/Lu;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%Du===ju){const e=(n-ju)/Du;return function(n,t){const r=n.mul(t,Uu),a=n.pow(r,e),o=n.mul(t,a),i=n.mul(n.mul(o,Uu),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-Ou)/Uu;let t,r,a;for(t=n-Ou,r=0;t%Uu===Cu;t/=Uu,r++);for(a=Uu;a<n&&Gu(a,e,n)!==n-Ou;a++);if(1===r){const e=(n+Ou)/Lu;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+Ou)/Uu;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,Ou<<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 _u=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Vu(n,e){const t=void 0!==e?e:n.toString(2).length;return{nBitLength:t,nByteLength:Math.ceil(t/8)}}function Qu(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 Ju(n){const e=Qu(n);return e+Math.ceil(e/2)}
8
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
9
- const $u=BigInt(0),Wu=BigInt(1);function Zu(n){return Tu(n.Fp,_u.reduce((n,e)=>(n[e]="function",n),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"})),Tu(n,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Vu(n.n,n.nBitLength),...n,p:n.Fp.ORDER})}
10
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const{bytesToNumberBE:Yu,hexToBytes:Xu}=Bu,nh={Err:class extends Error{constructor(n=""){super(n)}},_parseInt(n){const{Err:e}=nh;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:Yu(r),l:n.subarray(t+2)}},toSig(n){const{Err:e}=nh,t="string"==typeof n?Xu(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}=nh._parseInt(t.subarray(2)),{d:i,l:s}=nh._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}`}},eh=BigInt(0),th=BigInt(1);BigInt(2);const rh=BigInt(3);function ah(n){const e=function(n){const e=Zu(n);Tu(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 Iu(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&&eh<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=mu(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:wu(xu("private key",n,r))}catch(e){throw new Error(`private key must be ${r} bytes, hex or bigint, not ${typeof n}`)}return a&&(i=Mu(i,o)),s(i),i}const l=new Map;function u(n){if(!(n instanceof h))throw new Error("ProjectivePoint expected")}class h{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 h)throw new Error("projective point not allowed");const a=n=>t.eql(n,t.ZERO);return a(e)&&a(r)?h.ZERO:new h(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(h.fromAffine)}static fromHex(n){const e=h.fromAffine(a(xu("pointHex",n)));return e.assertValidity(),e}static fromPrivateKey(n){return h.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 h(this.px,t.neg(this.py),this.pz)}double(){const{a:n,b:r}=e,a=t.mul(r,rh),{px:o,py:i,pz:s}=this;let c=t.ZERO,l=t.ZERO,u=t.ZERO,d=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(d,f),g=t.mul(n,g),g=t.add(g,u),u=t.add(d,d),d=t.add(u,d),d=t.add(d,f),d=t.mul(d,g),l=t.add(l,d),f=t.mul(i,s),f=t.add(f,f),d=t.mul(f,g),c=t.sub(c,d),u=t.mul(f,p),u=t.add(u,u),u=t.add(u,u),new h(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,d=t.ZERO,p=t.ZERO;const f=e.a,g=t.mul(e.b,rh);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),d=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),d=t.add(d,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 h(l,d,p)}subtract(n){return this.add(n.negate())}is0(){return this.equals(h.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(h.fromAffine)})}multiplyUnsafe(n){const r=h.ZERO;if(n===eh)return r;if(s(n),n===th)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,d=r,f=this;for(;i>eh||l>eh;)i&th&&(u=u.add(f)),l&th&&(d=d.add(f)),f=f.double(),i>>=th,l>>=th;return o&&(u=u.negate()),c&&(d=d.negate()),d=new h(t.mul(d.px,a.beta),d.py,d.pz),u.add(d)}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:d,f:f}=this.wNAF(c);l=p.constTimeNegate(n,l),d=p.constTimeNegate(s,d),d=new h(t.mul(d.px,i.beta),d.py,d.pz),r=l.add(d),a=u.add(f)}else{const{p:n,f:e}=this.wNAF(o);r=n,a=e}return h.normalizeZ([r,a])[0]}multiplyAndAddUnsafe(n,e,t){const r=h.BASE,a=(n,e)=>e!==eh&&e!==th&&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===th)return!0;if(t)return t(h,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:n,clearCofactor:t}=e;return n===th?this:t?t(h,this):this.multiplyUnsafe(e.h)}toRawBytes(n=!0){return this.assertValidity(),r(h,this,n)}toHex(n=!0){return mu(this.toRawBytes(n))}}h.BASE=new h(e.Gx,e.Gy,t.ONE),h.ZERO=new h(t.ZERO,t.ONE,t.ZERO);const d=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>$u;)t&Wu&&(r=r.add(a)),a=a.double(),t>>=Wu;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),h=2**e,d=BigInt(e);for(let n=0;n<i;n++){const e=n*s;let r=Number(o&u);o>>=d,r>s&&(r-=h,o+=Wu);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)}}}(h,e.endo?Math.ceil(d/2):d);return{CURVE:e,ProjectivePoint:h,normPrivateKeyToScalar:c,weierstrassEquation:o,isWithinCurveOrder:i}}function oh(n){const e=function(n){const e=Zu(n);return Tu(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 Mu(n,r)}function s(n){return Hu(n,r)}const{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:h}=ah({...e,toBytes(n,e,r){const a=e.toAffine(),o=t.toBytes(a.x),i=Iu;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=wu(i);if(!(eh<(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&th)===th)&&(a=t.neg(a)),{x:n,y:a}}var s}}),d=n=>mu(Au(n,e.nByteLength));function p(n){return n>r>>th}const f=(n,e,t)=>wu(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=xu("compactSignature",n,2*t),new g(f(n,0,t),f(n,t,2*t))}static fromDER(n){const{r:e,s:t}=nh.toSig(xu("DER",n));return new g(e,t)}assertValidity(){if(!h(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!h(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(xu("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 h=1&o?"03":"02",p=c.fromHex(h+d(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 vu(this.toDERHex())}toDERHex(){return nh.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return vu(this.toCompactHex())}toCompactHex(){return d(this.r)+d(this.s)}}const m={isValidPrivateKey(n){try{return l(n),!0}catch(n){return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{const n=Ju(e.n);return function(n,e,t=!1){const r=n.length,a=Qu(e),o=Ju(e);if(r<16||r<o||r>1024)throw new Error(`expected ${o}-1024 bytes of input, got ${r}`);const i=Mu(t?wu(n):ku(n),e-Ou)+Ou;return t?Eu(i,a):Au(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=wu(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=Pu(e.nBitLength);function k(n){if("bigint"!=typeof n)throw new Error("bigint expected");if(!(eh<=n&&n<w))throw new Error(`bigint expected < 2^${e.nBitLength}`);return Au(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:d,prehash:f,extraEntropy:m}=a;null==d&&(d=!0),n=xu("msgHash",n),f&&(n=xu("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(xu("extraEntropy",n))}const x=Iu(...A),I=b;return{seed:x,k2sig:function(n){const e=y(n);if(!h(e))return;const t=s(e),r=c.BASE.multiply(e).toAffine(),a=i(r.x);if(a===eh)return;const o=i(t*i(I+a*w));if(o===eh)return;let l=(r.x===a?0:2)|Number(r.y&th),u=o;return d&&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 Su(i.hash.outputLen,i.nByteLength,i.hmac)(a,o)},verify:function(n,t,r,a=x){const o=n;if(t=xu("msgHash",t),r=xu("publicKey",r),"strict"in a)throw new Error("options.strict was renamed to lowS");const{lowS:l,prehash:u}=a;let h,d;try{if("string"==typeof o||o instanceof Uint8Array)try{h=g.fromDER(o)}catch(n){if(!(n instanceof nh.Err))throw n;h=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;h=new g(n,e)}}d=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&&h.hasHighS())return!1;u&&(t=e.hash(t));const{r:p,s:f}=h,m=v(t),b=s(f),y=i(m*b),w=i(p*b),k=c.BASE.multiplyAndAddUnsafe(d,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 ih(n){return{hash:n,hmac:(e,...t)=>wc(n,e,function(...n){const e=new Uint8Array(n.reduce((n,e)=>n+e.length,0));let t=0;return n.forEach(n=>{if(!sc(n))throw new Error("Uint8Array expected");e.set(n,t),t+=n.length}),e}(...t)),randomBytes:yc}}BigInt(4);
12
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
13
- const sh=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),ch=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),lh=BigInt(1),uh=BigInt(2),hh=(n,e)=>(n+e/uh)/e;const dh=function(n,e,t=!1,r={}){if(n<=Cu)throw new Error(`Expected Field ORDER > 0, got ${n}`);const{nBitLength:a,nByteLength:o}=Vu(n,e);if(o>2048)throw new Error("Field lengths over 2048 bytes are not supported");const i=Ku(n),s=Object.freeze({ORDER:n,BITS:a,BYTES:o,MASK:Pu(a),ZERO:Cu,ONE:Ou,create:e=>Mu(e,n),isValid:e=>{if("bigint"!=typeof e)throw new Error("Invalid field element: expected bigint, got "+typeof e);return Cu<=e&&e<n},is0:n=>n===Cu,isOdd:n=>(n&Ou)===Ou,neg:e=>Mu(-e,n),eql:(n,e)=>n===e,sqr:e=>Mu(e*e,n),add:(e,t)=>Mu(e+t,n),sub:(e,t)=>Mu(e-t,n),mul:(e,t)=>Mu(e*t,n),pow:(n,e)=>function(n,e,t){if(t<Cu)throw new Error("Expected power > 0");if(t===Cu)return n.ONE;if(t===Ou)return e;let r=n.ONE,a=e;for(;t>Cu;)t&Ou&&(r=n.mul(r,a)),a=n.sqr(a),t>>=Ou;return r}(s,n,e),div:(e,t)=>Mu(e*Hu(t,n),n),sqrN:n=>n*n,addN:(n,e)=>n+e,subN:(n,e)=>n-e,mulN:(n,e)=>n*e,inv:e=>Hu(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?Eu(n,o):Au(n,o),fromBytes:n=>{if(n.length!==o)throw new Error(`Fp.fromBytes: expected ${o}, got ${n.length}`);return t?ku(n):wu(n)}});return Object.freeze(s)}(sh,void 0,void 0,{sqrt:function(n){const e=sh,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,h=qu(u,t,e)*u%e,d=qu(h,t,e)*u%e,p=qu(d,uh,e)*l%e,f=qu(p,a,e)*p%e,g=qu(f,o,e)*f%e,m=qu(g,s,e)*g%e,b=qu(m,c,e)*m%e,y=qu(b,s,e)*g%e,v=qu(y,t,e)*u%e,w=qu(v,i,e)*f%e,k=qu(w,r,e)*l%e,A=qu(k,uh,e);if(!dh.eql(dh.sqr(A),n))throw new Error("Cannot find square root");return A}}),ph=function(n,e){const t=e=>oh({...n,...ih(e)});return Object.freeze({...t(e),create:t})}({a:BigInt(0),b:BigInt(7),Fp:dh,n:ch,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:n=>{const e=ch,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-lh*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=t,i=BigInt("0x100000000000000000000000000000000"),s=hh(o*n,e),c=hh(-r*n,e);let l=Mu(n-s*t-c*a,e),u=Mu(-s*r-c*o,e);const h=l>i,d=u>i;if(h&&(l=e-l),d&&(u=e-u),l>i||u>i)throw new Error("splitScalar: Endomorphism failed, k="+n);return{k1neg:h,k1:l,k2neg:d,k2:u}}}},Rc);BigInt(0),ph.ProjectivePoint;const fh="0x0000000000000000000000000000000000000000",gh="0x0000000000000000000000000000000000000000000000000000000000000000",mh=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),bh=BigInt("1000000000000000000"),yh=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),vh=BigInt("0x8000000000000000000000000000000000000000000000000000000000000000")*BigInt(-1),wh=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),kh="Ethereum Signed Message:\n",Ah=BigInt(0),Eh=BigInt(1),xh=BigInt(2),Ih=BigInt(27),Ph=BigInt(28),Nh=BigInt(35),zh=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Sh=zh/xh,Rh=Symbol.for("nodejs.util.inspect.custom"),Th={};function Bh(n){return Ai(Li(n),32)}class Ch{#q;#H;#K;#_;get r(){return this.#q}set r(n){oi(32===yi(n),"invalid r","value",n),this.#q=mi(n)}get s(){return oi(parseInt(this.#H.substring(0,3))<8,"non-canonical s; use ._s","s",this.#H),this.#H}set s(n){oi(32===yi(n),"invalid s","value",n),this.#H=mi(n)}get _s(){return this.#H}isValid(){return BigInt(this.#H)<=Sh}get v(){return this.#K}set v(n){const e=Oi(n,"value");oi(27===e||28===e,"invalid v","v",n),this.#K=e}get networkV(){return this.#_}get legacyChainId(){const n=this.networkV;return null==n?null:Ch.getChainId(n)}get yParity(){return 27===this.v?0:1}get yParityAndS(){const n=hi(this.s);return this.yParity&&(n[0]|=128),mi(n)}get compactSerialized(){return bi([this.r,this.yParityAndS])}get serialized(){return bi([this.r,this.s,this.yParity?"0x1c":"0x1b"])}constructor(n,e,t,r){li(n,Th,"Signature"),this.#q=e,this.#H=t,this.#K=r,this.#_=null}getCanonical(){if(this.isValid())return this;const n=zh-BigInt(this._s),e=55-this.v,t=new Ch(Th,this.r,Bh(n),e);return this.networkV&&(t.#_=this.networkV),t}clone(){const n=new Ch(Th,this.r,this._s,this.v);return this.networkV&&(n.#_=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}}[Rh](){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=Ri(n,"v");return e==Ih||e==Ph?Ah:(oi(e>=Nh,"invalid EIP-155 v","v",n),(e-Nh)/xh)}static getChainIdV(n,e){return Ri(n)*xh+BigInt(35+e-27)}static getNormalizedV(n){const e=Ri(n);return e===Ah||e===Ih?27:e===Eh||e===Ph?28:(oi(e>=Nh,"invalid v","v",n),e&Eh?27:28)}static from(n){function e(e,t){oi(e,t,"signature",n)}if(null==n)return new Ch(Th,gh,gh,27);if("string"==typeof n){const t=hi(n,"signature");if(64===t.length){const n=mi(t.slice(0,32)),e=t.slice(32,64),r=128&e[0]?28:27;return e[0]&=127,new Ch(Th,n,mi(e),r)}if(65===t.length){const n=mi(t.slice(0,32)),e=mi(t.slice(32,64)),r=Ch.getNormalizedV(t[64]);return new Ch(Th,n,e,r)}e(!1,"invalid raw signature length")}if(n instanceof Ch)return n.clone();const t=n.r;e(null!=t,"missing r");const r=Bh(t),a=function(n,t){if(null!=n)return Bh(n);if(null!=t){e(pi(t,32),"invalid yParityAndS");const n=hi(t);return n[0]&=127,mi(n)}e(!1,"missing s")}(n.s,n.yParityAndS),{networkV:o,v:i}=function(n,t,r){if(null!=n){const e=Ri(n);return{networkV:e>=Nh?e:void 0,v:Ch.getNormalizedV(e)}}if(null!=t)return e(pi(t,32),"invalid yParityAndS"),{v:128&hi(t)[0]?28:27};if(null!=r){switch(Oi(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 Ch(Th,r,a,i);return o&&(s.#_=o),e(null==n.yParity||Oi(n.yParity,"sig.yParity")===s.yParity,"yParity mismatch"),e(null==n.yParityAndS||n.yParityAndS===s.yParityAndS,"yParityAndS mismatch"),s}}class Oh{#V;constructor(n){oi(32===yi(n),"invalid private key","privateKey","[REDACTED]"),this.#V=mi(n)}get privateKey(){return this.#V}get publicKey(){return Oh.computePublicKey(this.#V)}get compressedPublicKey(){return Oh.computePublicKey(this.#V,!0)}sign(n){oi(32===yi(n),"invalid digest length","digest",n);const e=ph.sign(di(n),di(this.#V),{lowS:!0});return Ch.from({r:Fi(e.r,32),s:Fi(e.s,32),v:e.recovery?28:27})}computeSharedSecret(n){const e=Oh.computePublicKey(n);return mi(ph.getSharedSecret(di(this.#V),hi(e),!1))}static computePublicKey(n,e){let t=hi(n,"key");if(32===t.length){return mi(ph.getPublicKey(t,!!e))}if(64===t.length){const n=new Uint8Array(65);n[0]=4,n.set(t,1),t=n}return mi(ph.ProjectivePoint.fromHex(t).toRawBytes(e))}static recoverPublicKey(n,e){oi(32===yi(n),"invalid digest length","digest",n);const t=Ch.from(e);let r=ph.Signature.fromCompact(di(bi([t.r,t.s])));r=r.addRecoveryBit(t.yParity);const a=r.recoverPublicKey(di(n));return oi(null!=a,"invalid signature for digest","signature",e),"0x"+a.toHex(!1)}static addPoints(n,e,t){const r=ph.ProjectivePoint.fromHex(Oh.computePublicKey(n).substring(2)),a=ph.ProjectivePoint.fromHex(Oh.computePublicKey(e).substring(2));return"0x"+r.add(a).toHex(!!t)}}function Uh(){Yc.lock(),bl.lock(),Dl.lock(),Hl.lock(),Ul.lock(),eu.lock(),tu.lock(),lu.lock(),uu.lock(),Hl.lock()}const Fh=BigInt(0),Lh=BigInt(36);function jh(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=hi(bl(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 Dh={};for(let n=0;n<10;n++)Dh[String(n)]=String(n);for(let n=0;n<26;n++)Dh[String.fromCharCode(65+n)]=String(10+n);function Mh(n){let e=(n=(n=n.toUpperCase()).substring(4)+n.substring(0,2)+"00").split("").map(n=>Dh[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 Gh=function(){const n={};for(let e=0;e<36;e++){n["0123456789abcdefghijklmnopqrstuvwxyz"[e]]=BigInt(e)}return n}();function qh(n){if(oi("string"==typeof n,"invalid address","address",n),n.match(/^(0x)?[0-9a-fA-F]{40}$/)){n.startsWith("0x")||(n="0x"+n);const e=jh(n);return oi(!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}$/)){oi(n.substring(2,4)===Mh(n),"bad icap checksum","address",n);let e=function(n){n=n.toLowerCase();let e=Fh;for(let t=0;t<n.length;t++)e=e*Lh+Gh[n[t]];return e}(n.substring(4)).toString(16);for(;e.length<40;)e="0"+e;return jh("0x"+e)}oi(!1,"invalid address","address",n)}function Hh(n){let e=BigInt(qh(n)).toString(36).toUpperCase();for(;e.length<30;)e="0"+e;return"XE"+Mh("XE00"+e)+e}function Kh(n){const e=qh(n.from);let t=Ri(n.nonce,"tx.nonce").toString(16);return t="0"===t?"0x":t.length%2?"0x0"+t:"0x"+t,qh(vi(bl(Cs([e,t])),12))}function _h(n,e,t){const r=qh(n),a=hi(e,"salt"),o=hi(t,"initCodeHash");return oi(32===a.length,"salt must be 32 bytes","salt",e),oi(32===o.length,"initCodeHash must be 32 bytes","initCodeHash",t),qh(vi(bl(bi(["0xff",r,a,o])),12))}function Vh(n){return n&&"function"==typeof n.getAddress}function Qh(n){try{return qh(n),!0}catch(n){}return!1}async function Jh(n,e){const t=await e;return null!=t&&"0x0000000000000000000000000000000000000000"!==t||(ai("string"!=typeof n,"unconfigured name","UNCONFIGURED_NAME",{value:n}),oi(!1,"invalid AddressLike value; did not resolve to a value address","target",n)),qh(t)}function $h(n,e){return"string"==typeof n?n.match(/^0x[0-9a-f]{40}$/i)?qh(n):(ai(null!=e,"ENS resolution requires a provider","UNSUPPORTED_OPERATION",{operation:"resolveName"}),Jh(n,e.resolveName(n))):Vh(n)?Jh(n,n.getAddress()):n&&"function"==typeof n.then?Jh(n,n):void oi(!1,"unsupported addressable value","target",n)}const Wh={};function Zh(n,e){let t=!1;return e<0&&(t=!0,e*=-1),new nd(Wh,`${t?"":"u"}int${e}`,n,{signed:t,width:e})}function Yh(n,e){return new nd(Wh,`bytes${e||""}`,n,{size:e})}const Xh=Symbol.for("_ethers_typed");class nd{type;value;#Q;_typedSymbol;constructor(n,e,t,r){null==r&&(r=null),li(Wh,n,"Typed"),Xo(this,{_typedSymbol:Xh,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 nd(Wh,n,e)}static uint8(n){return Zh(n,8)}static uint16(n){return Zh(n,16)}static uint24(n){return Zh(n,24)}static uint32(n){return Zh(n,32)}static uint40(n){return Zh(n,40)}static uint48(n){return Zh(n,48)}static uint56(n){return Zh(n,56)}static uint64(n){return Zh(n,64)}static uint72(n){return Zh(n,72)}static uint80(n){return Zh(n,80)}static uint88(n){return Zh(n,88)}static uint96(n){return Zh(n,96)}static uint104(n){return Zh(n,104)}static uint112(n){return Zh(n,112)}static uint120(n){return Zh(n,120)}static uint128(n){return Zh(n,128)}static uint136(n){return Zh(n,136)}static uint144(n){return Zh(n,144)}static uint152(n){return Zh(n,152)}static uint160(n){return Zh(n,160)}static uint168(n){return Zh(n,168)}static uint176(n){return Zh(n,176)}static uint184(n){return Zh(n,184)}static uint192(n){return Zh(n,192)}static uint200(n){return Zh(n,200)}static uint208(n){return Zh(n,208)}static uint216(n){return Zh(n,216)}static uint224(n){return Zh(n,224)}static uint232(n){return Zh(n,232)}static uint240(n){return Zh(n,240)}static uint248(n){return Zh(n,248)}static uint256(n){return Zh(n,256)}static uint(n){return Zh(n,256)}static int8(n){return Zh(n,-8)}static int16(n){return Zh(n,-16)}static int24(n){return Zh(n,-24)}static int32(n){return Zh(n,-32)}static int40(n){return Zh(n,-40)}static int48(n){return Zh(n,-48)}static int56(n){return Zh(n,-56)}static int64(n){return Zh(n,-64)}static int72(n){return Zh(n,-72)}static int80(n){return Zh(n,-80)}static int88(n){return Zh(n,-88)}static int96(n){return Zh(n,-96)}static int104(n){return Zh(n,-104)}static int112(n){return Zh(n,-112)}static int120(n){return Zh(n,-120)}static int128(n){return Zh(n,-128)}static int136(n){return Zh(n,-136)}static int144(n){return Zh(n,-144)}static int152(n){return Zh(n,-152)}static int160(n){return Zh(n,-160)}static int168(n){return Zh(n,-168)}static int176(n){return Zh(n,-176)}static int184(n){return Zh(n,-184)}static int192(n){return Zh(n,-192)}static int200(n){return Zh(n,-200)}static int208(n){return Zh(n,-208)}static int216(n){return Zh(n,-216)}static int224(n){return Zh(n,-224)}static int232(n){return Zh(n,-232)}static int240(n){return Zh(n,-240)}static int248(n){return Zh(n,-248)}static int256(n){return Zh(n,-256)}static int(n){return Zh(n,-256)}static bytes1(n){return Yh(n,1)}static bytes2(n){return Yh(n,2)}static bytes3(n){return Yh(n,3)}static bytes4(n){return Yh(n,4)}static bytes5(n){return Yh(n,5)}static bytes6(n){return Yh(n,6)}static bytes7(n){return Yh(n,7)}static bytes8(n){return Yh(n,8)}static bytes9(n){return Yh(n,9)}static bytes10(n){return Yh(n,10)}static bytes11(n){return Yh(n,11)}static bytes12(n){return Yh(n,12)}static bytes13(n){return Yh(n,13)}static bytes14(n){return Yh(n,14)}static bytes15(n){return Yh(n,15)}static bytes16(n){return Yh(n,16)}static bytes17(n){return Yh(n,17)}static bytes18(n){return Yh(n,18)}static bytes19(n){return Yh(n,19)}static bytes20(n){return Yh(n,20)}static bytes21(n){return Yh(n,21)}static bytes22(n){return Yh(n,22)}static bytes23(n){return Yh(n,23)}static bytes24(n){return Yh(n,24)}static bytes25(n){return Yh(n,25)}static bytes26(n){return Yh(n,26)}static bytes27(n){return Yh(n,27)}static bytes28(n){return Yh(n,28)}static bytes29(n){return Yh(n,29)}static bytes30(n){return Yh(n,30)}static bytes31(n){return Yh(n,31)}static bytes32(n){return Yh(n,32)}static address(n){return new nd(Wh,"address",n)}static bool(n){return new nd(Wh,"bool",!!n)}static bytes(n){return new nd(Wh,"bytes",n)}static string(n){return new nd(Wh,"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 nd(Wh,"overrides",Object.assign({},n))}static isTyped(n){return n&&"object"==typeof n&&"_typedSymbol"in n&&n._typedSymbol===Xh}static dereference(n,e){if(nd.isTyped(n)){if(n.type!==e)throw new Error(`invalid type: expecetd ${e}, got ${n.type}`);return n.value}return n}}class ed extends Ys{constructor(n){super("address","address",n,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(n,e){let t=nd.dereference(e,"string");try{t=qh(t)}catch(n){return this._throwError(n.message,e)}return n.writeValue(t)}decode(n){return qh(Fi(n.readValue(),20))}}class td extends Ys{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 rd(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 ai(r,"cannot encode object for signature with missing names","INVALID_ARGUMENT",{argument:"values",info:{coder:e},value:t}),ai(!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 oi(!1,"invalid tuple value","tuple",t);oi(e.length===r.length,"types/value length mismatch","tuple",t);let a=new Xs,o=new Xs,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 ad(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(ei(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(ei(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)}),$s.fromItems(t,r)}class od extends Ys{coder;length;constructor(n,e,t){super("array",n.type+"["+(e>=0?e:"")+"]",t,-1===e||n.dynamic),Xo(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=nd.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)),ii(t.length,r,"coder array"+(this.localName?" "+this.localName:""));let a=[];for(let n=0;n<t.length;n++)a.push(this.coder);return rd(n,a,t)}decode(n){let e=this.length;-1===e&&(e=n.readIndex(),ai(e*Ms<=n.dataLength,"insufficient data length","BUFFER_OVERRUN",{buffer:n.bytes,offset:e*Ms,length:n.dataLength}));let t=[];for(let n=0;n<e;n++)t.push(new td(this.coder));return ad(n,t)}}class id extends Ys{constructor(n){super("bool","bool",n,!1)}defaultValue(){return!1}encode(n,e){const t=nd.dereference(e,"bool");return n.writeValue(t?1:0)}decode(n){return!!n.readValue()}}class sd extends Ys{constructor(n,e){super(n,n,e,!0)}defaultValue(){return"0x"}encode(n,e){e=di(e);let t=n.writeValue(e.length);return t+=n.writeBytes(e),t}decode(n){return n.readBytes(n.readIndex(),!0)}}class cd extends sd{constructor(n){super("bytes",n)}decode(n){return mi(super.decode(n))}}class ld extends Ys{size;constructor(n,e){let t="bytes"+String(n);super(t,t,e,!1),Xo(this,{size:n},{size:"number"})}defaultValue(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+2*this.size)}encode(n,e){let t=di(nd.dereference(e,this.type));return t.length!==this.size&&this._throwError("incorrect data length",e),n.writeBytes(t)}decode(n){return mi(n.readBytes(this.size))}}const ud=new Uint8Array([]);class hd extends Ys{constructor(n){super("null","",n,!1)}defaultValue(){return null}encode(n,e){return null!=e&&this._throwError("not null",e),n.writeBytes(ud)}decode(n){return n.readBytes(0),null}}const dd=BigInt(0),pd=BigInt(1),fd=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");class gd extends Ys{size;signed;constructor(n,e,t){const r=(e?"int":"uint")+8*n;super(r,r,t,!1),Xo(this,{size:n,signed:e},{size:"number",signed:"boolean"})}defaultValue(){return 0}encode(n,e){let t=Ri(nd.dereference(e,this.type)),r=Si(fd,256);if(this.signed){let n=Si(r,8*this.size-1);(t>n||t<-(n+pd))&&this._throwError("value out-of-bounds",e),t=zi(t,256)}else(t<dd||t>Si(r,8*this.size))&&this._throwError("value out-of-bounds",e);return n.writeValue(t)}decode(n){let e=Si(n.readValue(),8*this.size);return this.signed&&(e=Ni(e,8*this.size)),e}}class md extends sd{constructor(n){super("string",n)}defaultValue(){return""}encode(n,e){return super.encode(n,Yi(nd.dereference(e,"string")))}decode(n){return Xi(super.decode(n))}}class bd extends Ys{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),Xo(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=nd.dereference(e,"tuple");return rd(n,this.coders,t)}decode(n){return ad(n,this.coders)}}function yd(n,e){return{address:qh(n),storageKeys:e.map((n,e)=>(oi(pi(n,32),"invalid slot",`storageKeys[${e}]`,n),n.toLowerCase()))}}function vd(n){if(Array.isArray(n))return n.map((e,t)=>Array.isArray(e)?(oi(2===e.length,"invalid slot set",`value[${t}]`,e),yd(e[0],e[1])):(oi(null!=e&&"object"==typeof e,"invalid address-slot set","value",n),yd(e.address,e.storageKeys)));oi(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 yd(e,Object.keys(t).sort())});return e.sort((n,e)=>n.address.localeCompare(e.address)),e}function wd(n){return{address:qh(n.address),nonce:Ri(null!=n.nonce?n.nonce:0),chainId:Ri(null!=n.chainId?n.chainId:0),signature:Ch.from(n.signature)}}function kd(n){let e;return e="string"==typeof n?Oh.computePublicKey(n,!1):n.publicKey,qh(bl("0x"+e.substring(4)).substring(26))}function Ad(n,e){return kd(Oh.recoverPublicKey(n,e))}const Ed=BigInt(0),xd=BigInt(2),Id=BigInt(27),Pd=BigInt(28),Nd=BigInt(35),zd=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Sd=Symbol.for("nodejs.util.inspect.custom"),Rd=131072,Td=128;function Bd(n,e){let t=n.toString(16);for(;t.length<2;)t="0"+t;return t+=lu(e).substring(4),"0x"+t}function Cd(n){return"0x"===n?null:qh(n)}function Od(n,e){try{return vd(n)}catch(t){oi(!1,t.message,e,n)}}function Ud(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:Cd(r[1]),nonce:Ld(r[2],"nonce"),chainId:Ld(r[0],"chainId"),signature:Ch.from({yParity:Fd(r[3],"yParity"),r:Ai(r[4],32),s:Ai(r[5],32)})})}return e}catch(t){oi(!1,t.message,e,n)}}function Fd(n,e){return"0x"===n?0:Oi(n,e)}function Ld(n,e){if("0x"===n)return Ed;const t=Ri(n,e);return oi(t<=zd,"value exceeds uint size",e,t),t}function jd(n,e){const t=Ri(n,"value"),r=Li(t);return oi(r.length<=32,"value too large",`tx.${e}`,t),r}function Dd(n){return vd(n).map(n=>[n.address,n.storageKeys])}function Md(n,e){oi(Array.isArray(n),`invalid ${e}`,"value",n);for(let e=0;e<n.length;e++)oi(pi(n[e],32),"invalid ${ param } hash",`value[${e}]`,n[e]);return n}function Gd(n,e){let t;try{if(t=Fd(e[0],"yParity"),0!==t&&1!==t)throw new Error("bad yParity")}catch(n){oi(!1,"invalid yParity","yParity",e[0])}const r=Ai(e[1],32),a=Ai(e[2],32),o=Ch.from({r:r,s:a,yParity:t});n.signature=o}class qd{#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:oi(!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?fh:n}set to(n){this.#$=null==n?null:qh(n)}get nonce(){return this.#W}set nonce(n){this.#W=Oi(n,"value")}get gasLimit(){return this.#Z}set gasLimit(n){this.#Z=Ri(n)}get gasPrice(){const n=this.#Y;return null!=n||0!==this.type&&1!==this.type?n:Ed}set gasPrice(n){this.#Y=null==n?null:Ri(n,"gasPrice")}get maxPriorityFeePerGas(){const n=this.#X;return null==n?2===this.type||3===this.type?Ed:null:n}set maxPriorityFeePerGas(n){this.#X=null==n?null:Ri(n,"maxPriorityFeePerGas")}get maxFeePerGas(){const n=this.#nn;return null==n?2===this.type||3===this.type?Ed:null:n}set maxFeePerGas(n){this.#nn=null==n?null:Ri(n,"maxFeePerGas")}get data(){return this.#C}set data(n){this.#C=mi(n)}get value(){return this.#en}set value(n){this.#en=Ri(n,"value")}get chainId(){return this.#tn}set chainId(n){this.#tn=Ri(n)}get signature(){return this.#rn||null}set signature(n){this.#rn=null==n?null:Ch.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:vd(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=>wd(n))}get maxFeePerBlobGas(){const n=this.#on;return null==n&&3===this.type?Ed:n}set maxFeePerBlobGas(n){this.#on=null==n?null:Ri(n,"maxFeePerBlobGas")}get blobVersionedHashes(){let n=this.#in;return null==n&&3===this.type?[]:n}set blobVersionedHashes(n){if(null!=n){oi(Array.isArray(n),"blobVersionedHashes must be an Array","value",n),n=n.slice();for(let e=0;e<n.length;e++)oi(pi(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(fi(a)){ai(this.#sn,"adding a raw blob requires a KZG library","UNSUPPORTED_OPERATION",{operation:"set blobs()"});let n=hi(a);if(oi(n.length<=Rd,"blob is too large",`blobs[${r}]`,a),n.length!==Rd){const e=new Uint8Array(Rd);e.set(n),n=e}const o=this.#sn.blobToKzgCommitment(n),i=mi(this.#sn.computeBlobKzgProof(n,o));e.push({data:mi(n),commitment:mi(o),proof:i}),t.push(Bd(1,o))}else{const n=mi(a.data),r=mi(a.commitment),o=mi(a.proof);e.push({data:n,commitment:r,proof:o}),t.push(Bd(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 hi(n.blobToKzgCommitment(mi(e)))}else if("blobToKzgCommitment"in n&&"function"==typeof n.blobToKzgCommitment)return hi(n.blobToKzgCommitment(e));if("blobToKZGCommitment"in n&&"function"==typeof n.blobToKZGCommitment)return hi(n.blobToKZGCommitment(mi(e)));oi(!1,"unsupported KZG library","kzg",n)},computeBlobKzgProof:(e,t)=>"computeBlobProof"in n&&"function"==typeof n.computeBlobProof?hi(n.computeBlobProof(mi(e),mi(t))):"computeBlobKzgProof"in n&&"function"==typeof n.computeBlobKzgProof?n.computeBlobKzgProof(e,t):"computeBlobKZGProof"in n&&"function"==typeof n.computeBlobKZGProof?hi(n.computeBlobKZGProof(mi(e),mi(t))):void oi(!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=Ed,this.#Y=null,this.#X=null,this.#nn=null,this.#C="0x",this.#en=Ed,this.#tn=Ed,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:bl(this.#hn(!0,!1))}get unsignedHash(){return bl(this.unsignedSerialized)}get from(){return null==this.signature?null:Ad(this.unsignedHash,this.signature.getCanonical())}get fromPublicKey(){return null==this.signature?null:Oh.recoverPublicKey(this.unsignedHash,this.signature.getCanonical())}isSigned(){return null!=this.signature}#hn(n,e){ai(!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=[jd(n.nonce,"nonce"),jd(n.gasPrice||0,"gasPrice"),jd(n.gasLimit,"gasLimit"),n.to||"0x",jd(n.value,"value"),n.data];let r=Ed;if(n.chainId!=Ed)r=Ri(n.chainId,"tx.chainId"),oi(!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!==Ed&&(t.push(Li(r)),t.push("0x"),t.push("0x")),Cs(t);let a=BigInt(27+e.yParity);return r!==Ed?a=Ch.getChainIdV(r,e.v):BigInt(e.v)!==a&&oi(!1,"tx.chainId/sig.v mismatch","sig",e),t.push(Li(a)),t.push(Li(e.r)),t.push(Li(e._s)),Cs(t)}(this,t);case 1:return function(n,e){const t=[jd(n.chainId,"chainId"),jd(n.nonce,"nonce"),jd(n.gasPrice||0,"gasPrice"),jd(n.gasLimit,"gasLimit"),n.to||"0x",jd(n.value,"value"),n.data,Dd(n.accessList||[])];return e&&(t.push(jd(e.yParity,"recoveryParam")),t.push(Li(e.r)),t.push(Li(e.s))),bi(["0x01",Cs(t)])}(this,t);case 2:return function(n,e){const t=[jd(n.chainId,"chainId"),jd(n.nonce,"nonce"),jd(n.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),jd(n.maxFeePerGas||0,"maxFeePerGas"),jd(n.gasLimit,"gasLimit"),n.to||"0x",jd(n.value,"value"),n.data,Dd(n.accessList||[])];return e&&(t.push(jd(e.yParity,"yParity")),t.push(Li(e.r)),t.push(Li(e.s))),bi(["0x02",Cs(t)])}(this,t);case 3:return function(n,e,t){const r=[jd(n.chainId,"chainId"),jd(n.nonce,"nonce"),jd(n.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),jd(n.maxFeePerGas||0,"maxFeePerGas"),jd(n.gasLimit,"gasLimit"),n.to||fh,jd(n.value,"value"),n.data,Dd(n.accessList||[]),jd(n.maxFeePerBlobGas||0,"maxFeePerBlobGas"),Md(n.blobVersionedHashes||[],"blobVersionedHashes")];if(e&&(r.push(jd(e.yParity,"yParity")),r.push(Li(e.r)),r.push(Li(e.s)),t)){if(null!=n.blobWrapperVersion){const e=Li(n.blobWrapperVersion),a=[];for(const{proof:n}of t){const e=hi(n),t=e.length/Td;for(let n=0;n<e.length;n+=t)a.push(e.subarray(n,n+t))}return bi(["0x03",Cs([r,e,t.map(n=>n.data),t.map(n=>n.commitment),a])])}return bi(["0x03",Cs([r,t.map(n=>n.data),t.map(n=>n.commitment),t.map(n=>n.proof)])])}return bi(["0x03",Cs(r)])}(this,t,e?this.blobs:null);case 4:return function(n,e){const t=[jd(n.chainId,"chainId"),jd(n.nonce,"nonce"),jd(n.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),jd(n.maxFeePerGas||0,"maxFeePerGas"),jd(n.gasLimit,"gasLimit"),n.to||"0x",jd(n.value,"value"),n.data,Dd(n.accessList||[]),(r=n.authorizationList||[],r.map(n=>[jd(n.chainId,"chainId"),n.address,jd(n.nonce,"nonce"),jd(n.signature.yParity,"yParity"),Li(n.signature.r),Li(n.signature._s)]))];var r;return e&&(t.push(jd(e.yParity,"yParity")),t.push(Li(e.r)),t.push(Li(e.s))),bi(["0x04",Cs(t)])}(this,t)}ai(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:".serialized"})}get serialized(){return this.#hn(!0,!0)}get unsignedSerialized(){return this.#hn(!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&&ai(this.maxFeePerGas>=this.maxPriorityFeePerGas,"priorityFee cannot be more than maxFee","BAD_DATA",{value:this}),ai(!e||0!==this.type&&1!==this.type,"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas","BAD_DATA",{value:this}),ai(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 qd.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}}[Sd](){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 qd;if("string"==typeof n){const e=hi(n);if(e[0]>=127)return qd.from(function(n){const e=Ss(n);oi(Array.isArray(e)&&(9===e.length||6===e.length),"invalid field count for legacy transaction","data",n);const t={type:0,nonce:Fd(e[0],"nonce"),gasPrice:Ld(e[1],"gasPrice"),gasLimit:Ld(e[2],"gasLimit"),to:Cd(e[3]),value:Ld(e[4],"value"),data:mi(e[5]),chainId:Ed};if(6===e.length)return t;const r=Ld(e[6],"v"),a=Ld(e[7],"r"),o=Ld(e[8],"s");if(a===Ed&&o===Ed)t.chainId=r;else{let n=(r-Nd)/xd;n<Ed&&(n=Ed),t.chainId=n,oi(n!==Ed||r===Id||r===Pd,"non-canonical legacy v","v",e[6]),t.signature=Ch.from({r:Ai(e[7],32),s:Ai(e[8],32),v:r})}return t}(e));switch(e[0]){case 1:return qd.from(function(n){const e=Ss(hi(n).slice(1));oi(Array.isArray(e)&&(8===e.length||11===e.length),"invalid field count for transaction type: 1","data",mi(n));const t={type:1,chainId:Ld(e[0],"chainId"),nonce:Fd(e[1],"nonce"),gasPrice:Ld(e[2],"gasPrice"),gasLimit:Ld(e[3],"gasLimit"),to:Cd(e[4]),value:Ld(e[5],"value"),data:mi(e[6]),accessList:Od(e[7],"accessList")};return 8===e.length||Gd(t,e.slice(8)),t}(e));case 2:return qd.from(function(n){const e=Ss(hi(n).slice(1));oi(Array.isArray(e)&&(9===e.length||12===e.length),"invalid field count for transaction type: 2","data",mi(n));const t={type:2,chainId:Ld(e[0],"chainId"),nonce:Fd(e[1],"nonce"),maxPriorityFeePerGas:Ld(e[2],"maxPriorityFeePerGas"),maxFeePerGas:Ld(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:Ld(e[4],"gasLimit"),to:Cd(e[5]),value:Ld(e[6],"value"),data:mi(e[7]),accessList:Od(e[8],"accessList")};return 9===e.length||Gd(t,e.slice(9)),t}(e));case 3:return qd.from(function(n){let e=Ss(hi(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];oi(Array.isArray(n),"invalid network format: blobs not an array","fields[1]",n),oi(Array.isArray(r),"invalid network format: commitments not an array","fields[2]",r),oi(Array.isArray(o),"invalid network format: proofs not an array","fields[3]",o),oi(n.length===r.length,"invalid network format: blobs/commitments length mismatch","fields",e),oi(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=Oi(e[1]);const n=e[2],o=e[3],i=e[4];oi(1===r,`unsupported EIP-7594 network format version: ${r}`,"fields[1]",r),oi(Array.isArray(n),"invalid EIP-7594 network format: blobs not an array","fields[2]",n),oi(Array.isArray(o),"invalid EIP-7594 network format: commitments not an array","fields[3]",o),oi(Array.isArray(i),"invalid EIP-7594 network format: proofs not an array","fields[4]",i),oi(n.length===o.length,"invalid network format: blobs/commitments length mismatch","fields",e),oi(n.length*Td===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<Td;n++)t.push(i[e*Td+n]);a.push({data:n[e],commitment:o[e],proof:bi(t)})}e=e[0]}oi(Array.isArray(e)&&(11===e.length||14===e.length),`invalid field count for transaction type: ${t}`,"data",mi(n));const o={type:3,chainId:Ld(e[0],"chainId"),nonce:Fd(e[1],"nonce"),maxPriorityFeePerGas:Ld(e[2],"maxPriorityFeePerGas"),maxFeePerGas:Ld(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:Ld(e[4],"gasLimit"),to:Cd(e[5]),value:Ld(e[6],"value"),data:mi(e[7]),accessList:Od(e[8],"accessList"),maxFeePerBlobGas:Ld(e[9],"maxFeePerBlobGas"),blobVersionedHashes:e[10],blobWrapperVersion:r};a&&(o.blobs=a),oi(null!=o.to,`invalid address for transaction type: ${t}`,"data",n),oi(Array.isArray(o.blobVersionedHashes),"invalid blobVersionedHashes: must be an array","data",n);for(let e=0;e<o.blobVersionedHashes.length;e++)oi(pi(o.blobVersionedHashes[e],32),`invalid blobVersionedHash at index ${e}: must be length 32`,"data",n);return 11===e.length||Gd(o,e.slice(11)),o}(e));case 4:return qd.from(function(n){const e=Ss(hi(n).slice(1));oi(Array.isArray(e)&&(10===e.length||13===e.length),"invalid field count for transaction type: 4","data",mi(n));const t={type:4,chainId:Ld(e[0],"chainId"),nonce:Fd(e[1],"nonce"),maxPriorityFeePerGas:Ld(e[2],"maxPriorityFeePerGas"),maxFeePerGas:Ld(e[3],"maxFeePerGas"),gasPrice:null,gasLimit:Ld(e[4],"gasLimit"),to:Cd(e[5]),value:Ld(e[6],"value"),data:mi(e[7]),accessList:Od(e[8],"accessList"),authorizationList:Ud(e[9],"authorizationList")};return 10===e.length||Gd(t,e.slice(10)),t}(e))}ai(!1,"unsupported transaction type","UNSUPPORTED_OPERATION",{operation:"from"})}const e=new qd;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=Ch.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&&(oi(e.isSigned(),"unsigned transaction cannot define '.hash'","tx",n),oi(e.hash===n.hash,"hash mismatch","tx",n)),null!=n.from&&(oi(e.isSigned(),"unsigned transaction cannot define '.from'","tx",n),oi(e.from.toLowerCase()===(n.from||"").toLowerCase(),"from mismatch","tx",n)),e}}function Hd(n){return oi("string"==typeof n.address,"invalid address for hashAuthorization","auth.address",n),bl(bi(["0x05",Cs([null!=n.chainId?Li(n.chainId):"0x",qh(n.address),null!=n.nonce?Li(n.nonce):"0x"])]))}function Kd(n,e){return Ad(Hd(n),e)}function _d(n){return bl(Yi(n))}const Vd=new Map([[8217,"apostrophe"],[8260,"fraction slash"],[12539,"middle dot"]]);function Qd(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 h=2**31,d=h>>>1,p=d>>1,f=h-1;let g=0;for(let n=0;n<31;n++)g=g<<1|u();let m=[],b=0,y=h;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)&d);)g=g<<1&f|u(),i=i<<1&f,s=s<<1&f|1;for(;i&~s&p;)g=g&d|g<<1&f>>>1|u(),i=i<<1^d,s=(s^d)<<1|d|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 Jd(n){return 1&n?~n>>1:n>>1}function $d(n,e){let t=Array(n);for(let r=0,a=0;r<n;r++)t[r]=a+=Jd(e());return t}function Wd(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 Zd(n){return Xd(()=>{let e=Wd(n);if(e.length)return e})}function Yd(n){let e=[];for(;;){let t=n();if(0==t)break;e.push(ep(t,n))}for(;;){let t=n()-1;if(t<0)break;e.push(tp(t,n))}return e.flat()}function Xd(n){let e=[];for(;;){let t=n(e.length);if(!t)break;e.push(t)}return e}function np(n,e,t){let r=Array(n).fill().map(()=>[]);for(let a=0;a<e;a++)$d(n,t).forEach((n,e)=>r[e].push(n));return r}function ep(n,e){let t=1+e(),r=e(),a=Xd(e);return np(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 tp(n,e){return np(1+e(),1+n,e).map(n=>[n[0],n.slice(1)])}function rp(n){return`{${function(n){return n.toString(16).toUpperCase().padStart(2,"0")}(n)}}`}function ap(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 op(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 ip=44032,sp=4352,cp=4449,lp=4519,up=28,hp=588;function dp(n){return n>>24&255}function pp(n){return 16777215&n}let fp,gp,mp,bp;function yp(n){return n>=ip&&n<55204}function vp(n,e){if(n>=sp&&n<4371&&e>=cp&&e<4470)return ip+(n-sp)*hp+(e-cp)*up;if(yp(n)&&e>lp&&e<4547&&(n-ip)%up==0)return n+(e-lp);{let t=bp.get(n);return t&&(t=t.get(e),t)?t:-1}}function wp(n){fp||function(){let n=Qd("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");fp=new Map(Zd(n).flatMap((n,e)=>n.map(n=>[n,e+1<<24]))),gp=new Set(Wd(n)),mp=new Map,bp=new Map;for(let[e,t]of Yd(n)){if(!gp.has(e)&&2==t.length){let[n,r]=t,a=bp.get(n);a||(a=new Map,bp.set(n,a)),a.set(r,e)}mp.set(e,t.reverse())}}();let e=[],t=[],r=!1;function a(n){let t=fp.get(n);t&&(r=!0,n|=t),e.push(n)}for(let r of n)for(;;){if(r<128)e.push(r);else if(yp(r)){let n=r-ip,e=n%hp/up|0,t=n%up;a(sp+(n/hp|0)),a(cp+e),t>0&&a(lp+t)}else{let n=mp.get(r);n?t.push(...n):a(r)}if(!t.length)break;r=t.pop()}if(r&&e.length>1){let n=dp(e[0]);for(let t=1;t<e.length;t++){let r=dp(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=dp(e[--a]),n<=r)break}n=dp(e[t])}}return e}function kp(n){return wp(n).map(pp)}function Ap(n){return function(n){let e=[],t=[],r=-1,a=0;for(let o of n){let n=dp(o),i=pp(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=vp(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}(wp(n))}const Ep=".",xp=n=>Array.from(n);function Ip(n,e){return n.P.has(e)||n.Q.has(e)}class Pp extends Array{get is_emoji(){return!0}}let Np,zp,Sp,Rp,Tp,Bp,Cp,Op,Up,Fp,Lp;function jp(){if(Np)return;let n=Qd("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");const e=()=>Wd(n),t=()=>new Set(e()),r=(n,e)=>e.forEach(e=>n.add(e));Np=new Map(Yd(n)),zp=t(),Sp=e(),Rp=new Set(e().map(n=>Sp[n])),Sp=new Set(Sp),Tp=t(),t();let a=Zd(n),o=n();const i=()=>{let n=new Set;return e().forEach(e=>r(n,a[e])),r(n,e()),n};Bp=Xd(e=>{let t=Xd(n).map(n=>n+96);if(t.length){let r=e>=o;return t[0]-=32,t=ap(t),r&&(t=`Restricted[${t}]`),{N:t,P:i(),Q:i(),M:!n(),R:r}}}),Cp=t(),Op=new Map;let s=e().concat(xp(Cp)).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),Cp.has(e)||Op.set(e,a)});for(let{V:n,M:e}of new Set(Op.values())){let t=[];for(let e of n){let n=Bp.filter(n=>Ip(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=>xp(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)}}Up=new Set;let c=new Set;const l=n=>Up.has(n)?c.add(n):Up.add(n);for(let n of Bp){for(let e of n.P)l(e);for(let e of n.Q)l(e)}for(let n of Up)Op.has(n)||c.has(n)||Op.set(n,1);r(Up,kp(Up)),Fp=function(n){let e=[],t=Wd(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:Xd(()=>{let r=Wd(n).map(n=>t[n]);if(r.length)return e(r)}),Q:r}}([]),[]),e}(n).map(n=>Pp.from(n)).sort(op),Lp=new Map;for(let n of Fp){let e=[Lp];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 Dp(n){return(qp(n)?"":`${Mp(Gp([n]))} `)+rp(n)}function Mp(n){return`"${n}"‎`}function Gp(n,e=1/0,t=rp){let r=[];var a;a=n[0],jp(),Sp.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];qp(a)&&(r.push(ap(n.slice(o,e))),r.push(t(a)),o=e+1)}return r.push(ap(n.slice(o,i))),r.join("")}function qp(n){return jp(),Tp.has(n)}function Hp(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 ${Mp(Gp(e,63))}: ${r}`)}return ap(r)}).join(Ep)}(function(n,e,t){if(!n)return[];jp();let r=0;return n.split(Ep).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=Jp(n);if(o)a.length&&(r.push(e(a)),a=[]),r.push(t(o));else{let e=n.pop();if(Up.has(e))a.push(e);else{let n=Np.get(e);if(n)a.push(...n);else if(!zp.has(e))throw Kp(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: "${ap(n.slice(0,4))}"`)}(s),n="ASCII";else{let e=r.flatMap(n=>n.is_emoji?[]:n);if(e.length){if(Sp.has(s[0]))throw Vp("leading combining mark");for(let n=1;n<i;n++){let e=r[n];if(!e.is_emoji&&Sp.has(e[0]))throw Vp(`emoji + combining mark: "${ap(r[n-1])} + ${Gp([e[0]])}"`)}!function(n){let e=n[0],t=Vd.get(e);if(t)throw Vp(`leading ${t}`);let r=n.length,a=-1;for(let o=1;o<r;o++){e=n[o];let r=Vd.get(e);if(r){if(a==o)throw Vp(`${t} + ${r}`);a=o+1,t=r}}if(a==r)throw Vp(`trailing ${t}`)}(s);let t=xp(new Set(e)),[a]=function(n){let e=Bp;for(let t of n){let n=e.filter(n=>Ip(n,t));if(!n.length)throw Bp.some(n=>Ip(n,t))?_p(e[0],t):Kp(t);if(e=n,1==n.length)break}return e}(t);!function(n,e){for(let t of e)if(!Ip(n,t))throw _p(n,t);if(n.M){let n=kp(e);for(let e=1,t=n.length;e<t;e++)if(Rp.has(n[e])){let r=e+1;for(let a;r<t&&Rp.has(a=n[r]);r++)for(let t=e;t<r;t++)if(n[t]==a)throw new Error(`duplicate non-spacing marks: ${Dp(a)}`);if(r-e>4)throw new Error(`excessive non-spacing marks: ${Mp(Gp(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=Op.get(n);if(1===e)return;if(e){let r=e.M.get(n);if(t=t?t.filter(n=>r.has(n)):xp(r),!t.length)return}else r.push(n)}if(t)for(let e of t)if(r.every(n=>Ip(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,Ap,Qp))}function Kp(n){return new Error(`disallowed character: ${Dp(n)}`)}function _p(n,e){let t=Dp(e),r=Bp.find(n=>n.P.has(e));return r&&(t=`${r.N} ${t}`),new Error(`illegal mixture: ${n.N} + ${t}`)}function Vp(n){return new Error(`illegal placement: ${n}`)}function Qp(n){return n.filter(n=>65039!=n)}function Jp(n,e){let t,r=Lp,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 $p=new Uint8Array(32);function Wp(n){return oi(0!==n.length,"invalid ENS name; empty component","comp",n),n}function Zp(n){const e=Yi(Yp(n)),t=[];if(0===n.length)return t;let r=0;for(let n=0;n<e.length;n++){46===e[n]&&(t.push(Wp(e.slice(r,n))),r=n+1)}return oi(r<e.length,"invalid ENS name; empty component","name",n),t.push(Wp(e.slice(r))),t}function Yp(n){try{if(0===n.length)throw new Error("empty label");return Hp(n)}catch(e){oi(!1,`invalid ENS name (${e.message})`,"name",n)}}function Xp(n){try{return 0!==Zp(n).length}catch(n){}return!1}function nf(n){oi("string"==typeof n,"invalid ENS name; not a string","name",n),oi(n.length,"invalid ENS name (empty label)","name",n);let e=$p;const t=Zp(n);for(;t.length;)e=bl(bi([e,bl(t.pop())]));return mi(e)}function ef(n,e){const t=null!=e?e:63;return oi(t<=255,"DNS encoded label cannot exceed 255","length",t),mi(bi(Zp(n).map(e=>{oi(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 tf(n){return"string"==typeof n&&(n=Yi(n)),bl(bi([Yi(kh),Yi(String(n.length)),n]))}function rf(n,e){return Ad(tf(n),e)}$p.fill(0);const af=new RegExp("^bytes([0-9]+)$"),of=new RegExp("^(u?int)([0-9]*)$"),sf=new RegExp("^(.*)\\[([0-9]*)\\]$");function cf(n,e,t){switch(n){case"address":return hi(t?Ai(e,32):qh(e));case"string":return Yi(e);case"bytes":return hi(e);case"bool":return e=e?"0x01":"0x00",hi(t?Ai(e,32):e)}let r=n.match(of);if(r){let a="int"===r[1],o=parseInt(r[2]||"256");return oi((!r[2]||r[2]===String(o))&&o%8==0&&0!==o&&o<=256,"invalid number type","type",n),t&&(o=256),a&&(e=zi(e,o)),hi(Ai(Li(e),o/8))}if(r=n.match(af),r){const a=parseInt(r[1]);return oi(String(a)===r[1]&&0!==a&&a<=32,"invalid bytes type","type",n),oi(yi(e)===a,`invalid value for ${n}`,"value",e),t?hi(Ei(e,32)):e}if(r=n.match(sf),r&&Array.isArray(e)){const t=r[1];oi(parseInt(r[2]||String(e.length))===e.length,`invalid array length for ${n}`,"value",e);const a=[];return e.forEach(function(n){a.push(cf(t,n,!0))}),hi(bi(a))}oi(!1,"invalid type","type",n)}function lf(n,e){oi(n.length===e.length,"wrong number of values; expected ${ types.length }","values",e);const t=[];return n.forEach(function(n,r){t.push(cf(n,e[r]))}),mi(bi(t))}function uf(n,e){return bl(lf(n,e))}function hf(n,e){return lu(lf(n,e))}const df=new Uint8Array(32);df.fill(0);const pf=BigInt(-1),ff=BigInt(0),gf=BigInt(1),mf=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const bf=Fi(gf,32),yf=Fi(ff,32),vf={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"},wf=["name","version","chainId","verifyingContract","salt"];function kf(n){return function(e){return oi("string"==typeof e,`invalid domain value for ${JSON.stringify(n)}`,`domain.${n}`,e),e}}const Af={name:kf("name"),version:kf("version"),chainId:function(n){const e=Ri(n,"domain.chainId");return oi(e>=0,"invalid chain ID","domain.chainId",n),Number.isSafeInteger(e)?Number(e):ji(e)},verifyingContract:function(n){try{return qh(n).toLowerCase()}catch(n){}oi(!1,'invalid domain value "verifyingContract"',"domain.verifyingContract",n)},salt:function(n){const e=hi(n,"domain.salt");return oi(32===e.length,'invalid domain value "salt"',"domain.salt",n),mi(e)}};function Ef(n){{const e=n.match(/^(u?)int(\d+)$/);if(e){const t=""===e[1],r=parseInt(e[2]);oi(r%8==0&&0!==r&&r<=256&&e[2]===String(r),"invalid numeric width","type",n);const a=Si(mf,t?r-1:r),o=t?(a+gf)*pf:ff;return function(e){const r=Ri(e,"value");return oi(r>=o&&r<=a,`value out-of-bounds for ${n}`,"value",r),Fi(t?zi(r,256):r,32)}}}{const e=n.match(/^bytes(\d+)$/);if(e){const t=parseInt(e[1]);return oi(0!==t&&t<=32&&e[1]===String(t),"invalid bytes width","type",n),function(e){return oi(hi(e).length===t,`invalid length for ${n}`,"value",e),function(n){const e=hi(n),t=e.length%32;return t?bi([e,df.slice(t)]):mi(e)}(e)}}}switch(n){case"address":return function(n){return Ai(qh(n),32)};case"bool":return function(n){return n?bf:yf};case"bytes":return function(n){return bl(n)};case"string":return function(n){return _d(n)}}return null}function xf(n,e){return`${n}(${e.map(({name:n,type:e})=>e+" "+n).join(",")})`}function If(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 Pf{primaryType;#dn;get types(){return JSON.parse(this.#dn)}#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}=If(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.#dn=JSON.stringify(a);for(const r in a){const o=new Set;for(const i of a[r]){oi(!o.has(i.name),`duplicate variable name ${JSON.stringify(i.name)} in ${JSON.stringify(r)}`,"types",n),o.add(i.name);const a=If(i.type).base;oi(a!==r,`circular type reference to ${JSON.stringify(a)}`,"types",n);Ef(a)||(oi(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);oi(0!==o.length,"missing primary type","types",n),oi(1===o.length,`ambiguous primary types or unused types: ${o.map(n=>JSON.stringify(n)).join(", ")}`,"types",n),Xo(this,{primaryType:o[0]}),function a(o,i){oi(!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,xf(n,a[n])+t.map(n=>xf(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=Ef(n);if(e)return e}const e=If(n).array;if(e){const n=e.prefix,t=this.getEncoder(n);return r=>{oi(-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(bl)),bl(bi(a))}}const t=this.types[n];if(t){const e=_d(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)?bl(r):r});return r.unshift(e),bi(r)}}oi(!1,`unknown type: ${n}`,"type",n)}encodeType(n){const e=this.#pn.get(n);return oi(e,`unknown type: ${JSON.stringify(n)}`,"name",n),e}encodeData(n,e){return this.getEncoder(n)(e)}hashStruct(n,e){return bl(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(Ef(n))return t(n,e);const r=If(n).array;if(r)return oi(-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),{});oi(!1,`unknown type: ${n}`,"type",n)}visit(n,e){return this._visit(this.primaryType,n,e)}static from(n){return new Pf(n)}static getPrimaryType(n){return Pf.from(n).primaryType}static hashStruct(n,e,t){return Pf.from(e).hashStruct(n,t)}static hashDomain(n){const e=[];for(const t in n){if(null==n[t])continue;const r=vf[t];oi(r,`invalid typed-data domain key: ${JSON.stringify(t)}`,"domain",n),e.push({name:t,type:r})}return e.sort((n,e)=>wf.indexOf(n.name)-wf.indexOf(e.name)),Pf.hashStruct("EIP712Domain",{EIP712Domain:e},n)}static encode(n,e,t){return bi(["0x1901",Pf.hashDomain(n),Pf.from(e).hash(t)])}static hash(n,e,t){return bl(Pf.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&&!pi(n.verifyingContract,20)&&(a[n.verifyingContract]="0x");const o=Pf.from(e);o.visit(t,(n,e)=>("address"!==n||pi(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){Pf.hashDomain(n);const r={},a=[];wf.forEach(e=>{const t=n[e];null!=t&&(r[e]=Af[e](t),a.push({name:e,type:vf[e]}))});const o=Pf.from(e);e=o.types;const i=Object.assign({},e);return oi(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 mi(hi(e));if(n.match(/^u?int/))return Ri(e).toString();switch(n){case"address":return e.toLowerCase();case"bool":return!!e;case"string":return oi("string"==typeof e,"invalid string","value",e),e}oi(!1,"unsupported type","type",n)})}}}function Nf(n,e,t,r){return Ad(Pf.hash(n,e,t),r)}function zf(n){const e=new Set;return n.forEach(n=>e.add(n)),Object.freeze(e)}const Sf=zf("external public payable override".split(" ")),Rf="constant external internal payable private public pure view override",Tf=zf(Rf.split(" ")),Bf="constructor error event fallback function receive struct",Cf=zf(Bf.split(" ")),Of="calldata memory storage payable indexed",Uf=zf(Of.split(" ")),Ff=zf([Bf,Of,"tuple returns",Rf].join(" ").split(" ")),Lf={"(":"OPEN_PAREN",")":"CLOSE_PAREN","[":"OPEN_BRACKET","]":"CLOSE_BRACKET",",":"COMMA","@":"AT"},jf=new RegExp("^(\\s*)"),Df=new RegExp("^([0-9]+)"),Mf=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)"),Gf=new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)$"),qf=new RegExp("^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$");class Hf{#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 Hf(this.#mn)}reset(){this.#F=0}#bn(n=0,e=0){return new Hf(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 Kf(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(jf);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=Lf[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=Oi(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(Mf),s){if(c.text=s[1],o+=c.text.length,Ff.has(c.text)){c.type="KEYWORD";continue}if(c.text.match(qf)){c.type="TYPE";continue}c.type="ID"}else{if(s=i.match(Df),!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 Hf(e.map(n=>Object.freeze(n)))}function _f(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 Vf(n,e){if(e.peekKeyword(Cf)){const t=e.pop().text;if(t!==n)throw new Error(`expected ${n}, got ${t}`)}return e.popType("ID")}function Qf(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 Jf(n){let e=Qf(n,Tf);return _f(e,zf("constant payable nonpayable".split(" "))),_f(e,zf("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 $f(n,e){return n.popParams().map(n=>lg.from(n,e))}function Wf(n){if(n.peekType("AT")){if(n.pop(),n.peekType("NUMBER"))return Ri(n.pop().text);throw new Error("invalid gas")}return null}function Zf(n){if(n.length)throw new Error(`unexpected tokens at offset ${n.offset}: ${n.toString()}`)}const Yf=new RegExp(/^(.*)\[([0-9]*)\]$/);function Xf(n){const e=n.match(qf);if(oi(e,"invalid type","type",n),"uint"===n)return"uint256";if("int"===n)return"int256";if(e[2]){const t=parseInt(e[2]);oi(0!==t&&t<=32,"invalid bytes length","type",n)}else if(e[3]){const t=parseInt(e[3]);oi(0!==t&&t<=256&&t%8==0,"invalid numeric width","type",n)}return n}const ng={},eg=Symbol.for("_ethers_internal"),tg="_ParamTypeInternal",rg="_ErrorInternal",ag="_EventInternal",og="_ConstructorInternal",ig="_FallbackInternal",sg="_FunctionInternal",cg="_StructInternal";class lg{name;type;baseType;indexed;components;arrayLength;arrayChildren;constructor(n,e,t,r,a,o,i,s){if(li(n,ng,"ParamType"),Object.defineProperty(this,eg,{value:tg}),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("");Xo(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(lg.isParamType(n))return n;if("string"==typeof n)try{return lg.from(Kf(n),e)}catch(e){oi(!1,"invalid param type","obj",n)}else if(n instanceof Hf){let t="",r="",a=null;Qf(n,zf(["tuple"])).has("tuple")||n.peekType("OPEN_PAREN")?(r="tuple",a=n.popParams().map(n=>lg.from(n)),t=`tuple(${a.map(n=>n.format()).join(",")})`):(t=Xf(n.popType("TYPE")),r=t);let o=null,i=null;for(;n.length&&n.peekType("BRACKET");){const e=n.pop();o=new lg(ng,"",t,r,null,a,i,o),i=e.value,t+=e.text,r="array",a=null}let s=null;if(Qf(n,Uf).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 lg(ng,c,t,r,s,a,i,o)}const t=n.name;oi(!t||"string"==typeof t&&t.match(Gf),"invalid name","obj.name",t);let r=n.indexed;null!=r&&(oi(e,"parameter cannot be indexed","obj.indexed",n.indexed),r=!!r);let a=n.type,o=a.match(Yf);if(o){const e=parseInt(o[2]||"-1"),i=lg.from({type:o[1],components:n.components});return new lg(ng,t||"",a,"array",r,null,e,i)}if("tuple"===a||a.startsWith("tuple(")||a.startsWith("(")){const e=null!=n.components?n.components.map(n=>lg.from(n)):null;return new lg(ng,t||"",a,"tuple",r,e,null,null)}return a=Xf(n.type),new lg(ng,t||"",a,a,r,null,null,null)}static isParamType(n){return n&&n[eg]===tg}}class ug{type;inputs;constructor(n,e,t){li(n,ng,"Fragment"),Xo(this,{type:e,inputs:t=Object.freeze(t.slice())})}static from(n){if("string"==typeof n){try{ug.from(JSON.parse(n))}catch(n){}return ug.from(Kf(n))}if(n instanceof Hf){switch(n.peekKeyword(Cf)){case"constructor":return gg.from(n);case"error":return pg.from(n);case"event":return fg.from(n);case"fallback":case"receive":return mg.from(n);case"function":return bg.from(n);case"struct":return yg.from(n)}}else if("object"==typeof n){switch(n.type){case"constructor":return gg.from(n);case"error":return pg.from(n);case"event":return fg.from(n);case"fallback":case"receive":return mg.from(n);case"function":return bg.from(n);case"struct":return yg.from(n)}ai(!1,`unsupported type: ${n.type}`,"UNSUPPORTED_OPERATION",{operation:"Fragment.from"})}oi(!1,"unsupported frgament object","obj",n)}static isConstructor(n){return gg.isFragment(n)}static isError(n){return pg.isFragment(n)}static isEvent(n){return fg.isFragment(n)}static isFunction(n){return bg.isFragment(n)}static isStruct(n){return yg.isFragment(n)}}class hg extends ug{name;constructor(n,e,t,r){super(n,e,r),oi("string"==typeof t&&t.match(Gf),"invalid identifier","name",t),r=Object.freeze(r.slice()),Xo(this,{name:t})}}function dg(n,e){return"("+e.map(e=>e.format(n)).join("full"===n?", ":",")+")"}class pg extends hg{constructor(n,e,t){super(n,"error",e,t),Object.defineProperty(this,eg,{value:rg})}get selector(){return _d(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+dg(n,this.inputs)),e.join(" ")}static from(n){if(pg.isFragment(n))return n;if("string"==typeof n)return pg.from(Kf(n));if(n instanceof Hf){const e=Vf("error",n),t=$f(n);return Zf(n),new pg(ng,e,t)}return new pg(ng,n.name,n.inputs?n.inputs.map(lg.from):[])}static isFragment(n){return n&&n[eg]===rg}}class fg extends hg{anonymous;constructor(n,e,t,r){super(n,"event",e,t),Object.defineProperty(this,eg,{value:ag}),Xo(this,{anonymous:r})}get topicHash(){return _d(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+dg(n,this.inputs)),"sighash"!==n&&this.anonymous&&e.push("anonymous"),e.join(" ")}static getTopicHash(n,e){e=(e||[]).map(n=>lg.from(n));return new fg(ng,n,e,!1).topicHash}static from(n){if(fg.isFragment(n))return n;if("string"==typeof n)try{return fg.from(Kf(n))}catch(e){oi(!1,"invalid event fragment","obj",n)}else if(n instanceof Hf){const e=Vf("event",n),t=$f(n,!0),r=!!Qf(n,zf(["anonymous"])).has("anonymous");return Zf(n),new fg(ng,e,t,r)}return new fg(ng,n.name,n.inputs?n.inputs.map(n=>lg.from(n,!0)):[],!!n.anonymous)}static isFragment(n){return n&&n[eg]===ag}}class gg extends ug{payable;gas;constructor(n,e,t,r,a){super(n,e,t),Object.defineProperty(this,eg,{value:og}),Xo(this,{payable:r,gas:a})}format(n){if(ai(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${dg(n,this.inputs)}`];return this.payable&&e.push("payable"),null!=this.gas&&e.push(`@${this.gas.toString()}`),e.join(" ")}static from(n){if(gg.isFragment(n))return n;if("string"==typeof n)try{return gg.from(Kf(n))}catch(e){oi(!1,"invalid constuctor fragment","obj",n)}else if(n instanceof Hf){Qf(n,zf(["constructor"]));const e=$f(n),t=!!Qf(n,Sf).has("payable"),r=Wf(n);return Zf(n),new gg(ng,"constructor",e,t,r)}return new gg(ng,"constructor",n.inputs?n.inputs.map(lg.from):[],!!n.payable,null!=n.gas?n.gas:null)}static isFragment(n){return n&&n[eg]===og}}class mg extends ug{payable;constructor(n,e,t){super(n,"fallback",e),Object.defineProperty(this,eg,{value:ig}),Xo(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(mg.isFragment(n))return n;if("string"==typeof n)try{return mg.from(Kf(n))}catch(e){oi(!1,"invalid fallback fragment","obj",n)}else if(n instanceof Hf){const e=n.toString();oi(n.peekKeyword(zf(["fallback","receive"])),"type must be fallback or receive","obj",e);if("receive"===n.popKeyword(zf(["fallback","receive"]))){const e=$f(n);return oi(0===e.length,"receive cannot have arguments","obj.inputs",e),Qf(n,zf(["payable"])),Zf(n),new mg(ng,[],!0)}let t=$f(n);t.length?oi(1===t.length&&"bytes"===t[0].type,"invalid fallback inputs","obj.inputs",t.map(n=>n.format("minimal")).join(", ")):t=[lg.from("bytes")];const r=Jf(n);if(oi("nonpayable"===r||"payable"===r,"fallback cannot be constants","obj.stateMutability",r),Qf(n,zf(["returns"])).has("returns")){const e=$f(n);oi(1===e.length&&"bytes"===e[0].type,"invalid fallback outputs","obj.outputs",e.map(n=>n.format("minimal")).join(", "))}return Zf(n),new mg(ng,t,"payable"===r)}if("receive"===n.type)return new mg(ng,[],!0);if("fallback"===n.type){const e=[lg.from("bytes")],t="payable"===n.stateMutability;return new mg(ng,e,t)}oi(!1,"invalid fallback description","obj",n)}static isFragment(n){return n&&n[eg]===ig}}class bg extends hg{constant;outputs;stateMutability;payable;gas;constructor(n,e,t,r,a,o){super(n,"function",e,r),Object.defineProperty(this,eg,{value:sg});Xo(this,{constant:"view"===t||"pure"===t,gas:o,outputs:a=Object.freeze(a.slice()),payable:"payable"===t,stateMutability:t})}get selector(){return _d(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+dg(n,this.inputs)),"sighash"!==n&&("nonpayable"!==this.stateMutability&&e.push(this.stateMutability),this.outputs&&this.outputs.length&&(e.push("returns"),e.push(dg(n,this.outputs))),null!=this.gas&&e.push(`@${this.gas.toString()}`)),e.join(" ")}static getSelector(n,e){e=(e||[]).map(n=>lg.from(n));return new bg(ng,n,"view",e,[],null).selector}static from(n){if(bg.isFragment(n))return n;if("string"==typeof n)try{return bg.from(Kf(n))}catch(e){oi(!1,"invalid function fragment","obj",n)}else if(n instanceof Hf){const e=Vf("function",n),t=$f(n),r=Jf(n);let a=[];Qf(n,zf(["returns"])).has("returns")&&(a=$f(n));const o=Wf(n);return Zf(n),new bg(ng,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 bg(ng,n.name,e,n.inputs?n.inputs.map(lg.from):[],n.outputs?n.outputs.map(lg.from):[],null!=n.gas?n.gas:null)}static isFragment(n){return n&&n[eg]===sg}}class yg extends hg{constructor(n,e,t){super(n,"struct",e,t),Object.defineProperty(this,eg,{value:cg})}format(){throw new Error("@TODO")}static from(n){if("string"==typeof n)try{return yg.from(Kf(n))}catch(e){oi(!1,"invalid struct fragment","obj",n)}else if(n instanceof Hf){const e=Vf("struct",n),t=$f(n);return Zf(n),new yg(ng,e,t)}return new yg(ng,n.name,n.inputs?n.inputs.map(lg.from):[])}static isFragment(n){return n&&n[eg]===cg}}const vg=new Map;vg.set(0,"GENERIC_PANIC"),vg.set(1,"ASSERT_FALSE"),vg.set(17,"OVERFLOW"),vg.set(18,"DIVIDE_BY_ZERO"),vg.set(33,"ENUM_RANGE_ERROR"),vg.set(34,"BAD_STORAGE_DATA"),vg.set(49,"STACK_UNDERFLOW"),vg.set(50,"ARRAY_RANGE_ERROR"),vg.set(65,"OUT_OF_MEMORY"),vg.set(81,"UNINITIALIZED_FUNCTION_CALL");const wg=new RegExp(/^bytes([0-9]*)$/),kg=new RegExp(/^(u?int)([0-9]*)$/);let Ag=null,Eg=1024;class xg{#vn(n){if(n.isArray())return new od(this.#vn(n.arrayChildren),n.arrayLength,n.name);if(n.isTuple())return new bd(n.components.map(n=>this.#vn(n)),n.name);switch(n.baseType){case"address":return new ed(n.name);case"bool":return new id(n.name);case"string":return new md(n.name);case"bytes":return new cd(n.name);case"":return new hd(n.name)}let e=n.type.match(kg);if(e){let t=parseInt(e[2]||"256");return oi(0!==t&&t<=256&&t%8==0,"invalid "+e[1]+" bit length","param",n),new gd(t/8,"int"===e[1],n.name)}if(e=n.type.match(wg),e){let t=parseInt(e[1]);return oi(0!==t&&t<=32,"invalid bytes length","param",n),new ld(t,n.name)}oi(!1,"invalid type","type",n.type)}getDefaultValue(n){const e=n.map(n=>this.#vn(lg.from(n)));return new bd(e,"_").defaultValue()}encode(n,e){ii(e.length,n.length,"types/values length mismatch");const t=n.map(n=>this.#vn(lg.from(n))),r=new bd(t,"_"),a=new Xs;return r.encode(a,e),a.data}decode(n,e,t){const r=n.map(n=>this.#vn(lg.from(n)));return new bd(r,"_").decode(new nc(e,t,Eg))}static _setDefaultMaxInflation(n){oi("number"==typeof n&&Number.isInteger(n),"invalid defaultMaxInflation factor","value",n),Eg=n}static defaultAbiCoder(){return null==Ag&&(Ag=new xg),Ag}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=hi(t);if(t=mi(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"===mi(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"===mi(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 ${vg.get(e)||"UNKNOWN"}(${e})`,a+=`: ${o}`}catch(n){a+=" (could not decode panic code)"}else a+=" (unknown custom error)"}const s={to:e.to?qh(e.to):null,data:e.data||"0x"};return e.from&&(s.from=qh(e.from)),ri(a,"CALL_EXCEPTION",{action:n,data:t,reason:o,transaction:s,invocation:null,revert:i})}(n,e,t,xg.defaultAbiCoder())}}function Ig(n){const e=Yi(n);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return Ei(e,32)}function Pg(n){const e=hi(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 Xi(e.slice(0,t))}class Ng{fragment;name;signature;topic;args;constructor(n,e,t){const r=n.name,a=n.format();Xo(this,{fragment:n,name:r,signature:a,topic:e,args:t})}}class zg{fragment;name;args;signature;selector;value;constructor(n,e,t,r){const a=n.name,o=n.format();Xo(this,{fragment:n,name:a,args:t,signature:o,selector:e,value:r})}}class Sg{fragment;name;args;signature;selector;constructor(n,e,t){const r=n.name,a=n.format();Xo(this,{fragment:n,name:r,args:t,signature:a,selector:e})}}class Rg{hash;_isIndexed;static isIndexed(n){return!(!n||!n._isIndexed)}constructor(n){Xo(this,{hash:n,_isIndexed:!0})}}const Tg={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"},Bg={"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&&Tg[n.toString()]&&(e=Tg[n.toString()]),`reverted with panic code 0x${n.toString(16)} (${e})`}}};class Cg{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(ug.from(n))}catch(n){}Xo(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":if(this.deploy)return;return void Xo(this,{deploy:n});case"fallback":return void(0===n.inputs.length?a=!0:(oi(!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||Xo(this,{deploy:gg.from("constructor()")}),Xo(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 xg.defaultAbiCoder()}#xn(n,e,t){if(pi(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;nd.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(nd.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){oi(!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(bg.from(n).format());return r||null}getFunctionName(n){const e=this.#xn(n,null,!1);return oi(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(pi(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(nd.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){oi(!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(fg.from(n).format());return r||null}getEventName(n){const e=this.#In(n,null,!1);return oi(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(pi(n)){const e=n.toLowerCase();if(Bg[e])return pg.from(Bg[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?pg.from("error Error(string)"):"Panic"===n?pg.from("error Panic(uint256)"):null;if(e.length>1){oi(!1,`ambiguous error description (i.e. ${e.map(n=>JSON.stringify(n.format())).join(", ")})`,"name",n)}return e[0]}if("Error(string)"===(n=pg.from(n).format()))return pg.from("error Error(string)");if("Panic(uint256)"===n)return pg.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);oi(e,"unknown error","fragment",n),n=e}return oi(vi(e,0,4)===n.selector,`data signature does not match error ${n.name}.`,"data",e),this._decodeParams(n.inputs,vi(e,4))}encodeErrorResult(n,e){if("string"==typeof n){const e=this.getError(n);oi(e,"unknown error","fragment",n),n=e}return bi([n.selector,this._encodeParams(n.inputs,e||[])])}decodeFunctionData(n,e){if("string"==typeof n){const e=this.getFunction(n);oi(e,"unknown function","fragment",n),n=e}return oi(vi(e,0,4)===n.selector,`data signature does not match function ${n.name}.`,"data",e),this._decodeParams(n.inputs,vi(e,4))}encodeFunctionData(n,e){if("string"==typeof n){const e=this.getFunction(n);oi(e,"unknown function","fragment",n),n=e}return bi([n.selector,this._encodeParams(n.inputs,e||[])])}decodeFunctionResult(n,e){if("string"==typeof n){const e=this.getFunction(n);oi(e,"unknown function","fragment",n),n=e}let t="invalid length for result data";const r=di(e);if(r.length%32==0)try{return this.#En.decode(n.outputs,r)}catch(n){t="could not decode result data"}ai(!1,t,"BAD_DATA",{value:mi(r),info:{method:n.name,signature:n.format()}})}makeError(n,e){const t=hi(n,"data"),r=xg.getBuiltinCallException("call",e,t);if(r.message.startsWith("execution reverted (unknown custom error)")){const n=mi(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);oi(e,"unknown function","fragment",n),n=e}return mi(this.#En.encode(n.outputs,e||[]))}encodeFilterTopics(n,e){if("string"==typeof n){const e=this.getEvent(n);oi(e,"unknown event","eventFragment",n),n=e}ai(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?_d(e):"bytes"===n.type?bl(mi(e)):("bool"===n.type&&"boolean"==typeof e?e=e?"0x01":"0x00":n.type.match(/^u?int/)?e=Fi(e):n.type.match(/^bytes/)?e=Ei(e,32):"address"===n.type&&this.#En.encode(["address"],[e]),Ai(mi(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?oi(!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)):oi(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);oi(e,"unknown event","eventFragment",n),n=e}const t=[],r=[],a=[];return n.anonymous||t.push(n.topicHash),oi(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(_d(i));else if("bytes"===n.type)t.push(bl(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);oi(e,"unknown event","eventFragment",n),n=e}if(null!=t&&!n.anonymous){const e=n.topicHash;oi(pi(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(lg.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,bi(t)):null,s=this.#En.decode(a,e,!0),c=[],l=[];let u=0,h=0;return n.inputs.forEach((n,e)=>{let t=null;if(n.indexed)if(null==i)t=new Rg(null);else if(o[e])t=new Rg(i[h++]);else try{t=i[h++]}catch(n){t=n}else try{t=s[u++]}catch(n){t=n}c.push(t),l.push(n.name||null)}),$s.fromItems(c,l)}parseTransaction(n){const e=hi(n.data,"tx.data"),t=Ri(null!=n.value?n.value:0,"tx.value"),r=this.getFunction(mi(e.slice(0,4)));if(!r)return null;const a=this.#En.decode(r.inputs,e.slice(4));return new zg(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 Ng(e,e.topicHash,this.decodeEventLog(e,n.data,n.topics))}parseError(n){const e=mi(n),t=this.getError(vi(e,0,4));if(!t)return null;const r=this.#En.decode(t.inputs,vi(e,4));return new Sg(t,t.selector,r)}static from(n){return n instanceof Cg?n:"string"==typeof n?new Cg(JSON.parse(n)):"function"==typeof n.formatJson?new Cg(n.formatJson()):"function"==typeof n.format?new Cg(n.format("json")):new Cg(n)}}const Og=BigInt(0);function Ug(n){return null==n?null:n}function Fg(n){return null==n?null:n.toString()}class Lg{gasPrice;maxFeePerGas;maxPriorityFeePerGas;constructor(n,e,t){Xo(this,{gasPrice:Ug(n),maxFeePerGas:Ug(e),maxPriorityFeePerGas:Ug(t)})}toJSON(){const{gasPrice:n,maxFeePerGas:e,maxPriorityFeePerGas:t}=this;return{_type:"FeeData",gasPrice:Fg(n),maxFeePerGas:Fg(e),maxPriorityFeePerGas:Fg(t)}}}function jg(n){const e={};n.to&&(e.to=n.to),n.from&&(e.from=n.from),n.data&&(e.data=mi(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]=Ri(n[r],`request.${r}`));const r="type,nonce".split(/,/);for(const t of r)t in n&&null!=n[t]&&(e[t]=Oi(n[t],`request.${t}`));return n.accessList&&(e.accessList=vd(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=>fi(n)?mi(n):Object.assign({},n))),e}class Dg{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 qg(n,e):n),Xo(this,{provider:e,hash:Ug(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:Ug(n.prevRandao),extraData:n.extraData,baseFeePerGas:Ug(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?[]:(ai("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:h,stateRoot:d,receiptsRoot:p,timestamp:f,transactions:g}=this;return{_type:"Block",baseFeePerGas:Fg(n),difficulty:Fg(e),extraData:t,gasLimit:Fg(r),gasUsed:Fg(a),blobGasUsed:Fg(this.blobGasUsed),excessBlobGas:Fg(this.excessBlobGas),hash:o,miner:i,prevRandao:s,nonce:c,number:l,parentHash:u,timestamp:f,parentBeaconBlockRoot:h,stateRoot:d,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;oi(!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 Mg{provider;transactionHash;blockHash;blockNumber;removed;address;data;topics;index;transactionIndex;constructor(n,e){this.provider=e;const t=Object.freeze(n.topics.slice());Xo(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 ai(!!n,"failed to find transaction","UNKNOWN_ERROR",{}),n}async getTransaction(){const n=await this.provider.getTransaction(this.transactionHash);return ai(!!n,"failed to find transaction","UNKNOWN_ERROR",{}),n}async getTransactionReceipt(){const n=await this.provider.getTransactionReceipt(this.transactionHash);return ai(!!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 Gg{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 Mg(n,e)));let t=Og;null!=n.effectiveGasPrice?t=n.effectiveGasPrice:null!=n.gasPrice&&(t=n.gasPrice),Xo(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:Fg(this.cumulativeGasUsed),from:e,gasPrice:Fg(this.gasPrice),blobGasUsed:Fg(this.blobGasUsed),blobGasPrice:Fg(this.blobGasPrice),gasUsed:Fg(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 Kg(this)}reorderedEvent(n){return ai(!n||n.isMined(),"unmined 'other' transction cannot be orphaned","UNSUPPORTED_OPERATION",{operation:"reorderedEvent(other)"}),Hg(this,n)}}class qg{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:h}=this;return{_type:"TransactionResponse",accessList:u,blockNumber:n,blockHash:e,blobVersionedHashes:h,chainId:Fg(this.chainId),data:c,from:i,gasLimit:Fg(this.gasLimit),gasPrice:Fg(this.gasPrice),hash:r,maxFeePerGas:Fg(this.maxFeePerGas),maxPriorityFeePerGas:Fg(this.maxPriorityFeePerGas),maxFeePerBlobGas:Fg(this.maxFeePerBlobGas),nonce:s,signature:l,to:o,index:t,type:a,value:Fg(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 Yo({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 Yo({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===Og&&(r="cancelled"),ai(!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;ai(!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(ri("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(ei(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 ai(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),Kg(this)}reorderedEvent(n){return ai(this.isMined(),"unmined transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),ai(!n||n.isMined(),"unmined 'other' transaction canot be orphaned","UNSUPPORTED_OPERATION",{operation:"removeEvent()"}),Hg(this,n)}replaceableTransaction(n){oi(Number.isInteger(n)&&n>=0,"invalid startBlock","startBlock",n);const e=new qg(this,this.provider);return e.#zn=n,e}}function Hg(n,e){return{orphan:"reorder-transaction",tx:n,other:e}}function Kg(n){return{orphan:"drop-transaction",tx:n}}class _g extends Mg{interface;fragment;args;constructor(n,e,t){super(n,n.provider);Xo(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 Vg extends Mg{error;constructor(n,e){super(n,n.provider),Xo(this,{error:e})}}class Qg extends Gg{#Sn;constructor(n,e,t){super(t,e),this.#Sn=n}get logs(){return super.logs.map(n=>{const e=n.topics.length?this.#Sn.getEvent(n.topics[0]):null;if(e)try{return new _g(n,this.#Sn,e)}catch(e){return new Vg(n,e)}return n})}}class Jg extends qg{#Sn;constructor(n,e,t){super(t,e),this.#Sn=n}async wait(n,e){const t=await super.wait(n,e);return null==t?null:new Qg(this.#Sn,this.provider,t)}}class $g extends Ji{log;constructor(n,e,t,r){super(n,e,t),Xo(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 Wg extends $g{constructor(n,e,t,r,a){super(n,e,t,new _g(a,n.interface,r));Xo(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 Zg=BigInt(0);function Yg(n){return n&&"function"==typeof n.call}function Xg(n){return n&&"function"==typeof n.estimateGas}function nm(n){return n&&"function"==typeof n.resolveName}function em(n){return n&&"function"==typeof n.sendTransaction}function tm(n){if(null!=n){if(nm(n))return n;if(n.provider)return n.provider}}class rm{#Rn;fragment;constructor(n,e,t){if(Xo(this,{fragment:e}),e.inputs.length<t.length)throw new Error("too many arguments");const r=am(n.runner,"resolveName"),a=nm(r)?r:null;this.#Rn=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=>$h(n,a))):$h(e,a):e)));return n.interface.encodeFilterTopics(e,r)}()}getTopicFilter(){return this.#Rn}}function am(n,e){return null==n?null:"function"==typeof n[e]?n:n.provider&&"function"==typeof n.provider[e]?n.provider:null}function om(n){return null==n?null:n.provider||null}async function im(n,e){const t=nd.dereference(n,"overrides");oi("object"==typeof t,"invalid overrides parameter","overrides",n);const r=jg(t);return oi(null==r.to||(e||[]).indexOf("to")>=0,"cannot override to","overrides.to",r.to),oi(null==r.data||(e||[]).indexOf("data")>=0,"cannot override data","overrides.data",r.data),r.from&&(r.from=r.from),r}async function sm(n,e,t){const r=am(n,"resolveName"),a=nm(r)?r:null;return await Promise.all(e.map((n,e)=>n.walkAsync(t[e],(n,e)=>(e=nd.dereference(e,n),"address"===n?$h(e,a):e))))}function cm(n){const e=async function(e){const t=await im(e,["data"]);t.to=await n.getAddress(),t.from&&(t.from=await $h(t.from,tm(n.runner)));const r=n.interface,a=Ri(t.value||Zg,"overrides.value")===Zg,o="0x"===(t.data||"0x");!r.fallback||r.fallback.payable||!r.receive||o||a||oi(!1,"cannot send data to receive or send value to non-payable fallback","overrides",e),oi(r.fallback||o,"cannot send data to receive-only contract","overrides.data",t.data);return oi(r.receive||r.fallback&&r.fallback.payable||a,"cannot send value to non-payable fallback","overrides.value",t.value),oi(r.fallback||o,"cannot send data to receive-only contract","overrides.data",t.data),t},t=async function(t){const r=n.runner;ai(em(r),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const a=await r.sendTransaction(await e(t)),o=om(n.runner);return new Jg(n.interface,o,a)},r=async n=>await t(n);return Xo(r,{_contract:n,estimateGas:async function(t){const r=am(n.runner,"estimateGas");return ai(Xg(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=am(n.runner,"call");ai(Yg(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(ti(e)&&e.data)throw n.interface.makeError(e.data,a);throw e}}}),r}const lm=Symbol.for("_ethersInternal_contract"),um=new WeakMap;function hm(n){return um.get(n[lm])}async function dm(n,e){let t,r=null;if(Array.isArray(e)){const r=function(e){if(pi(e,32))return e;const t=n.interface.getEvent(e);return oi(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?pi(e,32)?t=[e]:(r=n.interface.getEvent(e),oi(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]):oi(!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 pm(n,e){const{subs:t}=hm(n);return t.get((await dm(n,e)).tag)||null}async function fm(n,e,t){const r=om(n.runner);ai(r,"contract runner does not support subscribing","UNSUPPORTED_OPERATION",{operation:e});const{fragment:a,tag:o,topics:i}=await dm(n,t),{addr:s,subs:c}=hm(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):[];mm(n,t,i,r=>new Wg(n,r,t,o,e))}else mm(n,t,[],r=>new $g(n,r,t,e))};let h=[];l={tag:o,listeners:[],start:()=>{h.length||h.push(r.on(e,u))},stop:async()=>{if(0==h.length)return;let n=h;h=[],await Promise.all(n),r.off(e,u)}},c.set(o,l)}return l}let gm=Promise.resolve();async function mm(n,e,t,r){try{await gm}catch(n){}const a=async function(n,e,t,r){await gm;const a=await pm(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(),hm(n).subs.delete(a.tag)),o>0}(n,e,t,r);return gm=a,await a}const bm=["then"];class ym{target;interface;runner;filters;[lm];fallback;constructor(n,e,t,r){oi("string"==typeof n||Vh(n),"invalid value for Contract target","target",n),null==t&&(t=null);const a=Cg.from(e);let o;Xo(this,{target:n,runner:t,interface:a}),Object.defineProperty(this,lm,{value:{}});let i=null,s=null;if(r){const n=om(t);s=new Jg(this.interface,n,r)}let c=new Map;if("string"==typeof n)if(pi(n))i=n,o=Promise.resolve(n);else{const e=am(t,"resolveName");if(!nm(e))throw ri("contract runner does not support name resolution","UNSUPPORTED_OPERATION",{operation:"resolveName"});o=e.resolveName(n).then(e=>{if(null==e)throw ri("an ENS name used for a contract target must be correctly configured","UNCONFIGURED_NAME",{value:n});return hm(this).addr=e,e})}else o=n.getAddress().then(n=>{if(null==n)throw new Error("TODO");return hm(this).addr=n,n});var l,u;l=this,u={addrPromise:o,addr:i,deployTx:s,subs:c},um.set(l[lm],u);const h=new Proxy({},{get:(n,e,t)=>{if("symbol"==typeof e||bm.indexOf(e)>=0)return Reflect.get(n,e,t);try{return this.getEvent(e)}catch(n){if(!ei(n,"INVALID_ARGUMENT")||"key"!==n.argument)throw n}},has:(n,e)=>bm.indexOf(e)>=0?Reflect.has(n,e):Reflect.has(n,e)||this.interface.hasEvent(String(e))});return Xo(this,{filters:h}),Xo(this,{fallback:a.receive||a.fallback?cm(this):null}),new Proxy(this,{get:(n,e,t)=>{if("symbol"==typeof e||e in n||bm.indexOf(e)>=0)return Reflect.get(n,e,t);try{return n.getFunction(e)}catch(n){if(!ei(n,"INVALID_ARGUMENT")||"key"!==n.argument)throw n}},has:(n,e)=>"symbol"==typeof e||e in n||bm.indexOf(e)>=0?Reflect.has(n,e):n.interface.hasFunction(e)})}connect(n){return new ym(this.target,this.interface,n)}attach(n){return new ym(n,this.interface,this.runner)}async getAddress(){return await hm(this).addrPromise}async getDeployedCode(){const n=om(this.runner);ai(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=om(this.runner);return ai(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 hm(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 ai(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 im(e.pop()),a.from&&(a.from=await $h(a.from,tm(n.runner)))),r.inputs.length!==e.length)throw new Error("internal error: fragment inputs doesn't match arguments; should not happen");const o=await sm(n.runner,r.inputs,e);return Object.assign({},a,await Yo({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;ai(em(t),"contract runner does not support sending transactions","UNSUPPORTED_OPERATION",{operation:"sendTransaction"});const a=await t.sendTransaction(await r(...e)),o=om(n.runner);return new Jg(n.interface,o,a)},i=async function(...e){const a=am(n.runner,"call");ai(Yg(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(ti(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 Xo(s,{name:n.interface.getFunctionName(e),_contract:n,_key:e,getFragment:t,estimateGas:async function(...e){const t=am(n.runner,"estimateGas");return ai(Xg(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 ai(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 ai(r,"no matching fragment","UNSUPPORTED_OPERATION",{operation:"fragment",info:{key:e,args:t}}),r},r=function(...e){return new rm(n,t(...e),e)};return Xo(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 ai(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}=hm(this),o=r||await a,{fragment:i,topics:s}=await dm(this,n),c={address:o,topics:s,fromBlock:e,toBlock:t},l=om(this.runner);return ai(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 _g(n,this.interface,e)}catch(e){return new Vg(n,e)}return new Mg(n,l)})}async on(n,e){const t=await fm(this,"on",n);return t.listeners.push({listener:e,once:!1}),t.start(),this}async once(n,e){const t=await fm(this,"once",n);return t.listeners.push({listener:e,once:!0}),t.start(),this}async emit(n,...e){return await mm(this,n,e,null)}async listenerCount(n){if(n){const e=await pm(this,n);return e?e.listeners.length:0}const{subs:e}=hm(this);let t=0;for(const{listeners:n}of e.values())t+=n.length;return t}async listeners(n){if(n){const e=await pm(this,n);return e?e.listeners.map(({listener:n})=>n):[]}const{subs:e}=hm(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 pm(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(),hm(this).subs.delete(t.tag)),this}async removeAllListeners(n){if(n){const e=await pm(this,n);if(!e)return this;e.stop(),hm(this).subs.delete(e.tag)}else{const{subs:n}=hm(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 ym{constructor(e,t=null){super(e,n,t)}}}static from(n,e,t){null==t&&(t=null);return new this(n,e,t)}}class vm extends(function(){return ym}()){}class wm{interface;bytecode;runner;constructor(n,e,t){const r=Cg.from(n);e instanceof Uint8Array||("object"==typeof e&&(e=e.object),e.startsWith("0x")||(e="0x"+e)),Xo(this,{bytecode:e=mi(hi(e)),interface:r,runner:t||null})}attach(n){return new ym(n,this.interface,this.runner)}async getDeployTransaction(...n){let e={};const t=this.interface.deploy;if(t.inputs.length+1===n.length&&(e=await im(n.pop())),t.inputs.length!==n.length)throw new Error("incorrect number of arguments to constructor");const r=await sm(this.runner,t.inputs,n),a=bi([this.bytecode,this.interface.encodeDeploy(r)]);return Object.assign({},e,{data:a})}async deploy(...n){const e=await this.getDeployTransaction(...n);ai(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=Kh(t);return new ym(r,this.interface,this.runner,t)}connect(n){return new wm(this.interface,this.bytecode,n)}static fromSolidity(n,e){oi(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 km(n){return n.match(/^ipfs:\/\/ipfs\//i)?n=n.substring(12):n.match(/^ipfs:\/\//i)?n=n.substring(7):oi(!1,"unsupported IPFS format","link",n),`https://gateway.ipfs.io/ipfs/${n}`}class Am{name;constructor(n){Xo(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 Em=new RegExp("^(ipfs)://(.*)$","i"),xm=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),Em,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];class Im{provider;address;name;#Tn;#Bn;constructor(n,e,t){Xo(this,{provider:n,address:e,name:t}),this.#Tn=null,this.#Bn=new vm(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.#Tn&&(this.#Tn=(async()=>{try{return await this.#Bn.supportsInterface("0x9061b923")}catch(n){if(ei(n,"CALL_EXCEPTION"))return!1;throw this.#Tn=null,n}})()),await this.#Tn}async#Cn(n,e){e=(e||[]).slice();const t=this.#Bn.interface;e.unshift(nf(this.name));let r=null;await this.supportsWildcard()&&(r=t.getFunction(n),ai(r,"missing fragment","UNKNOWN_ERROR",{info:{funcName:n}}),e=[ef(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(!ei(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===fh?null:n}catch(n){if(ei(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(pi(t,20))return qh(t)}let e=null;for(const t of this.provider.plugins)if(t instanceof Am&&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;ai(!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}://${Ki("0x"+e[2])}`}const t=n.match(/^0xe40101fa011b20([0-9a-f]*)$/);if(t&&64===t[1].length)return`bzz://${t[1]}`;ai(!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<xm.length;t++){const r=e.match(xm[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=km(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 vm(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}",Fi(s,32).substring(2)),n.push({type:"metadata-url-expanded",value:l})),l.match(/^ipfs:/i)&&(l=km(l)),n.push({type:"metadata-url",value:l});let u={};const h=await new ds(l).send();h.assertOk();try{u=h.bodyJson}catch(e){try{n.push({type:"!metadata",value:h.bodyText})}catch(e){const t=h.body;return t&&n.push({type:"!metadata",value:mi(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 d=u.image;if("string"!=typeof d)return n.push({type:"!imageUrl",value:""}),{url:null,linkage:n};if(d.match(/^(https:\/\/|data:)/i));else{if(null==d.match(Em))return n.push({type:"!imageUrl-ipfs",value:d}),{url:null,linkage:n};n.push({type:"imageUrl-ipfs",value:d}),d=km(d)}return n.push({type:"url",value:d}),{linkage:n,url:d}}}}}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 ai(t,"network does not support ENS","UNSUPPORTED_OPERATION",{operation:"getEnsAddress",info:{network:e}}),t.address}static async#On(n,e){const t=await Im.getEnsAddress(n);try{const r=new vm(t,["function resolver(bytes32) view returns (address)"],n),a=await r.resolver(nf(e),{enableCcipRead:!0});return a===fh?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 Im.#On(n,t);if(null!=r){const a=new Im(n,r,e);return t===e||await a.supportsWildcard()?a:null}t=t.split(".").slice(1).join(".")}}}const Pm=BigInt(0);function Nm(n,e){return function(t){return null==t?e:n(t)}}function zm(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 Sm(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){ai(!1,`invalid value for value.${a} (${n instanceof Error?n.message:"not-an-error"})`,"BAD_DATA",{value:t})}}return r}}function Rm(n){return oi(pi(n,!0),"invalid data","value",n),n}function Tm(n){return oi(pi(n,32),"invalid hash","value",n),n}const Bm=Sm({address:qh,blockHash:Tm,blockNumber:Oi,data:Rm,index:Oi,removed:Nm(function(n){switch(n){case!0:case"true":return!0;case!1:case"false":return!1}oi(!1,`invalid boolean; ${JSON.stringify(n)}`,"value",n)},!1),topics:zm(Tm),transactionHash:Tm,transactionIndex:Oi},{index:["logIndex"]});const Cm=Sm({hash:Nm(Tm),parentHash:Tm,parentBeaconBlockRoot:Nm(Tm,null),number:Oi,timestamp:Oi,nonce:Nm(Rm),difficulty:Ri,gasLimit:Ri,gasUsed:Ri,stateRoot:Nm(Tm,null),receiptsRoot:Nm(Tm,null),blobGasUsed:Nm(Ri,null),excessBlobGas:Nm(Ri,null),miner:Nm(qh),prevRandao:Nm(Tm,null),extraData:Rm,baseFeePerGas:Nm(Ri)},{prevRandao:["mixHash"]});const Om=Sm({transactionIndex:Oi,blockNumber:Oi,transactionHash:Tm,address:qh,topics:zm(Tm),data:Rm,index:Oi,blockHash:Tm},{index:["logIndex"]});const Um=Sm({to:Nm(qh,null),from:Nm(qh,null),contractAddress:Nm(qh,null),index:Oi,root:Nm(mi),gasUsed:Ri,blobGasUsed:Nm(Ri,null),logsBloom:Nm(Rm),blockHash:Tm,hash:Tm,logs:zm(function(n){return Om(n)}),blockNumber:Oi,cumulativeGasUsed:Ri,effectiveGasPrice:Nm(Ri),blobGasPrice:Nm(Ri,null),status:Nm(Oi),type:Nm(Oi,0)},{effectiveGasPrice:["gasPrice"],hash:["transactionHash"],index:["transactionIndex"]});function Fm(n){n.to&&Ri(n.to)===Pm&&(n.to="0x0000000000000000000000000000000000000000");const e=Sm({hash:Tm,index:Nm(Oi,void 0),type:n=>"0x"===n||null==n?0:Oi(n),accessList:Nm(vd,null),blobVersionedHashes:Nm(zm(Tm,!0),null),authorizationList:Nm(zm(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:qh(n.address),chainId:Ri(n.chainId),nonce:Ri(n.nonce),signature:Ch.from(e)}},!1),null),blockHash:Nm(Tm,null),blockNumber:Nm(Oi,null),transactionIndex:Nm(Oi,null),from:qh,gasPrice:Nm(Ri),maxPriorityFeePerGas:Nm(Ri),maxFeePerGas:Nm(Ri),maxFeePerBlobGas:Nm(Ri,null),gasLimit:Ri,to:Nm(qh,null),value:Ri,nonce:Oi,data:Rm,creates:Nm(qh,null),chainId:Nm(Ri,null)},{data:["input"],gasLimit:["gas"],index:["transactionIndex"]})(n);if(null==e.to&&null==e.creates&&(e.creates=Kh(e)),1!==n.type&&2!==n.type||null!=n.accessList||(e.accessList=[]),n.signature?e.signature=Ch.from(n.signature):e.signature=Ch.from(n),null==e.chainId){const n=e.signature.legacyChainId;null!=n&&(e.chainId=n)}return e.blockHash&&Ri(e.blockHash)===Pm&&(e.blockHash=null),e}class Lm{name;constructor(n){Xo(this,{name:n})}clone(){return new Lm(this.name)}}class jm extends Lm{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),oi("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),Xo(this,t)}clone(){return new jm(this.effectiveBlock,this)}}class Dm extends Lm{address;targetNetwork;constructor(n,e){super("org.ethers.plugins.network.Ens"),Xo(this,{address:n||"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",targetNetwork:null==e?1:e})}clone(){return new Dm(this.address,this.targetNetwork)}}class Mm extends Lm{#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 Mm(this.#Un)}}class Gm extends Lm{#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 qm=new Map;class Hm{#Ln;#tn;#jn;constructor(n,e){this.#Ln=n,this.#tn=Ri(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=Ri(n,"chainId")}matches(n){if(null==n)return!1;if("string"==typeof n){try{return this.chainId===Ri(n)}catch(n){}return this.name===n}if("number"==typeof n||"bigint"==typeof n){try{return this.chainId===Ri(n)}catch(n){}return!1}if("object"==typeof n){if(null!=n.chainId){try{return this.chainId===Ri(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 Hm(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 jm;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=vd(n.accessList);for(const n in r)t+=e.txAccessListAddress+e.txAccessListStorageKey*r[n].storageKeys.length}return t}static from(n){if(function(){if(Vm)return;function n(n,e,t){const r=function(){const r=new Hm(n,e);return null!=t.ensNetwork&&r.attachPlugin(new Dm(null,t.ensNetwork)),r.attachPlugin(new jm),(t.plugins||[]).forEach(n=>{r.attachPlugin(n)}),r};Hm.register(n,r),Hm.register(e,r),t.altNames&&t.altNames.forEach(n=>{Hm.register(n,r)})}Vm=!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:[_m("https://gasstation.polygon.technology/v2")]}),n("matic-amoy",80002,{}),n("matic-mumbai",80001,{altNames:["maticMumbai","maticmum"],plugins:[_m("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 Hm.from("mainnet");if("number"==typeof n&&(n=BigInt(n)),"string"==typeof n||"bigint"==typeof n){const e=qm.get(n);if(e)return e();if("bigint"==typeof n)return new Hm("unknown",n);oi(!1,"unknown network","network",n)}if("function"==typeof n.clone){return n.clone()}if("object"==typeof n){oi("string"==typeof n.name&&"number"==typeof n.chainId,"invalid network object name or chainId","network",n);const e=new Hm(n.name,n.chainId);return(n.ensAddress||null!=n.ensNetwork)&&e.attachPlugin(new Dm(n.ensAddress,n.ensNetwork)),e}oi(!1,"invalid network","network",n)}static register(n,e){"number"==typeof n&&(n=BigInt(n));const t=qm.get(n);t&&oi(!1,`conflicting network for ${JSON.stringify(t.name)}`,"nameOrChainId",n),qm.set(n,e)}}function Km(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 _m(n){return new Gm(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:Km(o.maxFee,9),maxPriorityFeePerGas:Km(o.maxPriorityFee,9)}}catch(n){ai(!1,`error encountered with polygon gas station (${JSON.stringify(t.url)})`,"SERVER_ERROR",{request:t,response:r,error:n})}})}let Vm=!1;function Qm(n){return JSON.parse(JSON.stringify(n))}class Jm{#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 $m{#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 Wm extends $m{#_n;#Vn;constructor(n,e){super(n),this.#_n=e,this.#Vn=-2}pause(n){n&&(this.#Vn=-2),super.pause(n)}async _poll(n,e){const t=await e.getBlock(this.#_n);null!=t&&(-2===this.#Vn?this.#Vn=t.number:t.number>this.#Vn&&(e.emit(this.#_n,t.number),this.#Vn=t.number))}}class Zm extends $m{#Rn;constructor(n,e){super(n),this.#Rn=Qm(e)}async _poll(n,e){throw new Error("@TODO")}}class Ym extends $m{#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 Xm{#Dn;#Rn;#Mn;#Kn;#qn;constructor(n,e){this.#Dn=n,this.#Rn=Qm(e),this.#Mn=this.#Hn.bind(this),this.#Kn=!1,this.#qn=-2}async#Hn(n){if(-2===this.#qn)return;const e=Qm(this.#Rn);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.#Rn,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 nb=BigInt(2);function eb(n){return n&&"function"==typeof n.then}function tb(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 rb{name;constructor(n){Xo(this,{name:n})}start(){}stop(){}pause(n){}resume(){}}function ab(n){return(n=Array.from(new Set(n).values())).sort(),n}async function ob(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(pi(n,32)){const e=n.toLowerCase();return{type:"transaction",tag:tb("tx",{hash:e}),hash:e}}if(n.orphan){const e=n;return{type:"orphan",tag:tb("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)?ab(n.map(n=>n.toLowerCase())):n.toLowerCase())};if(t.address){const n=[],a=[],o=t=>{pi(t)?n.push(t):a.push((async()=>{n.push(await $h(t,e))})())};Array.isArray(t.address)?t.address.forEach(o):o(t.address),a.length&&await Promise.all(a),r.address=ab(n.map(n=>n.toLowerCase()))}return{filter:r,tag:tb("event",r),type:"event"}}oi(!1,"unknown ProviderEvent","event",n)}function ib(){return(new Date).getTime()}const sb={cacheTimeout:250,pollingInterval:4e3};class cb{#Jn;#jn;#$n;#Wn;#Zn;#Yn;#Xn;#ne;#ee;#te;#re;#Q;constructor(n,e){if(this.#Q=Object.assign({},sb,e||{}),"any"===n)this.#Yn=!0,this.#Zn=null;else if(n){const e=Hm.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=tb(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 ds(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){}ai(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)}ai(!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 Dg(function(n){const e=Cm(n);return e.transactions=n.transactions.map(n=>"string"==typeof n?n:Fm(n)),e}(n),this)}_wrapLog(n,e){return new Mg(function(n){return Bm(n)}(n),this)}_wrapTransactionReceipt(n,e){return new Gg(function(n){return Um(n)}(n),this)}_wrapTransactionResponse(n,e){return new qg(Fm(n),this)}_detectNetwork(){ai(!1,"sub-classes must implement this","UNSUPPORTED_OPERATION",{operation:"_detectNetwork"})}async _perform(n){ai(!1,`unsupported method: ${n.method}`,"UNSUPPORTED_OPERATION",{operation:n.method,info:n})}async getBlockNumber(){const n=Oi(await this.#ae({method:"getBlockNumber"}),"%response");return this.#ne>=0&&(this.#ne=n),n}_getAddress(n){return $h(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 pi(n)?pi(n,32)?n:ji(n):("bigint"==typeof n&&(n=Oi(n,"blockTag")),"number"==typeof n?n>=0?ji(n):this.#ne>=0?ji(this.#ne+n):this.getBlockNumber().then(e=>ji(e+n)):void oi(!1,"invalid blockTag","blockTag",n))}_getFilter(n){const e=(n.topics||[]).map(n=>null==n?null:Array.isArray(n)?ab(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=jg(n),t=[];if(["to","from"].forEach(n=>{if(null==e[n])return;const r=$h(e[n],this);eb(r)?t.push(async function(){e[n]=await r}()):e[n]=r}),null!=e.blockTag){const n=this._getBlockTag(e.blockTag);eb(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))):ai(!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 Yo({_block:this.#oe("latest",!1),gasPrice:(async()=>{try{return Ri(await this.#ae({method:"getGasPrice"}),"%response")}catch(n){}return null})(),priorityFee:(async()=>{try{return Ri(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*nb+o),new Lg(t,a,o)},t=n.getPlugin("org.ethers.plugins.network.FetchUrlFeeDataPlugin");if(t){const n=new ds(t.url),r=await t.processFunc(e,this,n);return new Lg(r.gasPrice,r.maxFeePerGas,r.maxPriorityFeePerGas)}return await e()}async estimateGas(n){let e=this._getTransactionRequest(n);return eb(e)&&(e=await e),Ri(await this.#ae({method:"estimateGas",transaction:e}),"%response")}async#ie(n,e,t){ai(t<10,"CCIP read exceeded maximum redirections","OFFCHAIN_FAULT",{reason:"TOO_MANY_REDIRECTS",transaction:Object.assign({},n,{blockTag:e,enableCcipRead:!0})});const r=jg(n);try{return mi(await this._perform({method:"call",transaction:r,blockTag:e}))}catch(n){if(!this.disableCcipRead&&ti(n)&&n.data&&t>=0&&"latest"===e&&null!=r.to&&"0x556f1830"===vi(n.data,0,4)){const a=n.data,o=await $h(r.to,this);let i;try{i=function(n){const e={sender:"",urls:[],calldata:"",selector:"",extraData:"",errorArgs:[]};ai(yi(n)>=160,"insufficient OffchainLookup data","OFFCHAIN_FAULT",{reason:"insufficient OffchainLookup data"});const t=vi(n,0,32);ai(vi(t,0,12)===vi(gb,0,12),"corrupt OffchainLookup sender","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup sender"}),e.sender=vi(t,12);try{const t=[],r=Oi(vi(n,32,64)),a=Oi(vi(n,r,r+32)),o=vi(n,r+32);for(let n=0;n<a;n++){const e=lb(o,32*n);if(null==e)throw new Error("abort");t.push(e)}e.urls=t}catch(n){ai(!1,"corrupt OffchainLookup urls","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup urls"})}try{const t=ub(n,64);if(null==t)throw new Error("abort");e.calldata=t}catch(n){ai(!1,"corrupt OffchainLookup calldata","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup calldata"})}ai(vi(n,100,128)===vi(gb,0,28),"corrupt OffchainLookup callbaackSelector","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup callbaackSelector"}),e.selector=vi(n,96,100);try{const t=ub(n,128);if(null==t)throw new Error("abort");e.extraData=t}catch(n){ai(!1,"corrupt OffchainLookup extraData","OFFCHAIN_FAULT",{reason:"corrupt OffchainLookup extraData"})}return e.errorArgs="sender,urls,calldata,selector,extraData".split(/,/).map(n=>e[n]),e}(vi(n.data,4))}catch(n){ai(!1,n.message,"OFFCHAIN_FAULT",{reason:"BAD_DATA",transaction:r,info:{data:a}})}ai(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);ai(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:bi([i.selector,fb([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 Yo({network:this.getNetwork(),value:n});return e}async call(n){const{tx:e,blockTag:t}=await Yo({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 Ri(await this.#ce({method:"getBalance"},n,e),"%response")}async getTransactionCount(n,e){return Oi(await this.#ce({method:"getTransactionCount"},n,e),"%response")}async getCode(n,e){return mi(await this.#ce({method:"getCode"},n,e))}async getStorage(n,e,t){const r=Ri(e,"position");return mi(await this.#ce({method:"getStorage",position:r},n,t))}async broadcastTransaction(n){const{blockNumber:e,hash:t,network:r}=await Yo({blockNumber:this.getBlockNumber(),hash:this._perform({method:"broadcastTransaction",signedTransaction:n}),network:this.getNetwork()}),a=qd.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(pi(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 Yo({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 Yo({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 Yo({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 Yo({network:this.getNetwork(),result:this.#ae({method:"getTransactionResult",hash:n})});return null==e?null:mi(e)}async getLogs(n){let e=this._getFilter(n);eb(e)&&(e=await e);const{network:t,params:r}=await Yo({network:this.getNetwork(),params:this.#ae({method:"getLogs",filter:e})});return r.map(n=>this._wrapLog(n,t))}_getProvider(n){ai(!1,"provider cannot connect to target network","UNSUPPORTED_OPERATION",{operation:"_getProvider()"})}async getResolver(n){return await Im.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=nf((n=qh(n)).substring(2).toLowerCase()+".addr.reverse");try{const t=await Im.getEnsAddress(this),r=new vm(t,["function resolver(bytes32) view returns (address)"],this),a=await r.resolver(e);if(null==a||a===fh)return null;const o=new vm(a,["function name(bytes32) view returns (string)"],this),i=await o.name(e);return await this.resolveName(i)!==n?null:i}catch(n){if(ei(n,"BAD_DATA")&&"0x"===n.value)return null;if(ei(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){}this.once("block",i)};null!=t&&(o=setTimeout(()=>{null!=o&&(o=null,this.off("block",i),a(ri("timeout","TIMEOUT",{reason:"timeout"})))},t)),i(await this.getBlockNumber())})}async waitForBlock(n){ai(!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:ib()})}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 rb(n.type);case"block":{const n=new Jm(this);return n.pollingInterval=this.pollingInterval,n}case"safe":case"finalized":return new Wm(this,n.type);case"event":return new Xm(this,n.filter);case"transaction":return new Ym(this,n.hash);case"orphan":return new Zm(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 ob(n,this);return"event"===t.type&&e&&e.length>0&&!0===e[0].removed&&(t=await ob({orphan:"drop-log",log:e[0]},this)),this.#Jn.get(t.tag)||null}async#ue(n){const e=await ob(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 Ji(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;ai(!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=ib()-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=ib(),setTimeout(n.func,e)}}}}function lb(n,e){try{const t=ub(n,e);if(t)return Xi(t)}catch(n){}return null}function ub(n,e){if("0x"===n)return null;try{const t=Oi(vi(n,e,e+32)),r=Oi(vi(n,t,t+32));return vi(n,t+32,t+32+r)}catch(n){}return null}function hb(n){const e=Li(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 db(n){if(n.length%32==0)return n;const e=new Uint8Array(32*Math.ceil(n.length/32));return e.set(n),e}const pb=new Uint8Array([]);function fb(n){const e=[];let t=0;for(let r=0;r<n.length;r++)e.push(pb),t+=32;for(let r=0;r<n.length;r++){const a=hi(n[r]);e[r]=hb(t),e.push(hb(a.length)),e.push(db(a)),t+=32+32*Math.ceil(a.length/32)}return bi(e)}const gb="0x0000000000000000000000000000000000000000000000000000000000000000";function mb(n,e){if(n.provider)return n.provider;ai(!1,"missing provider","UNSUPPORTED_OPERATION",{operation:e})}async function bb(n,e){let t=jg(e);if(null!=t.to&&(t.to=$h(t.to,n)),null!=t.from){const e=t.from;t.from=Promise.all([n.getAddress(),$h(e,n)]).then(([n,e])=>(oi(n.toLowerCase()===e.toLowerCase(),"transaction from mismatch","tx.from",e),n))}else t.from=n.getAddress();return await Yo(t)}class yb{provider;constructor(n){Xo(this,{provider:n||null})}async getNonce(n){return mb(this,"getTransactionCount").getTransactionCount(await this.getAddress(),n)}async populateCall(n){return await bb(this,n)}async populateTransaction(n){const e=mb(this,"populateTransaction"),t=await bb(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){oi(Ri(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||oi(!1,"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas","tx",n):oi(!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();ai(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?(ai(!a,"network does not support EIP-1559","UNSUPPORTED_OPERATION",{operation:"populateTransaction"}),null==t.gasPrice&&(t.gasPrice=n.gasPrice),t.type=0):ai(!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 Yo(t)}async populateAuthorization(n){const e=Object.assign({},n);return null==e.chainId&&(e.chainId=(await mb(this,"getNetwork").getNetwork()).chainId),null==e.nonce&&(e.nonce=await this.getNonce()),e}async estimateGas(n){return mb(this,"estimateGas").estimateGas(await this.populateCall(n))}async call(n){return mb(this,"call").call(await this.populateCall(n))}async resolveName(n){const e=mb(this,"resolveName");return await e.resolveName(n)}async sendTransaction(n){const e=mb(this,"sendTransaction"),t=await this.populateTransaction(n);delete t.from;const r=qd.from(t);return await e.broadcastTransaction(await this.signTransaction(r))}authorize(n){ai(!1,"authorization not implemented for this signer","UNSUPPORTED_OPERATION",{operation:"authorize"})}}class vb extends yb{address;constructor(n,e){super(e),Xo(this,{address:n})}async getAddress(){return this.address}connect(n){return new vb(this.address,n)}#he(n,e){ai(!1,`VoidSigner cannot sign ${n}`,"UNSUPPORTED_OPERATION",{operation:e})}async signTransaction(n){this.#he("transactions","signTransaction")}async signMessage(n){this.#he("messages","signMessage")}async signTypedData(n,e,t){this.#he("typed-data","signTypedData")}}const wb=new Set;function kb(n){wb.has(n)||wb.add(n)}class Ab{#Dn;#de;#Mn;#Kn;#pe;#fe;constructor(n){this.#Dn=n,this.#de=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.#de&&(this.#de=this._subscribe(this.#Dn));let n=null;try{n=await this.#de}catch(n){if(!ei(n,"UNSUPPORTED_OPERATION")||"eth_newFilter"!==n.operation)throw n}if(null==n)return this.#de=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){}this.#Dn.once("block",this.#Mn)}#ge(){const n=this.#de;n&&(this.#de=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 Eb extends Ab{#me;constructor(n,e){var t;super(n),this.#me=(t=e,JSON.parse(JSON.stringify(t)))}_recover(n){return new Xm(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 xb extends Ab{async _subscribe(n){return await n.send("eth_newPendingTransactionFilter",[])}async _emitResults(n,e){for(const t of e)n.emit("pending",t)}}const Ib="bigint,boolean,function,number,string,symbol".split(/,/g);function Pb(n){if(null==n||Ib.indexOf(typeof n)>=0)return n;if("function"==typeof n.getAddress)return n;if(Array.isArray(n))return n.map(Pb);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 Nb(n){return new Promise(e=>{setTimeout(e,n)})}function zb(n){return n?n.toLowerCase():n}function Sb(n){return n&&"number"==typeof n.pollingInterval}const Rb={polling:!1,staticNetwork:null,batchStallTime:10,batchMaxSize:1<<20,batchMaxCount:100,cacheTimeout:250,pollingInterval:4e3};class Tb extends yb{address;constructor(n,e){super(n),Xo(this,{address:e=qh(e)})}connect(n){ai(!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=Pb(n),t=[];if(e.from){const r=e.from;t.push((async()=>{const t=await $h(r,this.provider);oi(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 $h(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(ei(n,"CANCELLED")||ei(n,"BAD_DATA")||ei(n,"NETWORK_ERROR")||ei(n,"UNSUPPORTED_OPERATION"))return null==n.info&&(n.info={}),n.info.sendTransactionHash=t,void r(n);if(ei(n,"INVALID_ARGUMENT")&&(o++,null==n.info&&(n.info={}),n.info.sendTransactionHash=t,o>10))return void r(n);this.provider.emit("error",ri("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=Pb(n);if(e.from){const t=await $h(e.from,this.provider);oi(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?Yi(n):n;return await this.provider.send("personal_sign",[mi(e),this.address.toLowerCase()])}async signTypedData(n,e,t){const r=Pb(t),a=await Pf.resolveNames(n,e,r,async n=>{const e=await $h(n);return oi(null!=e,"TypedData does not support null address","value",n),e});return await this.provider.send("eth_signTypedData_v4",[this.address.toLowerCase(),JSON.stringify(Pf.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?Yi(n):n;return await this.provider.send("eth_sign",[this.address.toLowerCase(),mi(e)])}}class Bb extends cb{#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(ri("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=ri("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({},Rb,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?(oi(!t||"any"!==n,"staticNetwork cannot be used on special network 'any'","options",e),t&&null!=n&&(this.#pe=Hm.from(n))):t&&(oi(null==n||t.matches(n),"staticNetwork MUST match network object","options",e),this.#pe=t)}_getOption(n){return this.#Q[n]}get _network(){return ai(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&&Ri(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=Hm.from(Ri(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 Hm.from(Ri(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;this.emit("error",ri("failed to bootstrap network detection","NETWORK_ERROR",{event:"initial-network-discovery",info:{error:n}})),await Nb(1e3)}this.#Ae()})())}async _waitUntilReady(){if(null!=this.#we)return await this.#we.promise}_getSubscriber(n){return"pending"===n.type?new xb(this):"event"===n.type?this._getOption("polling")?new Xm(this,n.filter):new Eb(this,n.filter):"orphan"===n.type&&"drop-log"===n.filter.orphan?new rb("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]=ji(Ri(n[t],`tx.${t}`))}),["from","to","data"].forEach(t=>{null!=n[t]&&(e[t]=mi(n[t]))}),n.accessList&&(e.accessList=vd(n.accessList)),n.blobVersionedHashes&&(e.blobVersionedHashes=n.blobVersionedHashes.map(n=>n.toLowerCase())),n.authorizationList&&(e.authorizationList=n.authorizationList.map(n=>{const e=wd(n);return{address:e.address,nonce:ji(e.nonce),chainId:ji(e.chainId),yParity:ji(e.signature.yParity),r:ji(e.signature.r),s:ji(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:[zb(n.address),n.blockTag]};case"getTransactionCount":return{method:"eth_getTransactionCount",args:[zb(n.address),n.blockTag]};case"getCode":return{method:"eth_getCode",args:[zb(n.address),n.blockTag]};case"getStorage":return{method:"eth_getStorageAt",args:[zb(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(zb):n.filter.address=zb(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 ri("insufficient funds","INSUFFICIENT_FUNDS",{transaction:n.params[0],info:{payload:n,error:r}});if(e.match(/nonce/i)&&e.match(/too low/i))return ri("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=Ub(r),a=xg.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 Fb(n,e),e}(r));if("string"==typeof r.message&&r.message.match(/user denied|ethers-user-denied/i)){return ri("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 ri("insufficient funds for intrinsic transaction cost","INSUFFICIENT_FUNDS",{transaction:e,info:{error:r}});if(a.match(/nonce/i)&&a.match(/too low/i))return ri("nonce has already been used","NONCE_EXPIRED",{transaction:e,info:{error:r}});if(a.match(/replacement transaction/i)&&a.match(/underpriced/i))return ri("replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e,info:{error:r}});if(a.match(/only replay-protected/i))return ri("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?ri("unsupported operation","UNSUPPORTED_OPERATION",{operation:n.method,info:{error:r,payload:n}}):ri("could not coalesce error","UNKNOWN_ERROR",{error:r,payload:n})}send(n,e){if(this.destroyed)return Promise.reject(ri("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 Tb(this,t[n])}const{accounts:t}=await Yo({network:this.getNetwork(),accounts:e});n=qh(n);for(const e of t)if(qh(e)===n)return new Tb(this,n);throw new Error("invalid account")}async listAccounts(){return(await this.send("eth_accounts",[])).map(n=>new Tb(this,n))}destroy(){this.#ve&&(clearTimeout(this.#ve),this.#ve=null);for(const{payload:n,reject:e}of this.#ye)e(ri("provider destroyed; cancelled request","UNSUPPORTED_OPERATION",{operation:n.method}));this.#ye=[],super.destroy()}}class Cb extends Bb{#Ee;constructor(n,e){super(n,e);let t=this._getOption("pollingInterval");null==t&&(t=Rb.pollingInterval),this.#Ee=t}_getSubscriber(n){const e=super._getSubscriber(n);return Sb(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=>{Sb(n)&&(n.pollingInterval=this.#Ee)})}}class Ob extends Cb{#xe;constructor(n,e,t){null==n&&(n="http://localhost:8545"),super(e,t),this.#xe="string"==typeof n?new ds(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 Ub(n){if(null==n)return null;if("string"==typeof n.message&&n.message.match(/revert/i)&&pi(n.data))return{message:n.message,data:n.data};if("object"==typeof n){for(const e in n){const t=Ub(n[e]);if(t)return t}return null}if("string"==typeof n)try{return Ub(JSON.parse(n))}catch(n){}return null}function Fb(n,e){if(null!=n){if("string"==typeof n.message&&e.push(n.message),"object"==typeof n)for(const t in n)Fb(n[t],e);if("string"==typeof n)try{return Fb(JSON.parse(n),e)}catch(n){}}}const Lb="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";class jb extends Ob{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Hm.from(n);null==e&&(e=Lb);const r={polling:!0,staticNetwork:t};super(jb.getRequest(t,e),t,r),Xo(this,{apiKey:e})}_getProvider(n){try{return new jb(n,this.apiKey)}catch(n){}return super._getProvider(n)}static getRequest(n,e){null==e&&(e=Lb);const t=new ds(`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"}oi(!1,"unsupported network","network",n)}(n.name)}/${e}`);return t.allowGzip=!0,e===Lb&&(t.retryFunc=async(n,e,t)=>(kb("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===Lb}}const Db="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class Mb extends Ob{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Hm.from(n);null==e&&(e=Db);super(Mb.getRequest(t,e),t,{staticNetwork:t}),Xo(this,{apiKey:e})}_getProvider(n){try{return new Mb(n,this.apiKey)}catch(n){}return super._getProvider(n)}async _perform(n){if("getTransactionResult"===n.method){const{trace:e,tx:t}=await Yo({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 ai(!a,"an error occurred during transaction executions","CALL_EXCEPTION",{action:"getTransactionResult",data:r,reason:null,transaction:t,invocation:null,revert:null}),r;ai(!1,"could not parse trace result","BAD_DATA",{value:e})}return await super._perform(n)}isCommunityResource(){return this.apiKey===Db}static getRequest(n,e){null==e&&(e=Db);const t=new ds(`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"}oi(!1,"unsupported network","network",n)}(n.name)}/v2/${e}`);return t.allowGzip=!0,e===Db&&(t.retryFunc=async(n,e,t)=>(kb("alchemy"),!0)),t}}function Gb(n){switch(n){case"mainnet":return"39f1d67cedf8b7831010a665328c9197";case"arbitrum":return"0550c209db33c3abf4cc927e1e18cea1";case"bnb":return"98b5a77e531614387366f6fc5da097f8";case"matic":return"cd9d4d70377471aa7c142ec4a4205249"}oi(!1,"unsupported network","network",n)}class qb extends Ob{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Hm.from(n);null==e&&(e=Gb(t.name));super(qb.getRequest(t,e),t,{staticNetwork:t}),Xo(this,{apiKey:e})}_getProvider(n){try{return new qb(n,this.apiKey)}catch(n){}return super._getProvider(n)}isCommunityResource(){return this.apiKey===Gb(this._network.name)}static getRequest(n,e){null==e&&(e=Gb(n.name));const t=new ds(`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"}oi(!1,"unsupported network","network",n)}(n.name)}/${e}`);return t.allowGzip=!0,e===Gb(n.name)&&(t.retryFunc=async(n,e,t)=>(kb("ChainstackProvider"),!0)),t}}class Hb extends Ob{constructor(n){null==n&&(n="mainnet");const e=Hm.from(n);oi("mainnet"===e.name,"unsupported network","network",n),super("https://cloudflare-eth.com/",e,{staticNetwork:e})}}const Kb="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 _b="org.ethers.plugins.provider.Etherscan";class Vb extends Lm{baseUrl;constructor(n){super(_b),Xo(this,{baseUrl:n})}clone(){return new Vb(this.baseUrl)}}const Qb=["enableCcipRead"];let Jb=1;class $b extends cb{network;apiKey;#Ie;constructor(n,e){const t=null!=e?e:null;super();const r=Hm.from(n);oi(Kb.indexOf(`${r.chainId}`)>=0,"unsupported network","network",r),this.#Ie=r.getPlugin(_b),Xo(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"}oi(!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=Jb++,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 ds(a);i.setThrottleParams({slotInterval:1e3}),i.retryFunc=(n,e,t)=>(this.isCommunityResource()&&kb("Etherscan"),Promise.resolve(!0)),i.processFunc=async(e,t)=>{const a=t.hasBody()?JSON.parse(Xi(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"}),ai(!1,"response error","SERVER_ERROR",{request:i,response:s})}s.hasBody()||(this.emit("debug",{action:"receiveError",id:r,error:"missing body",reason:"null body"}),ai(!1,"missing response","SERVER_ERROR",{request:i,response:s}));const c=JSON.parse(Xi(s.body));return"proxy"===n?("2.0"!=c.jsonrpc&&(this.emit("debug",{action:"receiveError",id:r,result:c,reason:"invalid JSON-RPC"}),ai(!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"}),ai(!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}),ai(!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(Qb.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=ji(r);else if("accessList"===t)r="["+vd(r).map(n=>`{address:"${n.address}",storageKeys:["${n.storageKeys.join('","')}"]}`).join(",")+"]";else if("blobVersionedHashes"===t){if(0===r.length)continue;ai(!1,"Etherscan API does not support blobVersionedHashes","UNSUPPORTED_OPERATION",{operation:"_getTransactionPostData",info:{transaction:n}})}else r=mi(r);e[t]=r}}return e}_checkError(n,e,t){let r="";if(ei(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)&&ai(!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=xg.getBuiltinCallException(n.method,n.transaction,t);throw r.info={request:n,error:e},r}if(r&&"broadcastTransaction"===n.method){const e=qd.from(n.signedTransaction);r.match(/replacement/i)&&r.match(/underpriced/i)&&ai(!1,"replacement fee too low","REPLACEMENT_UNDERPRICED",{transaction:e}),r.match(/insufficient funds/)&&ai(!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/)&&ai(!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"});ai(!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 vm(e,t,this)}catch(n){return null}}isCommunityResource(){return null==this.apiKey}}const Wb=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 Zb{#Dn;#Rn;get filter(){return JSON.parse(this.#Rn)}#Pe;#Ne;#ze;constructor(n,e){this.#Dn=n,this.#Rn=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){ai(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 Yb extends Zb{constructor(n){super(n,["newHeads"])}async _emit(n,e){n.emit("block",parseInt(e.number))}}class Xb extends Zb{constructor(n){super(n,["newPendingTransactions"])}async _emit(n,e){n.emit("pending",e)}}class ny extends Zb{#Se;get logFilter(){return JSON.parse(this.#Se)}constructor(n,e){super(n,["logs",e]),this.#Se=JSON.stringify(e)}async _emit(n,e){n.emit(this.logFilter,n._wrapLog(e,n._network))}}class ey extends Bb{#Re;#Jn;#Te;constructor(n,e){const t=Object.assign({},null!=e?e:{});oi(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.#Re=new Map,this.#Jn=new Map,this.#Te=new Map}_getSubscriber(n){switch(n.type){case"close":return new rb("close");case"block":return new Yb(this);case"pending":return new Xb(this);case"event":return new ny(this,n.filter);case"orphan":if("drop-log"===n.filter.orphan)return new rb("drop-log")}return super._getSubscriber(n)}_register(n,e){this.#Jn.set(n,e);const t=this.#Te.get(n);if(t){for(const n of t)e._handleMessage(n);this.#Te.delete(n)}}async _send(n){oi(!Array.isArray(n),"WebSocket does not support batch send","payload",n);const e=new Promise((e,t)=>{this.#Re.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.#Re.get(e.id);if(null==n)return void this.emit("error",ri("received result for unknown id","UNKNOWN_ERROR",{reasonCode:"UNKNOWN_ID",result:e}));this.#Re.delete(e.id),n.resolve(e)}else{if(!e||"eth_subscription"!==e.method)return void this.emit("error",ri("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.#Te.get(n);null==t&&(t=[],this.#Te.set(n,t)),t.push(e.params.result)}}}}async _write(n){throw new Error("sub-classes must override this")}}class ty extends ey{#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 Wb(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){}},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 ry="84842078b09946638c03157f83405213";class ay extends ty{projectId;projectSecret;constructor(n,e){const t=new oy(n,e),r=t._getConnection();ai(!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),Xo(this,{projectId:t.projectId,projectSecret:t.projectSecret})}isCommunityResource(){return this.projectId===ry}}class oy extends Ob{projectId;projectSecret;constructor(n,e,t){null==n&&(n="mainnet");const r=Hm.from(n);null==e&&(e=ry),null==t&&(t=null);super(oy.getRequest(r,e,t),r,{staticNetwork:r}),Xo(this,{projectId:e,projectSecret:t})}_getProvider(n){try{return new oy(n,this.projectId,this.projectSecret)}catch(n){}return super._getProvider(n)}isCommunityResource(){return this.projectId===ry}static getWebSocketProvider(n,e){return new ay(n,e)}static getRequest(n,e,t){null==e&&(e=ry),null==t&&(t=null);const r=new ds(`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"}oi(!1,"unsupported network","network",n)}(n.name)}/v3/${e}`);return r.allowGzip=!0,t&&r.setCredentials("",t),e===ry&&(r.retryFunc=async(n,e,t)=>(kb("InfuraProvider"),!0)),r}}const iy="919b412a057b5e9c9b6dce193c5a60242d6efadb";class sy extends Ob{token;constructor(n,e){null==n&&(n="mainnet");const t=Hm.from(n);null==e&&(e=iy);super(sy.getRequest(t,e),t,{staticNetwork:t}),Xo(this,{token:e})}_getProvider(n){try{return new sy(n,this.token)}catch(n){}return super._getProvider(n)}isCommunityResource(){return this.token===iy}static getRequest(n,e){null==e&&(e=iy);const t=new ds(`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"}oi(!1,"unsupported network","network",n)}(n.name)}/${e}`);return t.allowGzip=!0,e===iy&&(t.retryFunc=async(n,e,t)=>(kb("QuickNodeProvider"),!0)),t}}const cy=BigInt("1"),ly=BigInt("2");function uy(){return(new Date).getTime()}function hy(n){return JSON.stringify(n,(n,e)=>"bigint"==typeof e?{type:"bigint",value:e.toString()}:e)}const dy={stallTimeout:400,priority:1,weight:1},py={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 fy(n){if(null==n)return"null";if(Array.isArray(n))return"["+n.map(fy).join(",")+"]";if("object"==typeof n&&"function"==typeof n.toJSON)return fy(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)}:${fy(n[e])}`).join(",")+"}"}}throw new Error("Hmm...")}function gy(n,e){if("error"in e){const n=e.error;let t;return t=ei(n,"CALL_EXCEPTION")?fy(Object.assign({},n,{shortMessage:void 0,reason:void 0,info:void 0})):fy(n),{tag:t,value:n}}const t=e.result;return{tag:fy(t),value:t}}function my(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 by(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]+cy)/ly}function yy(n,e){const t=my(n,e);if(void 0!==t)return t;for(const n of e)if(n.value)return n.value}class vy extends cb{quorum;eventQuorum;eventWorkers;#Ce;#Oe;#Ue;constructor(n,e,t){super(e,t),this.#Ce=n.map(n=>n instanceof cb?Object.assign({provider:n},dy,py):Object.assign({},dy,n,py)),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,oi(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 Hm.from(Ri(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=uy();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=uy()-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=uy()}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&&ai(!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}=gy(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(Oi(by(this.quorum,this.#Ce.filter(n=>!n._lastFatalError).map(n=>({value:n.blockNumber,tag:Oi(n.blockNumber).toString(),weight:n.weight}))))));const n=function(n,e){if(1===n)return Oi(by(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=Oi(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 by(this.quorum,t);case"getBlock":return"blockTag"in e&&"pending"===e.blockTag?yy(this.quorum,t):my(this.quorum,t);case"call":case"chainId":case"getBalance":case"getTransactionCount":case"getCode":case"getStorage":case"getTransaction":case"getTransactionReceipt":case"getLogs":return my(this.quorum,t);case"broadcastTransaction":return yy(this.quorum,t)}ai(!1,"unsupported method","UNSUPPORTED_OPERATION",{operation:`_perform(${hy(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 ai(t.length>0,"quorum not met","SERVER_ERROR",{request:"%sub-requests",info:{request:e,results:Array.from(n).map(n=>hy(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(gy(n.method,{result:o}),{weight:r})}catch(t){e[a]=Object.assign(gy(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=my(this.quorum,e.filter(n=>null!=n));if(ei(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=yy(this.quorum,e);if(ai(void 0!==r,"problem multi-broadcasting","SERVER_ERROR",{request:"%sub-requests",info:{request:n,results:e.map(hy)}}),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 wy="goerli kovan sepolia classicKotti optimism-goerli arbitrum-goerli matic-mumbai bnbt".split(" ");function ky(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 Ob(n);if("string"==typeof n&&n.match(/^wss?:/)||(r=n)&&"function"==typeof r.send&&"function"==typeof r.close)return new ty(n);var r;let a=null;try{a=Hm.from(n)}catch(n){}const o=[];if(t("publicPolygon")&&a&&("matic"===a.name?o.push(new Ob("https://polygon-rpc.com/",a,{staticNetwork:a})):"matic-amoy"===a.name&&o.push(new Ob("https://rpc-amoy.polygon.technology/",a,{staticNetwork:a}))),t("alchemy"))try{o.push(new Mb(n,e.alchemy))}catch(n){}if(t("ankr")&&null!=e.ankr)try{o.push(new jb(n,e.ankr))}catch(n){}if(t("chainstack"))try{o.push(new qb(n,e.chainstack))}catch(n){}if(t("cloudflare"))try{o.push(new Hb(n))}catch(n){}if(t("etherscan"))try{o.push(new $b(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 oy(n,r,t))}catch(n){}if(t("quicknode"))try{let t=e.quicknode;o.push(new sy(n,t))}catch(n){}if(ai(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!==wy.indexOf(a.name)&&(i=1),e&&e.quorum&&(i=e.quorum),new vy(o,void 0,{quorum:i})}class Ay extends yb{signer;#Ge;#qe;constructor(n){super(n.provider),Xo(this,{signer:n}),this.#Ge=null,this.#qe=0}async getAddress(){return this.signer.getAddress()}connect(n){return new Ay(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 Ey extends Cb{#k;#He;constructor(n,e,t){const r=Object.assign({},null!=t?t:{},{batchMaxCount:1});oi(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){oi(!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 Ey(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 Ey(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 Ey)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 Ey(e,void 0,{providerInfo:t}))}else o(ri("filter returned unknown info","UNSUPPORTED_OPERATION",{value:e}))}}else{const{provider:n,info:e}=i[0];a(new Ey(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 xy extends Ob{apiKey;constructor(n,e){null==n&&(n="mainnet");const t=Hm.from(n);null==e&&(e=null);super(xy.getRequest(t),t,{staticNetwork:t}),Xo(this,{apiKey:e})}_getProvider(n){try{return new xy(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&&!pi(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 ds(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"}oi(!1,"unsupported network","network",n)}(n.name));return e.allowGzip=!0,e}}const Iy="62e1ad51b37b8e00394bda3b";class Py extends Ob{applicationId;applicationSecret;constructor(n,e,t){null==n&&(n="mainnet");const r=Hm.from(n);null==e&&(e=Iy),null==t&&(t=null);const a={staticNetwork:r};super(Py.getRequest(r,e,t),r,a),Xo(this,{applicationId:e,applicationSecret:t})}_getProvider(n){try{return new Py(n,this.applicationId,this.applicationSecret)}catch(n){}return super._getProvider(n)}static getRequest(n,e,t){null==e&&(e=Iy);const r=new ds(`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"}oi(!1,"unsupported network","network",n)}(n.name)}/v1/lb/${e}`);return r.allowGzip=!0,t&&r.setCredentials("",t),e===Iy&&(r.retryFunc=async(n,e,t)=>(kb("PocketProvider"),!0)),r}isCommunityResource(){return this.applicationId===Iy}}const Ny=void 0;class zy extends yb{address;#Ke;constructor(n,e){super(e),oi(n&&"function"==typeof n.sign,"invalid private key","privateKey","[ REDACTED ]"),this.#Ke=n;Xo(this,{address:kd(this.signingKey.publicKey)})}get signingKey(){return this.#Ke}get privateKey(){return this.signingKey.privateKey}async getAddress(){return this.address}connect(n){return new zy(this.#Ke,n)}async signTransaction(n){n=jg(n);const{to:e,from:t}=await Yo({to:n.to?$h(n.to,this):void 0,from:n.from?$h(n.from,this):void 0});null!=e&&(n.to=e),null!=t&&(n.from=t),null!=n.from&&(oi(qh(n.from)===this.address,"transaction from address mismatch","tx.from",n.from),delete n.from);const r=qd.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(tf(n)).serialized}authorizeSync(n){oi("string"==typeof n.address,"invalid address for authorizeSync","auth.address",n);const e=this.signingKey.sign(Hd(n));return Object.assign({},{address:qh(n.address),nonce:Ri(n.nonce||0),chainId:Ri(n.chainId||0)},{signature:e})}async authorize(n){return n=Object.assign({},n,{address:await $h(n.address,this)}),this.authorizeSync(await this.populateAuthorization(n))}async signTypedData(n,e,t){const r=await Pf.resolveNames(n,e,t,async n=>{ai(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 ai(null!=e,"unconfigured ENS name","UNCONFIGURED_NAME",{value:n}),e});return this.signingKey.sign(Pf.hash(r.domain,e,r.value)).serialized}}const Sy=" !#$%&'()*+,-./<=>?@[]^_`{|}~",Ry=/^[a-z]*$/i;function Ty(n,e){let t=97;return n.reduce((n,r)=>(r===e?t++:r.match(Ry)?n.push(String.fromCharCode(t)+r):(t=97,n.push(r)),n),[])}function By(n){return oi("0"===n[0],"unsupported auwl data","data",n),function(n,e){for(let t=28;t>=0;t--)n=n.split(Sy[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 Ty(Ty(t,";"),":")}(n.substring(59),n.substring(1,59))}class Cy{locale;constructor(n){Xo(this,{locale:n})}split(n){return n.toLowerCase().split(/\s+/g)}join(n){return n.join(" ")}}class Oy extends Cy{#C;#_e;constructor(n,e,t){super(n),this.#C=e,this.#_e=t,this.#Ve=null}get _data(){return this.#C}_decodeWords(){return By(this.#C)}#Ve;#Qe(){if(null==this.#Ve){const n=this._decodeWords();if(_d(n.join("\n")+"\n")!==this.#_e)throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);this.#Ve=n}return this.#Ve}getWord(n){const e=this.#Qe();return oi(n>=0&&n<e.length,`invalid word index: ${n}`,"index",n),e[n]}getWordIndex(n){return this.#Qe().indexOf(n)}}let Uy=null;class Fy extends Oy{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==Uy&&(Uy=new Fy),Uy}}function Ly(n){return(1<<n)-1<<8-n&255}function jy(n){return(1<<n)-1&255}function Dy(n,e){ci("NFKD"),null==e&&(e=Fy.wordlist());const t=e.split(n);oi(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"));oi(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=Ly(t.length/3);return oi((hi(lu(r.slice(0,o/8)))[0]&i)===(r[r.length-1]&i),"invalid mnemonic checksum","mnemonic","[ REDACTED ]"),mi(r.slice(0,o/8))}function My(n,e){oi(n.length%4==0&&n.length>=16&&n.length<=32,"invalid entropy size","entropy","[ REDACTED ]"),null==e&&(e=Fy.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]&jy(8-r)),r+=3);const a=n.length/4,o=parseInt(lu(n).substring(2,4),16)&Ly(a);return t[t.length-1]<<=a,t[t.length-1]|=o>>8-a,e.join(t.map(n=>e.getWord(n)))}const Gy={};class qy{phrase;password;wordlist;entropy;constructor(n,e,t,r,a){null==r&&(r=""),null==a&&(a=Fy.wordlist()),li(n,Gy,"Mnemonic"),Xo(this,{phrase:t,password:r,wordlist:a,entropy:e})}computeSeed(){const n=Yi("mnemonic"+this.password,"NFKD");return Dl(Yi(this.phrase,"NFKD"),n,2048,64,"sha512")}static fromPhrase(n,e,t){const r=Dy(n,t);return n=My(hi(r),t),new qy(Gy,r,n,e,t)}static fromEntropy(n,e,t){const r=hi(n,"entropy"),a=My(r,t);return new qy(Gy,mi(r),a,e,t)}static entropyToPhrase(n,e){return My(hi(n,"entropy"),e)}static phraseToEntropy(n,e){return Dy(n,e)}static isValidMnemonic(n,e){try{return Dy(n,e),!0}catch(n){}return!1}}
14
- /*! MIT License. Copyright 2015-2022 Richard Moore <me@ricmoo.com>. See LICENSE.txt. */var Hy,Ky,_y,Vy=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)},Qy=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 Jy={16:10,24:12,32:14},$y=[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],Wy=[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],Zy=[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],Yy=[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],Xy=[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],nv=[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],ev=[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],tv=[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],rv=[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],av=[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],ov=[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],iv=[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],sv=[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],cv=[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],lv=[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 uv(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 hv{get key(){return Vy(this,Hy,"f").slice()}constructor(n){if(Hy.set(this,void 0),Ky.set(this,void 0),_y.set(this,void 0),!(this instanceof hv))throw Error("AES must be instanitated with `new`");Qy(this,Hy,new Uint8Array(n),"f");const e=Jy[this.key.length];if(null==e)throw new TypeError("invalid key size (must be 16, 24 or 32 bytes)");Qy(this,_y,[],"f"),Qy(this,Ky,[],"f");for(let n=0;n<=e;n++)Vy(this,_y,"f").push([0,0,0,0]),Vy(this,Ky,"f").push([0,0,0,0]);const t=4*(e+1),r=this.key.length/4,a=uv(this.key);let o;for(let n=0;n<r;n++)o=n>>2,Vy(this,_y,"f")[o][n%4]=a[n],Vy(this,Ky,"f")[e-o][n%4]=a[n];let i,s=0,c=r;for(;c<t;){if(i=a[r-1],a[0]^=Wy[i>>16&255]<<24^Wy[i>>8&255]<<16^Wy[255&i]<<8^Wy[i>>24&255]^$y[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]^=Wy[255&i]^Wy[i>>8&255]<<8^Wy[i>>16&255]<<16^Wy[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,Vy(this,_y,"f")[n][o]=a[l],Vy(this,Ky,"f")[e-n][o]=a[l++],c++}for(let n=1;n<e;n++)for(let e=0;e<4;e++)i=Vy(this,Ky,"f")[n][e],Vy(this,Ky,"f")[n][e]=iv[i>>24&255]^sv[i>>16&255]^cv[i>>8&255]^lv[255&i]}encrypt(n){if(16!=n.length)throw new TypeError("invalid plaintext size (must be 16 bytes)");const e=Vy(this,_y,"f").length-1,t=[0,0,0,0];let r=uv(n);for(let n=0;n<4;n++)r[n]^=Vy(this,_y,"f")[0][n];for(let n=1;n<e;n++){for(let e=0;e<4;e++)t[e]=Yy[r[e]>>24&255]^Xy[r[(e+1)%4]>>16&255]^nv[r[(e+2)%4]>>8&255]^ev[255&r[(e+3)%4]]^Vy(this,_y,"f")[n][e];r=t.slice()}const a=new Uint8Array(16);let o=0;for(let n=0;n<4;n++)o=Vy(this,_y,"f")[e][n],a[4*n]=255&(Wy[r[n]>>24&255]^o>>24),a[4*n+1]=255&(Wy[r[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(Wy[r[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(Wy[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=Vy(this,Ky,"f").length-1,t=[0,0,0,0];let r=uv(n);for(let n=0;n<4;n++)r[n]^=Vy(this,Ky,"f")[0][n];for(let n=1;n<e;n++){for(let e=0;e<4;e++)t[e]=tv[r[e]>>24&255]^rv[r[(e+3)%4]>>16&255]^av[r[(e+2)%4]>>8&255]^ov[255&r[(e+1)%4]]^Vy(this,Ky,"f")[n][e];r=t.slice()}const a=new Uint8Array(16);let o=0;for(let n=0;n<4;n++)o=Vy(this,Ky,"f")[e][n],a[4*n]=255&(Zy[r[n]>>24&255]^o>>24),a[4*n+1]=255&(Zy[r[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(Zy[r[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(Zy[255&r[(n+1)%4]]^o);return a}}Hy=new WeakMap,Ky=new WeakMap,_y=new WeakMap;class dv{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 hv(e)},name:{enumerable:!0,value:n}})}}var pv,fv,gv=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},mv=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 bv extends dv{constructor(n,e){if(super("ECC",n,bv),pv.set(this,void 0),fv.set(this,void 0),e){if(e.length%16)throw new TypeError("invalid iv size (must be 16 bytes)");gv(this,pv,new Uint8Array(e),"f")}else gv(this,pv,new Uint8Array(16),"f");gv(this,fv,this.iv,"f")}get iv(){return new Uint8Array(mv(this,pv,"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++)mv(this,fv,"f")[e]^=n[t+e];gv(this,fv,this.aes.encrypt(mv(this,fv,"f")),"f"),e.set(mv(this,fv,"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]^mv(this,fv,"f")[a],mv(this,fv,"f")[a]=n[t+a]}return e}}pv=new WeakMap,fv=new WeakMap;var yv,vv,wv,kv=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},Av=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 Ev extends dv{constructor(n,e){super("CTR",n,Ev),yv.set(this,void 0),vv.set(this,void 0),wv.set(this,void 0),kv(this,wv,new Uint8Array(16),"f"),Av(this,wv,"f").fill(0),kv(this,yv,Av(this,wv,"f"),"f"),kv(this,vv,16,"f"),null==e&&(e=1),"number"==typeof e?this.setCounterValue(e):this.setCounterBytes(e)}get counter(){return new Uint8Array(Av(this,wv,"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)Av(this,wv,"f")[e]=n%256,n=Math.floor(n/256)}setCounterBytes(n){if(16!==n.length)throw new TypeError("invalid counter initial Uint8Array value length");Av(this,wv,"f").set(n)}increment(){for(let n=15;n>=0;n--){if(255!==Av(this,wv,"f")[n]){Av(this,wv,"f")[n]++;break}Av(this,wv,"f")[n]=0}}encrypt(n){var e,t;const r=new Uint8Array(n);for(let n=0;n<r.length;n++)16===Av(this,vv,"f")&&(kv(this,yv,this.aes.encrypt(Av(this,wv,"f")),"f"),kv(this,vv,0,"f"),this.increment()),r[n]^=Av(this,yv,"f")[(kv(this,vv,(t=Av(this,vv,"f"),e=t++,t),"f"),e)];return r}decrypt(n){return this.encrypt(n)}}function xv(n){return"string"!=typeof n||n.startsWith("0x")||(n="0x"+n),di(n)}function Iv(n,e){for(n=String(n);n.length<e;)n="0"+n;return n}function Pv(n){return"string"==typeof n?Yi(n,"NFKC"):di(n)}function Nv(n,e){const t=e.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);oi(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(oi(!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 xv(i);if("array"===a&&Array.isArray(i))return i;if(a===typeof i)return i;oi(!1,`wrong type found for ${a} `,"path",r)}return i}yv=new WeakMap,vv=new WeakMap,wv=new WeakMap;const zv="m/44'/60'/0'/0/0";function Sv(n){try{const e=JSON.parse(n);if(3===(null!=e.version?parseInt(e.version):0))return!0}catch(n){}return!1}function Rv(n,e){const t=hi(e),r=Nv(n,"crypto.ciphertext:data!");oi(mi(bl(bi([t.slice(16,32),r]))).substring(2)===Nv(n,"crypto.mac:string!").toLowerCase(),"incorrect password","password","[ REDACTED ]");const a=function(n,e,t){if("aes-128-ctr"===Nv(n,"crypto.cipher:string")){const r=Nv(n,"crypto.cipherparams.iv:data!");return mi(new Ev(e,r).decrypt(t))}ai(!1,"unsupported cipher","UNSUPPORTED_OPERATION",{operation:"decrypt"})}(n,t.slice(0,16),r),o=kd(a);if(n.address){let e=n.address.toLowerCase();e.startsWith("0x")||(e="0x"+e),oi(qh(e)===o,"keystore address/privateKey mismatch","address",n.address)}const i={address:o,privateKey:a};if("0.1"===Nv(n,"x-ethers.version:string")){const e=t.slice(32,64),r=Nv(n,"x-ethers.mnemonicCiphertext:data!"),a=Nv(n,"x-ethers.mnemonicCounter:data!"),o=new Ev(e,a);i.mnemonic={path:Nv(n,"x-ethers.path:string")||zv,locale:Nv(n,"x-ethers.locale:string")||"en",entropy:mi(hi(o.decrypt(r)))}}return i}function Tv(n){const e=Nv(n,"crypto.kdf:string");if(e&&"string"==typeof e){if("scrypt"===e.toLowerCase()){const t=Nv(n,"crypto.kdfparams.salt:data!"),r=Nv(n,"crypto.kdfparams.n:int!"),a=Nv(n,"crypto.kdfparams.r:int!"),o=Nv(n,"crypto.kdfparams.p:int!");oi(r>0&&!(r&r-1),"invalid kdf.N","kdf.N",r),oi(a>0&&o>0,"invalid kdf","kdf",e);const i=Nv(n,"crypto.kdfparams.dklen:int!");return oi(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=Nv(n,"crypto.kdfparams.salt:data!"),t=Nv(n,"crypto.kdfparams.prf:string!"),r=t.split("-").pop();oi("sha256"===r||"sha512"===r,"invalid kdf.pdf","kdf.pdf",t);const a=Nv(n,"crypto.kdfparams.c:int!"),o=Nv(n,"crypto.kdfparams.dklen:int!");return oi(32===o,"invalid kdf.dklen","kdf.dklen",o),{name:"pbkdf2",salt:e,count:a,dkLen:o,algorithm:r}}}oi(!1,"unsupported key-derivation function","kdf",e)}function Bv(n,e){const t=JSON.parse(n),r=Pv(e),a=Tv(t);if("pbkdf2"===a.name){const{salt:n,count:e,dkLen:o,algorithm:i}=a;return Rv(t,Dl(r,n,e,o,i))}ai("scrypt"===a.name,"cannot be reached","UNKNOWN_ERROR",{params:a});const{salt:o,N:i,r:s,p:c,dkLen:l}=a;return Rv(t,tu(r,o,i,s,c,l))}function Cv(n){return new Promise(e=>{setTimeout(()=>{e()},n)})}async function Ov(n,e,t){const r=JSON.parse(n),a=Pv(e),o=Tv(r);if("pbkdf2"===o.name){t&&(t(0),await Cv(0));const{salt:n,count:e,dkLen:i,algorithm:s}=o,c=Dl(a,n,e,i,s);return t&&(t(1),await Cv(0)),Rv(r,c)}ai("scrypt"===o.name,"cannot be reached","UNKNOWN_ERROR",{params:o});const{salt:i,N:s,r:c,p:l,dkLen:u}=o;return Rv(r,await eu(a,i,s,c,l,u,t))}function Uv(n){const e=null!=n.salt?hi(n.salt,"options.salt"):Hl(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)),oi("number"==typeof t&&t>0&&Number.isSafeInteger(t)&&(BigInt(t)&BigInt(t-1))===BigInt(0),"invalid scrypt N parameter","options.N",t),oi("number"==typeof r&&r>0&&Number.isSafeInteger(r),"invalid scrypt r parameter","options.r",r),oi("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 Fv(n,e,t,r){const a=hi(t.privateKey,"privateKey"),o=null!=r.iv?hi(r.iv,"options.iv"):Hl(16);oi(16===o.length,"invalid options.iv length","options.iv",r.iv);const i=null!=r.uuid?hi(r.uuid,"options.uuid"):Hl(16);oi(16===i.length,"invalid options.uuid length","options.uuid",r.iv);const s=n.slice(0,16),c=n.slice(16,32),l=hi(new Ev(s,o).encrypt(a)),u=bl(bi([c,l])),h={address:t.address.substring(2).toLowerCase(),id:Ds(i),version:3,Crypto:{cipher:"aes-128-ctr",cipherparams:{iv:mi(o).substring(2)},ciphertext:mi(l).substring(2),kdf:"scrypt",kdfparams:{salt:mi(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/${Wo}`,a=t.mnemonic.path||zv,o=t.mnemonic.locale||"en",i=n.slice(32,64),s=hi(t.mnemonic.entropy,"account.mnemonic.entropy"),c=Hl(16),l=hi(new Ev(i,c).encrypt(s)),u=new Date,d="UTC--"+(u.getUTCFullYear()+"-"+Iv(u.getUTCMonth()+1,2)+"-"+Iv(u.getUTCDate(),2)+"T"+Iv(u.getUTCHours(),2)+"-"+Iv(u.getUTCMinutes(),2)+"-"+Iv(u.getUTCSeconds(),2)+".0Z")+"--"+h.address;h["x-ethers"]={client:e,gethFilename:d,path:a,locale:o,mnemonicCounter:mi(c).substring(2),mnemonicCiphertext:mi(l).substring(2),version:"0.1"}}return JSON.stringify(h)}function Lv(n,e,t){null==t&&(t={});const r=Pv(e),a=Uv(t);return Fv(hi(tu(r,a.salt,a.N,a.r,a.p,64)),a,n,t)}async function jv(n,e,t){null==t&&(t={});const r=Pv(e),a=Uv(t);return Fv(hi(await eu(r,a.salt,a.N,a.r,a.p,64,t.progressCallback)),a,n,t)}const Dv="m/44'/60'/0'/0/0",Mv=new Uint8Array([66,105,116,99,111,105,110,32,115,101,101,100]),Gv=2147483648,qv=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");function Hv(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 Kv(n){const e=hi(n);return Ki(bi([e,vi(lu(lu(e)),0,4)]))}const _v={};function Vv(n,e,t,r){const a=new Uint8Array(37);n&Gv?(ai(null!=r,"cannot derive child of neutered node","UNSUPPORTED_OPERATION",{operation:"deriveChild"}),a.set(hi(r),1)):a.set(hi(t));for(let e=24;e>=0;e-=8)a[33+(e>>3)]=n>>24-e&255;const o=hi(Yc("sha512",e,a));return{IL:o.slice(0,32),IR:o.slice(32)}}function Qv(n,e){const t=e.split("/");oi(t.length>0,"invalid path","path",e),"m"===t[0]&&(oi(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));oi(t<Gv,"invalid path index",`path[${n}]`,e),r=r.deriveChild(Gv+t)}else if(e.match(/^[0-9]+$/)){const t=parseInt(e);oi(t<Gv,"invalid path index",`path[${n}]`,e),r=r.deriveChild(t)}else oi(!1,"invalid path component",`path[${n}]`,e)}return r}class Jv extends zy{publicKey;fingerprint;parentFingerprint;mnemonic;chainCode;path;index;depth;constructor(n,e,t,r,a,o,i,s,c){super(e,c),li(n,_v,"HDNodeWallet"),Xo(this,{publicKey:e.compressedPublicKey});Xo(this,{parentFingerprint:t,fingerprint:vi(Ul(lu(this.publicKey)),0,4),chainCode:r,path:a,index:o,depth:i}),Xo(this,{mnemonic:s})}connect(n){return new Jv(_v,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 jv(this.#Je(),n,{progressCallback:e})}encryptSync(n){return Lv(this.#Je(),n)}get extendedKey(){return ai(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Kv(bi(["0x0488ADE4",Hv(this.depth,1),this.parentFingerprint,Hv(this.index,4),this.chainCode,bi(["0x00",this.privateKey])]))}hasPath(){return null!=this.path}neuter(){return new $v(_v,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,this.provider)}deriveChild(n){const e=Oi(n,"index");oi(e<=4294967295,"invalid index","index",e);let t=this.path;t&&(t+="/"+(2147483647&e),e&Gv&&(t+="'"));const{IR:r,IL:a}=Vv(e,this.chainCode,this.publicKey,this.privateKey),o=new Oh(Fi((Ci(a)+BigInt(this.privateKey))%qv,32));return new Jv(_v,o,this.fingerprint,mi(r),t,e,this.depth+1,this.mnemonic,this.provider)}derivePath(n){return Qv(this,n)}static#$e(n,e){oi(fi(n),"invalid seed","seed","[REDACTED]");const t=hi(n,"seed");oi(t.length>=16&&t.length<=64,"invalid seed","seed","[REDACTED]");const r=hi(Yc("sha512",Mv,t)),a=new Oh(mi(r.slice(0,32)));return new Jv(_v,a,"0x00000000",mi(r.slice(32)),"m",0,0,e,null)}static fromExtendedKey(n){const e=Li(_i(n));oi(82===e.length||Kv(e.slice(0,78))===n,"invalid extended key","extendedKey","[ REDACTED ]");const t=e[4],r=mi(e.slice(5,9)),a=parseInt(mi(e.slice(9,13)).substring(2),16),o=mi(e.slice(13,45)),i=e.slice(45,78);switch(mi(e.slice(0,4))){case"0x0488b21e":case"0x043587cf":{const n=mi(i);return new $v(_v,kd(n),n,r,o,null,a,t,null)}case"0x0488ade4":case"0x04358394 ":if(0!==i[0])break;return new Jv(_v,new Oh(i.slice(1)),r,o,null,a,t,null,null)}oi(!1,"invalid extended key prefix","extendedKey","[ REDACTED ]")}static createRandom(n,e,t){null==n&&(n=""),null==e&&(e=Dv),null==t&&(t=Fy.wordlist());const r=qy.fromEntropy(Hl(16),n,t);return Jv.#$e(r.computeSeed(),r).derivePath(e)}static fromMnemonic(n,e){return e||(e=Dv),Jv.#$e(n.computeSeed(),n).derivePath(e)}static fromPhrase(n,e,t,r){null==e&&(e=""),null==t&&(t=Dv),null==r&&(r=Fy.wordlist());const a=qy.fromPhrase(n,e,r);return Jv.#$e(a.computeSeed(),a).derivePath(t)}static fromSeed(n){return Jv.#$e(n,null)}}class $v extends vb{publicKey;fingerprint;parentFingerprint;chainCode;path;index;depth;constructor(n,e,t,r,a,o,i,s,c){super(e,c),li(n,_v,"HDNodeVoidWallet"),Xo(this,{publicKey:t});Xo(this,{publicKey:t,fingerprint:vi(Ul(lu(t)),0,4),parentFingerprint:r,chainCode:a,path:o,index:i,depth:s})}connect(n){return new $v(_v,this.address,this.publicKey,this.parentFingerprint,this.chainCode,this.path,this.index,this.depth,n)}get extendedKey(){return ai(this.depth<256,"Depth too deep","UNSUPPORTED_OPERATION",{operation:"extendedKey"}),Kv(bi(["0x0488B21E",Hv(this.depth,1),this.parentFingerprint,Hv(this.index,4),this.chainCode,this.publicKey]))}hasPath(){return null!=this.path}deriveChild(n){const e=Oi(n,"index");oi(e<=4294967295,"invalid index","index",e);let t=this.path;t&&(t+="/"+(2147483647&e),e&Gv&&(t+="'"));const{IR:r,IL:a}=Vv(e,this.chainCode,this.publicKey,null),o=Oh.addPoints(a,this.publicKey,!0),i=kd(o);return new $v(_v,i,o,this.fingerprint,mi(r),t,e,this.depth+1,this.provider)}derivePath(n){return Qv(this,n)}}function Wv(n){const e=Oi(n,"index");return oi(e>=0&&e<Gv,"invalid account index","index",e),`m/44'/60'/${e}'/0/0`}function Zv(n){const e=Oi(n,"index");return oi(e>=0&&e<Gv,"invalid account index","index",e),`m/44'/60'/0'/0/${e}`}function Yv(n){try{if(JSON.parse(n).encseed)return!0}catch(n){}return!1}function Xv(n,e){const t=JSON.parse(n),r=Pv(e),a=qh(Nv(t,"ethaddr:string!")),o=xv(Nv(t,"encseed:string!"));oi(o&&o.length%16==0,"invalid encseed","json",n);const i=hi(Dl(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))}(hi(new bv(i,s).decrypt(c)));let u="";for(let n=0;n<l.length;n++)u+=String.fromCharCode(l[n]);return{address:a,privateKey:_d(u)}}function nw(n){return new Promise(e=>{setTimeout(()=>{e()},n)})}class ew extends zy{constructor(n,e){"string"!=typeof n||n.startsWith("0x")||(n="0x"+n),super("string"==typeof n?new Oh(n):n,e)}connect(n){return new ew(this.signingKey,n)}async encrypt(n,e){const t={address:this.address,privateKey:this.privateKey};return await jv(t,n,{progressCallback:e})}encryptSync(n){return Lv({address:this.address,privateKey:this.privateKey},n)}static#We(n){if(oi(n,"invalid JSON wallet","json","[ REDACTED ]"),"mnemonic"in n&&n.mnemonic&&"en"===n.mnemonic.locale){const e=qy.fromEntropy(n.mnemonic.entropy),t=Jv.fromMnemonic(e,n.mnemonic.path);if(t.address===n.address&&t.privateKey===n.privateKey)return t}const e=new ew(n.privateKey);return oi(e.address===n.address,"address/privateKey mismatch","json","[ REDACTED ]"),e}static async fromEncryptedJson(n,e,t){let r=null;return Sv(n)?r=await Ov(n,e,t):Yv(n)&&(t&&(t(0),await nw(0)),r=Xv(n,e),t&&(t(1),await nw(0))),ew.#We(r)}static fromEncryptedJsonSync(n,e){let t=null;return Sv(n)?t=Bv(n,e):Yv(n)?t=Xv(n,e):oi(!1,"invalid JSON wallet","json","[ REDACTED ]"),ew.#We(t)}static createRandom(n){const e=Jv.createRandom();return n?e.connect(n):e}static fromPhrase(n,e){const t=Jv.fromPhrase(n);return e?t.connect(e):t}}class tw extends Oy{#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=By(n).join(",");return e.split(/,/g).forEach(n=>{const r=n.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);oi(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 rw={en:Fy.wordlist()};var aw=Object.freeze({__proto__:null,version:Wo,decodeBytes32String:Pg,encodeBytes32String:Ig,AbiCoder:xg,ConstructorFragment:gg,ErrorFragment:pg,EventFragment:fg,Fragment:ug,FallbackFragment:mg,FunctionFragment:bg,NamedFragment:hg,ParamType:lg,StructFragment:yg,checkResultErrors:Ws,ErrorDescription:Sg,Indexed:Rg,Interface:Cg,LogDescription:Ng,Result:$s,TransactionDescription:zg,Typed:nd,getAddress:qh,getIcapAddress:Hh,getCreateAddress:Kh,getCreate2Address:_h,isAddressable:Vh,isAddress:Qh,resolveAddress:$h,ZeroAddress:fh,WeiPerEther:bh,MaxUint256:yh,MinInt256:vh,MaxInt256:wh,N:mh,ZeroHash:gh,EtherSymbol:"Ξ",MessagePrefix:kh,BaseContract:ym,Contract:vm,ContractFactory:wm,ContractEventPayload:Wg,ContractTransactionReceipt:Qg,ContractTransactionResponse:Jg,ContractUnknownEventPayload:$g,EventLog:_g,UndecodedEventLog:Vg,computeHmac:Yc,randomBytes:Hl,keccak256:bl,ripemd160:Ul,sha256:lu,sha512:uu,pbkdf2:Dl,scrypt:eu,scryptSync:tu,lock:Uh,Signature:Ch,SigningKey:Oh,id:_d,ensNormalize:Yp,isValidName:Xp,namehash:nf,dnsEncode:ef,hashAuthorization:Hd,verifyAuthorization:Kd,hashMessage:tf,verifyMessage:rf,solidityPacked:lf,solidityPackedKeccak256:uf,solidityPackedSha256:hf,TypedDataEncoder:Pf,verifyTypedData:Nf,getDefaultProvider:ky,Block:Dg,FeeData:Lg,Log:Mg,TransactionReceipt:Gg,TransactionResponse:qg,AbstractSigner:yb,NonceManager:Ay,VoidSigner:vb,AbstractProvider:cb,FallbackProvider:vy,JsonRpcApiProvider:Bb,JsonRpcProvider:Ob,JsonRpcSigner:Tb,BrowserProvider:Ey,AlchemyProvider:Mb,AnkrProvider:jb,BlockscoutProvider:xy,ChainstackProvider:qb,CloudflareProvider:Hb,EtherscanProvider:$b,InfuraProvider:oy,InfuraWebSocketProvider:ay,PocketProvider:Py,QuickNodeProvider:sy,IpcSocketProvider:Ny,SocketProvider:ey,WebSocketProvider:ty,EnsResolver:Im,Network:Hm,EnsPlugin:Dm,EtherscanPlugin:Vb,FeeDataNetworkPlugin:Mm,FetchUrlFeeDataNetworkPlugin:Gm,GasCostPlugin:jm,NetworkPlugin:Lm,MulticoinProviderPlugin:Am,SocketBlockSubscriber:Yb,SocketEventSubscriber:ny,SocketPendingSubscriber:Xb,SocketSubscriber:Zb,UnmanagedSubscriber:rb,copyRequest:jg,showThrottleMessage:kb,accessListify:vd,authorizationify:wd,computeAddress:kd,recoverAddress:Ad,Transaction:qd,decodeBase58:_i,encodeBase58:Ki,decodeBase64:Vi,encodeBase64:Qi,concat:bi,dataLength:yi,dataSlice:vi,getBytes:hi,getBytesCopy:di,hexlify:mi,isHexString:pi,isBytesLike:fi,stripZerosLeft:wi,zeroPadBytes:Ei,zeroPadValue:Ai,defineProperties:Xo,resolveProperties:Yo,assert:ai,assertArgument:oi,assertArgumentCount:ii,assertNormalize:ci,assertPrivate:li,makeError:ri,isCallException:ti,isError:ei,EventPayload:Ji,FetchRequest:ds,FetchResponse:ps,FetchCancelSignal:us,FixedNumber:xs,getBigInt:Ri,getNumber:Oi,getUint:Ti,toBeArray:Li,toBigInt:Ci,toBeHex:Fi,toNumber:Ui,toQuantity:ji,fromTwos:Ni,toTwos:zi,mask:Si,formatEther:Ls,parseEther:js,formatUnits:Us,parseUnits:Fs,toUtf8Bytes:Yi,toUtf8CodePoints:ns,toUtf8String:Xi,Utf8ErrorFuncs:Wi,decodeRlp:Ss,encodeRlp:Cs,uuidV4:Ds,Mnemonic:qy,BaseWallet:zy,HDNodeWallet:Jv,HDNodeVoidWallet:$v,Wallet:ew,defaultPath:Dv,getAccountPath:Wv,getIndexedAccountPath:Zv,isCrowdsaleJson:Yv,isKeystoreJson:Sv,decryptCrowdsaleJson:Xv,decryptKeystoreJsonSync:Bv,decryptKeystoreJson:Ov,encryptKeystoreJson:jv,encryptKeystoreJsonSync:Lv,Wordlist:Cy,LangEn:Fy,WordlistOwl:Oy,WordlistOwlA:tw,wordlists:rw}),ow=Object.freeze({__proto__:null,ethers:aw,version:Wo,decodeBytes32String:Pg,encodeBytes32String:Ig,AbiCoder:xg,ConstructorFragment:gg,ErrorFragment:pg,EventFragment:fg,Fragment:ug,FallbackFragment:mg,FunctionFragment:bg,NamedFragment:hg,ParamType:lg,StructFragment:yg,checkResultErrors:Ws,ErrorDescription:Sg,Indexed:Rg,Interface:Cg,LogDescription:Ng,Result:$s,TransactionDescription:zg,Typed:nd,getAddress:qh,getIcapAddress:Hh,getCreateAddress:Kh,getCreate2Address:_h,isAddressable:Vh,isAddress:Qh,resolveAddress:$h,ZeroAddress:fh,WeiPerEther:bh,MaxUint256:yh,MinInt256:vh,MaxInt256:wh,N:mh,ZeroHash:gh,EtherSymbol:"Ξ",MessagePrefix:kh,BaseContract:ym,Contract:vm,ContractFactory:wm,ContractEventPayload:Wg,ContractTransactionReceipt:Qg,ContractTransactionResponse:Jg,ContractUnknownEventPayload:$g,EventLog:_g,UndecodedEventLog:Vg,computeHmac:Yc,randomBytes:Hl,keccak256:bl,ripemd160:Ul,sha256:lu,sha512:uu,pbkdf2:Dl,scrypt:eu,scryptSync:tu,lock:Uh,Signature:Ch,SigningKey:Oh,id:_d,ensNormalize:Yp,isValidName:Xp,namehash:nf,dnsEncode:ef,hashAuthorization:Hd,verifyAuthorization:Kd,hashMessage:tf,verifyMessage:rf,solidityPacked:lf,solidityPackedKeccak256:uf,solidityPackedSha256:hf,TypedDataEncoder:Pf,verifyTypedData:Nf,getDefaultProvider:ky,Block:Dg,FeeData:Lg,Log:Mg,TransactionReceipt:Gg,TransactionResponse:qg,AbstractSigner:yb,NonceManager:Ay,VoidSigner:vb,AbstractProvider:cb,FallbackProvider:vy,JsonRpcApiProvider:Bb,JsonRpcProvider:Ob,JsonRpcSigner:Tb,BrowserProvider:Ey,AlchemyProvider:Mb,AnkrProvider:jb,BlockscoutProvider:xy,ChainstackProvider:qb,CloudflareProvider:Hb,EtherscanProvider:$b,InfuraProvider:oy,InfuraWebSocketProvider:ay,PocketProvider:Py,QuickNodeProvider:sy,IpcSocketProvider:Ny,SocketProvider:ey,WebSocketProvider:ty,EnsResolver:Im,Network:Hm,EnsPlugin:Dm,EtherscanPlugin:Vb,FeeDataNetworkPlugin:Mm,FetchUrlFeeDataNetworkPlugin:Gm,GasCostPlugin:jm,NetworkPlugin:Lm,MulticoinProviderPlugin:Am,SocketBlockSubscriber:Yb,SocketEventSubscriber:ny,SocketPendingSubscriber:Xb,SocketSubscriber:Zb,UnmanagedSubscriber:rb,copyRequest:jg,showThrottleMessage:kb,accessListify:vd,authorizationify:wd,computeAddress:kd,recoverAddress:Ad,Transaction:qd,decodeBase58:_i,encodeBase58:Ki,decodeBase64:Vi,encodeBase64:Qi,concat:bi,dataLength:yi,dataSlice:vi,getBytes:hi,getBytesCopy:di,hexlify:mi,isHexString:pi,isBytesLike:fi,stripZerosLeft:wi,zeroPadBytes:Ei,zeroPadValue:Ai,defineProperties:Xo,resolveProperties:Yo,assert:ai,assertArgument:oi,assertArgumentCount:ii,assertNormalize:ci,assertPrivate:li,makeError:ri,isCallException:ti,isError:ei,EventPayload:Ji,FetchRequest:ds,FetchResponse:ps,FetchCancelSignal:us,FixedNumber:xs,getBigInt:Ri,getNumber:Oi,getUint:Ti,toBeArray:Li,toBigInt:Ci,toBeHex:Fi,toNumber:Ui,toQuantity:ji,fromTwos:Ni,toTwos:zi,mask:Si,formatEther:Ls,parseEther:js,formatUnits:Us,parseUnits:Fs,toUtf8Bytes:Yi,toUtf8CodePoints:ns,toUtf8String:Xi,Utf8ErrorFuncs:Wi,decodeRlp:Ss,encodeRlp:Cs,uuidV4:Ds,Mnemonic:qy,BaseWallet:zy,HDNodeWallet:Jv,HDNodeVoidWallet:$v,Wallet:ew,defaultPath:Dv,getAccountPath:Wv,getIndexedAccountPath:Zv,isCrowdsaleJson:Yv,isKeystoreJson:Sv,decryptCrowdsaleJson:Xv,decryptKeystoreJsonSync:Bv,decryptKeystoreJson:Ov,encryptKeystoreJson:jv,encryptKeystoreJsonSync:Lv,Wordlist:Cy,LangEn:Fy,WordlistOwl:Oy,WordlistOwlA:tw,wordlists:rw});n.EmblemAuthSDK=t,n.SessionManager=e,n.default=t,Object.defineProperty(n,"__esModule",{value:!0})});
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).EmblemAuth={})}(this,function(t){"use strict";class e{constructor(t={}){this.session=null,this.timer=null,this.events={},this.consecutiveFailures=0,this.maxBackoffMs=3e4,this.baseBackoffMs=2e3,this.onRefresh=t.onRefresh,this.refreshSkewMs=t.refreshSkewMs??6e4}setSession(t){this.session=t,this.schedule(),this.emit("session",t)}getSession(){return this.session}clear(){this.session=null,this.cancel(),this.emit("session",null)}on(t,e){this.events[t]||(this.events[t]=[]),this.events[t].push(e)}off(t,e){const s=this.events[t];if(s){const t=s.indexOf(e);-1!==t&&s.splice(t,1)}}destroy(){this.cancel(),this.session=null,Object.keys(this.events).forEach(t=>{delete this.events[t]})}emit(t,e){const s=this.events[t];if(s)for(const t of s)try{t(e)}catch(t){}}cancel(){this.timer&&(clearTimeout(this.timer),this.timer=null)}getBackoffDelay(){return Math.min(this.baseBackoffMs*Math.pow(2,Math.max(0,this.consecutiveFailures-1)),this.maxBackoffMs)}scheduleRetry(t){this.cancel();const e=Date.now(),s=t.expiresAt-e;if(s<=0)return void this.emit("sessionExpired",t);const i=Math.min(this.getBackoffDelay(),s-1e3);this.timer=i<=0?setTimeout(()=>{this.emit("sessionExpired",t)},s):setTimeout(async()=>{if(this.onRefresh)try{const e=await this.onRefresh(t);e?.expiresAt&&e.authToken&&e.expiresAt!==t.expiresAt?(this.consecutiveFailures=0,this.setSession(e),this.emit("sessionRefreshed",e)):(this.consecutiveFailures++,Date.now()>=t.expiresAt?this.emit("sessionExpired",t):this.scheduleRetry(t))}catch(e){this.consecutiveFailures++,Date.now()>=t.expiresAt?this.emit("sessionExpired",t):this.scheduleRetry(t)}else Date.now()>=t.expiresAt&&this.emit("sessionExpired",t)},i)}schedule(){this.cancel();const t=this.session;if(!t?.expiresAt)return;const e=Date.now(),s=t.expiresAt-e;if(s<=0)return void this.emit("sessionExpired",t);this.consecutiveFailures=0;const i=Math.max(0,s-this.refreshSkewMs);this.emit("sessionWillRefresh",{inMs:i,ttl:s}),this.timer=setTimeout(async()=>{if(this.onRefresh)try{const e=await this.onRefresh(t);e?.expiresAt&&e.authToken&&e.expiresAt!==t.expiresAt?(this.consecutiveFailures=0,this.setSession(e),this.emit("sessionRefreshed",e)):(this.consecutiveFailures++,Date.now()>=t.expiresAt?this.emit("sessionExpired",t):this.scheduleRetry(t))}catch(e){this.consecutiveFailures++,Date.now()>=t.expiresAt?this.emit("sessionExpired",t):this.scheduleRetry(t)}else Date.now()>=t.expiresAt&&this.emit("sessionExpired",t)},i)}}class s{constructor(t){if(this.session=null,this.pendingNonce=null,this.overlayEl=null,this._iframeEl=null,this.overlayCleanup=null,this.events={},this._cachedVaultInfo=null,this._visitorId=null,!t?.appId)throw new Error("appId is required");if(this.config={...t,authUrl:t.authUrl??"https://auth.emblemvault.ai",apiUrl:t.apiUrl??"https://api.emblemvault.ai",persistSession:t.persistSession??!0},this.storageKey=`emblem_session_${t.appId}`,this.visitorIdKey=`emblem_visitorId_${t.appId}`,this.messageHandler=this.onMessage.bind(this),"undefined"!=typeof window&&window.addEventListener("message",this.messageHandler),this.sessionMgr=new e({onRefresh:async t=>{try{return await this.refreshSession()||t}catch{return t}}}),this.sessionMgr.on("sessionExpired",t=>this.emit("sessionExpired",t)),this.sessionMgr.on("sessionRefreshed",t=>this.emit("sessionRefreshed",t)),this.sessionMgr.on("sessionWillRefresh",t=>this.emit("sessionWillRefresh",t)),this.config.persistSession){const t=this.loadPersistedSession();t&&this.hydrateSession(t),this._visitorId=this.loadPersistedVisitorId()}this.tryConsumeSessionFromHash()}tryConsumeSessionFromHash(){if("undefined"!=typeof window)try{const t=String(window.location.hash||"").replace(/^#/,"");if(!t)return;const e=new URLSearchParams(t).get("emblemAuthSession");if(!e)return;const s=decodeURIComponent(e),i=decodeURIComponent(escape(atob(s))),n=JSON.parse(i);if(n?.appId&&n.appId!==this.config.appId)return void this.authDebug("consumeHash:ignored (appId mismatch)",{expected:this.config.appId,received:n.appId});this.authDebug("consumeHash:accepted",{appId:n?.appId}),this.session=n,this.persistSession(n),this.sessionMgr.setSession(n),this.config.onSuccess?.(n),this.emit("session",n);try{window.history.replaceState(null,"",window.location.pathname+window.location.search)}catch{}}catch(t){this.authDebug("consumeHash:failed",{error:t?.message||String(t)})}}async authenticateWallet(t){const{network:e,message:s,signature:i,publicKey:n,address:r}=t;if(!this.config.apiUrl)throw new Error("apiUrl is required for authenticateWallet");if(!e||!s||!i)throw new Error("network, message, signature are required");const a=`${this.config.apiUrl.replace(/\/$/,"")}/api/auth/wallet/verify-external`,o=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:this.config.appId,network:e,message:s,signature:i,publicKey:n,address:r})});if(!o.ok){const t=await this.safeJson(o),e=new Error(t?.error||`wallet_verify_${o.status}`);throw e.status=o.status,e.payload=t,e}const c=await o.json(),h=c?.session;return h&&(this.session=h,this.persistSession(h),this.sessionMgr.setSession(h),this.config.onSuccess?.(h),this.emit("session",h)),h}async openOAuth(t){if("undefined"==typeof window)throw new Error("openOAuth() must be called in a browser environment");const e=window.location.origin;this.authDebug("openOAuth:start",{provider:t,origin:e,apiUrl:this.config.apiUrl});const s=await this.getAuthInit({origin:e}),i=s?.nonce||this.randomId(),n=s?.state;this.pendingNonce=i,this.authDebug("openOAuth:init ok",{noncePrefix:String(i).slice(0,8),hasState:!!n,statePrefix:String(n||"").slice(0,16)});const r=this.normalizeBaseUrl(this.config.authUrl,"authUrl"),a=new URL(`${r}/api/auth/oauth/init`);a.searchParams.set("provider",t),a.searchParams.set("state",n),this.authDebug("openOAuth:navigate",{url:a.toString()});const o=window.open(a.toString(),"emblem-auth",this.popupFeatures());if(o)try{o.focus()}catch{}else try{this.authDebug("openOAuth:popup blocked, using same-window navigation"),window.location.assign(a.toString())}catch{const t=new Error("Popup blocked. Please allow popups for this site.");this.emitError(t)}}async sendEmailOtp(t){const e=this.config.apiUrl.replace(/\/$/,""),s=await fetch(`${e}/api/auth/email/send-otp`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:t.appId??this.config.appId,email:t.email,password:t.password})}),i=await s.json().catch(()=>null);if(!s.ok){const t=new Error(i?.error||`email_send_otp_${s.status}`);throw t.status=s.status,t.payload=i,t}return i}async verifyEmailOtp(t){const e=this.config.apiUrl.replace(/\/$/,""),s=await fetch(`${e}/api/auth/email/verify-otp`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:t.appId??this.config.appId,email:t.email,otp:t.otp,password:t.password})}),i=await s.json().catch(()=>null);if(!s.ok){const t=new Error(i?.error||`email_verify_otp_${s.status}`);throw t.status=s.status,t.payload=i,t}const n=i?.session;return n&&(this.session=n,this.persistSession(n),this.sessionMgr.setSession(n),this.emit("session",n)),n}async authenticateEmail(t){const e=this.config.apiUrl.replace(/\/$/,""),s=await fetch(`${e}/api/auth/email/login`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:t.appId??this.config.appId,email:t.email,password:t.password})}),i=await s.json().catch(()=>null);if(!s.ok){const t=new Error(i?.error||`email_login_${s.status}`);throw t.status=s.status,t.payload=i,t}const n=i?.session;return n&&(this.session=n,this.persistSession(n),this.sessionMgr.setSession(n),this.emit("session",n)),n}async openAuthModal(){const t=window.location.origin;let e=null,s=null;try{e=await this.getAuthInit({origin:t})}catch(t){s=t}const i=e?.nonce||this.randomId();this.pendingNonce=i;let n=this.resolveModalUrl({nonce:i,origin:t,state:e?.state});if("origin_not_allowed"===s?.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",t),n=e.toString()}catch{}const r=this.config.modalMode||"auto";let a=!1;if("iframe"===r||"auto"===r)try{a=this.openIframeModal(n)}catch(t){}if(!a){const t=this.popupFeatures();if(!window.open(n,"emblem-auth",t)){const t=new Error("Popup blocked. Please allow popups for this site.");this.emitError(t)}}}getSession(){return this.session}getVisitorId(){return this._visitorId}async refreshSession(){try{if(!this.session)return null;const t=this.tryGetOriginFromConfig();if(!t)return this.session;const e=`${t}/api/auth/refresh`,s=Boolean(this.session.refreshToken),i=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s?{refreshToken:this.session.refreshToken}:{}),credentials:"include"});if(!i.ok)return this.session;const n=await i.json(),r=n?.session;return r&&(this.session=r,this.persistSession(r),this.sessionMgr.setSession(r),this.emit("session",r)),this.session}catch{return this.session}}async getVaultInfo(){if(this._cachedVaultInfo)return this._cachedVaultInfo;const t=this.getSession();if(!t?.authToken)throw new Error("No session");if(!this.config.apiUrl)throw new Error("apiUrl is required");const e=this.config.apiUrl.replace(/\/$/,""),s=await fetch(`${e}/vault/info`,{method:"POST",headers:{Authorization:`Bearer ${t.authToken}`,"Content-Type":"application/json"},body:"{}"});if(!s.ok)throw new Error("Failed to fetch vault info");const i=await s.json();return this._cachedVaultInfo=i,i}async getVaultApiKey(){if(!this.config.apiUrl)throw new Error("apiUrl is required");const t=this.getSession();if(!t?.authToken)throw new Error("No active session");const e=this.config.apiUrl.replace(/\/$/,""),s=t.authToken,i=t.user?.vaultId;let n=null;try{const t=await fetch(`${e}/vault/info-complete`,{method:"POST",headers:{Authorization:`Bearer ${s}`}});if(t.ok){const e=await t.json();n=e?.raw?.pkp?.api_key_hash||e?.raw?.pkp?.apiKeyHash||null}}catch{}if(!n)try{const s=t.appId,r=t.user?.identifier||"",a=s?`${s}:${r}`:r;if(a){const t=await fetch(`${e}/api/vaults/${encodeURIComponent(a)}`);if(t.ok){const e=await t.json(),s=Array.isArray(e)?e.find(t=>String(t.tokenId||t.token_id)===String(i))||e[0]:null;n=s?.api_key_hash||s?.apiKeyHash||null}}}catch{}if(!n){const t=await fetch(`${e}/api/vaults/${encodeURIComponent(i)}/api-key`,{method:"POST",headers:{Authorization:`Bearer ${s}`}});if(!t.ok)throw new Error(`gen_key_${t.status}`);const n=await t.json(),r=n?.apiKey||n?.key||null;if(!r)throw new Error("missing_apiKey");return r}const r=await fetch(`${e}/decrypt`,{method:"POST",headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},body:JSON.stringify({tokenId:i,dataToEncryptHash:n})});if(!r.ok)throw new Error(`decrypt_${r.status}`);const a=await r.json(),o=a?.decryptedString||null;if(!o)throw new Error("missing_decrypted");return o}hydrateSession(t){t?.authToken&&(this.session=t,this.persistSession(t),this._cachedVaultInfo=null,this.sessionMgr.setSession(t),this.emit("session",t))}logout(){this.session=null,this.persistSession(null),this._visitorId=null,this.persistVisitorId(null),this._cachedVaultInfo=null,this.sessionMgr.clear(),this.emit("session",null)}on(t,e){this.events[t]||(this.events[t]=[]),this.events[t].push(e)}off(t,e){const s=this.events[t];if(s){const t=s.indexOf(e);-1!==t&&s.splice(t,1)}}async getSignerContext(){const t=this.getSession();if(!t?.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{toViemAccount:t}=await Promise.resolve().then(function(){return h}),{config:e,vaultInfo:s}=await this.getSignerContext();return t(e,s)}async toEthersWallet(t){const{toEthersWallet:e}=await Promise.resolve().then(function(){return u}),{config:s,vaultInfo:i}=await this.getSignerContext();return e(s,t,i)}async toWeb3Adapter(){const{toWeb3Adapter:t}=await Promise.resolve().then(function(){return y}),{config:e,vaultInfo:s}=await this.getSignerContext();return t(e,s)}async toSolanaWeb3Signer(){const{toSolanaWeb3Signer:t}=await Promise.resolve().then(function(){return m}),{config:e,vaultInfo:s}=await this.getSignerContext();return t(e,s)}async toSolanaKitSigner(){const{toSolanaKitSigner:t}=await Promise.resolve().then(function(){return m}),{config:e,vaultInfo:s}=await this.getSignerContext();return t(e,s)}async toBitcoinSigner(){const{toBitcoinSigner:t,fetchBitcoinVaultInfo:e}=await Promise.resolve().then(function(){return E}),{config:s}=await this.getSignerContext();return t(s,await e(s))}destroy(){"undefined"!=typeof window&&window.removeEventListener("message",this.messageHandler),this.sessionMgr.destroy(),this.closeOverlay(),Object.keys(this.events).forEach(t=>{delete this.events[t]})}resolveModalUrl(t){const e=`${this.config.authUrl.replace(/\/$/,"")}/connect`,s=new URL(e,window.location.href);return s.searchParams.set("appId",this.config.appId),s.searchParams.set("origin",t.origin),s.searchParams.set("nonce",t.nonce),t.state&&s.searchParams.set("state",t.state),s.toString()}authDebugEnabled(){try{const t=window?.localStorage?.getItem?.("AUTH_DEBUG");if("true"===String(t).toLowerCase())return!0}catch{}try{const t="undefined"!=typeof process?process:null,e=t?.env||{},s=e.NEXT_PUBLIC_AUTH_DEBUG??e.AUTH_DEBUG;if(!s)return!1;const i=String(s).toLowerCase().trim();return"1"===i||"true"===i||"yes"===i||"on"===i}catch{return!1}}authDebug(...t){this.authDebugEnabled()}normalizeBaseUrl(t,e){if(!t)throw new Error(`${e} is required`);const s=String(t).trim(),i="undefined"!=typeof window?window.location.href:"http://localhost";try{return new URL(s,i).toString().replace(/\/$/,"")}catch{}try{return new URL(`https://${s.replace(/^\/+/,"")}`).toString().replace(/\/$/,"")}catch{}throw new Error(`${e} must be an absolute URL (e.g. "https://api.emblemvault.ai") or a relative path (e.g. "/")`)}onMessage(t){try{const e=new Set([window.location.origin,this.tryGetOriginFromConfig(),this.tryGetOriginFromApiUrl()].filter(Boolean));if(!e.has(t.origin))return void this.authDebug("onMessage:ignored (origin)",{eventOrigin:t.origin,allowedOrigins:Array.from(e)});const s=t.data;if("emblem-auth-cancelled"===s?.type){if(!this.pendingNonce||s.nonce!==this.pendingNonce)return;return this.pendingNonce=null,this.closeOverlay(),this.config.onCancel&&this.config.onCancel(),void this.emit("cancelled",void 0)}if("emblem-auth-success"!==s?.type)return;if(!this.pendingNonce||s.nonce!==this.pendingNonce)return void this.authDebug("onMessage:ignored (nonce)",{expected:this.pendingNonce,received:s?.nonce,origin:t.origin,type:s?.type});this.pendingNonce=null,this.authDebug("onMessage:accepted",{origin:t.origin});const i=s.session;this.session=i,this.persistSession(i),this.sessionMgr.setSession(i),s.visitorId&&(this._visitorId=s.visitorId,this.persistVisitorId(s.visitorId)),i&&this.config.onSuccess&&this.config.onSuccess(i),this.emit("session",i),this.closeOverlay()}catch(t){this.emitError(t)}}emit(t,e){const s=this.events[t];if(s)for(const t of s)try{t(e)}catch(t){}}emitError(t){this.config.onError?.(t),this.emit("authError",t)}popupFeatures(){const t=Math.max(0,(window.outerHeight-680)/2);return`popup=yes,width=520,height=680,left=${Math.max(0,(window.outerWidth-520)/2)},top=${t}`}randomId(){const t=new Uint8Array(16);if(window.crypto?.getRandomValues)window.crypto.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(256*Math.random());return Array.from(t,t=>t.toString(16).padStart(2,"0")).join("")}tryGetOriginFromConfig(){try{if(!this.config.authUrl)return null;const t=this.normalizeBaseUrl(this.config.authUrl,"authUrl");return new URL(t).origin}catch{return null}}tryGetOriginFromApiUrl(){try{if(!this.config.apiUrl)return null;const t=this.normalizeBaseUrl(this.config.apiUrl,"apiUrl");return new URL(t).origin}catch{return null}}async getAuthInit(t){const e=JSON.stringify({appId:this.config.appId,origin:t.origin}),s=async t=>{const s=await fetch(`${t.replace(/\/$/,"")}/api/auth/init`,{method:"POST",headers:{"Content-Type":"application/json"},body:e}),i=await s.json().catch(()=>null);if(!s.ok){const t=new Error(`init ${s.status}`);throw t.status=s.status,t.payload=i||{},t}return i};try{return await s(this.config.authUrl)}catch(t){const e=t;try{return await s(this.config.apiUrl)}catch(t){const s=e;throw s.payload={...e?.payload||{},fallback:t?.payload||void 0},s}}}openIframeModal(t){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.55)",e.style.backdropFilter="blur(6px)",e.style.webkitBackdropFilter="blur(6px)",e.style.zIndex="999999",e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center",e.style.padding="12px";const s=document.createElement("div");s.style.width="min(520px, 96vw)",s.style.height="min(680px, 92vh)",s.style.background="#12161b",s.style.border="1px solid #222b35",s.style.borderRadius="12px",s.style.boxShadow="0 12px 48px rgba(0,0,0,0.7)",s.style.overflow="hidden",s.style.position="relative",s.style.display="flex",s.style.flexDirection="column";const i=document.createElement("div");i.style.height="52px",i.style.display="flex",i.style.alignItems="center",i.style.justifyContent="space-between",i.style.padding="0 12px",i.style.borderBottom="1px solid rgba(255, 255, 255, 0.06)",i.style.background="#12161b";const n=document.createElement("div");n.textContent="Emblem",n.style.fontFamily="ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial",n.style.fontSize="13px",n.style.letterSpacing="0.08em",n.style.textTransform="uppercase",n.style.color="rgba(230, 238, 248, 0.75)";const r=document.createElement("button");r.type="button",r.textContent="×",r.setAttribute("aria-label","Close"),r.setAttribute("title","Close"),r.style.width="40px",r.style.height="40px",r.style.display="flex",r.style.alignItems="center",r.style.justifyContent="center",r.style.background="rgba(255, 255, 255, 0.04)",r.style.color="#e6eef8",r.style.border="1px solid rgba(255, 255, 255, 0.08)",r.style.borderRadius="10px",r.style.fontSize="24px",r.style.lineHeight="1",r.style.cursor="pointer",r.style.userSelect="none",r.onclick=()=>this.cancelAuth(),i.appendChild(n),i.appendChild(r);const a=document.createElement("iframe");a.src=t,a.style.width="100%",a.style.height="100%",a.style.border="0",a.referrerPolicy="no-referrer",a.allow="clipboard-read; clipboard-write;",s.appendChild(i),s.appendChild(a),e.appendChild(s),document.body.appendChild(e),e.addEventListener("click",t=>{t.target===e&&this.cancelAuth()});const o=t=>{"Escape"===t.key&&this.cancelAuth()};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}cancelAuth(){this.pendingNonce=null,this.closeOverlay(),this.config.onCancel&&this.config.onCancel(),this.emit("cancelled",void 0)}async safeJson(t){try{return await t.json()}catch{return null}}loadPersistedSession(){try{if("undefined"==typeof localStorage)return null;const t=localStorage.getItem(this.storageKey);if(!t)return null;const e=JSON.parse(t);return e?.authToken&&e?.expiresAt?Date.now()>=e.expiresAt?(localStorage.removeItem(this.storageKey),null):e:null}catch{return null}}persistSession(t){try{if("undefined"==typeof localStorage)return;t&&this.config.persistSession?localStorage.setItem(this.storageKey,JSON.stringify(t)):localStorage.removeItem(this.storageKey)}catch{}}loadPersistedVisitorId(){try{return"undefined"==typeof localStorage?null:localStorage.getItem(this.visitorIdKey)}catch{return null}}persistVisitorId(t){try{if("undefined"==typeof localStorage)return;t&&this.config.persistSession?localStorage.setItem(this.visitorIdKey,t):localStorage.removeItem(this.visitorIdKey)}catch{}}}async function i(t,e,s){const i=s.baseUrl??"https://api.emblemvault.ai",n=await async function(t){if("function"==typeof t.getAuthHeaders){const e=await t.getAuthHeaders();if(e&&"object"==typeof e)return e}const e=t.jwt??("function"==typeof t.getJwt?await t.getJwt():void 0)??t.sdk?.getSession()?.authToken??void 0;if(e)return{Authorization:`Bearer ${e}`};if(t.apiKey)return{"x-api-key":t.apiKey};throw new Error("No authentication available: provide jwt, getJwt(), getAuthHeaders(), sdk, or apiKey")}(s),r=await fetch(`${i}${t}`,{method:"POST",headers:{"content-type":"application/json",...n},body:JSON.stringify(e,(t,e)=>"bigint"==typeof e?e.toString():e)});if(!r.ok){const t=await r.text().catch(()=>"");throw new Error(function(t,e){let s=`Emblem signer error ${t}`;return t>=500?s+=": Internal server error":401===t||403===t?s+=": Authentication failed":404===t?s+=": Resource not found":405===t?s+=": Method not allowed":e&&(s+=`: ${e.substring(0,200)}`),s}(r.status,t))}return r.json()}function n(t,e){const s=Number(t);if(!Number.isSafeInteger(s))throw new Error(`${e} value ${t} exceeds safe integer range (max: ${Number.MAX_SAFE_INTEGER})`);return s}function r(t){return"bigint"==typeof t?"0x"+t.toString(16):t}function a(t){const e={...t};return void 0!==e.value&&(e.value=r(e.value)),void 0!==e.gas&&(e.gasLimit=r(e.gas),delete e.gas),void 0!==e.gasLimit&&(e.gasLimit=r(e.gasLimit)),void 0!==e.gasPrice&&(e.gasPrice=r(e.gasPrice)),void 0!==e.maxFeePerGas&&(e.maxFeePerGas=r(e.maxFeePerGas)),void 0!==e.maxPriorityFeePerGas&&(e.maxPriorityFeePerGas=r(e.maxPriorityFeePerGas)),void 0!==e.nonce&&(e.nonce=n(e.nonce,"nonce")),void 0!==e.chainId&&(e.chainId=n(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 o(t){let e="0x";for(let s=0;s<t.length;s++)e+=t[s].toString(16).padStart(2,"0");return e}async function c(t){const e=await i("/vault/info",{},t);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}}var h=Object.freeze({__proto__:null,toViemAccount:async function(t,e){const s=e??await c(t),{evmAddress:n,vaultId:r}=s,{toAccount:h}=await import("viem/accounts");return h({address:n,async signMessage({message:e}){let s,n=!1;if("string"==typeof e)s=e,n=!1;else if(e&&void 0!==e.raw){const t=e.raw;s="string"==typeof t?t:o(t),n=!0}else if(e instanceof Uint8Array)s=o(e),n=!1;else{if("string"!=typeof(a=e)||!/^0x[0-9a-fA-F]*$/.test(a))throw new Error(`Unsupported message type: ${typeof e}. Expected string, Uint8Array, or hex string.`);s=e,n=!1}var a;return(await i("/sign-eth-message",{vaultId:r,message:s,raw:n},t)).signature},async signTypedData(e){const{domain:s,types:n,message:a}=e;return(await i("/sign-typed-message",{vaultId:r,domain:s,types:n,message:a},t)).signature},async signTransaction(e,s){const n=a(e);return(await i("/sign-eth-tx",{vaultId:r,transaction:n},t)).signedTransaction}})}});var l,d,u=Object.freeze({__proto__:null,toEthersWallet:async function(t,e,s){let n;try{const t="ethers";n=await import(t)}catch{throw new Error("ethers is required for toEthersWallet(). Install it with: npm install ethers")}const{AbstractSigner:r,resolveAddress:h}=n,l=s??await c(t);class d extends r{constructor(t,e,s){super(e??null),this._address=null,this._vaultId=null,this._chainId=1,this._config=t,s?.address&&(this._address=s.address),s?.vaultId&&(this._vaultId=s.vaultId),s?.chainId&&(this._chainId=s.chainId)}async initialize(){return this._initPromise||(this._initPromise=c(this._config).then(t=>{this._address=t.evmAddress,this._vaultId=t.vaultId}).catch(t=>{throw this._initPromise=void 0,t})),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(t){this._chainId=t}getChainId(){return this._chainId}connect(t){if(!t)throw new Error("Provider cannot be null");return new d(this._config,t,{address:this._address??void 0,vaultId:this._vaultId??void 0,chainId:this._chainId})}async signMessage(t){this._vaultId||await this.initialize();const e="string"==typeof t?t:o(t);return(await i("/sign-eth-message",{vaultId:this._vaultId,message:e},this._config)).signature}async signTypedData(t,e,s){this._vaultId||await this.initialize();const n={...e};n&&n.EIP712Domain&&delete n.EIP712Domain;return(await i("/sign-typed-message",{vaultId:this._vaultId,domain:t,types:n,message:s},this._config)).signature}async _signTypedData(t,e,s){return this.signTypedData(t,e,s)}async signTransaction(t){this._vaultId||await this.initialize();const e=t.from,s=await this.getAddress();if(e&&e.toLowerCase()!==s.toLowerCase())throw new Error("transaction from does not match signer address");const n=this.provider?{...await this.populateTransaction(t)}:{...t};if(n.from&&delete n.from,!("to"in n)||!n.to)throw new Error("Transaction must have a 'to' address");if(void 0===n.nonce||null===n.nonce)throw new Error("Transaction must have a nonce");const r=a(n);return(await i("/sign-eth-tx",{vaultId:this._vaultId,transaction:r,options:{chainId:this._chainId}},this._config)).signedTransaction}async sendTransaction(t){if(!this.provider)throw new Error("Provider required to send transaction");const e=await this.signTransaction(t);return await this.provider.broadcastTransaction(e)}async populateTransaction(t){const e={...t};if(!this.provider)throw new Error("Provider required to populate transaction");const s=e.from?await h(e.from,this.provider):await this.getAddress();let i;if(e.chainId)i=BigInt(e.chainId),this._chainId=Number(e.chainId);else{const t=await this.provider.getNetwork();i=t.chainId,this._chainId=Number(t.chainId)}const n=null!=e.nonce?Number(e.nonce):await this.provider.getTransactionCount(s,"pending"),r=e.to?await h(e.to,this.provider):null,a=e.value?BigInt(e.value.toString()):0n;let o;if(e.gasLimit)o=BigInt(e.gasLimit.toString());else try{o=await this.provider.estimateGas({...e,from:s})}catch{o=21000n}let c=null;if(e.gasPrice||2===e.type)e.gasPrice&&(c=BigInt(e.gasPrice.toString()));else{c=(await this.provider.getFeeData()).gasPrice??null}const l={from:s,to:r,value:a,nonce:n,gasLimit:o,data:e.data,chainId:i,type:e.type||void 0};return null!==c&&(l.gasPrice=c),e.maxFeePerGas&&(l.maxFeePerGas=BigInt(e.maxFeePerGas.toString())),e.maxPriorityFeePerGas&&(l.maxPriorityFeePerGas=BigInt(e.maxPriorityFeePerGas.toString())),l}async signAndBroadcast(t,e=!1){if(!this.provider)throw new Error("Provider required to send transaction");const s=await this.signTransaction(t),i=(await this.provider.broadcastTransaction(s)).hash;return e&&await this.provider.waitForTransaction(i),i}}return new d(t,e,{address:l.evmAddress,vaultId:l.vaultId})}});function p(t,e,s,i){if("a"===s&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?i:"a"===s?i.call(t):i?i.value:e.get(t)}function f(t,e,s,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(t,s):n?n.value=s:e.set(t,s),s}"function"==typeof SuppressedError&&SuppressedError;class g{constructor(t,e,s){l.set(this,void 0),d.set(this,void 0),this.address=t,f(this,l,e,"f"),f(this,d,s,"f")}async signMessage(t){const e="string"==typeof t?t:o(t);return(await i("/sign-eth-message",{vaultId:p(this,l,"f"),message:e},p(this,d,"f"))).signature}async signTypedData(t,e,s){return(await i("/sign-typed-message",{vaultId:p(this,l,"f"),domain:t,types:e,message:s},p(this,d,"f"))).signature}async signTransaction(t){const e=a(t);return{rawTransaction:(await i("/sign-eth-tx",{vaultId:p(this,l,"f"),transaction:e},p(this,d,"f"))).signedTransaction}}}l=new WeakMap,d=new WeakMap;var y=Object.freeze({__proto__:null,EmblemWeb3Adapter:g,toWeb3Adapter:async function(t,e){const s=e??await c(t);return new g(s.evmAddress,s.vaultId,t)}});class w{constructor(t,e){this.publicKey=e.address,this.config=t,this.vaultId=e.vaultId}async signMessage(t){const e="string"==typeof t?(new TextEncoder).encode(t):t,s=btoa(String.fromCharCode(...e)),n=await i("/sign-solana-message",{vaultId:this.vaultId,message:s},this.config);try{const t="undefined"!=typeof window?window:void 0;if(t?.bs58)return t.bs58.decode(n.signature);return Uint8Array.from(atob(n.signature),t=>t.charCodeAt(0))}catch(t){if(n.signature.startsWith("0x")){const t=n.signature.slice(2),e=new Uint8Array(t.length/2);for(let s=0;s<t.length;s+=2)e[s/2]=parseInt(t.substr(s,2),16);return e}throw new Error(`Unable to decode signature format: ${t}`)}}async signTransaction(t){const e=this.serializeTransaction(t),s=await i("/sign-solana-transaction",{vaultId:this.vaultId,transactionToSign:e,broadcast:!1,versionedTransaction:!0},this.config),n=s.serializedSignedTransaction||s.signedTransaction;if(!n)throw new Error("No signed transaction data received from server");return this.deserializeTransaction(n)}serializeTransaction(t){if(t&&"object"==typeof t){if(t.serialize){const e=t.serialize();return btoa(String.fromCharCode(...e))}if(t.instructions||t.recentBlockhash)throw new Error("Cannot serialize unsigned transaction objects. Please use VersionedTransaction.")}return t}deserializeTransaction(t){if("object"==typeof t&&t&&t.serializedSignedTransaction&&(t=t.serializedSignedTransaction),"string"==typeof t)try{const e=atob(t);return new Uint8Array(e.split("").map(t=>t.charCodeAt(0)))}catch(t){throw new Error(`Unable to deserialize transaction response: ${t}`)}return t}getVaultId(){return this.vaultId}async signAllTransactions(t){const e=[];for(const s of t)e.push(await this.signTransaction(s));return e}canSign(t){return t===this.publicKey}async signAndBroadcast(t,e=!0){const s=this.serializeTransaction(t),n=await i("/sign-solana-transaction",{vaultId:this.vaultId,transactionToSign:s,broadcast:e,versionedTransaction:!0},this.config);if(e){if(!n.transactionSignature)throw new Error("No transaction signature received from broadcast");return n.transactionSignature}if(!n.serializedSignedTransaction)throw new Error("No signed transaction data received from server");return n.serializedSignedTransaction}}var m=Object.freeze({__proto__:null,EmblemSolanaSigner:w,toSolanaWeb3Signer:async function(t,e){const s=e??await c(t);return new w(t,s)},toSolanaKitSigner:async function(t,e){const s=e??await c(t);return new w(t,s)}});const v=1e8;class I{constructor(t,e){if(!e.btcPubkey)throw new Error("Bitcoin public key is required in vault info");this.publicKey=e.btcPubkey,this.addresses=e.btcAddresses??{p2pkh:"",p2wpkh:"",p2tr:""},this.config=t,this.vaultId=e.vaultId}async signPsbt(t,e){const{transactionType:s,toSignInputs:n}=e,r=n?.map(t=>({...t,tapLeafHashToSign:this.normalizeToHex(t.tapLeafHashToSign)}));return await i("/sign-btc-transaction",{vaultId:this.vaultId,psbt:t,transactionType:s,toSignInputs:r},this.config)}async signAllPsbts(t){const e=[];for(const{psbt:s,options:i}of t)e.push(await this.signPsbt(s,i));return e}getVaultId(){return this.vaultId}getPublicKey(){return this.publicKey}ownsAddress(t){return t===this.addresses.p2pkh||t===this.addresses.p2wpkh||t===this.addresses.p2tr}getAddress(t="p2wpkh"){switch(t){case"p2pkh":return this.addresses.p2pkh;case"p2wpkh":case"p2sh":default:return this.addresses.p2wpkh;case"p2tr":return this.addresses.p2tr}}normalizeToHex(t){if(null==t)return;if("string"==typeof t)return t;const e=t;let s="";for(let t=0;t<e.length;t++)s+=e[t].toString(16).padStart(2,"0");return s}}async function b(t){const e=await i("/vault/info",{},t);if(!e||!e.vaultId)throw new Error("Invalid vault info response: missing vaultId");if(!e.btcPubkey)throw new Error("Invalid vault info response: missing btcPubkey (Bitcoin public key)");return{vaultId:e.vaultId,address:e.address||"",evmAddress:e.evmAddress||"0x",btcPubkey:e.btcPubkey,btcAddresses:e.btcAddresses,created_by:e.created_by}}function S(t){return t/v}var E=Object.freeze({__proto__:null,SATS_PER_BTC:v,EmblemBitcoinSigner:I,toBitcoinSigner:async function(t,e){const s=e??await b(t);return new I(t,s)},fetchBitcoinVaultInfo:b,detectAddressType:function(t){return t.startsWith("bc1p")?"p2tr":t.startsWith("bc1q")?"p2wpkh":t.startsWith("1")?"p2pkh":t.startsWith("3")?"p2sh":t.startsWith("tb1p")?"p2tr":t.startsWith("tb1q")?"p2wpkh":t.startsWith("m")||t.startsWith("n")?"p2pkh":t.startsWith("2")?"p2sh":"unknown"},satsToBTC:S,btcToSats:function(t){return Math.round(t*v)},formatSats:function(t){return`${t.toLocaleString()} sats (${S(t).toFixed(8)} BTC)`},estimateTransactionSize:function(t,e,s="p2wpkh"){let i;switch(s){case"p2pkh":i=148;break;case"p2tr":i=58;break;default:i=68}return 10+t*i+31*e},calculateFee:function(t,e){return Math.ceil(t*e)},isDust:function(t,e="p2wpkh"){return t<("p2wpkh"===e||"p2tr"===e?294:546)}});t.EmblemAuthSDK=s,t.SessionManager=e,t.default=s,Object.defineProperty(t,"__esModule",{value:!0})});
15
2
  //# sourceMappingURL=emblem-auth.min.js.map